代码:https://github.com/ultralytics/yolov5github.com
优缺点/总结
优点
- 拥有四种模型,可以灵活部署
缺点
- 在性能上稍弱于YOLO V4
模型的改进
- 增加了Focus切片、自适应锚框、自适应图片缩放结构,保留信息,加快推理速度
解决的问题
模型
有4个版本,分别是Yolov5s,Yolov5m,Yolov5l,yolov5x四个模型,其中Yolov5s网络是该系列中深度最小,宽度最小的网络
主要结构分为四个模块:输入端、Backbone主干网络、Neck、Prediction
- 输入端:Mosaic数据增强、自适应锚框计算、自适应图片缩放
- Backbone主干网络:Focus结构,CSP结构
- Neck:FPN+PAN结构
- Prediction:GIoU Loss
结构
输入端
Mosaic数据增强
采用4张图片,随机缩放,随即裁剪、随机排布的方式进行拼接,解决数据集中小、中、大目标占比不均衡的问题
- 丰富数据集:随机使用4张图片,随机缩放,再随机分布进行拼接,大大丰富了检测数据集,特别是随机缩放增加了很多小目标,让网络的鲁棒性更好。
- 减少GPU:Mosaic增强训练时,可以直接计算4张图片的数据,使得Mini-batch大小并不需要很大,一个GPU就可以达到比较好的效果。
自适应锚框计算
- 在Yolo算法中,针对不同的数据集,都会有初始设定长宽的锚框。
- 在网络训练中,网络在初始锚框的基础上输出预测框,进而和真实框groundtruth进行比对,计算两者差距,再反向更新,迭代网络参数。
- Yolov5将此功能嵌入到代码中,每次训练时,自适应的计算不同训练集中的最佳锚框值(也可以关闭此功能)
自适应图片缩放
- 在常用的目标检测算法中,不同的图片长宽都不相同,因此常用的方式是将原始图片统一缩放到一个标准尺寸,再送入检测网络中。
- 在项目实际使用时,很多图片的长宽比不同,因此缩放填充后,两端的黑边大小都不同,而如果填充的比较多,则存在信息冗余,影响推理速度。
- Yolov5的代码中datasets.py的letterbox函数中进行了修改,对原始图像自适应的添加最少的黑边。
-
- 计算缩放比例:缩放尺寸除以原始图像尺寸,选择小的缩放系数
- 计算缩放后的尺寸:原始图片的长宽都乘以最小的缩放系数
- 计算黑边填充数值:用缩放尺寸减去第二步缩放后的尺寸,得到需要填充的数值
- 图像高度上两端的黑边变少了,在推理时,计算量也会减少,即目标检测速度会得到提升
- 训练时没有采用缩减黑边的方式,还是采用传统填充的方式。只是在测试,使用模型推理时,才采用缩减黑边的方式,提高目标检测,推理的速度
Backbone主干网络
Focus结构
- Fcous: 图片进行切片操作
-
- 在一张图片中每隔一个像素拿到一个值,类似于邻近下采样,这样就拿到了四张图片,四张图片互补,长的差不多,但是没有信息丢失
- 将W、H信息就集中到了通道空间,输入通道扩充了4倍,即拼接起来的图片相对于原先的RGB三通道模式变成了12个通道
- 最后将得到的新图片再经过卷积操作,最终得到了没有信息丢失情况下的二倍下采样特征图
- Focus的作用:
-
- 使图片在下采样的过程中,不带来信息丢失的情况下
- 将W、H的信息集中到通道上,再使用3 × 3的卷积对其进行特征提取,使得特征提取得更加的充分
- 虽然增加了一点点的计算量,但是为后续的特征提取保留了更完整的图片下采样信息
CSP结构
- Yolov4中只有主干网络使用了CSP结构
- Yolov5中设计了两种CSP结构,以Yolov5s网络为例,CSP1_X结构应用于Backbone主干网络,另一种CSP2_X结构则应用于Neck中。
- CSPNet的作者认为推理计算过高的问题是由于网络优化中的梯度信息重复导致的。
- 采用CSP模块先将基础层的特征映射划分为两部分,然后通过跨阶段层次结构将它们合并,在减少了计算量的同时可以保证准确率。
-
- 优点一:增强CNN的学习能力,使得在轻量化的同时保持准确性。
- 优点二:降低计算瓶颈
- 优点三:降低内存成本
Neck
FPN+PAN
- FPN结构,自顶向下,将高层的特征信息通过上采样的方式进行传递融合
- PAN结构,自下向上,将底层的位置信息通过下采样的方式进行传递融合
- FPN层自顶向下传递强语义特征,PAN层自底向上传递强定位特征
- PAN结构中两个特征图结合采用的是concat操作,特征图融合后张量发生了变化
特征融合
- Yolov4的Neck结构中,采用的都是普通的卷积操作。
- Yolov5的Neck结构中,采用借鉴CSPnet设计的CSP2结构,加强网络特征融合的能力。
Prediction
Loss函数
Yolov5中采用CIoU Loss做bounding box的损失函数
- CIoU Loss
-
- 在DIoU Loss的基础上增加一个影响因子,将预测框和目标框的长宽比都考虑进去
- 总结四种Loss函数:
-
- IOU_Loss:主要考虑检测框和目标框重叠面积。
- GIOU_Loss:在IOU的基础上,解决边界框不重合时的问题。
- DIOU_Loss:在IOU和GIOU的基础上,考虑边界框中心点距离的信息。
- CIOU_Loss:在DIOU的基础上,考虑边界框宽高比的尺度信息。
NMS
- 采用加权nms方式,不同于yolov4采用的DIoU nms方式
Tricks
1、Yolov5中四种网络的文件内容基本相同,不同的是depth_multiple和width_multiple两个参数
- 四种结构就是通过上面的两个参数,来进行控制网络的深度和宽度。其中depth_multiple控制网络的深度,width_multiple控制网络的宽度
- Yolov5中,网络的不断加深,也在不断增加网络特征提取和特征融合的能力
- 卷积核的数量越多,特征图的厚度,即宽度越宽,网络提取特征的学习能力也越强
Prediction
Objective Function/Loss Function
Yolov4中采用了CIOU_Loss的回归方式,使得预测框回归的速度和精度更高一些
- CIoU Loss
文章来源:https://www.toymoban.com/news/detail-594593.html
-
- 在DIoU Loss的基础上增加一个影响因子,将预测框和目标框的长宽比都考虑进去
-
文章来源地址https://www.toymoban.com/news/detail-594593.html
到了这里,关于【论文阅读】YOLO系列论文:YOLO v5的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!