前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >YOLOv8全解析:高效、精准的目标检测新时代——创新架构与性能提升

YOLOv8全解析:高效、精准的目标检测新时代——创新架构与性能提升

原创
作者头像
CoovallyAIHub
发布2025-01-02 14:45:37
发布2025-01-02 14:45:37
3460
举报

YOLO(You Only Look Once)系列模型,凭借其高效、快速的特性,已经成为目标检测领域的重要代表。作为YOLO系列中的最热门版本,YOLOv8继续沿袭了其前辈的优势,并进一步提升了性能,使得它在处理复杂场景中的目标检测任务时更加高效和精准。

  • YOLOv8文档:https://v8docs.ultralytics.com/   

模型介绍

YOLOv8 是 ultralytics 公司在 2023年1月10号开源的YOLOv5的下一个重大更新版本,也是YOLO模型系列中最热门的模型之一,因为它参考了YOLOv1到YOLOv7系列的所有模型,集各家优点于一身,在还没有开源时就收到了用户的广泛关注。YOLOv8的对各算法优点结合以及部分模块的创新,使其在图像分类、物体检测和实例分割任务中表现卓越。

网络结构

其主要结构如下图所示:

官方描述YOLOv8 是一个 SOTA 模型,它建立在以前YOLO版本的成功基础上,并引入了新的功能和改进,以进一步提升性能和灵活性。具体创新包括一个新的骨干网络、一个新的 Ancher-Free 检测头和一个新的损失函数,可以在从 CPU 到 GPU 的各种硬件平台上运行。

从YOLOv8的网络结构可以看出,其延用了YOLOv5的网络结构思想,网络还是分为三个部分: 基于CSP(紧凑和分离)的主干网络(backbone),特征增强网络(neck),检测头(head) 三个部分。

Backbone改进

Backbone改进:YOLOV5中的C3模块被替换成了C2f模块,实现了进一步的轻量化。同时保持了CSP的思想,保留了YOLOv5等架构中使用的SPPF(空间金字塔池化)模块。整个YOLOv8的Backbone由CBS、C2f、SPPF三种模块组成。让YOLOv8可以在保证轻量化的同时获得更加丰富的梯度流信息。

特征增强网络(neck)

YOLOv8使用PA-FPN(路径聚合网络-特征金字塔网络)的思想,具体实施过程中将YOLOV5中的PA-FPN上采样阶段的卷积去除了,并且将其中的C3模块替换为了C2f模块。

检测头(head)

区别于YOLOV5的耦合头,YOLOV8使用了Decoupled-Head,将分类和检测头分离,使得网络的训练和推理更加高效。

代码如下图所示:

其它部分:

Anchor-Free思想:抛弃了Anchor-Base,采用了Anchor-Free的思想。

损失函数改进:分类使用BCEloss,回归使用DFL Loss+CIOU Loss。

样本匹配方式改进:采用了Task-Aligned Assigner匹配方式。

这些改进使得YOLOv8在保持了YOLOv5网络结构的优点的同时,进行了更加精细的调整和优化,提高了模型在不同场景下的性能。

Loss计算

Loss 计算过程包括 2 个部分: 正负样本分配策略和Loss计算。

现代目标检测器大部分都会在正负样本分配策略上面做文章,典型的如YOLOX  的simOTA、TOOD的TaskAlignedAssigner和RTMDet 的DynamicSoftLabelAssigner ,这类 Assigner 大都是动态分配策略,而 YOLOv5采用的依然是静态分配策略。考虑到动态分配策略的优异性,YOLOv8算法中则直接引用了TOOD的TaskAlignedAssigner。

TaskAlignedAssigner 的匹配策略简单总结为: 根据分类与回归的分数加权的分数选择正样本。

s是标注类别对应的预测分值,u是预测框和gt框的iou,两者相乘就可以衡量对齐程度。

Loss计算包括 2 个分支:分类和回归分支,没有了之前的objectness分支。

分类分支依然采用 BCE Loss回归分支需要和 Distribution Focal Loss 中提出的积分形式表示法绑定,因此使用了Distribution Focal Loss,同时还使用了CIoU Loss3个Loss采用一定权重比例加权即可。

性能表现

YOLOv8是个模型簇,从小到大包括:YOLOv8n、YOLOv8s、YOLOv8m、YOLOv8l、YOLOv8x等。模型参数、运行速度、参数量等详见下表:

对比YOLOv5可以看出mAP和参数量都上升了不少。

YOLOv8使用详解

按照Ultralytics官网信息,进行YOLOv8模型训练需要使用CLI或者python来进一步操作。今天我将介绍不用代码,也可以进行YOLOv8所有模型算法的训练、部署、预测和下载!

添加模型

进入Coovally平台点击【全部模型】,搜索YOLOv8,在这里可以选择不同的YOLOv8版本。下载代码包或者点击另存为我的模型。进入【模型集成】页面,进行安装。

创建数据集

进入【图像数据】页面,点击创建数据集,输入数据集名称、描述,选择任务类型,上传压缩包文件。创建数据集时可以按照比例拆分训练集、验证集、测试集。

数据标注

进入【辅助标注】页面,点击创建样本集,进入样本集详情页,创建好标签进行数据标注。可以选择几组数据进行人工标注,标注完成后发布为数据集启动微调训练,剩余样本集数据即可全部自动化完成。

模型训练

进入数据集详情页,输入任务名称,选择模型配置模版,设置实验E-poch次数,训练次数等信息,即可开始训练。

TIP:平台也内置了YOLOv8系列的模型算法,也可以直接使用内置算法进行模型训练。

模型预测

模型训练完成后,完成模型转换与模型部署后,即可上传图片进行结果预测。完成后还可以将模型下载与分享

YOLOv8总结

高效性与实时性

YOLOv8以其出色的处理速度著称,能在保持高精度检测的同时,实现实时性要求。这得益于其优化的网络结构和训练策略,使其非常适合自动驾驶、智能监控等需要快速响应的应用场景,为用户带来流畅、即时的检测体验。

先进的网络结构

YOLOv8采用创新的骨干网络和颈部结构,结合Transformer与CNN的优势,有效提升了图像特征提取能力。多尺度特征融合和自适应锚框选择等机制,进一步增强了模型的检测精度和鲁棒性,使其在各种复杂场景下都能表现出色。

创新的检测头设计

YOLOv8引入无锚分裂Ultralytics头,摒弃了传统的基于锚的检测方式,提高了检测的灵活性和准确性。这种创新设计使得模型能够更精确地检测不同形状和大小的物体,尤其适合处理复杂背景和多样化场景。

广泛的适用性和灵活性

YOLOv8提供多种预训练模型,支持多种计算机视觉任务,如实例分割、姿态检测等。用户可根据具体需求选择合适的模型,节省训练时间和资源,展现出其广泛的适用性和灵活性,满足多样化的应用场景需求。

综上所述,YOLOv8以其高效性、先进的网络结构、创新的检测头设计以及广泛的适用性和灵活性等优点和创新点,在目标检测领域取得了显著进展。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 模型介绍
  • 网络结构
    • Backbone改进
    • 特征增强网络(neck)
    • 检测头(head)
    • 其它部分:
  • Loss计算
  • 性能表现
  • YOLOv8使用详解
    • 添加模型
    • 创建数据集
    • 数据标注
    • 模型训练
    • 模型预测
  • YOLOv8总结
    • 高效性与实时性
    • 先进的网络结构
    • 创新的检测头设计
    • 广泛的适用性和灵活性
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档