YOLOv4

一、简介

很多特征都有助于提升CNN的精度。有一些特征只对特定的模型,特定的问题或者小尺度的数据集有效果,有一些特征可应用于大多数模型,任务和数据集。文章中认为几种特征比较通用:加权残差法Weighted-Residual-Connections (WRC), Cross-Stage-Partial-connections (CSP), Cross mini-Batch Normalization (CmBN), Self-adversarial-training (SAT) and Mish-activation. 文章使用这些新特征:WRC,CSP,CmBN,SAT,Mish激励函数, Mosaic 数据增广, CmBN, DropBlock正则化, and CIoU 损失,达到最优性能。创建出一种CNN:可以在一块传统的GPU上实时运行,并且训练也只需要一块传统GPU。因此它容易训练和使用。

文章贡献如下:
1一个有效强大的目标检测模型。任何人用一块1080Ti或者2080Ti 就能训练出一个很快很精确的模型。
2 验证了Bag-of-Freebies 和 Bag-of-Specials的影响
3修改了最新出现的策略比如CBN,PAN和SAM,使得他们更有效,更适合在单块GPU上训练

二、相关概念

1.目标检测模型

一个传统的目标检测器由以下几个部分组成:
• 输入:图像,补丁,图像金字塔
• backbones:VGG16, ResNet-50,SpineNet,EfficientNet—B0/B7, CSPResNeXt50 ,CSPDarknet53
• 颈:
• 附加模块:SPP , ASPP, RFB, SAM
• 路径融合模块:FPN, PAN ,NAS-FPN , Fully-connected FPN, BiFPN, ASFF , SFAM
• 头:
• 密集预测(one stage):
◦ RPN , SSD , YOLO , RetinaNet(anchor based)
◦ CornerNet , CenterNet , MatrixNet, FCOS (anchor free)
• 稀疏预测 (two-stage):
◦ Faster R-CNN , R-FCN , Mask R-CNN (anchor based)
◦ RepPoints (anchor free)
图1. 目标检测器

2. Bag of freebies

通常检测器是离线训练的。文章将这种只改变训练策略或者只增加训练成本的方法而不增加推理成本的方法称作Bag of freebies。
例如数据增广。MixUp以不同的系数使两张图片相乘叠加,再调整标签。CutMix将一张图片挖出一块矩形区域,空白部分用其他图形的矩形区域覆盖。
正则化。 DropBlock是 dropout 的变体,对于正则化卷积网络格外有效。在 DropBlock 中,同一模块中的特征会被一起丢弃,即特征图的相邻区域也被丢弃了。

3. Bag of specials

对于那些只增加一点推理成本却能显著提高检测器精度的后处理方法或者插件模型,文章称其为bag of specials。
激活函数:LReLU, PReLU,Mish等等。
Mish公式:
Mish=x * tanh(ln(1+e^x))
CIoU公式:
在这里插入图片描述

b和bgt分别表示边框和真实框的中心点。ρ(⋅)是欧氏距离,c是最小包围边框和真实框的大框的对角线长度。
其中α是权重函数,而v用来度量长宽比的相似性。
在这里插入图片描述
在这里插入图片描述

三、方法论

1.架构选择

检测器一般需要更大的分辨率来检测小物体、更多的层数来增加感受野和更多的参数来提供多尺度检测多物体的能力。
文章在CSPDarknet53后附加SPP block以增加感受野。PANet 作为参数聚合的方法,而不是YOLOv3中使用的FPN。
总而言之,CSPDarknet53作为backbone,SPP为附加模块,PANet 为路径融合,YOLOv3(anchor based)为头,完成YOLOv4的架构。
不使用Cross-GPU Batch Normalization (CGBN 或SyncBN) 或者其它昂贵的特殊设备。

2.BoF 和 BoS 的选择

为了改善目标检测的训练,一个CNN一般会使用如下方法:
• 激励函数: ReLU, leaky-ReLU, parametric-ReLU, ReLU6, SELU, Swish, or Mish
• 边框回归损失: MSE, IoU, GIoU, CIoU, DIoU
• 数据增广: CutOut, MixUp, CutMix
• 正则化方法: DropOut, DropPath , Spatial DropOut , or DropBlock
• 通过均值和方差对网络激励函数的归一化: Batch Normalization (BN) , Cross-GPU Batch Normalization (CGBN or SyncBN) [93], Filter Response Normalization (FRN) , or Cross-Iteration Batch Normalization (CBN)
• 跳跃连接Skip-connections: Residual connections, Weighted residual connections, Multi-input weighted residual connections, or Cross stage partial connections (CSP)
对于激励函数,文章未选择PReLU,SELU 和RELU6。文章选择DropBlock 作为正则化方法。归一化方法不考虑SynBN,因为训练只用一块GPU。
3.额外的改善
• 介绍了一种新的数据增强的方法Mosaic 和 自对抗训练 (SAT)
• 应用遗传算法选择最优的超参数
• 修改了一些现存的方法使得设计更适合于高效训练和检测:修正SAM,修正PAN 和Cross mini-Batch Normalization (CmBN)
Mosaic 表现了一种新的数据增强方法:混合四张训练图片。因此四种不同的背景被混合。这种允许了处于不寻常背景的目标被检测到。同时,批归一化每一层从四种不同的图像计算了激励数据,这就很大程度上减少了一个大的mini-batch尺寸的必要性。
在这里插入图片描述

