【YOLOv4原文+翻译】YOLOv4:Optimal Speed and Accuracy of Object Detection

最近新出了YOLOV4,我系统的从V1开始整理出稿,传送门:
【YOLOv1原文+翻译】You Only Look Once Unified, Real-Time Object Detection
【YOLOv2原文+翻译】YOLO9000: Better, Faster, Stronger
【YOLOv3原文+翻译】YOLOv3:An Incremental Improvement
【YOLOv4原文+翻译】YOLOv4:Optimal Speed and Accuracy of Object Detection

首先上传原文:百度云盘
提取码:
id14
因为大多数博主所给的都是外链,对于没有梯子的同学来说打开非常痛苦,我直接上传PDF啦

正文开始

Abstract(摘要)

目前有很多可以提高CNN准确性的算法。这些算法的组合在庞大数据集上进行测试、对实验结果进行理论验证都是非常必要的。有些算法只在特定的模型上有效果,并且只对特定的问题有效,或者只对小规模的数据集有效;然而有些算法,比如batch-normalization和residual-connections,对大多数的模型、任务和数据集都适用。我们认为这样通用的算法包括:Weighted-Residual-Connections(加权残差连接、WRC), Cross-Stage-Partial-connections(跨阶段部分连接、CSP), Cross mini-Batch Normalization(跨小批量归一化、CmBN), Self-adversarial-training(自我对抗训练、SAT)以及Mish-activation(误激活)。我们使用了新的算法:WRC, CSP, CmBN, SAT, Mish activation, Mosaic data augmentation, CmBN, Dropblock regularization 和CIoU loss以及它们的组合,获得了最优的效果:在MS COCO数据集上的AP值为43.5%(65.7% AP50),在Tesla V100上的实时推理速度为65FPS。源代码位于:https://github.com/AlexeyAB/darknet

1. Introduction(介绍)

大部分基于CNN的目标检测器主要只适用于推荐系统。举例来说,通过城市相机寻找免费停车位置的系统使用着慢速但是高精度的模型,然而汽车碰撞警告却使用着快速但是低精度的模型。提高实时目标检测器的精度不仅能够应用在推荐系统上,而且还能用于独立的流程管理以及降低人员数量上。传统图形处理单元 (GPU) 上的实时目标检测器操作允许以实惠的价格大规模使用。但目前大部分高精度的神经网络不仅不能实时运行,并且需要较大的mini-batch-size在多个GPUs上进行训练。我们构建了仅在一块GPU上就可以实时运行的CNN解决了这个问题,并且它只需要在一块GPU上进行训练。

在这里插入图片描述

图1:对拟建的YOLOv4和其他最先进的目标检测器进行比较。YOLOv4 的速度比EfficientDet快两倍,却具有同等的性能。YOLOv3 的 AP 和 FPS 分别提高了 10% 和 12%。

我们工作的主要目标就是设计一个仅在单个计算系统(比如单个GPU)上就可以快速运行的目标检测器并且对并行计算进行优化,并非减低计算量理论指标(BFLOP)。我们希望这个检测器能够轻松的训练和使用。具体来说就是任何一个人仅仅使用一个GPU进行训练和测试就可以得到实时的,高精度的以及令人信服的目标检测结果,正如在图1中所示的YOLOv4的结果。我们的贡献总结如下:
(1)我们提出了一个高效且强大的目标检测模型。任何人可以使用一个1080Ti或者2080Ti的GPU就可以训练出一个快速且高精度的目标检测器。

(2)我们在检测器训练的过程中,测试验证了目标检测中最高水准的Bag-of-Freebies(免费包)和Bat-of-Specials(特殊包)检测方法。

(3)我们改进了最高水准的算法,使得它们更加高效并且适合于在单个GPU上进行训练,比如CBN, PAN, SAM等。
在这里插入图片描述

图2:目标检测器

2. Related work( 相关工作)

2.1. Object detection model (目标检测模型)

检测器通常由两部分组成:backbone和head。前者是在ImageNet上进行预训练的骨干网,后者是用来预测类别信息和目标物体的边界框的头部。对于在GPU平台上运行的检测器,它们的backbone可能是VGG, ResNet, ResNetXt,或者是DenseNet。在CPU平台上运行的检测器,它们的backbone可能是SqueezeNet,MobileNet或者是ShuffleNet。对于head部分,通常分为两类:one-stage和two-stage的目标检测器。Two-stage的目标检测器的代表是R-CNN系列,包括:fast R-CNN, faster R-CNN,R-FCN和Libra R-CNN。还有基于anchor-free的Two-stage的目标检测器,比如RepPoints。One-stage目标检测器的代表模型是YOLO, SSD和RetinaNet。在最近几年,出现了基于anchor-free的one-stage的算法,比如CenterNet, CornerNet, FCOS等等。在最近几年,目标检测器在backbone和head之间会插入一些网络层,这些网络层通常用来收集不同的特征图。我们将其称之为目标检测器的neck。通常,一个neck由多个bottom-up路径和top-down路径组成。使用这种机制的网络包括Feature Pyramid Network(特征金字塔网络、FPN),Path Aggregation Network(路径聚合网络、PAN),BiFPN和NAS-FPN。
在这里插入图片描述

除了上述模型外,一些研究人员还强调直接构建一个新的主干(DetNet [43],DetNAS [7])或新的完整模型(SpineNet [12],HitDetector [20])用于物体检测。

综上所述,一个普通的目标检测器由下面四个部分组成:
在这里插入图片描述

2.2. Bag of freebies(免费包)

通常来讲,传统的目标检测器都是进行离线训练的(训练的时候对GPU数量和规格不限制)。因此,研究者总是喜欢扬长避短,开发最好的训练手段,因此可以在不增加推理成本的情况下,获得最好的检测精度。我们将只改变训练策略或者只增加训练成本的方法称之为“bag of freebies"。在目标检测中经常使用并且满足bag of freebies的定义的算法称是①数据增广(data augmentation)。数据增广的目的是增加输入图片的可变性,因此目标检测模型对从不同场景下获取的图片有着更高的鲁棒性。例如,光度失真(photometric distoitions)和几何失真(geometric distortions)是用来数据增强方法的两个常用的手段,它们肯定有利于目标检测任务。在处理photometric distortion中,我们会调整图像的亮度,对比度,色调,饱和度以及噪声。对于geometric distortion,我们会随机增加尺度变化,裁剪,翻转以及旋转。

上面提及的数据增广的手段都是像素级别的调整,它保留了调整区域的所有原始像素信息。此外,一些研究者将数据增广的重点放在了模拟目标物体遮挡问题上。他们在图像分类和目标检测上已经取得了不错的结果。具体来说,随机擦除(random erase)和CutOut可以随机选择图像上的矩形区域,然后进行随机融合或者使用零像素值来进行融合。对于hide-and-seek(隐藏和查找)和grid mask(网络掩码),他们随机地或者均匀地在一幅图像中选择多个矩形区域,并且使用零来代替矩形区域中的像素值。如果将相似的概念用来特征图中,出现了DropOut, DropConnect和DropBlock方法。此外,一些研究者提出一起使用多张图像进行数据增强的方法。举例来说,MixUp使用两张图片进行相乘并且使用不同的系数比进行叠加,然后使用它们的叠加比来调整标签。对于CutMix,它将裁剪的图片覆盖到其他图片的矩形

  • 14
    点赞
  • 83
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值