opencv与ai深度学习 | yolo11介绍及五大任务推理演示(目标检测,图像分割,图像分类,姿态检测,带方向目标检测)_yolo11n-爱代码爱编程
本文来源公众号“OpenCV与AI深度学习”,仅用于学术分享,侵权删,干货满满。
原文链接:YOLO11介绍及五大任务推理演示(目标检测,图像分割,图像分类,姿态检测,带方向目标检测)
前言
在不断发展的 AI 世界中,有一件事是我们可以确定的:模型会变得越来越好、越来越快、越来越智能。就在你认为 YOLO 系列已经达到顶峰时,Ultralytics 发布了最新升级版 — YOLO11。没错,不是YOLOv11 — 他们通过删除“v”实现了极简主义。这就像 YOLO 同时理发和升职一样。
但在这个精简的名称背后,是性能上的重大飞跃。YOLO11 通过显着减少参数来平衡竞争环境,带来更快的处理速度和更高的效率。它的推理时间比 YOLOv10 快 2%,使其成为实时应用的绝佳选择。
此外,YOLO11m在 COCO 数据集上实现了更高的平均精度 (mAP)得分,同时与 YOLOv8m 相比,使用的参数减少了 22%,从而降低了计算量,同时又不牺牲性能。速度和精度的结合使 YOLO11 成为任何计算机视觉任务的强大工具。
那么,YOLO11 与前代产品有何不同?让我们探索一下它的架构,看看这个模型如何从快速发展到超高效,成为实时物体检测的超级英雄。
官方代码链接:
ultralytics/ultralytics: Ultralytics YOLO11 🚀 (github.com)
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]
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
2. 图像分割
代码如下:
from ultralytics import YOLO
model = YOLO("yolo11n-seg.pt")
seg_results = model("/content/yogapose.jpg")
seg_results[0].show()
3. 姿态识别
代码如下:
from ultralytics import YOLO
model = YOLO("yolo11n-pose.pt")
pose_results = model("/content/yogapose.jpg")
pose_results[0].show()
4. 图像分类
代码如下:
from ultralytics import YOLO
model = YOLO("yolo11n-cls.pt")
classi_results = model("/content/cocoimage1.jpg")
classi_results[0].show()
4. 带角度的目标检测
代码如下:
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 的轻量级架构、增强的速度和灵活性使其成为各行各业开发人员和研究人员的强大工具。随着计算机视觉的不断发展,YOLO11 为实时检测和分类树立了新的标杆。
THE END !
文章结束,感谢阅读。您的点赞,收藏,评论是我继续更新的动力。大家有推荐的公众号可以评论区留言,共同学习,一起进步。