来源:机器之心

本文约2188字,建议阅读7分钟

本文介绍YOLO 的官方 Github 账号更新了 YOLO v4 的 arXiv 链接与开源代码链接,迅速引起了 CV 社区的关注。

两个月前,YOLO 之父 Joseph Redmon 表示,由于无法忍受自己工作所带来的的负面影响,决定退出计算机视觉领域。此事引发了极大的热议,其中一个悬念就是:我们还能等到 YOLO v4 面世吗?

当我们都以为再也没有希望的时候,YOLO v4 却悄无声息地来了。这一目标检测神器出现了新的接棒者!

数小时前,YOLO 的官方 Github 账号更新了 YOLO v4 的 arXiv 链接与开源代码链接,迅速引起了 CV 社区的关注。

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

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

YOLO v4 的作者共有三位:Alexey Bochkovskiy、Chien-Yao Wang 和 Hong-Yuan Mark Liao。其中一作 Alexey Bochkovskiy 是位俄罗斯开发者,此前曾做出 YOLO 的 windows 版本。

那么,YOLOv4 性能如何呢?

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

接下来,我们看下 YOLO V4 的技术细节。

许多特征可以提高 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 的实时速度。

该研究的主要贡献如下:

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

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

  3. 修改了 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 只混合了两张输入图像,具体如下图 3 所示:

图 3:Mosaic 表示的一种新型数据增强方法。

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

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

图 4:CmBN 图示。

研究者还将 SAM 从空间注意力机制(spatial-wise attention)修改为点注意力机制(point-wise attention),并将 PAN 中的捷径连接替换为级联,如下图 5、6 所示:

图 5:Modified SAM。

图 6:Modified PAN。

实验结果

YOLO v4 与其他 SOTA 目标检测器的对比结果如下图 8 所示。从图上可以看出,YOLOv4 位于帕累托最优曲线上,并在速度和准确性上都优于最快和最精准的检测器。

图 8:不同目标检测器的速度和准确性对比结果。

——END——

YOLO v4它来了:接棒者出现,速度效果双提升相关推荐

  1. 全面解析YOLO V4网络结构

    作者|周威,https://zhuanlan.zhihu.com/p/150127712 本文已获作者授权,不得二次转载. 1.前言 最近用YOLO V4做车辆检测,配合某一目标追踪算法实现车辆追踪+ ...

  2. 全面解析YOLO V4网络结构(附代码讲解)

    点击上方"深度学习技术前沿",选择"星标"公众号 精选作品,第一时间送达 作者:周威 链接:https://zhuanlan.zhihu.com/p/15012 ...

  3. 它来了,它来了,最强目标检测算法YOLO v4,它真的来了!!!

    YOLO 之父 Joseph Redmon 宣布退出计算机视觉领域,此事引发了极大的热议,其中一个悬念就是:我们还能等到 YOLO v4 吗? 现在,这一目标检测神器出现了新的接棒者!YOLO 的官方 ...

  4. Yolo v4, v3 and v2 性能极简图示

    Yolo v4, v3 and v2 性能图示 https://github.com/AlexeyAB/darknet 参考链接: https://github.com/AlexeyAB/darkne ...

  5. 目标检测中特征融合技术(YOLO v4)(下)

    目标检测中特征融合技术(YOLO v4)(下) ASFF:自适应特征融合方式 ASFF来自论文:<Learning Spatial Fusion for Single-Shot Object D ...

  6. 目标检测中特征融合技术(YOLO v4)(上)

    目标检测中特征融合技术(YOLO v4)(上) 论文链接:https://arxiv.org/abs/1612.03144 Feature Pyramid Networks for Object De ...

  7. YOLO v1到YOLO v4(下)

    YOLO v1到YOLO v4(下) Faster YOLO使用的是GoogleLeNet,比VGG-16快,YOLO完成一次前向过程只用8.52 billion 运算,而VGG-16要30.69bi ...

  8. YOLO v1到YOLO v4(上)

    YOLO v1到YOLO v4(上) 一. YOLO v1 这是继RCNN,fast-RCNN和faster-RCNN之后,rbg(RossGirshick)针对DL目标检测速度问题提出的另外一种框架 ...

  9. YOLO V4 Tiny改进版来啦!速度294FPS精度不减YOLO V4 Tiny

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 此YOLO V4 Tiny改进在保证精度的同时帧率可以达到294FPS!具有比YOLOv4-tiny( ...

最新文章

  1. 地址本在不同手机间的迁移
  2. 神经学家探寻:机器如何拥有意识!如何避免机器人伤害我们!
  3. 21 个HTML网页转RSS Feeds的工具
  4. C++实现求数组中前K大的数
  5. 青龙羊毛——放羊娃(教程)
  6. 元学习Meta learning深入理解
  7. python opencv 如何获取图像的尺寸(宽高)(分辨率)(大小)img.shape
  8. bp神经网络预测python代码_机器学习之多层神经网络(附Python代码和数据)
  9. Git 分布式版本控制常用命令(1)
  10. 实战分享丨MySQL 与Django版本匹配相关经验
  11. as安装过程中gradle_电磁阀在安装过程中需注意的一些细节
  12. 2048游戏简单实现
  13. 对目录的操作(opendir)
  14. OA办公系统审批流程是什么?
  15. 计算机画画教程,【推荐】初学者电脑画画教程
  16. 如何在Ubuntu系统下挂载新硬盘(win10+Ubuntu双系统单硬盘挂载新硬盘)
  17. 《简化iOS APP上架流程,App Uploader助你搞定!》
  18. Ruby 文件目录操作(实例讲解更易懂)
  19. tableau大屏bi_Excel,Tableau,Power BI ...您应该使用什么?
  20. DSP TMS320F280049之模拟比较器CMPSS(寄存器版)

热门文章

  1. 什么是SESSION?(一)
  2. 利用BP神经网络教计算机进行非线函数拟合
  3. 图像遍历反色处理,遍历多通道图片
  4. Meta 开发 AI 语音助手,用于创建虚拟世界和实时翻译
  5. 2021《程序员》数字科技企业研发实力榜TOP50
  6. 微软推出“ Group Transcribe”应用,多人多语言会议实时高准确度文字转录并翻译
  7. 摊牌了:我就靠这几点,搞定了算法面试官
  8. 用Python轻松搞定Excel中的20个常用操作
  9. “数学不行,干啥也不行”骨灰级程序员:其实你们都是瞎努力
  10. 曝贾扬清第二跳,加入阿里!达摩院或将承载中国下一个AI愿景?