YOLOv4 性能如何呢?

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

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

那么,YOLOv4 性能如何呢?

在相关论文中,研究者对比了 YOLOv4 和当前最优目标检测器,发现 YOLOv4 在取得与 EfficientDet 同等性能的情况下,速度是 EfficientDet 的二倍!此外,与 YOLOv3 相比,新版本的 AP 和 FPS 分别提高了 10% 和 12%。

许多特征可以提高 CNN 的准确率,然而真正实行起来,还需要在大型数据集上对这些特征组合进行实际测试,并且对测试结果进行理论验证。某些特征仅在某些模型上运行,并且仅限于特定的问题,或是只能在小型数据集上运行;而另外有些特征(如批归一化和残差连接)则适用于大多数模型、任务和数据集。

那么,如何利用这些特征组合呢?

YOLOv4 使用了以下特征组合,实现了新的 SOTA 结果:

加权残差连接(WRC)

Cross-Stage-Partial-connection,CSP

Cross mini-Batch Normalization,CmBN

自对抗训练(Self-adversarial-training,SAT)

Mish 激活(Mish-activation)

Mosaic 数据增强

DropBlock 正则化

CIoU 损失

据介绍,YOLOv4 在 MS COCO 数据集上获得了 43.5% 的 AP 值 (65.7% AP50),在 Tesla V100 上实现了 ∼65 FPS 的实时速度。

该研究的主要贡献如下:

建立了一个高效强大的目标检测模型。它使得每个人都可以使用 1080Ti 或 2080Ti 的 GPU 来训练一个快速准确的目标检测器。

验证了当前最优 Bag-of-Freebies 和 Bag-of-Specials 目标检测方法在检测器训练过程中的影响。

修改了 SOTA 方法,使之更加高效,更适合单 GPU 训练。这些方法包括 CBN、PAN、SAM 等。

YoloV4 如何实现这么好的效果?

YoloV4 的基本目标是提高生产系统中神经网络的运行速度,同时为并行计算做出优化,而不是针对低计算量理论指标(BFLOP)进行优化。YoloV4 的作者提出了两种实时神经网络:

对于 GPU,研究者在卷积层中使用少量组(1-8 组):CSPResNeXt50 / CSPDarknet53;

对于 VPU,研究者使用了分组卷积(grouped-convolution),但避免使用 Squeeze-and-excitement(SE)块。具体而言,它包括以下模型:EfficientNet-lite / MixNet / GhostNet / MobileNetV3。

YOLOv4 包含以下三部分:

骨干网络:CSPDarknet53

Neck:SPP、PAN

Head:YOLOv3

具体而言,YOLO v4 使用了:

用于骨干网络的 Bag of Freebies(BoF):CutMix 和 Mosaic 数据增强、DropBlock 正则化和类标签平滑;

用于骨干网络的 Bag of Specials(BoS):Mish 激活、CSP 和多输入加权残差连接(MiWRC);

用于检测器的 Bag of Freebies(BoF):CIoU-loss、CmBN、DropBlock 正则化、Mosaic 数据增强、自对抗训练、消除网格敏感性(Eliminate grid sensitivity)、针对一个真值使用多个锚、余弦退火调度器、优化超参数和随机训练形状;

用于检测器的 Bag of Specials(BoS):Mish 激活、SPP 块、SAM 块、PAN 路径聚合块和 DIoU-NMS。

架构选择

该研究的目标是找出输入网络分辨率、卷积层数量、参数量(滤波器大小*滤波器*通道/组)和层输入数量(滤波器)四者之间的最优平衡。

次要目标则是挑选能够增加感受野的额外块(additional block),以及针对不同级别的检测器从不同骨干层中挑选最佳的参数聚合方法,如 FPN、PAN、ASFF 和 BiFPN 网络。

研究者在 CSPDarknet53 上添加了 SPP 块,因为它能够极大地增加感受野,分离出最显著的上下文特征,并且几乎没有降低网络运行速度。他们针对不同级别的检测器从不同骨干层中挑选 PANet 作为参数聚合方法,而放弃了 YOLOv3 中使用的 FPN 网络。

最后,研究者选择了 CSPDarknet53 骨干网络、SPP 额外模块、PANet 路径聚合 neck 和 YOLOv3(基于锚的)head 作为 YOLOv4 的整体架构。

BoF 和 BoS 的选择

为了提升目标监测的训练效果,CNN 使用了以下方法:

激活函数:ReLU、 leaky-ReLU、parametric-ReLU、ReLU6、SELU、Swish、Mish;

边界框回归损失(Bounding box regression loss):MSE、IoU、GIoU、CIoU、DIoU;

数据增强:CutOut、MixUp、CutMix;

正则化方法:DropOut,、DropPath、Spatial DropOut、DropBlock;

通过均值和方差的归一化网络激活函数:批归一化(BN)、跨 GPU 批归一化 (CGBN 或 SyncBN)、滤波器响应归一化(FRN)、交叉迭代批归一化(CBN);

跳跃连接方式:残差连接、加权残差连接、多输入加权残差连接、Cross stage 局部连接(CSP)。

在训练激活函数时,因为 PReLU 和 SELU 更难训练,ReLU6 是专为量化网络设计的,所以从候选列表里删除了这几个函数。

额外改进

为了使检测器更适合在单个 GPU 上进行训练,研究者还做出了以下额外的设计与改进:

