位置: IT常识 - 正文

【2】YOLOv8原理解析:重新定义实时目标检测的速度和精度(yolov3原理及代码解析)

编辑:rootadmin
原力计划【2】YOLOv8原理解析:重新定义实时目标检测的速度和精度

推荐整理分享【2】YOLOv8原理解析:重新定义实时目标检测的速度和精度(yolov3原理及代码解析),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:yolov1原理,yolo基本原理,yolov3原理简介,yolo原理详解,yolov3的基本工作原理,yolov4原理,yolov3原理简介,yolov3原理简介,内容如对您有帮助,希望把文章链接给更多的朋友!

文章目录0.前言1.YOLOv51.1 YOLOv5网络回顾1.2 YOLOv5网络结构图2.YOLOv82.1 YOLOv8概述2.2 YOLOv8整体结构图2.3 YOLOv8yaml 文件与 YOLOv5yaml 文件对比2.3.1 参数部分2.3.2 主干部分2.3.3 Neck部分2.3.4 Head部分2.4 正负样本分配策略2.4.1 静态分配策略和动态分配策略有什么区别2.4.2 simOTA 策略2.4.4 Task-Aligned Assigner 策略2.4.5 损失计算2.5 各任务表现及指标参考文献0.前言

YOLO(You Only Look Once) 是由 Joseph Redmon 和 Ali Farhadi 在华盛顿大学开发的流行的目标检测和图像分割模型。第一个版本的 YOLO 于 2015 年发布,并因其高速度和准确性而迅速赢得了广泛的关注。

YOLOv2 于 2016 年发布,通过引入批归一化、锚框和尺寸聚类等方法改进了原始模型。

YOLOv3 于 2018 年发布,通过使用更高效的骨干网络、添加特征金字塔并利用焦点损失进一步提高了模型的性能。

2020 年,YOLOv4 发布,引入了许多创新,例如使用 Mosaic 数据增强、新的无锚检测头和新的损失函数。

2021年,Ultralytics 发布了 YOLOv5,进一步提高了模型的性能,并添加了新功能,例如支持全景分割和物体跟踪。

2022年,美团发布了 YOLOv6 ,这是一款面向工业部署的目标检测模型。

2022年,YOLOv7发布,这是 AlexeyAB(YOLOv4作者) 和 WongKinYiu(YOLOR作者) 发布的一款实时目标检测器。

2023年,Ultralytics 发布了 YOLOv8,进一步提高了模型的性能,可以同时实现分类、检测和分割等任务。

1.YOLOv51.1 YOLOv5网络回顾

首先回顾一下 YOLOv5 的结构

Backbone:New CSP-Darknet53,网络第一层 v5.0 版本前是 FOCUS 结构,v5.0 版本以后是 6×6 卷积。Neck:PAN 结构,v5.0 版本以前是SPP结构,v5.0版本以后是 SPPF 结构。Head:常见的耦合头,和经典的YOLOv3一样。Loss:

分类损失,采用的是BCE loss;只计算正样本的分类损失。obj损失,采用的是BCE loss;这里的obj指的是网络预测的目标边界框与GT Box的CIoU,计算的是所有样本的obj损失。定位损失,采用的是CIoU loss;只计算正样本的定位损失。1.2 YOLOv5网络结构图

2.YOLOv8

YOLOv8 项目地址:https://github.com/ultralytics/ultralytics

Ultralytics YOLOv8 是由 Ultralytics 开发的 YOLO 目标检测和图像分割模型的最新版本。YOLOv8 是一款先进的、最新的模型,基于之前 YOLO 版本的成功,并引入了新的特性和改进,进一步提高了性能和灵活性。

YOLOv8 的一个关键特性是其可扩展性。它被设计为一个框架,支持所有之前的 YOLO 版本,使得在不同版本之间切换并比较它们的性能变得非常容易。这使得 YOLOv8 成为那些想要利用最新的 YOLO 技术同时仍能够使用现有 YOLO 模型的用户的理想选择。

除了可扩展性之外,YOLOv8 还包括许多其他创新,使其成为一种适用于广泛目标检测和图像分割任务的吸引人选择。这些包括一个新的骨干网络、一个新的无锚点检测头和一个新的损失函数。此外,YOLOv8 高效并且可以在多种硬件平台上运行,从 CPU 到 GPU。

总的来说,YOLOv8 是一款强大、灵活的目标检测和图像分割工具,它提供了最新的 SOTA 技术以及使用和比较所有之前 YOLO 版本的能力,是一个兼具优点的选择。

ultralytics 并没有直接将开源库命名为 YOLOv8,而是直接使用 ultralytics 这个词,原因是 ultralytics 将这个库定位为算法框架,而非某一个特定算法,一个主要特点是可扩展性。其希望这个库不仅仅能够用于 YOLO 系列模型,而是能够支持非 YOLO 模型以及分类分割姿态估计等各类任务。

