一、数据增强
对于单一图片,除了经典的 几何畸变 和 光照畸变 外,还创新地使用了图像遮挡(Random Erase, Cutout, Hide and Seek, Grid Mask, MixUp)技术;
对于多图组合,作者混合使用了 CutMix 与 Mosaic 技术。
除此之外,还使用了 Self-Adversarial Training(SAT) 来进行数据增强。
1. 图像遮挡
- Random Erase
用随机值或训练集的平均像素值替换图像的区域。- Cutout
仅对 CNN 第一层的输入进行剪切方块 Mask。- Hide and Seek
将图像分割成一个由S*S
图像补丁组成的网络,根据概率设置随机隐藏一些补丁,从而让模型学习整个对象的特征,而不是单独一块,比如不单独依赖动物的脸做识别。- Grid Mask
将图像的区域隐藏在网格中,作用也是为了让模型学习对象的整个组成部分。- MixUp
图像对及其标签的凸面叠加。
2. 多图组合
- CutMix
将另一个图像中的剪切部分粘贴到增强图像。图像的剪切迫使模型学会根据大量的特征进行预测。- Mosaic
在 Cutmix 中组合了两张图像,而在 Mosaic 中使用四张训练图像按一定比例组合成一张图像,使模型学会在更小的范围内识别对象。其次,还有助于显著减少对 batch_size 的需求,毕竟大多数人的 GPU 显存有限。
二、自对抗训练(SAT)
Self-Adversarial Training 是在一定程度上抵抗对抗攻击的数据增强技术。CNN 计算出 Loss, 然后通过反向传播改变图片信息,形成图片上没有目标的假象,然后对修改后的图像进行正常的目标检测。需要注意的是,SAT 在反向传播的过程中,是不需要网络权值的。
三、基本知识点积累
1. 激活函数
在 yolov4 中使用 Mish 激活函数。
2. 优化器
在 yolov4 中使用 SGD 优化器。
3. 损失函数
在 yolov4 中使用 CIOU Loss 作为 bounding box 的损失。
四、YOLO V4的改进
1. 主干特征提取网络:DarkNet53 => CSPDarkNet53
2. 特征金字塔:SPP,PAN
3. 分类回归层:YOLOv3(未改变)
4. 训练用到的小技巧:
1. Mosaic数据增强
2. Label Smoothing平滑new_onehot_labels = onehot_labels * (1 - label_smoothing) + label_smoothing / num_classes
3. CIOU
4. 学习率余弦退火衰减
余弦退火衰减法,学习率会先上升再下降,这是退火优化法的思想。
上升的时候使用线性上升,下降的时候模拟cos函数下降。执行多次。
5. 激活函数:使用Mish激活函数
Mish函数的公式与图像如下:
五、YOLO V4 网络结构
当输入是 416x416 时,特征结构如下: