Yolov5技术总结

YOLOv5代码注释版更新啦,注释的是最近的2021.07.14的版本,且注释更全
github: https://github.com/Laughing-q/yolov5_annotations

Backbone

Focus: 网络第一层进行 pixel un-shuffling而不是stride=2的卷积;该模块的设计主要是减少计算量加快速度;
作者原话:https://github.com/ultralytics/yolov5/issues/847
Focus() module is designed for FLOPS reduction and speed increase, not mAP increase.
Also designed for layer count reduction. 1 Focus module replaces 3 yolov3/4 layers.

SPP: 分别采用5/9/13(v5.0采用3/5/7)的最大池化,再进行concat融合,提高感受野;
BottleNeckCSP/C3: Cross Stage Partial Networks,减少计算量,提高卷积神经网络学习能力;
具体网络结构可以查看:Yolov5网络结构

Detection (YOLO) layer

Anchor: 根据超参数中的hyp[‘anchor_t’]来检查默认anchor与数据集标签的契合度,如果<0.98,则根据数据集标签进行聚类重新获得anchor;
默认anchor如下:

  • [10,13, 16,30, 33,23] # P3/8
  • [30,61, 62,45, 59,119] # P4/16
  • [116,90, 156,198, 373,326] # P5/3

v5.0:
anchors:

  • [ 19,27, 44,40, 38,94 ] # P3/8
  • [ 96,68, 86,152, 180,137 ] # P4/16
  • [ 140,301, 303,264, 238,542 ] # P5/32
  • [ 436,615, 739,380, 925,792 ] # P6/64

参考:https://github.com/ultralytics/yolov5/issues/471
边框回归: 在进行边框回归 筛选样本对应anchor的时候,就是通过hyp[‘anchor_t’]来筛选,而不是iou;
新的边框回归方式:

在这里插入图片描述

标签分配

每个网格除了回归中心点在该网格的目标,还会回归中心点在该网格附近周围网格的目标,
grid(i, j)也会回归grid(i, j+1),grid(i, j-1),grid(i+1, j),grid(i-1, j)中的部分框,如下图中红色部分,
这也契合了上面的边框回归中心点的范围为-0.5~1.5

笔者尝试过如果改成grid(i, j)仅回归中心点在grid(i, j)的目标(边框回归范围依旧是0.5~1.5),
召回率会下降,准确率会上升,但总体map会下降,也就是说yolov5的标签分配应该会带来一定的map提升,
毕竟一个目标采用了更多的anchor去回归,召回率提高也是有道理的;

(当然笔者只是在自己的数据集上简单的实验了一下)

在这里插入图片描述
代码:

        off 
  • 17
    点赞
  • 80
    收藏
    觉得还不错? 一键收藏
  • 24
    评论
评论 24
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值