YOLOv8主要有如下的优点:

用户友好的API可以同时实现分类、检测、分割和姿态估计任务速度更快、准确率更高全新的结构新的损失函数Anchor free

模型YOLOv5 (300epoch)Params(M)FLOPs@640(B)YOLOv8 (500epoch)Params(M)FLOPs@640(B)n28.01.94.537.33.28.7s37.47.216.544.911.228.6m45.421.24950.225.978.9l49.046.5109.152.943.7165.2x50.786.7205.753.968.2257.8

表格中的数据来源于COCO数据集,但是在其它数据集上并不一定是v8优于v5。

2.1 YOLOv8概述Backbone: 第一层卷积由原本的 6×6 卷积改为 3×3 卷积;参考 YOLOv7 ELAN 设计思想将 C3 模块换成了 C2f 模块,并配合调整了模块的深度。Neck:移除了 1×1 卷积的降采样层;同时也将原本的 C3 模块换成了 C2f 模块。Head:这部分改动较大,换成了解耦头结构,将分类任务和回归任务解耦;同时也将 Anchor-Based 换成了 Anchor-Free 。Loss:使用 BCE Loss 作为分类损失;使用 VFL Loss + CIOU Loss 作为回归损失。样本匹配策略: 采用了 Task-Aligned Assigner 样本分配策略。训练策略:新增加了最后 10 轮关闭 Mosaic 数据增强操作,该操作可以有效的提升精度。2.2 YOLOv8整体结构图

图片来源https://github.com/open-mmlab/mmyolo/blob/dev/configs/yolov8(博主修正后)

2.3 YOLOv8yaml 文件与 YOLOv5yaml 文件对比2.3.1 参数部分

左侧 yolov5s.yaml ,右侧 yolov8.yaml

因为YOLOv8采用Anchor free的范式,所以在 yaml 文件中移除了 anchor 的参数部分,并且YOLOv8将多个不同版本的模型写到了一起,除此之外在深度因子和宽度因子后又新增了一个最大通道数的参数,我觉得这可能和YOLOv7的模型理念有些相似,单凭宽度因子调整的通道数应该不是最优的,所以s\m\l没有遵循同一套的缩放系数。

2.3.2 主干部分

【2】YOLOv8原理解析:重新定义实时目标检测的速度和精度(yolov3原理及代码解析)

左侧 yolov5s.yaml ,右侧 yolov8.yaml

主干部分改进主要有以下三点:

第一层卷积由原本的 6×6 卷积改为 3×3 卷积 。所有的 C3 模块改为 C2f 模块 。深度由 C3 模块 3、6、9、3 改为C2f 的 3、6、6、3 。

2.3.3 Neck部分

左侧 yolov5s.yaml ,右侧 yolov8.yaml

依然采用 PAN 结构,但是删除了降维用的 1×1 卷积。

2.3.4 Head部分

头部的改动是最大的,直接将原本的耦合头改成了解耦头,值得注意力的是,这个解耦头不再有之前的 objectness 分支,而是直接解耦成了两路,并且其回归分支使用了 Distribution Focal Loss 中提出的积分形式表示法。

2.4 正负样本分配策略2.4.1 静态分配策略和动态分配策略有什么区别

在目标检测中,正负样本分配策略通常用于在训练期间为每个样本分配一个权重,以便模型更加关注困难的样本和重要的样本。动态分配策略和静态分配策略是两种常见的正负样本分配策略。

静态分配策略通常是在训练开始之前确定的,固定为一组预先定义的权重,这些权重不会在训练过程中改变。这种分配策略通常基于经验得出,可以根据数据集的特点进行调整,但是不够灵活,可能无法充分利用样本的信息,导致训练效果不佳。

相比之下,动态分配策略可以根据训练的进展和样本的特点动态地调整权重。在训练初期,模型可能会很难区分正负样本,因此应该更加关注那些容易被错分的样本。随着训练的进行,模型逐渐变得更加强大,可以更好地区分样本,因此应该逐渐减小困难样本的权重,同时增加易分样本的权重。动态分配策略可以根据训练损失或者其他指标来进行调整,可以更好地适应不同的数据集和模型。

总的来说,动态分配策略通常比静态分配策略更加灵活和高效,可以帮助模型更好地利用样本信息,提高训练效果。虽然动态分配策略可以在训练过程中根据模型的学习情况来适当调整正负样本的比例,但也存在一些缺点。

