Yolo v4:目标检测的最佳速度和精度(二)

简介: Yolo v4:目标检测的最佳速度和精度

3.YOLOv4训练策略


这里首先介绍两个概念:Bag of Freebies和Bag of Specials

Bag of Freebies:指的是那些不增加模型复杂度,也不增加推理的计算量的训练方法技巧,来提高模型的准确度。目标检测经常采用的符合Bag of Freebies定义的是数据增强。数据增强的目的是增加输入图像的可变性,使所设计的目标检测模型对从不同环境中获取的图像具有更高的鲁棒性。例如,光学畸变和几何畸变是两种常用的数据增强方法,它们对目标检测有明显的好处。

Bag of Specials:指的是那些增加少许模型复杂度或计算量的训练技巧,但可以显著提高模型的准确度。一般来说,这些插件模块是为了增强模型中的某些属性,如放大感受野、引入注意机制或增强特征集成能力等。


1.Backbone采用的Bag of Freebies:


CutMix,Mosaic数据增强, DropBlock,类标签平滑


2.Backbone采用的Bag of Specials:


Mish激活函数, Cross-stage partial connections (CSP),多输入加权残差连接(MiWRC)


3.Detector采用的Bag of Freebies:


CIoU损失,CmBN, DropBlock正则化,Mosaic数据增强,自对抗训练,消除网格敏感性,单目标使用多 Anchor,余弦退火,最优超参数,随机训练形状


4.Detector采用的Bag of Specials:


Mish激活、SPP、SAM、PAN路径聚合、DIoU-NMS

3.1BackBone训练策略


3.1.1 数据增强


image.png

3.1.2 DropBlock正则化


DropBlock方法的引入是为了克服Dropout随机丢弃特征的主要缺点,Dropout被证明是全连接网络的有效策略,但在特征空间相关的卷积层中效果不佳。DropBlock技术在称为块的相邻相关区域中丢弃特征。这样既可以实现生成更简单模型的目的,又可以在每次训练迭代中引入学习部分网络权值的概念,对权值矩阵进行补偿,从而减少过拟合。如下图:

image.png

3.1.3 类标签平滑


训练样本中会出现少量的错误样本,而模型过于相信训练样本,在训练过程中调整参数极力去逼近样本,这就导致了这些错误样本的负面影响变大,因此需要在一定程度上减缓这些错误样本的影响,使得模型避免过于相信训练样本。

消融实验结果:

表1:BoF和Mish对CSPResNeXt-50分类精度的影响。

image.png

表2 BoF和Mish对CSPDarknet-53分类器精度的影响。

image.png

表3: Bag-of-Freebies的消融研究。(CSPResNeXt50-PANet-SPP 512 x512)。

image.png

表4:Bag of Specials的消融实验。(Size 512 x512)。

image.png

4.BackBone推理策略


4.1 Mish激活函数


Mish是一个平滑的曲线,平滑的激活函数允许更好的信息深入神经网络,从而得到更好的准确性和泛化;在负值的时候并不是完全截断,允许比较小的负梯度流入。实验中,随着层深的增加,ReLU激活函数精度迅速下降,而Mish激活函数在训练稳定性、平均准确率(1%-2.8%)、峰值准确率(1.2% - 3.6%)等方面都有全面的提高。如下图:

image.png

4.2 MiWRC策略


MiWRC是Multi-input weighted residual connections的简称, 在BiFPN中,提出了用MiWRC来执行标尺度级重加权,添加不同尺度的特征映射。我们已经讨论了FPN和PAN作为例子。下面的图(d)显示了另一种被称为BiFPN的neck设计,根据BiFPN的论文,该设计具有更好的准确性和效率权衡。

image.png

(a)FPN引入自顶向下的路径,将多尺度特征从3级融合到7级(P3-P7);


(b)PANET在FPN之上增加一个额外的自下而上的路径;


©NAS-FPN使用神经网络搜索找到一个不规则的特征拓扑网络,然后重复应用同一块拓扑结构;


(d)是这里的BiFPN,具有更好的准确性和效率权衡。将该neck放到整个整个网络的连接中如下图:

image.png


上图采用EfficientNet作为骨干网络,BiFPN作为特征网络,共享class/box预测网络。 基于不同的资源约束,BiFPN层和类/盒网层都被重复多次。

5.检测头训练策略


5.1 CIoU-loss


CIoU就是在DIoU的基础上增加了检测框尺度的loss,增加了长和宽的loss,这样预测框就会更加的符合真实框。

5.2 CmBN策略


BN:无论每个batch被分割为多少个mini batch,其算法就是在每个mini batch前向传播后统计当前的BN数据(即每个神经元的期望和方差)并进行Nomalization,BN数据与其他mini batch的数据无关。


CBN:每次iteration中的BN数据是其之前n次数据和当前数据的和(对非当前batch统计的数据进行了补偿再参与计算),用该累加值对当前的batch进行Nomalization。好处在于每个batch可以设置较小的size。


CmBN:只在每个Batch内部使用CBN的方法,若每个Batch被分割为一个mini batch,则其效果与BN一致;若分割为多个mini batch,则与CBN类似,只是把mini batch当作batch进行计算,其区别在于权重更新时间点不同,同一个batch内权重参数一样,因此计算不需要进行补偿。

image.png

5.3 自对抗训练(SAT)


