期待已久的检测经典又来来了一波强袭——yolov5。其实yolov5没有完整的文件,现在最重要的应该是把yolov4弄清楚,在目标检测领域中受益匪浅,可以在某些场景得到较高的提升。今天我们还是给大家分享yolov4,下一期我们将实践得将yolov5部署到苹果手机或者在终端通过摄像头实时检测!
一、技术回顾
有大量的特征被认为可以提高卷积神经网络(CNN)的精度。需要在大型数据集上对这些特征的组合进行实际测试,并对结果进行理论验证。某些功能只对某些模型进行操作,某些问题只对某些模型进行操作,或只对小规模数据集进行操作;而某些功能(如批处理规范化和剩余连接)则适用于大多数模型、任务和数据集。本文假设这些通用特征包括加权剩余连接(WRC)、跨阶段部分连接(CSP)、跨小批量规范化(CmBN)、自对抗训练(SAT)和Mish激活。本文使用了新功能:WRC、CSP、CmBN、SAT、误激活、马赛克数据增强、CmBN、DropBlock正则化和CIoU丢失,并将其中一些功能结合起来,以达到以下效果:43.5%的AP(65.7%的AP50)用于MS COCO数据集,在Tesla V100上以65 FPS的实时速度。
二、创新点分析
Mosaic数据增强
把四张图拼成一张图来训练,变相的等价于增大了mini-batch。这是从CutMix混合两张图的基础上改进;
Self-Adversarial Training
在一张图上,让神经网络反向更新图像,对图像做改变扰动,然后在这个图像上训练。这个方法,是图像风格化的主要方法,让网络反向更新图像来风格化图像。
Self-Adversarial Training (SAT) also represents a new data augmentation technique that operates in 2 forward backward stages. In the 1st stage the neural network alters the original image instead of the network weights. In this way the neural network executes an adversarial attack on itself, altering the original image to create the deception that there is no desired object on the image. In the 2nd stage, the neural network is trained to detect an object on this modified image in the normal way.
Cross mini-batch Normal
CmBN表示CBN修改的版本,如下图所示,定义为 Cross mini-Batch Normalization(CMBN)。这只收集单个批次内最小批次之间的统计数据。
modify SAM
从SAM的逐空间的attention,到逐点的attention;修改的PAN,把通道从相加(add)改变为concat。
实验
以数据增强方法为例,虽然增加了训练时间,但可以让模型泛化性能和鲁棒性更好。例如下面的常见增强方法:
- 图像扰动,
- 改变亮度、对比对、饱和度、色调
- 加噪声
- 随机缩放
- 随机裁剪(random crop)
- 翻转
- 旋转
- 随机擦除(random erase)
- Cutout
- MixUp
- CutMix
通过实验看得出,用了很多tricks,简直就是目标检测最强万花筒,下表是对分类网络的实验:
CSPResNeXt-50 classifier accuracy
CSPDarknet-53 classifier accuracy
在YOLOv4检测网络上,对比了四个loss(GIoU、CIoU、DIoU、MSE),标签平滑,Cosine学习率,遗传算法选超参数,Mosaic数据增强等各种方法。下表是YOLOv4检测网络上的消融实验结果:
CSPResNeXt50-PANet-SPP, 512x512
使用不同与训练权重模型用于训练:
不同的mini-batch size结果:
最后,是在Maxwell、Pascal、Volta三个不同系列的GPU,在COCO 数据集上的结果对比:
最劲爆的是,在COCO数据集,与其他框架比较(速度和精度):