探索 YOLO11:更快、更智能、更高效

news2024/11/25 2:37:58

点击下方卡片,关注“小白玩转Python”公众号

在人工智能这个不断进化的世界中,有一件事我们可以肯定:模型不断变得更好、更快、更智能。就在你以为 YOLO 系列已经达到顶峰时,Ultralytics 推出了最新升级——YOLO11。没错,不是 YOLOv11——他们通过去掉“v”变得简约了。这就像 YOLO 同时理了个发并得到了晋升。

但在这个名字简化的背后,是性能的显著飞跃。YOLO11 通过显著减少参数,带来了更快的处理速度和提高的效率。它拥有比 YOLOv10 快 2% 的推理时间,使其成为实时应用的绝佳选择。

更值得一提的是,YOLO11m 在 COCO 数据集上实现了更高的平均精度均值(mAP)得分,同时比 YOLOv8m 少用了 22% 的参数,使其在不牺牲性能的情况下计算更轻量。这种速度和精度的结合,使 YOLO11 成为任何计算机视觉任务的强大工具。

那么,YOLO11 与它的前辈们有何不同呢?让我们探索它的架构,看看这个模型是如何从仅仅快速变为超高效,使其成为实时目标检测的超级英雄。

fd08cd6ef58f8bbcd20438ffd5ca3a01.png

YOLO11 架构:

1. 骨干网络:YOLO11 的大脑

YOLO11 的骨干就像模型的大脑。它使用先进的神经网络,如 EfficientNet 或 CSPNet,来捕捉图像中的重要细节。想象一下,这就像一个人扫描一个场景并捕捉重要线索——无论是物体的纹理还是形状——帮助模型更清晰地“看”图像。这种改进增强了 YOLO11 识别物体的能力,即使是在棘手或杂乱的环境中。

2. 颈部:视觉与行动之间的桥梁

YOLO11 的颈部将大脑(骨干)与系统的其余部分连接起来,收集和组合来自图像不同部分的信息。类似于我们如何聚焦于近处和远处的物体,颈部帮助模型检测不同大小的物体,无论是像路标这样的小物体,还是像公共汽车这样的大物体。

3. 检测头:YOLO11 的眼睛

检测头是 YOLO11 理解图像的地方,识别出图像中存在哪些物体、它们的位置,甚至它们的具体细节(如身体关节或物体边缘)。这一步骤过程使 YOLO11 非常快速。这个版本中的特别改进还使其更擅长发现小物体,这些是以前版本可能会错过的。

4. 锚框:塑造目标检测

锚框就像模板,帮助模型识别不同大小和形状的物体。YOLO11 改进了这些模板,使其更好地适应它检测的物体,提高了识别常见和不寻常形状的准确性。

5. 损失函数:YOLO11 的学习教练

损失函数就像 YOLO11 的教练,帮助它从错误中学习。这些函数指导模型专注于它挣扎的领域——比如检测稀有物体或找到物品的精确位置。随着 YOLO11 继续在图像上进行“训练”,它在识别困难物体方面变得越来越好。

YOLO11 的新特性

以下是 YOLO11 带来的一些突出特性:

1. 增强的特征提取:在挑战性情况下更好的检测

YOLO11 的设计使其能够捕捉图像中的复杂模式,使其在困难环境中识别物体的能力更强——无论是光线不足还是杂乱的场景。

2. 更少参数的更高 mAP

YOLO11 实现了更高的平均精度均值(mAP)——这是衡量它检测物体能力的关键指标——同时比 YOLOv8 少用了 22% 的参数。简单来说,它更快、更高效,同时不牺牲准确性。

3. 更快的处理速度

YOLO11 提供了比 YOLOv10 快 2% 的处理速度,使其成为自动驾驶、机器人或实时视频分析等实时应用的理想选择。

4. 资源效率:用更少的资源做更多的事情

尽管处理更复杂的任务,YOLO11 旨在使用更少的计算资源,使其适合大规模项目和处理能力有限的系统。

5. 改进的训练过程

YOLO11 中的训练过程更加流畅,使其能够更有效地适应各种任务。无论您是在小数据集上工作还是在大型项目上,YOLO11 都能适应问题的规模。

6. 部署的灵活性

