YOLOv5简析

先说些题外话,YOLOv5没有论文,其作者是Mosaic Augmentation 的创造者,YOLO V5 在性能上稍弱于YOLO V4,但是在灵活性与速度上远强于YOLO V4,在模型的快速部署上具有极强优势。相对于YOLOv4,分别从以下三个方面简析YOLOv5的改进:

  • 输入端:Data Augmentation、自适应锚框计算、自适应图片缩放
  • Backbone:Focus结构,CSP结构
  • Neck:FPN+PAN结构

1. 输入端

1.1 Data Augmentation主要采用的是Mosaic数据增强
其做法就是对图片使用随机缩放、随机裁剪、随机排布的方式进行拼接。优点是丰富了检测物体的背景和小目标,并且在计算Batch Normalization的时候一次会计算四张图片的数据,使得mini-batch大小不需要很大,一个GPU就可以达到比较好的效果。
1.2 自适应锚框计算
在YOLOv3和YOLOv4中,都需要提前通过K-means聚类的方法计算出anchor,此anchor是固定的。但是在YOLOv5中,虽然也提前设置了anchor,但是在训练时可以自适应的计算不同训练集中的最佳anchor,从而更新anchor值。此功能也可以手动关闭,在train.py中更改,设置为False即可。

YOLOv5简析
1.3 自适应图片缩放
在常用的目标检测算法中,不同的图片长宽都不相同,因此常用的方式是将原始图片统一缩放到一个标准尺寸,再送入检测网络中。比如Yolo算法中常用416×416,608×608等尺寸,比如对下面800*600的图像进行变换。
YOLOv5简析
但Yolov5代码中对此进行了改进,也是Yolov5推理速度能够很快的一个不错的trick。作者认为,在项目实际使用时,很多图片的长宽比不同。因此缩放填充后,两端的黑边大小都不同,而如果填充的比较多,则存在信息冗余,影响推理速度。 因此在Yolov5代码中datasets.py的letterbox函数中进行了修改,对原始图像自适应的添加最少的黑边。
YOLOv5简析
2. Backbone
2.1 Focus结构
YOLOv5简析
2.2 CSP结构
Yolov4网络结构中,借鉴了CSPNet的设计思路,在主干网络中设计了CSP结构。
YOLOv5简析
Yolov5与Yolov4不同点在于, Yolov4中只有主干网络使用了CSP结构 ,而 Yolov5中设计了两种CSP结构,以Yolov5s网络为例,以CSP1_X结构应用于Backbone主干网络,另一种CSP2_X结构则应用于Neck中。
YOLOv5简析
3. Neck
Yolov5现在的Neck和Yolov4中一样,都采用FPN+PAN的结构,但在Yolov5刚出来时,只使用了FPN结构,后面才增加了PAN结构,此外网络中其他部分也进行了调整。
YOLOv5简析
但如上面CSPNet中讲到, Yolov5和Yolov4的不同点在于,Yolov4的Neck中,采用的都是普通的卷积操作。而Yolov5的Neck结构中,采用借鉴CSPNet设计的CSP2结构,加强网络特征融合的能力。
4. prediction
4.1 Bounding box 损失函数
YOLOv5中Bounding box的损失函数提供了IOU、GIOU、DIOU、CIOU,目前效果最好的是CIOU,如果有兴趣的可以试试去年新出的alpha-IOU,这是在CIOU的基础上进行改进的。
4.2 NMS
YOLOv5提供了多种NMS,例如weight-nms,diou-nms,soft-nms等,这些在一定程度上都可以解决遮挡问题,但是可能会带来一些推理时延。YOLOX也是使用了NMS,一开始YOLOX的作者使用的是end2end方式(即无nms),最后发现会掉点。
5. Yolov5四种网络结构的不同点
Yolov5代码中的四种网络,和之前的Yolov3,Yolov4中的cfg文件不同,都是以yaml的形式来呈现。
而且四个文件的内容基本上都是一样的,只有最上方的depth_multiple和width_multiple两个参数不同。
YOLOv5简析
YOLOv5简析

Original: https://blog.csdn.net/weixin_43850171/article/details/123053641
Author: 折磨王
Title: YOLOv5简析

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/520146/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球