动态分配策略需要不断地监控模型在训练集上的表现,并根据表现调整正负样本的比例,因此会增加训练的计算量和时间成本。动态分配策略可能会导致过拟合。因为动态分配策略会在训练过程中频繁地改变正负样本的比例,可能会导致模型过于关注某些样本,而忽略了其他样本,从而导致过拟合。动态分配策略的结果难以复现。由于动态分配策略的调整是基于模型当前的学习情况,因此同样的训练过程可能会得到不同的正负样本比例,使得实验的结果难以复现和比较。2.4.2 simOTA 策略

simOTA是YOLOX目标检测算法中的一种正负样本分配策略,全称为Similarity Overlap Threshold Assigner。它的主要思想是通过计算anchor和ground truth之间的相似度,来动态地分配正负样本。

在传统的目标检测算法中,通常使用IoU来度量anchor和ground truth之间的重叠程度,然后根据设定的阈值来判断是否将anchor分配为正样本或负样本。但这种方法存在一个问题,就是对于一些尺寸较小的目标,由于它们的IoU值通常比较低,因此很容易被分配为负样本,从而影响了检测性能。

simOTA的核心思想是:根据目标的相似度来确定正负样本的阈值,进而实现样本的自适应分配。在训练时,首先将所有的目标两两配对,并计算它们的相似度得分。然后,通过对相似度分数进行统计,得到一个阈值范围,用于确定正负样本的分配阈值。具体而言,相似度得分越高,对应的IoU阈值就越高,样本就越容易被视为正样本;相反,相似度得分越低,对应的IoU阈值就越低,样本就更容易被视为负样本。

通过引入相似度信息,simOTA可以更加灵活地处理目标间的差异性,从而提高模型的泛化能力和检测性能。实验结果表明,simOTA可以显著提高YOLOX模型在各种基准数据集上的表现,同时具有更好的鲁棒性和泛化性能。

相比传统的IoU分配方法,simOTA能够更好地处理尺寸较小的目标,从而提高了目标检测的性能。

2.4.4 Task-Aligned Assigner 策略

Task-Aligned Assigner是一种TOOD中正负样本分配策略的方法,其基本原理是在训练过程中动态地调整正负样本的分配比例,以更好地适应不同的任务和数据分布,YOLOv8就是采用了这种策略。

具体而言,Task-Aligned Assigner基于一个关键的假设,即在不同的任务和数据集中,正负样本的分布情况可能会有所不同,因此需要针对具体的任务和数据分布,调整正负样本的分配比例,从而达到更好的检测效果。

为了实现这一目的,Task-Aligned Assigner提出了一个基于“任务自适应”的正负样本分配方法。具体而言,它使用一个任务感知的分配模块来估计不同任务下正负样本的分布情况,并基于这个分布情况动态调整正负样本的分配比例。

分配模块首先计算每个Anchor和每个Ground Truth Box之间的相似度,然后通过一个多任务学习框架,将相似度与正负样本标签的分布情况进行建模。最终,通过这个分布情况来动态地调整正负样本的分配比例,以更好地适应不同的任务和数据分布。

在具体实现中,Task-Aligned Assigner采用了一种基于动态阈值的分配方法。具体而言,它在计算Anchor与Ground Truth Box之间的IoU时,采用了一个基于任务自适应的动态阈值来判断正负样本的分配。通过这种方式,Task-Aligned Assigner能够根据具体的任务和数据分布,自适应地调整正负样本的分配比例,从而获得更好的检测性能。

Task-Aligned Assigner的公式如下: t=sα×uβt=s^α\times u^βt=sα×uβ 使用上面公式来对每个实例计算 Anchor-level 的对齐程度:s 和 u 分别为分类得分和 IoU 值,α 和 β 为权重超参。t 可以同时控制分类得分和 IoU 的优化来实现 Task-Alignment,可以引导网络动态的关注于高质量的Anchor。采用一种简单的分配规则选择训练样本:对每个实例,选择 m 个具有最大 t 值的 Anchor 作为正样本,选择其余的 Anchor 作为负样本。然后,通过损失函数(针对分类与定位的对齐而设计的损失函数)进行训练。

YOLOv8源码中各个参数取值如下:

2.4.5 损失计算

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

分类分支依然采用 BCE Loss。回归分支需要和 Distribution Focal Loss 中提出的积分形式表示法绑定,因此使用了 Distribution Focal Loss, 同时还使用了 CIoU Loss。

3 个 Loss 采用一定权重比例加权即可,默认的比例是7.5:0.5:1.5。

2.5 各任务表现及指标

目标检测

模型尺寸(像素)mAPval50-95推理速度CPU ONNX(ms)推理速度A100 TensorRT(ms)参数量(M)FLOPs(B)YOLOv8n64037.380.40.993.28.7YOLOv8s64044.9128.41.2011.228.6YOLOv8m64050.2234.71.8325.978.9YOLOv8l64052.9375.22.3943.7165.2YOLOv8x64053.9479.13.5368.2257.8

