飞道的博客

YOLOv5:GitHub两万八Star项目

324人阅读  评论(0)

来源:投稿 作者:王同学
编辑:学姐

Yolov5详解

官方源码仓库:https://github.com/ultralytics/yolov5

相关论文:未发表(改进点都被你们抢先发了)

0 前言

截止到2022年7月,Yolov5项目已经在Github上获得了28000+个star,工业应用也十分广泛,基于Yolov5改进的相关交叉学科论文也不计其数,所以了解Yolov5对找工作还是发论文都是十分有帮助的。

Yolov5目前已经迭代到了6.1版本,所以本篇文章主要针对6.1版本进行详解

Yolov5提供了10个不同版本的模型,他们除网络的深度和宽度外并无太大差别

1 网络结构

Yolov5主要由以下几部分组成:

  • 输入端: Mosaic数据增强、自适应锚框计算
  • Backbone: New CSP-Darknet53
  • Neck: SPPF, FPN+PAN
  • Head: YOLOv3 Head
  • 训练策略:CIoU loss

2 输入端

2.1 Mosaic数据增强

在 YOLOv5 中除了使用最基本的数据增强方法外,还使用了 Mosaic 数据增强方法,其主要思想就是将1- 4 张图片进行随机裁剪、缩放后,再随机排列拼接形成一张图片,实现丰富数据集的同时,增加了小样本目标,提升网络的训练速度。在进行归一化操作时会一次性计算 4 张图片的数据,因此模型对内存的需求降低。

2.2自适应锚框计算

Yolov5每次训练时会自适应的计算不同训练集中的最佳锚框值,从而帮助网络更快的收敛。

3 Backbone

Yolov5在Backbone和Neck中用了两种不同的CSP结构,具体可参考下图-Yolov5网络结构图

4 Neck

「Yolov4中一样,都采用FPN+PAN」的结构;即除了上采样外,又增加了一部分下采样模块,通过这种方式可以融合更加丰富的特征

5 Head

在检测头方面依然采用Yolov3的检测头,并没有特别的改进

6 主要训练策略

  • CIoU loss:在DIoU的基础上增加了检测框尺度的loss,增加了长和宽的loss,这样预测框就会更加的符合真实框
  • Multi-scale training(0.5~1.5x):多尺度训练。
  • Warmup and Cosine LR scheduler:训练前先进行Warmup热身,然后在采用Cosine学习率下降策略。
  • Mixed precision:混合精度训练,能够减少显存的占用并且加快训练速度。

7 损失计算

YOLOv5的损失主要由三个部分组成:

  • Classes loss,分类损失,采用的是BCE loss,注意只计算正样本的分类损失。
  • Objectness loss,obj损失,采用的依然是BCE loss,注意这里的obj指的是网络预测的目标边界框与GT Box的CIoU。这里计算的是所有样本的obj损失。
  • Location loss,定位损失,采用的是CIoU loss,注意只计算正样本的定位损失。

在源码中,针对预测小目标的预测特征层(P3)采用的权重是4.0,针对预测中等目标的预测特征层(P4)采用的权重是1.0,针对预测大目标的预测特征层(P5)采用的权重是0.4,作者说这是针对COCO数据集设置的超参数。

最后附上一张Yolov5的性能图,和实际检测效果图(yolov5s);

YOLO论文+代码数据🚀🚀🚀

关注下方《学姐带你玩AI》

回复“YOLO”免费领取

码字不易,欢迎大家点赞评论收藏!


转载:https://blog.csdn.net/weixin_42645636/article/details/129083385
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场