Yolo系列算法-理论部分-YOLOv5

0. 写在前面

YOLO系列博客,紧接上一篇Yolo系列算法-理论部分-YOLOv4-CSDN博客

1. YOLOv5-美而全的产品

YOLOv5的诞生,直接将目标检测算法向终局推进,Ultralytics团队在COCO数据集上预训练的目标检测架构和模型直接开源,其中包含了经过数千小时的研究和开发而形成的经验教训和最佳实践。

2. 网络结构

YOLOv5是YOLOv4的升级改进版本,官方版本一共有5个,按模型的大小排序分别是YOLOv5n、YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x,让开发者能再精度和速度中得到一个权衡,以YOLOv5s来说明整体网络结构。

2.1 Input

图像预处理部分,对输入的图像进行Mosaic数据增强,通过随记缩放、随记裁剪、随记排布的方式对不同图像进行拼接;

采用Mosaic数据增强的方法,从增加检测目标的背景丰富度和提高小目标检测两个方向提升检测效果;并且在BN计算的时候一次性会处理四张图片。

2.2 Backbone

主干网络部分,主要采用:Fcous结构+CSP结构 。首次引入Fcous结构,用于直接处理输入的图片,通过降维和压缩输入特征图 ,从而减少计算量和提高感受野 ,同时提高目标检测的精度和模型的表达能力

Fcous重要的是切片操作,将4×4×3的图像切片之后变成2×2×12的特征图。

以YOLOv5s的结构为例,原始608×608×3的图像输入Focus结构,采用切片操作,先变成304×304×12的特征图,再经过一次32个卷积核的卷积操作,最终变成304×304×32的特征图。

2.3 Neck

网络的颈部,采用的是FPN+PAN结构,结构和YOLOv4是一样的,可以参考上一篇博文Yolo系列算法-理论部分-YOLOv4-CSDN博客:主要通过融合高低层特征 提升目标检测的效果,尤其可以提高小尺寸的检测效果。

2.4 Head

对于网络的输出部分,与YOLOv4一样采用三个不用的输出Head,进行多尺度预测;随着YOLOv5的逐渐工业落地,Head部分也可以修改为输出一个结果,便于后续终端的移植工作,详细内容可参考:

  1. Yolo系列算法-理论部分-YOLOv4-CSDN博客
  2. 详细介绍 Yolov5 转 ONNX模型 + 使用ONNX Runtime 的 Python 部署(包含官方文档的介绍)_yolov5转onnx-CSDN博客
3. 改进方向
3.1 自适应锚框计算

在YOLOv5之前的系列中,对最佳Anchors的获取都是通过K-Means的方法获得,这部分操作需要在网络训练之前单独运行。YOLOv5的创新点就是将此功能嵌入到整体代码中,每次训练时,自适应计算不同训练集中的最佳锚框值,并给用户开放接口,可以关掉自动计算功能。

3.2 自适应灰度填充

为了应对输入图片尺寸不一的问题,通常做法事将原图直接resize成统一的大小,但是这样会造成目标的变形,为了避免这种情况的发生,YOLOv5采用了灰度填充的方式统一输入尺寸,避免目标变形的问题,灰度填充的核心思想就是将原图的长宽等比缩放对应统一尺寸,然后对空白部分用灰色填充。

3.3 损失函数
  1. 分类用交叉熵损失函数 (BEC Loss),边界框回归用CIoU Loss
  2. CIoU将目标与anchor之间的中心距离,重叠率、尺度以及惩罚项都考虑进去,使得目标框回归变得更加稳定,不会像IoU和GIoU一样出现训练过程中的发散等问题;惩罚因子把预测框长宽比拟合目标框的长宽比考虑进去。
4. 性能表现

在COCO数据集上,当输入原图的尺寸是:640×640时,从YOLOv5n到YOLOv5s**,检测精度逐渐上升,检测速度逐渐下降,非常适合工程实践**,实现精度与速度的完美匹配。

相关推荐
Suyuoa3 小时前
附录2-pytorch yolov5目标检测
python·深度学习·yolo
红色的山茶花1 天前
YOLOv8-ultralytics-8.2.103部分代码阅读笔记-block.py
笔记·深度学习·yolo
unix2linux1 天前
YOLO v5 Series - Image & Video Storage ( Openresty + Lua)
yolo·lua·openresty
菠菠萝宝1 天前
【YOLOv8】安卓端部署-1-项目介绍
android·java·c++·yolo·目标检测·目标跟踪·kotlin
ZZZZ_Y_1 天前
YOLOv5指定标签框背景颜色和标签字
yolo
红色的山茶花2 天前
YOLOv8-ultralytics-8.2.103部分代码阅读笔记-conv.py
笔记·yolo
Eric.Lee20212 天前
数据集-目标检测系列- 花卉 鸡蛋花 检测数据集 frangipani >> DataBall
人工智能·python·yolo·目标检测·计算机视觉·鸡蛋花检查
阿_旭2 天前
【模型级联】YOLO-World与SAM2通过文本实现指定目标的零样本分割
yolo·yolo-world·sam2
CSBLOG2 天前
OpenCV、YOLO、VOC、COCO之间的关系和区别
人工智能·opencv·yolo
2zcode2 天前
基于YOLOv8深度学习的医学影像骨折检测诊断系统研究与实现(PyQt5界面+数据集+训练代码)
人工智能·深度学习·yolo