13. YOLOv5

892 阅读1分钟

1. YOLOv5结构

图片.png

backbone:增加了Focus层

在YOLOv5某些版本中开头是Focus层。Focus重要的是切片操作,如下图所示,4x4x3的图像切片后变成2x2x12的特征图。但YOLOv5的v6.0版本后将Focus模块换成了6×6大小的卷积层,这种6×6的卷积操作和Focus层是等效的,但在有时6×6的卷积操作更加高效。

图片.png

Focus层

Neck:SPPF、New CSP-PAN

图片.png

SPPF

YOLOv4的SPP结构替换成了SPPF结构。虽然最终的结果是一致的,但是SPPF比SPP速度快了一倍。

New CSP-PAN:将之前YOLOv4的PAN结构中的ConvSet集合都变成了CSP结构。

Head

与YOLOv3,YOLOv4是一样的。

2. 损失函数

YOLOv4的损失函数一样:分类损失和置信度损失函数用了二分交叉熵(BCE)损失,定位损失用的是CIoUCIoU lossloss

增加的一点是:

为了平衡目标的不同尺度,对置信度损失针对不同大小的目标,采用权重来权衡。

Lobj=4.0Lobjsmall+1.0Lobjmedium+0.4LobjlargeL_{obj}=4.0⋅L_{obj}^{small}+1.0⋅L_{obj}^medium+0.4⋅L_{obj}^{large}

其他Tricks

1. YOLOv5的Anchor修正

YOLOv5的(x,y)采用了YOLOv4的2.3 Eliminate grid sesitivity的公式,设置scalexy=2scale_{xy}=2

(h,w)在YOLOv2、YOLOv3、YOLOv4都没有发生改变,仍然是

bw=pwetwb_w=p_we^{t_w}

bh=phethb_h=p_he^{t_h}

但在YOLOv5中做了小小的改动:作者认为原来的公式没有对宽高做限制,可能出现梯度爆炸。因此用σ\sigma函数加以约束:

bw=pw(2σ(tw))2b_w=p_w·(2·\sigma(t_w))^2

bh=ph(2σ(th))2b_h=p_h·(2·\sigma(t_h))^2

图片.png

e指数函数和sigmoid函数的对比

2. 数据增强

3. 训练技巧

这边参考文章csdn-太阳花的小绿豆