提出新型数据增强方法 Mosaic 和自对抗训练(SAT);

在应用遗传算法时选择最优超参数;

修改现有方法,使新方法实现高效训练和检测——modified SAM、modified PAN 和 Cross mini-Batch Normalization (CmBN)。

新型数据增强方法 Mosaic 混合了 4 张训练图像,而 CutMix 只混合了两张输入图像。

 

自对抗训练(SAT)也是一种新的数据增强方法,它包括两个阶段。第一个阶段中,神经网络更改原始图像;第二阶段中,训练神经网络以正常方式在修改后的图像上执行目标检测任务。

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

研究者还将 SAM 从空间注意力机制(spatial-wise attention)修改为点注意力机制(point-wise attention),并将 PAN 中的捷径连接替换为级联。

实验结果

YOLO v4 与其他 SOTA 目标检测器的对比结果,并在速度和准确性上都优于最快和最精准的检测器。

 

 

  • 0
    点赞
  • 5
    收藏
  • 打赏
    打赏
  • 0
    评论
<p> <span style="font-size:18px;color:#E53333;"><strong><span style="color:#000000;">课程演示环境:Ubuntu</span><br /> <br /> <span style="color:#000000;">需要学习Windows系统YOLOv4的同学请前往《Windows版YOLOv4目标检测实战:训练自己的数据集》,课程链接https://edu.csdn.net/course/detail/28748</span><br /> <br /> YOLOv4</strong></span><span style="font-size:18px;color:#E53333;"><strong>来了!速度和精度双提升!</strong></span> </p> <p> <span style="font-size:16px;"> </span> </p> <p> <span style="font-size:16px;">与</span><span style="font-size:16px;"> YOLOv3 </span><span style="font-size:16px;">相比,新版本的</span><span style="font-size:16px;"> AP(精度) </span><span style="font-size:16px;">和</span><span style="font-size:16px;"> FPS </span><span style="font-size:16px;">(每秒帧率)分别提高了</span><span style="font-size:16px;"> 10% </span><span style="font-size:16px;">和</span><span style="font-size:16px;"> 12%</span><span style="font-size:16px;">。</span><span></span> </p> <p> <span style="font-size:16px;"> </span> </p> <p> <span style="font-size:16px;">YOLO系列是基于深度学习的端到端实时目标检测方法。本课程将手把手地教大家使用</span><span style="font-size:16px;">labelImg</span><span style="font-size:16px;">标注和使用</span><span style="font-size:16px;">YOLOv4</span><span style="font-size:16px;">训练自己的数据集。课程实战分为两个项目:单目标检测(足球目标检测)和多目标检测(足球和梅西同时检测)。</span><span></span> </p> <p> <span style="font-size:16px;"> </span> </p> <p> <span style="font-size:16px;">本课程的</span><span style="font-size:16px;">YOLOv4</span><span style="font-size:16px;">使用</span><span style="font-size:16px;">AlexAB/darknet</span><span style="font-size:16px;">,在</span><span style="font-size:16px;">Ubuntu</span><span style="font-size:16px;">系统上做项目演示。包括:安装</span><span style="font-size:16px;">YOLOv4、</span><span style="font-size:16px;">标注自己的数据集、整理自己的数据集、修改配置文件、训练自己的数据集、测试训练出的网络模型、性能统计</span><span style="font-size:16px;">(mAP</span><span style="font-size:16px;">计算和画出</span><span style="font-size:16px;">PR</span><span style="font-size:16px;">曲线</span><span style="font-size:16px;">)</span><span style="font-size:16px;">和先验框聚类分析。还将介绍改善</span><span style="font-size:16px;">YOLOv4</span><span style="font-size:16px;">目标训练性能的技巧。</span><span></span> </p> <p> <span style="font-size:16px;"> </span> </p> <p> <span style="font-size:16px;">除本课程《</span><span style="font-size:16px;">YOLOv4</span><span style="font-size:16px;">目标检测实战:训练自己的数据集》外,本人将推出有关</span><span style="font-size:16px;">YOLOv4</span><span style="font-size:16px;">目标检测的系列课程。请持续关注该系列的其它视频课程,包括:</span><span></span> </p> <p> <span style="font-size:16px;">《</span><span style="font-size:16px;">YOLOv4</span><span style="font-size:16px;">目标检测实战:人脸口罩佩戴识别》</span><br /> <span style="font-size:16px;">《</span><span style="font-size:16px;">YOLOv4</span><span style="font-size:16px;">目标检测实战:中国交通标志识别》</span><br /> <span style="font-size:16px;">《</span><span style="font-size:16px;">YOLOv4</span><span style="font-size:16px;">目标检测:原理与源码解析》</span> </p> <p> <br /> </p> <p> <span style="font-size:16px;"><br /> </span> </p> <p> <span style="font-size:16px;"><img src="https://img-bss.csdn.net/202004260858382698.jpg" alt="" /><br /> </span> </p> <p> <span style="font-size:16px;"><br /> </span> </p> <p> <span style="font-size:16px;"><img src="https://img-bss.csdn.net/202004260858535136.jpg" alt="" /><br /> </span> </p> <p> <span style="font-size:16px;"><img src="https://img-bss.csdn.net/202004260859074920.jpg" alt="" /><br /> </span> </p> <p> <span></span> </p> <p> <span></span> </p>

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:编程工作室 设计师:CSDN官方博客 返回首页
评论

打赏作者

CVAIDL

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值