前言
在人工智能持续发展的当下,有一点是确凿无疑的:模型正变得愈发优秀、快捷和智能。就在人们以为YOLO系列已登峰造极之时,Ultralytics推出了最新升级版——YOLO11。需要注意的是,这里不是YOLOv11,他们简化了命名方式,去掉了“v”。这一改变就如同YOLO既做了形象上的精简,又实现了性能的提升。
而在这个简洁的名称背后,是性能的巨大飞跃。YOLO11通过大幅削减参数,实现了更快的处理速度和更高的效率。它在COCO数据集上的平均精度均值(mAP)得分超越了YOLOv8,并且所使用的参数减少了22%,这使得它在保证性能的同时,计算负担更轻。
那么,YOLO11和它的前代版本究竟有何差异呢?让我们深入探究其架构,了解这个模型是怎样从仅仅追求速度转变为超级高效的,从而使其成为实时目标检测领域的佼佼者。
YOLO11 架构
- 骨干网络(Backbone Network)
- YOLO11的骨干网络堪称模型的核心“大脑”。它采用先进的神经网络架构,例如EfficientNet或CSPNet,用于捕捉图像中的关键细节。这就好比一个人在审视一个场景时,能够敏锐地捕捉到各种重要线索,无论是物体的纹理还是形状等,进而帮助模型更为清晰地“洞察”图像。这种优化极大地提升了YOLO11识别物体的能力,即便处于复杂混乱的环境中,它也能表现出色。
- 颈部(Neck)
- YOLO11的颈部起着连接“大脑”(骨干网络)与系统其他部分的关键作用,它负责收集并整合图像不同区域的信息。这类似于我们在观察环境时,既能关注到近处的物体,也能留意到远处的物体。颈部的作用使得模型能够检测出不同大小的物体,无论是像街道标志这类较小的物体,还是像公共汽车那样的大型物体,它都能准确识别。
- 检测头部(Detection Head)
- 检测头部是YOLO11理解图像的关键部位,它能够识别图像中存在哪些物体、它们的位置在哪里,甚至还能捕捉到它们的一些具体细节,比如身体关节或者物体边缘等信息。正是这一处理过程使得YOLO11具有极快的检测速度。而且,这个版本在这方面有特别的改进,使其在发现小物体方面表现更为出色,而这在以往的版本中可能是容易被遗漏的。
- 锚框(Anchor Boxes)
- 锚框类似于模板,其作用是协助模型识别不同大小和形状的物体。YOLO11对这些模板进行了改进,使其能够更好地适配所检测的物体,从而提高了对常见以及不寻常形状物体识别的准确性。
- 损失函数(Loss Functions)
- 损失函数犹如YOLO11的“教练”,它引导模型从错误中学习。这些函数会指导模型关注那些它处理起来较为困难的领域,比如检测稀有物体或者精确确定物体的位置等。随着YOLO11不断在图像上进行“训练”,它在识别困难物体方面的能力会逐渐提升。
YOLO11 的新特
以下是对YOLO11突出特性的详细阐述:
-
增强的特征提取:在复杂环境下实现更优检测
- YOLO11经过精心设计,具备捕捉图像中复杂模式的能力,这使得它在面临光线不佳或场景杂乱等具有挑战性的情况时,依然能够出色地识别物体。
-
更少参数,更高mAP:高效且精准
- YOLO11实现了更高的平均精度均值(mAP),这是衡量其检测物体效果的关键指标。与此同时,它所使用的参数相较于YOLOv8减少了22%。简而言之,它在保持准确性的前提下,实现了更快的速度和更高的效率。
-
更快的处理速度:实时应用的理想之选
- YOLO11的处理速度比YOLOv10快2%,这一优势使其成为自动驾驶、机器人以及实时视频分析等对实时性要求较高的应用的绝佳选择。
-
资源效率:以少胜多的能力
- 尽管需要处理更为复杂的任务,但YOLO11致力于使用更少的计算资源。这一特性使其非常适合大规模项目以及处理能力有限的系统。
-
改进的训练过程:灵活适应各类任务
- YOLO11的训练过程更为精简,从而能够更高效地适应各种不同的任务。无论是在小型数据集上开展工作,还是面对大型项目,YOLO11都能够根据问题的规模进行相应的调整。
-
跨部署的灵活性:适应多种环境
- YOLO11被设计为能够在云服务器以及边缘设备(如智能手机或物联网设备)上高效运行。这种灵活性使其非常适用于需要在不同环境中工作的应用程序。
-
适用于多种应用的多功能性:广泛的应用领域
- 从自动驾驶、医疗成像,到智能零售以及工业自动化,YOLO11的多功能性使其能够应用于众多领域,从而成为解决计算机视觉难题的有效方案。
实施
- 检测:
conda create --name yolo11 python==3.10
conda activate yolo11
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]
CLI 命令:
yolo task = detect mode=predict model=yolo11n.pt conf=0.25 source="/content/DOG.png" save=True
- 实例分割:
from ultralytics import YOLO
model = YOLO("yolo11n-seg.pt")
seg_results = model("/content/yogapose.jpg")
seg_results[0].show()
- 姿态:
from ultralytics import YOLO
model = YOLO("yolo11n-pose.pt")
pose_results = model("/content/yogapose.jpg")
pose_results[0].show()
- 分类:
from ultralytics import YOLO
model = YOLO("yolo11n-cls.pt")
classi_results = model("/content/cocoimage1.jpg")
classi_results[0].show()
- 旋转目标检测:
from ultralytics import YOLO
model = YOLO("yolo11n-obb.pt")
obb_results = model("/content/vecteezy_busy-traffic-on-the-highway_6434705.mp4", save=True)
进一步改善:
YOLO11虽然带来了显著的进步,但重要的是要认识到需要进一步增强或特定于任务的微调的领域:
- 对象分类的微调改进
尽管 YOLO11在许多一般任务中表现出优越的性能,但是当针对特定任务进行微调时,它的对象分类能力可以进一步提高。例如,在医学成像或工业检查等专业领域,调整模型以关注利基数据集可以显著提高其准确与精密。
例如: 在医疗保健领域,微调 YOLO11以识别医学扫描中的特定异常,比如疾病的早期征兆,可以产生更精确的分类,以适应该领域。
- 定向目标检测: 航拍或网格视图
YOLO11在空中或网格视图等场景中表现出色,在这些场景中,物体通常以特定的方式定向,例如在卫星地图或无人机镜头中。然而,在更为传统的日常视频传输(如监控或交通摄像头)中,由于对特定角度和方向进行了优化,它的效率可能会降低。这意味着,虽然它在某些特定的应用程序中具有很强的能力,但在处理典型的现实视频中看到的对象的不同方向时,它可能不那么有效。
例如: 在一个有标准安全摄像头的零售环境中,YOLO11可能需要额外的调整来处理不同的对象透视图。
结论
YOLO11代表了实时目标检测的一个重大飞跃,以更快的处理速度、更少的参数和更高的精确度推动了边界。它的多功能性使它能够胜任广泛的计算机视觉任务,从自动驾驶到工业自动化。然而,与任何尖端技术一样,任务特定的微调对于在专门应用程序中充分发挥其潜力至关重要。虽然它在像空中目标检测这样的场景中大行其道,但它在传统视频中的表现可能需要额外的优化。
最终,YOLO11的轻量级架构、增强的速度和灵活性使其成为跨不同行业的开发人员和研究人员的强大工具。随着计算机视觉的不断发展,YOLO11为实时检测和分类提供了一个新的基准。
原文地址:https://medium.com/@nandinilreddy/exploring-yolo11-faster-smarter-and-more-efficient-f4243d910d1e