YOLO11 旨在在云服务器和智能手机或物联网设备等边缘设备上高效运行。这种灵活性使其非常适合需要在不同环境中工作的应用。

7. 适用于多样化应用的多功能性

从自动驾驶和医疗成像到智能零售和工业自动化,YOLO11 的多功能性意味着它可以应用于广泛的领域,成为计算机视觉挑战的解决方案。

实现:

1. 检测:

%pip install ultralytics
from ultralytics import YOLO
from PIL import Image
import requests


model=YOLO('yolo11n.pt')
image = Image.open("/content/DOG.png")
result = model.predict(image, conf=0.25)[0]

7667d2b0fac16e84d4d94f543fe79a18.png

e471544abdbe7c264a22b1fe29cacb3a.png

CLI 命令:

!yolo task = detect mode=predict model=yolo11n.pt conf=0.25 source="/content/DOG.png" save=True

自定义训练

无论是使用自定义图像还是从 Roboflow 下载:

from roboflow import Roboflow
rf = Roboflow(api_key="ROBOFLOW_API_KEY")
project = rf.workspace("project-fish-eqo9c").project("fish-species-identification")
version = project.version(3)
dataset = version.download("yolov11")

使用 CLI 进行训练:

!yolo task=detect mode=train model=yolo11s.pt data="/content/Fish-Species-Identification--3/data.yaml" epochs=10 imgsz=640 plots=True

fce5b346a0a94e4107b864678b0677bd.png

2. 分割:

from ultralytics import YOLO


model = YOLO("yolo11n-seg.pt")
seg_results = model("/content/yogapose.jpg")
seg_results[0].show()

5db96e074ad21749d98c0d74b35429ee.png

3. 姿态:

from ultralytics import YOLO


model = YOLO("yolo11n-pose.pt")


pose_results = model("/content/yogapose.jpg")


pose_results[0].show()

0504d35e776eaec377cf373b2f832158.png

4. 分类:

from ultralytics import YOLO


model = YOLO("yolo11n-cls.pt")


classi_results = model("/content/cocoimage1.jpg")


classi_results[0].show()

e2a68efb6f37db97521f645906948e2d.png

5. 定向目标检测:

from ultralytics import YOLO


model = YOLO("yolo11n-obb.pt")


obb_results = model("/content/vecteezy_busy-traffic-on-the-highway_6434705.mp4", save=True)

进一步改进:

虽然 YOLO11 带来了显著的进步,但重要的是要认识到可能需要进一步增强或针对特定任务的微调的领域:

1. 通过微调改进目标分类

尽管 YOLO11 在许多一般任务中表现出色,但其目标分类能力在针对特定任务进行微调时可以进一步提高。例如,在医学成像或工业检查等专业领域,调整模型以专注于利基数据集可以显著提高其准确性和精度。

示例:在医疗保健中,对 YOLO11 进行微调以识别医学扫描中特定的异常,如疾病的早期迹象,可以产生更适合该领域的更准确分类。

2. 定向目标检测:空中或网格视图

YOLO11 在空中或网格视图等场景中表现出色,这些场景中的物体通常以特定方式定向,如卫星图像或无人机镜头。然而,在更传统的日常视频源中——如监控或交通摄像头——由于其针对特定角度和方向的优化,它可能表现出降低的效率。这意味着虽然它在某些专业应用中非常有能力,但在处理典型真实世界视频中物体的多样化方向时可能不够有效。

示例:在标准安全摄像头的零售环境中,YOLO11 可能需要额外的调整来处理各种物体视角。

结论

YOLO11 代表了实时目标检测的重大飞跃,通过更快的处理速度、更少的参数和提高的准确性,推动了界限。它的多功能性使其能够在从自动驾驶到工业自动化的广泛计算机视觉任务中表现出色。然而,与任何尖端技术一样,针对特定任务的微调对于在专业应用中解锁其全部潜力至关重要。虽然它在像空中目标检测这样的场景中蓬勃发展,但其在传统视频中的表现可能需要额外的优化。

最终,YOLO11 的轻量级架构、增强的速度和灵活性使其成为跨各行各业的开发者和研究人员的强大工具。随着计算机视觉的不断发展,YOLO11 为实时检测和分类的可能性设定了新的基准。

