太离谱了,国内开源大模型登顶全球榜首,零基础入门到精通,收藏这篇就够了

国产大模型赛道的选手有很多,不管是大厂还是小厂,只要与AI沾边,都在探索自己的盈利和发展模式。

特别是在OpenAI说要严格限制接口调用之后,大家又兴奋了起来,纷纷推出各种优惠政策和推出新技术模型等等。

最近看了一圈国内的大模型,发现阿里云的通义千问已经跑到开源赛道第一名去了,Qwen2-72B 在世界开源模型排行榜上荣登榜首!

这是Hugging Face联合创始人兼首席执行 Clem Delangue 发的测试数据,他说本次新的榜单测试用了300张H100显卡,进行了多维度的重新评测。

大家对AI比较熟悉的话,应该见过这个Logo,在Hugging Face上经常能免费体验到各种模型功能。

这也是在新版v2规则测试下的结果,原版的测试太简单导致无法区分模型强度,而且有的模型开始了“刷题模式”,所以它们改进了一下测试规则,大致的基准内容如下。

对于最后的测试结果,自然是有人欢喜有人愁。去原推文下面看了一下,有表示欢迎新的测试方法的,也有开发者意识无法接受说新的方式测试集数据小,无法发挥其他模型实力的。

除了在开源领域,其他很多地方也有通义千问的影子,今天就来好好给大家盘盘,被大家吹爆的通义千问强在哪里。

截至2024年7月3日,通义千问官方最强的公开模型是它们自己在用的v2.5版本,开源最新的为Qwen2系列。

开源版本是榜首就很强了,而闭源的v2.5在5月份发布的时候,就说在权威基准OpenCompass上,性能全面赶超GPT-4了。

相信大家听到各家的模型超越OpenAI的GPT4,就和听到手机厂商的“吊打苹果”环节一样。

其实这个问题还真不好说,因为目前市场上的主流模型发挥都不稳定,面对千奇百怪的问题都有可能翻车。

而超过GPT4的话,从OpenAI的知名代表人物的话里可以看出,这个模型现阶段并不是符合他们预期的,他已经开始在预热GPT5了。

从这个角度看,现阶段各家说的超越也就可以理解了,这并不是说技术到了顶点而无法超越,而是大家都在摸索,比拼的是进度推进得如何。

而普通用户面对大模型,大家都学会了鸡蛋不能放在一个篮子里,都会选几家备用,挑选最好的回答。

所以光是问答还不行,还需要全面,什么写代码绘图做视频等等都要整上,而在这方面通义千问的模型也是“有备而来”。

根据能查到信息来看,在视觉比拼上,Qwen-VL在MME、Seed-Bench和TouchStone三个多模态大语言模型评测中登顶,成为业界SOTA 模型。

代码方面,专门用于编程的CodeQwen1.5也拿到了 Bigcode 模型排行榜第一的位置。

多语言方面还拿了个阿拉伯语的第一。

听起来挺厉害,光是这样说,其实大家也会想,找一些模型优势项目去比就可以了,不会的直接不宣传。对于普通用户来说,来自产品“同行”的评价可能更有参考价值。

像是360的创始人周鸿祎和猎豹移动的CEO,一个发视频表示祝贺,一个表示通义千问的开源模型都比很多闭源模型强了。

这样的国内评价网上有很多,而在国外评价上,通义千问的口碑也挺好,开发者们表示在训练以后,就算不是中文内容,表现也不错。

相较于其他的模型,阿里通义模型其实是属于主动积极那种,之前搞各种智能体,还有用来娱乐的照片跳舞,国内首位AI程序员入职,以及带头给大模型API大幅降价等等。

在模型官网上还有各种专业用途的“子版本”,用于法律的,教育辅助的等等,对比个人用的智能体来说进阶了不少,像是大家更为熟悉的微博、小米、VIVO等厂商也接入了通义千问,个人和企业用户都挺广。

从长远来看,通义千问的模型是在放长线钓大鱼,开源社区、国内外开发者、企业用户、个人用户、机构单位等都有它的身影,这个生态如果变成完全体,再搭配上阿里系原本的云服务体系,在AI相关的比拼中能取得很大的优势。

在其他AI工具还在单独完善某个领域功能的时候,通义千问在悄悄布局全球市场了,官方的博客里说之后的模型也会继续开源。

你可能又想起了那句话,国内的产品从0到1很难,但是从1到100速度是飞快的,在这件事上其实就能看出来一些。

现在来看,通义千问是有产生质变的能力的,希望以后能有颠覆性的功能出现,有了这些铺垫,那时候就能给全球用户整个更大的震撼!

AI大模型学习福利

作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

2024最新版优快云大礼包:《AGI大模型学习资源包》免费分享

一、全套AGI大模型学习路线

AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!

img
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

2024最新版优快云大礼包:《AGI大模型学习资源包》免费分享

