本文介绍: yolov8—–有点厉害的目标检测框架.

yolo目标检测原理

使用yolo进行目标检测的主要思想是将目标检测任务转化为一个回归问题通过前向传播过程完成目标的定位分类yolo通常采用backboneneckhead网络结构

yolov5详解

v5的模块详解早就准备好了

yolov8

YOLOv8是Ultralytics公司于2023年1月10日发布的YOLOv5的下一个重大更新版本。它是一种用于目标检测的先进深度学习算法支持图像分类、物体检测和实例分割任务
yolov5和yolov8的推理过程几乎一样,backboneneck部分,两者都使用了CSP梯度分流思想,且都使用了SPPF模块不同的是yolov8使用梯度流更丰富的C2f结构,对不同尺度模型调整了不同的通道数。head部分,将之前的耦合结构换成了目前主流的解耦头结构,将分类和检测头分离,同时也从Anchor-Based换成了Anchor-Free

yolov8结构图

在这里插入图片描述
将yolov8和yolov5结构图对比可发现,yolov5中的C3模块全部替换成C2f模块。

Conv模块

在这里插入图片描述
Conv 模块由单个 Conv2d、BatchNorm2d激活函数构成,用于提取特征整理特征

Conv模块中Conv2dpaddingg自动计算的,通过修改stride来决定特征图缩小倍数。在backbone中Conv模块的stride全部为2,kernel均为3。因此Conv每次会将特征图的宽高减半,下采样特征图,同时提取到目标特征。

BatchNorm2d为批归一化层,对每批的数据归一化,能够有效地加速神经网络训练过程提高模型的泛化能力。

SiLu激活函数,增加了数据非线性

C2f模块和C3模块

在这里插入图片描述
YOLOv8 参考了 C3 模块的残差结构以及YOLOv7的 ELAN 思想设计出了 C2f 结构可以在保证轻量化的同时获得更加丰富的梯度流信息,并根据模型尺度来调整通道数,大幅提升模型性能
可以看到,C2f模块相比于C3模块有更多的跳层连接,并增加了额外split操作取消分支中的卷积操作,这样丰富了梯度回传时的支流,加强了特征信息并减少计算量。

耦合头Coupled Head和解耦头 Decoupled Head

在这里插入图片描述

耦合头的设计是在网络末尾通过系列卷积和全连接层,同时预测不同尺度的边界位置尺寸类别。这种设计使得YOLOv5可以在不同尺度上并行地进行目标检测,即使用一层卷积同时完成分类和定位任务
解耦头的设计是将分类和检测头分离,两条并行分支分别取提取类别特征和位置特征,然后各用一层1×1卷积成分类和定位任务。以提高目标检测的准确性。

Decoupled Head不仅是模型精度上会提高,同时网络收敛速度加快了,使用Decoupled Head的表达能力更好,增强了模型的鲁棒性,可以更好建模位置和类别之间关系提高目标检测性能。。

Anchor-Based和Anchorfree

anchor也叫做锚,预先设置目标可能存在的大概位置,然后再在这些预设边框的基础上进行精细化的调整。而它的本质就是为了解决标签分配问题

目标检测领域发展anchorfree到anchorbase,现在又有回到anchorfree的趋势。
anchor-free和anchor-based是两种不同的目标检测方法区别在于是否使用定义的anchor框来匹配真实的目标框

Anchor-Based

同一个像素点上,生成多个不同大小和比例的候选框覆盖几乎所有位置和尺度,每个参考负责检测与其交并大于阈值 (训练预设值,常用0.5或0.7) 的目标,然后通过anchor中有没有认识的目标和目标框偏离参考框的偏移量完成目标检测,不再需要多尺度遍历滑窗,极大提升速度

训练过程中,模型学习预测每个锚框的偏移量相对于真实目标框的偏移),以调整它们以更好匹配目标的位置。模型还负责为每个锚框预测目标类别。

通常,在预测结束后,采用NMS非极大值抑制来排除高度重叠的锚框,以确保每个目标只有一个最终的检测结果

优点:
适用于多尺度和多宽高比的目标。
对于密集目标排列的情况,锚框可以提高检测性能

缺点
对于目标数量较少的情况,锚框设计可能浪费计算资源
对于小目标检测较为困难。

Anchor-free

无锚框在构建模型时将其看作一个点,即目标框的中心点。不依赖于定义的锚框,而是直接预测目标的中心点。直接学习目标框的位置,通常通过回归目标框的四个顶点坐标实现
同样,模型负责为每个目标预测其类别,在预测结束后,采用NMS进行后处理
优点:
相对简洁,无需设计大量的锚框。
更适合小目标检测。

缺点
对于多尺度和多宽高比的目标,可能性能较差。
在密集目标排列的情况下,容易出现定位不准确的问题

总结

YOLOv8 模型包括 Input、Backbone、Neck 和 Head 4部分。其中Input选用了Mosaic数据增强方法,并且对于不同大小的模型,有部分参数会进行修改,典型的如大模型会开启 MixUp 和 CopyPaste数据增强,能够丰富数据集,提升模型的泛化能力和鲁棒性。Backbone 主要用于提取图片中的信息,提供给Neck和Head使用。Neck 部分主要起特征融合作用,充分利用了骨干网络提取的特征,采用FPN +PAN结构,能够增强多个尺度上的语义表达和定位能力。Head输出端根据前两部分处理得到的特征来获取检测目标的类别和位置信息,做出识别

yolov8和yolov5结构大体一致,不同的是yolov8主干网络使用的时梯度流更丰富的C2f模块,将分类和检测头分离解决了分类和定位关注侧重点不同的问题,同时也采用了无锚框的目标检测,能够提升检测速度

原文地址:https://blog.csdn.net/qq_44878985/article/details/134718475

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_45758.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注