参考资料:

Github 代码:https://github.com/NandiniLReddy/yolo11Review 

Ultralytics 博客文章:https://www.ultralytics.com/blog/ultralytics-yolo11-has-arrived-redefine-whats-possible-in-ai 

Roboflow 博客姿态:https://blog.roboflow.com/yolov11-how-to-train-custom-data/ 

Ultralytics Github:https://github.com/ultralytics/ultralytics

·  END  ·

🌟 想要变身计算机视觉小能手?快来「小白玩转Python」公众号!

回复Python视觉实战项目,解锁31个超有趣的视觉项目大礼包!🎁

17d5cd05dcc68099e24c3476a0343545.png

本文仅供学习交流使用,如有侵权请联系作者删除

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2210973.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

K-means 聚类算法:目标函数推导、迭代过程及可视化解析

一、K-means 的背景 在机器学习领域,许多任务涉及 训练模型来做预测或分类 。比如,医生可能希望通过以往的病例数据来预测某个病人未来是否会患上某种疾病,或者新闻网站可能需要根据文章的主题将新闻自动分类。这些任务通常依赖于有标签的数…

Qt之TCP收发图片的例子

一.效果 二.实现 1.发图片 void MainWindow::slotSendImage() {matrix.rotate(90);QPixmap tempPixmap = pixmap.transformed(matrix);QBuffer buffer;tempPixmap.save(&buffer,"jpg");ui->labelImage->setPixmap(tempPixmap);int dataLength = buffer.d…

UE4 材质学习笔记09(雨水水坑着色器/完整雨水着色器)

一.雨水水坑着色器 要用到这样一个噪声贴图,我们要做的就是,做出水坑并让水坑在这种浑浊的噪点中产生,因此水坑将从最暗的斑点生长,然后随着它继续占据越来越亮的像素而生长 现在水坑将从上到下投射到世界空间中,所以…

C++:模拟priority_queue

目录 priority_queue的介绍 概念 特点 priority_queue的使用 基本操作 演示代码 ​编辑 priority_queue的模拟实现 仿函数 向上调整和向下调整 模拟实现的代码 priority_queue的介绍 概念 在C标准库中,priority_queue是一个基于优先级堆的容器适配器。…

设计感十足的喇叭裤来咯,亲子款get~

微喇叭的设计,时尚感爆棚,瞬间让宝贝成为冬日里的小潮人。而且这种设计非常显瘦,能够很好地修饰宝贝的腿型,穿上秒变大长腿。表面磨毛质感,摸起来舒软绒顺,温柔气质,下脚隐形拉链,拉…

如何通过 Nginx 只允许 www 域名访问并禁止裸域名访问

个人名片 🎓作者简介:java领域优质创作者 🌐个人主页:码农阿豪 📞工作室:新空间代码工作室(提供各种软件服务) 💌个人邮箱:[2435024119qq.com] &#x1f4f1…

learn C++ NO.23——map、set的模拟实现

STL库的实现方式 map和set的底层用的红黑树是一样的吗?从容器特点的角度出发,这里个容器的底层应该分别用key搜索模型的红黑树和key value 搜索模型的红黑树。但是,从库的设计角度出发,这两者用同一份红黑树代码更好。而STL就是用…

第十五章 RabbitMQ延迟消息之延迟插件

目录 一、引言 二、延迟插件安装 2.1. 下载插件 2.2. 安装插件 2.3. 确认插件是否生效 三、核心代码 四、运行效果 五、总结 一、引言 上一章我们讲到通过死信队列组合消息过期时间来实现延迟消息,但相对而言这并不是比较好的方式。它的代码实现相对来说比…

Java->排序

目录 一、排序 1.概念 2.常见的排序算法 二、常见排序算法的实现 1.插入排序 1.1直接插入排序 1.2希尔排序(缩小增量法) 1.3直接插入排序和希尔排序的耗时比较 2.选择排序 2.1直接选择排序 2.2堆排序 2.3直接选择排序与堆排序的耗时比较 3.交换排序 3.1冒泡排序…

你知道C++多少——继承

🌈个人主页:小新_- 🎈个人座右铭:“成功者不是从不失败的人,而是从不放弃的人!”🎈 🎁欢迎各位→点赞👍 收藏⭐️ 留言📝 🏆所属专栏&#xff1…

蓝桥杯模块三:蜂鸣器和继电器的基本控制

模块训练题目: 一、蜂鸣器电路图 1.电路图 2.电路分析 138译码器控制Y5,Y5控制Y5C,Y5C低电平控制芯片开启P0口控制ULN2003继而控制蜂鸣器端口和继电器端口 二、程序代码 1.138译码器控制端口函数 建立初始化函数选择锁存器 2.实现题目功能 在LED代…

24-10-13-读书笔记(二十五)-《一只特立独行的猪》([中] 王小波)用一生来学习艺术

文章目录 《一只特立独行的猪》([中] 王小波)目录阅读笔记记录总结 《一只特立独行的猪》([中] 王小波) 十月第五篇,放慢脚步,秋季快要过去了,要步入冬季了,心中也是有些跌宕起伏&am…

Guitar Pro怎么制作伴奏谱,吉他谱制作软件guitar pro教程

在诸多教学吉他谱制作软件中Guitar Pro是一款非常优秀的软件,它是专为吉他和其他弦乐器设计,且能提供乐谱编辑、音轨录制和播放、和弦与音阶库等功能的强大软件。Guitar Pro不仅具有强大的乐谱编辑功能,其用户界面也易于上手,更支…

ThingsBoard规则链节点:Script节点详解

引言 脚本节点简介 用法 含义 应用场景 实际项目运用示例 智能楼宇管理系统 工业自动化生产线 结论 引言 ThingsBoard是一个功能强大的物联网平台,它支持设备管理、数据收集与处理以及实时监控。其核心组件之一是规则引擎,允许用户定义复杂的业务…

vue特效,一片动态星空

vue实现漂亮星空&#xff0c;超级简单 1.创建vue项目&#xff1a; vue create demo 2.注册vuecli : npm i element-ui -S 3.加载依赖 &#xff1a;npm i 4.运行项目 :npm run serve <!DOCTYPE html> <html lang"en"> <head><…

JavaWeb 19 AJAX

"我就是希望你好&#xff0c;就像很多人希望我好一样&#xff0c;特别简单&#xff0c;特别真挚。也不为了什么&#xff0c;就是希望你好" —— 24.10.13 一、什么是AJAX AJAX Asynchronous JavaScript and XML(异步的JavaScript和XML) AJAX不是新的编程语言&…

仿新版QQ的聊天小软件

仿新版QQ的聊天小软件 文章说明核心源码效果展示源码下载 文章说明 新开一个聊天组件的项目的想法主要来源于想学习一下消息队列的使用&#xff0c;后来在书写界面和一些功能模块时&#xff0c;又想到可以抽离出来&#xff0c;分别写几篇文章&#xff0c;主要介绍扫码登陆、消息…

MQ快速入门【详细】个人笔记 讲解通俗易懂

1.同步通讯和异步通讯 同步通讯&#xff1a;如果举个例子来说&#xff0c;同步通讯就像是两个人在打电话&#xff0c;一方说的话&#xff0c;能够立马传给另一方&#xff0c;消息的时效性非常高&#xff0c;但是相对的&#xff0c;只能是给一个人通讯&#xff0c;如果这个时候&…

React (三) 创建安装脚手架,类组件与函数式组件;生命周期;父子通信props;插槽;非父子通信Context

文章目录 一、脚手架的创建与安装1. 认识脚手架2. 安装脚手架3. 创建react项目4. 项目结构 二、从0编写三、组件化开发1. 什么是组件化开发2. 类组件3. render函数4. 函数式组件 四、生命周期1. 挂载Mount2. 更新Update3. 卸载Unmount4. 不常用的生命周期 五、父子组件通信1. 父…

数据结构之队列(python)

华子目录 1.队列存储结构1.1队列基本介绍1.2队列的实现方式 2.顺序队列2.1顺序队列的介绍2.2顺序队列的简单实现2.3代码实现 3.链式队列和基本操作3.1链式队列数据入队3.2链式队列数据出队3.3队列的链式表示和实现 1.队列存储结构 1.1队列基本介绍 队列的两端都"开口&qu…