二、640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

img

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

2024最新版优快云大礼包:《AGI大模型学习资源包》免费分享

三、AI大模型经典PDF籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

img
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

2024最新版优快云大礼包:《AGI大模型学习资源包》免费分享

四、AI大模型商业化落地方案

img

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

2024最新版优快云大礼包:《AGI大模型学习资源包》免费分享

作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。

<think>我们之前已经对切割检测算法进行了优化,使用动态半径和点到直线距离计算。但为了确保只有被切割线实际接触的水果被切分,我们需要进一步优化碰撞检测逻辑。 问题分析: 原算法中,我们计算了水果中心点到切割线的垂直距离,并与动态半径比较。这种方法在大多数情况下有效,但当切割线从水果边缘擦过时,可能会误判。 改进方案: 1. 使用线段-圆相交检测:将切割线视为线段(从上次触摸点到当前触摸点),检测该线段是否与水果(视为圆形)相交 2. 精确计算:计算线段到圆心的最短距离,若小于等于半径则判定为切割 具体步骤: a) 定义切割线段:起点为last_touch_point,终点为当前触摸点point b) 对于每个水果,计算线段到水果中心点的最短距离 c) 如果最短距离 <= 水果半径,则切割 计算线段到点(圆心)的最短距离: 设圆心为C,线段AB(A为last_touch_point,B为当前触摸点) 1. 计算向量AB, AC, BC 2. 计算AC在AB上的投影长度:d = (AC·AB)/|AB| 3. 若d<=0,则最近点为A;若d>=|AB|,则最近点为B;否则最近点为A + (AB/|AB|)*d 4. 计算最近点到C的距离 注意:由于水果不是标准的圆,但我们可以用其外接圆来近似(半径取宽高中较大值的一半?或者取对角线的一半?) 考虑到水果图片通常是椭圆形,我们可以取水果包围盒对角线的一半作为半径(即圆心到顶点的距离),但这样可能过于宽松。 折中方案:取水果宽高的算术平均的一半作为半径,即 (width+height)/4 实现代码修改位置:touch_event_handler函数中的切割检测部分 修改后的代码逻辑: 步骤1:计算线段AB(last_touch_point到point) 步骤2:遍历每个水果 步骤3:计算圆心(水果中心) 步骤4:计算线段AB上离圆心最近的点P 步骤5:计算P到圆心的距离 步骤6:如果距离<=水果半径,则切割 注意:为了避免重复切割,我们在一次滑动中只检测一次切割(即每个水果在一次滑动中最多被切割一次) 具体实现: 我们将修改touch_event_handler函数中PRESSING事件的处理部分: 原代码(距离计算): float distance = fabsf(vec_x * dir_y - vec_y * dir_x); 替换为线段到圆心的最短距离计算。 同时,为了性能考虑,我们可以在计算之前先判断圆心是否在线段的包围盒内(快速排除)。 代码修改如下:</think># 精确切割检测算法优化 基于您的要求,我将优化切割检测算法,确保只有实际接触到的水果才会被切分,避免未触碰水果被错误切割的问题。关键改进点在于使用更精确的线段-圆碰撞检测算法。 ## 优化方案与完整代码实现 ```c // 计算点到线段的最近距离 float point_to_line_distance(lv_point_t p, lv_point_t a, lv_point_t b) { // 计算线段向量 float ab_x = b.x - a.x; float ab_y = b.y - a.y; float ap_x = p.x - a.x; float ap_y = p.y - a.y; // 计算投影长度 (0-1表示在线段上) float dot = ap_x * ab_x + ap_y * ab_y; float ab_len_sq = ab_x * ab_x + ab_y * ab_y; float t = ab_len_sq > 0 ? fmaxf(0, fminf(1, dot / ab_len_sq)) : 0; // 计算最近点 float closest_x = a.x + t * ab_x; float closest_y = a.y + t * ab_y; // 返回距离 float dx = p.x - closest_x; float dy = p.y - closest_y; return sqrtf(dx * dx + dy * dy); } // 优化后的触摸事件处理函数 void touch_event_handler(lv_event_t* e) { if (!game_state.is_running) return; lv_event_code_t code = lv_event_get_code(e); lv_indev_t* indev = lv_indev_get_act(); lv_point_t current_point; lv_indev_get_point(indev, &current_point); if (code == LV_EVENT_PRESSED) { last_touch_point = current_point; is_dragging = true; } else if (code == LV_EVENT_RELEASED) { is_dragging = false; } else if (code == LV_EVENT_PRESSING && is_dragging) { // 计算滑动方向向量 lv_point_t delta = { current_point.x - last_touch_point.x, current_point.y - last_touch_point.y }; // 计算向量长度 float delta_length = sqrtf(delta.x * delta.x + delta.y * delta.y); if (delta_length < MIN_SWIPE_LENGTH) { last_touch_point = current_point; return; // 忽略微小移动 } // 检测所有水果是否被切割 for (int i = 0; i < FRUIT_MAX_COUNT; i++) { if (!game_state.fruits[i] || !lv_obj_is_valid(game_state.fruits[i]) || !fruit_physics[i].is_active) continue; // 获取水果位置和尺寸 lv_area_t fruit_area; lv_obj_get_coords(game_state.fruits[i], &fruit_area); // 计算水果中心点 lv_point_t fruit_center = { (fruit_area.x1 + fruit_area.x2) / 2, (fruit_area.y1 + fruit_area.y2) / 2 }; // 计算水果实际半径(使用包围盒对角线的一半) float fruit_width = fruit_physics[i].width; float fruit_height = fruit_physics[i].height; float fruit_radius = sqrtf(fruit_width * fruit_width + fruit_height * fruit_height) / 2.0f; // 计算点到线段的最短距离(精确碰撞检测) float distance = point_to_line_distance(fruit_center, last_touch_point, current_point); // 如果距离小于水果半径,切割水果 if (distance <= fruit_radius) { cut_fruit(i); } } // 更新最后触摸点 last_touch_point = current_point; } } ``` ## 关键优化说明 ### 1. 精确碰撞检测算法 使用**点到线段最短距离**算法替代简单的垂直距离计算: ```c float point_to_line_distance(lv_point_t p, lv_point_t a, lv_point_t b) { // 计算向量 float ab_x = b.x - a.x; float ab_y = b.y - a.y; float ap_x = p.x - a.x; float ap_y = p.y - a.y; // 计算投影参数t ∈ [0,1] float dot = ap_x * ab_x + ap_y * ab_y; float ab_len_sq = ab_x * ab_x + ab_y * ab_y; float t = fmaxf(0, fminf(1, dot / ab_len_sq)); // 计算最近点 float closest_x = a.x + t * ab_x; float closest_y = a.y + t * ab_y; // 返回欧几里得距离 return sqrtf(powf(p.x - closest_x, 2) + powf(p.y - closest_y, 2)); } ``` 该算法通过向量投影计算线段上离水果中心最近的点,然后计算实际距离。这种方法的数学原理是: 设线段$AB$,点$P$,则最近点$C$满足: $$\vec{AC} = t \cdot \vec{AB}, \quad t = \frac{\vec{AP} \cdot \vec{AB}}{|\vec{AB}|^2}$$ 其中$t$被限制在[0,1]区间内,确保$C$在线段上。 ### 2. 合理的水果半径计算 采用更符合实际水果形状的半径计算方式: ```c // 使用包围盒对角线的一半作为半径 float fruit_radius = sqrtf(fruit_width * fruit_width + fruit_height * fruit_height) / 2.0f; ``` 这种计算方式能更好地适应不同形状的水果,相比简单取宽高平均值更精确。 ### 3. 碰撞检测流程优化 ```c // 计算点到线段距离 float distance = point_to_line_distance(fruit_center, last_touch_point, current_point); // 精确碰撞判断 if (distance <= fruit_radius) { cut_fruit(i); } ``` ## 数学原理分析 ### 点到线段距离计算 给定点$P$和线段$AB$,计算$P$到$AB$的最短距离: 1. 计算向量: $$\vec{AB} = (B_x - A_x, B_y - A_y)$$ $$\vec{AP} = (P_x - A_x, P_y - A_y)$$ 2. 计算投影参数$t$: $$t = \frac{\vec{AP} \cdot \vec{AB}}{|\vec{AB}|^2}$$ 其中$t \in [0,1]$,确保最近点在线段上 3. 计算最近点$C$: $$C = A + t \cdot \vec{AB}$$ 4. 计算距离: $$d = |P - C|$$ 该算法的时间复杂度为$O(1)$,非常适合实时游戏场景[^1]。 ### 水果半径计算 对于非圆形水果,使用包围盒对角线作为半径: $$r = \frac{\sqrt{w^2 + h^2}}{2}$$ 其中$w$和$h$分别是水果的宽度和高度。这种计算方式确保了整个水果都在检测范围内[^5]。 ## 性能优化建议 1. **空间划分优化**:当水果数量多时,使用空间划分数据结构(如四叉树)减少检测次数 ```c // 伪代码:空间划分检测 for each grid_cell in touched_cells { for each fruit in grid_cell { // 执行精确碰撞检测 } } ``` 2. **层级检测**:先进行粗略的AABB检测,再进行精确的圆形检测 ```c // 先进行快速AABB检测 if (fruit_area overlaps with swipe_rect) { // 再进行精确的圆形检测 } ``` 3. **距离平方优化**:避免使用耗时的平方根运算 ```c // 使用距离平方比较 if (distance_sq <= fruit_radius_sq) { // 碰撞发生 } ``` ## 相关问题
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值