SAT(Self-Adversarial Training)为一种新型数据增强方式。在第一阶段,神经网络改变原始图像而不是网络权值。通过这种方式,神经网络对其自身进行一种对抗式的攻击,改变原始图像,制造图像上没有目标的假象。在第二阶段,训练神经网络对修改后的图像进行正常的目标检测。

image.png

5.4 消除网格敏感度


image.png

对于 b x = c x b_x = c_xb x =c x 和b x = c x + 1 b_x=c_x + 1b x =c x +1 的情况,我们需要t x t_xt x 分别具有很大的负值和正值。但我们可以将 与一个比例因子(>1.0)相乘,从而更轻松地实现这一目标

6.检测头推理策略


6.1 SAM模块


YOLOv4将SAM从空间注意修改为点注意,下图(a)图为原始SAM模块,下(b)图为改进的SAM模块

image.png


6.2 DIoU-NMS


根据DIOU的论文,如果只是单纯的使用NMS,即是使用IoU作为阈值去筛掉其他预测框时,当两个物体过于接近时,很有可能另外一个物体的预测框就被滤除了。

就像下图中的摩托。使用DIOU-NMS可以一定程度上提升对于靠近的物体的检测

image.png

总结


最后放上一些不同模型的速度和精度的比较。(一些文章仅说明了他们的探测器针对其中一个GPU的FPS:Maxwell/Pascal/Volta),可以看到,YOLOv4在速度和精度方面都优于最快和最准确的探测器。

cc5832fb5abb4de288c89a3d67e9d8f3.png

参考文献:

目标检测算法YOLOv4详解

YOLOv4网络详解

相关文章
|
机器学习/深度学习 算法 数据挖掘
目标检测算法——YOLOv3
目标检测算法——YOLOv3
367 0
目标检测算法——YOLOv3
|
算法 Go 计算机视觉
【YOLO系列】YOLOv8算法(尖端SOTA模型)
Ultralytics YOLOv8 是由 Ultralytics开发的一个前沿 SOTA 模型。它在以前 YOLO 版本的成功基础上,引入了新的功能和改进,进一步提升了性能和灵活性。YOLOv8 基于快速、准确和易于使用的理念设计,使其成为广泛的物体检测、图像分割和图像分类任务的绝佳选择。
2919 0
【YOLO系列】YOLOv8算法(尖端SOTA模型)
|
算法 Go 文件存储
DAMO-YOLO: 兼顾速度与精度的新目标检测框架
我们团队最近开源了DAMO-YOLO!其效果达到了YOLO系列的SOTA,欢迎各位试用!​简介DAMO-YOLO是一个兼顾速度与精度的目标检测框架,其效果超越了目前的一众YOLO系列方法,在实现SOTA的同时,保持了很高的推理速度。DAMO-YOLO是在YOLO框架基础上引入了一系列新技术,对整个检测框架进行了大幅的修改。具体包括:基于NAS搜索的新检测backbone结构,更深的neck结构,精
1100 0
DAMO-YOLO: 兼顾速度与精度的新目标检测框架
|
2月前
|
机器学习/深度学习 并行计算 PyTorch
图像检测【YOLOv5】——深度学习
Anaconda的安装配置:(Anaconda是一个开源的Python发行版本,包括Conda、Python以及很多安装好的工具包,比如:numpy,pandas等,其中conda是一个开源包和环境管理器,可以用于在同一个电脑上安装不同版本的软件包,并且可以在不同环境之间切换,是深度学习的必备平台。) 一.Anaconda安装配置. 1.首先进入官网:https://repo.anaconda.com,选择View All Installers. 2.打开看到的界面是Anaconda的所以安装包版本,Anaconda3就代表是Python3版本,后面跟的是发行日期,我选择了最近的2022
68 28
|
4月前
|
机器学习/深度学习 计算机视觉
YOLOv10实战:红外小目标实战 | 多头检测器提升小目标检测精度
本文改进: 在进行目标检测时,小目标会出现漏检或检测效果不佳等问题。YOLOv10有3个检测头,能够多尺度对目标进行检测,但对微小目标检测可能存在检测能力不佳的现象,因此添加一个微小物体的检测头,能够大量涨点,map提升明显; 多头检测器提升小目标检测精度,1)mAP50从0.666提升至0.677
913 3
|
机器学习/深度学习 固态存储 算法
目标检测之TextBoxes++
翻译:《 TextBoxes++: A Single-Shot Oriented Scene Text Detector》
|
机器学习/深度学习 算法 自动驾驶
目标检测之TextSnake
翻译:《TextSnake: A Flexible Representation for Detecting Text of Arbitrary Shapes》
107 0
|
计算机视觉
目标检测无痛涨点新方法 | DRKD蒸馏让ResNet18拥有ResNet50的精度(二)
目标检测无痛涨点新方法 | DRKD蒸馏让ResNet18拥有ResNet50的精度(二)
137 0
|
机器学习/深度学习 计算机视觉 索引
目标检测无痛涨点新方法 | DRKD蒸馏让ResNet18拥有ResNet50的精度(一)
目标检测无痛涨点新方法 | DRKD蒸馏让ResNet18拥有ResNet50的精度(一)
530 0
|
存储 编解码 固态存储
一文带你了解时下最新的目标检测模型——YOLOv8
Ultralytics YOLOv8: State-of-the-Art YOLO Models,作者:Sovit Rath
1589 0