分类

模型尺寸(像素)acctop1acctop5推理速度CPU ONNX(ms)推理速度A100 TensorRT(ms)参数量(M)FLOPs(B) at 640YOLOv8n-cls22466.687.012.90.312.74.3YOLOv8s-cls22472.391.123.40.356.413.5YOLOv8m-cls22476.493.285.40.6217.042.7YOLOv8l-cls22478.094.1163.00.8737.599.7YOLOv8x-cls22478.494.3232.01.0157.4154.8

实例分割

模型尺寸(像素)mAPbox50-95mAPmask50-95推理速度CPU ONNX(ms)推理速度A100 TensorRT(ms)参数量(M)FLOPs(B)YOLOv8n-seg64036.730.596.11.213.412.6YOLOv8s-seg64044.636.8155.71.4711.842.6YOLOv8m-seg64049.940.8317.02.1827.3110.2YOLOv8l-seg64052.342.6572.42.7946.0220.5YOLOv8x-seg64053.443.4712.14.0271.8344.1参考文献

https://mp.weixin.qq.com/s/b8gpIb8UMivFm2iH7fRJ_A 目标检测算法——YOLOV8——算法详解

本文链接地址:https://www.jiuchutong.com/zhishi/295181.html 转载请保留说明!

上一篇:vue3.0-axios拦截器、proxy跨域代理(vue axios 拦截器)

下一篇:数字图像处理之matlab实验(三):空间滤波器(数字图像处理-应用篇)

  • 固定资产处置营业外收入和发票金额不一致
  • 小微企业城建税及附加减半
  • 签三方协议需要什么资料
  • 赞助费账务处理
  • 收到红字专票怎么做账务处理
  • 申报个税的收入是什么收入
  • 企业未按规定取得发票如何处理
  • 固定资产明细账怎么填
  • 修理固定资产取得增值税发票能否抵扣?
  • 内部往来科目设置在哪类下
  • 付给其他公司的服务费怎么记账
  • 金税系统年度维护费发票抵扣需要认证吗?
  • 企业劳务发票怎么开,税率是多少
  • 进项税使报表应交税费负数如何处理?
  • 招聘签合同
  • 职工教育经费怎么做账
  • 出售汽车属于什么费用
  • 定率征收怎么申报
  • 出口退税的账务关键是什么
  • 机关党建经费提取比例
  • mac怎么安装字体文件
  • 社保缴费要和工龄一致吗
  • 劳务发票税率是多少
  • 车辆 以旧换新
  • 不具备生产条件的生产经营单位
  • php23种设计模式
  • 发票作废的政策规定
  • 房产证办理流程图
  • phppregmatch
  • 金融负债期末可以转出吗
  • 加拿大猞猁雪兔
  • 各种汇票
  • meta最新模型
  • css过渡动画属性
  • ai的工具介绍
  • 非居民纳税人183天新税法
  • 增值税系统技术维护费 减免政策
  • 所有者权益类的借贷方向是什么
  • 什么是完税证明?完税证明丢了怎么办公司
  • 织梦cms要钱吗
  • python concat函数用法
  • 增值税发票上多了一个点能刮掉吗
  • 债务人以固定资产债务重组
  • 个体户核定征收超过了怎么办
  • 小规模加工企业加工费会计分录
  • 客户货款打到私人微信,删除公司电脑数据
  • 收据盖发票专用章会被处罚吗
  • 发票收款人和复核人可以是一个人吗
  • 广发银行的主营业务
  • 收购股权如何做分录
  • 行政事业单位支出范围和标准
  • 事业单位收到钱怎么记账
  • 金税盘里显示有报税资料怎么处理
  • win10升级后c盘莫名其妙满了
  • ubuntu15.04安装教程
  • ipad文件使用技巧
  • 如何强制退出当前程序mac
  • 苹果mac安装
  • qplus.exe是什么进程
  • win7卸载软件提示停止工作
  • win10用浏览器
  • 电脑系统不重装怎么恢复原状
  • mac os x 10.9.5
  • .ctc文件
  • windows8.1升级win10
  • macos catalin
  • 系统映像不存在怎么重装系统
  • win8系统教程
  • cocos2dx 教程
  • cocos2dx4.0教程
  • jquery怎么写
  • accessviolation怎么解决
  • 批量dns解析
  • linux多线程调试手段
  • 贵州省电子税务局操作手册
  • 电子发票版式文件生成失败怎么办
  • 地方税务局网上申报
  • 企业填写莞e申报的通知
  • 酒店访客时间是几个小时
  • 非房地产企业转让旧房土地增值税
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设