图2:Mosaic: 一种新的数据增广方法
自对抗训练也展示了一种新的数据增强技巧,在两个前向反向阶段运行。在第一个阶段,神经网络改变原始图像而非网络权重。这样的话神经网络针对自己执行了一个反向对抗,改变原始图像来制造一个伪装:并无想要的图像在图像中。第二阶段,神经网络被正常地训练去在这张修改过的图像中检测目标。
CmBN代表了一个CBN的修改版本。它只在一个批次中的小批次中收集数据。
把SAM从空间级注意机制修改为点级注意机制,把PAN的捷径连接修改为串联。
在这里插入图片描述

图3:图(a)SAM, 图(b)修改版SAM
在这里插入图片描述

图4:图(a)PAN,图(b)修改版PAN
4.YOLOv4细节
Backbone:CSPDarknet53
Neck: SPP,PAN
Head: YOLOv3
Backbone中用到的BOF:CutMix, Mosaic 数据增广,DropBlock 正则化,类标签平滑。
Backbone中用到的BOS:Mish 激励函数,CSP,MiWRC
检测器中用到的BoF: CIoU-loss, CmBN, DropBlock 正则化, Mosaic 数据增广, 自对抗训练, 消除网格敏感性, 对一个真实值使用多个锚框,余弦退火调度器Cosine annealing scheduler , 最优超参数, 随机训练形状
检测器中用到的BoS: Mish 激励函数, SPP-block, SAM-block, PAN path-aggregation block, DIoU-NMS

四、实验
测量了不同训练技巧对分类器在ImageNet上精确度和检测器在MS COCO上精确度的影响。
1.实验设置
在ImageNet 图像分类试验中,默认超参如下:训练步骤是8000000;batch和mini-batch的大小分别是128和32.多项式衰减学习率调度策略和初始学习率0.1相适应;热身步骤是1000;动量和权重衰减分别是0.9和0.005. 所有BoS的实验和默认设置有同样的超参,在BoF实验中,额外增加了50%的训练步骤。在BoF实验中验证了MixUp, CutMix, Mosaic, 模糊数据增广,类标签正则化方法。在BoS实验中,比较了LReLU, SWish 和 Mish激励函数的效果。所有的实验都在1080Ti或者2080 Ti GPU上训练。
在MS COCO目标检测实验中,默认超参数如下:训练步骤是500500;阶梯衰减学习率调度策略和初始学习率0.01相适应,在400000和450000步时相应地乘以系数0.1;动量和权重衰减分别是0.9和0.0005. 所有的架构使用一块GPU来执行batch大小为64的多尺度训练,而mini-batch大小为8还是4取决于架构和GPU存储限制。除了用于超参选择实验的遗传算法,所有其他实验使用默认设置。遗传算法使用YOLOv3-SPP和GIoU 损失来训练,搜寻3000轮,最小集合5000。遗传算法实验采取的搜寻的学习率为0.00261,动量0.949,分配ground truth的IoU阈值为0.213,损失归一化0.07.。
所有实验只用一块GPU训练,这样syncBN这种利用多块GPU的技巧就不再使用。
2.不同特征在分类器训练上的影响
在这里插入图片描述

图5:不同的数据增广方法
在这里插入图片描述

图6:BoF和Mish在CSPResNeXt-50分类器精确度上的影响
在这里插入图片描述

图7:BoF和Mish在CSPDarknet-53分类器精确度上的影响
不同特征在检测器训练上的影响
S: 消除网格敏感性
M:Mosaic 数据增广
IT:对一个真实值使用多个锚框
GA:遗传算法
LS:类标签平滑
CBN:CmBN
CA: 余弦退火调度器
DM:动态mini-batch大小
OA:优化的锚框
GIoU, CIoU, DIoU, MSE:边框回归的不同损失规则
在这里插入图片描述

图8:BoF的模型简化测试(CSPResNeXt50-PANet-SPP, 512x512).
在这里插入图片描述

图9:BoS 的模型简化测试(512x512)

不同的backbone和预训练设置对检测器训练的影响

作为检测器,CSPDarknet53 比CSPResNeXt50更适合。

不同的mini-batch大小对检测器训练的影响

加了BoF和BoS训练策略后,mini-batch的尺寸几乎对检测器性能没有影响。这个结果表明BoS 和 BoF 的引进使得昂贵的GPU不再有必要。

五、结果

达到了帕累托最优,就精确度和速度而言超越了最快最精确的检测器。

在这里插入图片描述

图10:不同检测器速度和精度的比较

六、结论

提供了最先进的检测器,比现存所有可选的检测器要更快速更精确。此检测器可以在一块传统的8-16 GB-VRAM GPU上训练和使用。验证了大量特征,将其中能够提高分类器和检测器精度的选取出来。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值