YOLO v4它来了,速度效果双提升,研究者对比了 YOLOv4 和当前最优目标检测器,发现 YOLOv4 在取得与 EfficientDet 同等性能的情况下,速度是 EfficientDet 的二倍!此外,与 YOLOv3 相比,新版本的 AP 和 FPS 分别提高了 10% 和 12%。迅速引起了 CV 社区的关注。

yolov8 用gpu预测_yolov8 用gpu预测


YOLO v4 论文:https://arxiv.org/abs/2004.10934

YOLO v4 开源代码:https://github.com/AlexeyAB/darknet

一、引言
1、目的:设计生产系统中目标检测器的快速运行速度,优化并行计算,作者希望设计的对象能够轻松训练和使用, 例如,任何使用传统 GPU 进行训练和测试的人都可以获得实时、高质量和令人信服的目标检测结果。
2、贡献点:
(1)开发出一种高效、强大的物体检测模型。它使每个人都可以使用1080Ti或2080Ti GPU来训练超快速和准确的目标检测器。
(2)在检测器训练期间,我们验证最先进的 Bag-of-Freebies 和 Bag-of-Specials检测方法的影响。
(3)修改最先进的方法,使其更高效,适合单次GPU训练,包括CBN、PAN、SAM等。

二、相关工作

(1)作者把检测模型分成:输入、骨干结构、颈部(Neck)、头部。

yolov8 用gpu预测_yolov8 用gpu预测_02

其中骨干结构主要是提取特征,去掉头部也可以做分类任务。 颈部(Neck)主要是对特征进行融合,这就有很多技巧在里面了。
(2) “bag of freebies” 是指目标检测器在不增加推理损耗的情况下达到更好的精度,这些方法称为只需转变训练策略或只增加训练量成本。也就是说数据增扩、Focal Loss等这些不用改变网络结构的方法。
“Bag of specials”是指插入模块是用来增强某些属性的,显著提高目标检测的准确性。比如SE模块等注意力机制模块,还有特征融合FPN等模块。

三、方法

1、作者采用 CSPResNeXt50 / CSPDarknet53作为网络骨干结构。经过实验验证, CSPDarkNet53更适合作为检测模型的Backbone。

yolov8 用gpu预测_目标检测_03

YOLOv4模型 = CSPDarkNet53 + SPP + PANet(path-aggregation neck) + YOLOv3-head

yolov8 用gpu预测_数据_04

2、下一部分是通过实验进行各种技巧的选择。

为了使设计的检测器更适合于单 GPU 的训练,我们进行了如下其他设计和改进:

(1)新的数据增强策略和自我对抗训练(SAT)的方法:

Mosaic数据增强, 是一种将4张训练图片混合成一张的新数据增强方法,这样可以丰富图像的上下文信息。这种做法的好处是允许检测上下文之外的目标,增强模型的鲁棒性。此外,在每一层从4个不同的图像批处理标准化计算激活统计,这大大减少了对大mini-batch处理size的需求。如下图所示:

yolov8 用gpu预测_目标检测_05

自对抗训练是一种新的数据扩充技术,该技术分前后两个阶段进行:
在第一阶段,神经网络改变原始图像而不是网络权值。通过这种方式,神经网络对自身执行一种对抗性攻击,改变原始图像,从而造成图像上没有目标的假象。
在第二阶段,训练神经网络对修改后的图像进行正常的目标检测。

(2)在应用genetic algorithms时,我们选择最佳的超参数

(3)修改了一些外在方法,修改SAM、 PAN 和CmBN

将SAM从空间上的attention修改为点上的attention

yolov8 用gpu预测_yolov8 用gpu预测_06


并将PAN的short-cut连接改为拼接

yolov8 用gpu预测_数据_07


CmBN 是 CBN 的改进版,它仅收集单个批次内 mini-batch 之间的统计数据。

yolov8 用gpu预测_yolov8 用gpu预测_08

四、总结

YOLOv4由以下组成:

骨架网络: CSPDarknet53

颈部: SPP、PAN

头部: YOLOv3

yolov8 用gpu预测_神经网络_09


YOLOv4的技巧:

(1)Bag of Freebies 外在引入技巧: CutMix和马赛克数据增强,DropBlock正则化,类标签平滑 。

(2)Bag of Specials 网络改进技巧: Mish激活函数,跨阶段部分连接(CSP),多输入加权残差连接 (MiWRC)。

(3) Bag of Freebies 外在检测器引入技巧:CIoU损失函数, CmBN, DropBlock正则化,马赛克数据增强,自对抗训练(SAT),Eliminate grid sensitivity,为每个真实标签使用多个锚点,Cosine annealing scheduler,优化的超参数,随机的训练形状。

(4)Bag of Specials检测器网络改进技巧:Mish激活函数,SPP模块,SAM模块,路径聚合模块(PAN), DIoU-NMS 。

五、个人总结
yolov4论文中给出了大量的实验结果来证明了其所选择tricks的有效性,在这篇博客中,我没有给出实验结果对比图(因为太多了),有需要的可以去论文里面找。