YOLOv3论文翻译讲解

29 篇文章 1 订阅
27 篇文章 2 订阅

YOLOv3: An Incremental Improvement

论文地址代码地址

摘要

作者对YOLO进行了进一步的更新,做了一些小设计更改让其表现更好。YOLOv3比YOLOv2相较大了一些,但是检测更加准确,而且检测速度依然很快。320×320 YOLOv3模型能在28.2mAP的精度下运行速度达到了22ms,和SSD的准确度相同但是速度快了3倍。在使用之前的0.5 IOU mAP 检测指标时,YOLOv3表现相当棒。 在Titan X上,它在51毫秒内可达到57.9 AP50,而RetinaNet在198毫秒内才可达到57.5 AP50,性能相似,但速度快3.8倍。 与往常一样,所有代码都可以在https://pjreddie.com/yolo/在线获得。

1、简介

这里基本都是作者的一些心里感受,与论文无关;就是作者懒得写论文了;
有时候,一年的时间会因为一些“琐事”而消耗殆尽,你有这种感受吧?所以,去年我没做什么研究,而是花了不少时间Twitter上,也玩了一把GANs。然后利用去年仅存的一点精力,我对YOLO做了点改进。但是,老实说,这并不是什么大手笔,这只是一些可以让YOLO变得更好小更新,另外,我还帮别人做了一点研究。

事实上,那是我们来这里的原因。我们的文章快交稿了,文中引用了我在YOLO中做出的某些更新的内容,但这样的引用来源还不存在,所以就先写个技术报告吧!

技术报告有个好处,就是它不需要长长 “引言”,我想此时,你们都知道我们为什么要写这个。读到引言的结尾,我相信你们会对文章的结构有所了解。首先我们会向你介绍YOLOv3的更新情况,然后我们会向你们展示我们做的怎么样,然后我们会告诉你们一些失败的尝试,最后我们要说说这次更新到底意味着什么。
在这里插入图片描述

2.想法

YOLOv3中的想法:我们大多从别人那里吸取了好想法。 我们还训练了一个新的分类器网络,该网络要比其他分类器更好。 我们将带您从头开始学习整个系统,以便您可以全部了解。

2.1 边界框预测

遵循YOLO9000,我们的系统使用尺寸簇作为锚定框来预测边界框。 网络为每个预测边界框预测4个坐标(tx,ty,tw,th)。 如果此cell从图像的左上角偏移了(cx,cy)并且先验边界框的宽度和高度为pw,ph,则预测对应于:
在这里插入图片描述

在这里插入图片描述
在训练的时候采用均方误差损失和(sum of squared error loss)。 如果某个坐标预测的ground truth(真实标签)是 tˆ*,则相应的梯度就是ground truth(从ground truth box计算得出)减去该坐标的预测值:
tˆ*- t* 。通过反转上述公式,可以很容易地计算出groud truth。

YOLOv3使用逻辑回归预测每个边界框的对象得分(objectness score)。如果先验边界框(bounding box prior)与ground truth object的重叠量大于任何其他的先验边界框,则其得分应为1。如果先验边界框不是最佳的,但是与ground truth object重叠的阈值超过了某个阈值,则忽略后续预测,作者使用的阈值为.5。我们的系统只为每个 ground truth 对象分配一个边界框。如果一个先验边界框没有分配给ground truth object,则不会对坐标或者类别预测造成损失,仅会对对象造成损失。

2.2 类别预测

每个边界框使用多标签分类来预测边界框中可能包含的类。我们不使用 softmax,而是使用单独的逻辑分类器,因为我们发现前者在对于神经网络高性能没有什么必要。 在训练过程中,我们使用二元交叉熵损失来进行类别预测。

这个选择有助于我们把 YOLOv3 用于更复杂的领域,如公开图像数据集。这个数据集包含了大量重叠的标签(如女性和人)。如果我们用 softmax,它会强加一个假设,使每个框只包含一个类别,但通常情况并非如此。多标签的分类方法能够更好地模拟数据。

2.3 跨尺度的预测

YOLOv3预测3种不同比例的预测框。我们的系统使用相似的概念从那些比例尺中提取特征以构建金字塔网络。从基本特征提取器中,我们添加了几个卷积层。并用最后的卷积层预测一个三维张量编码:边界框、框中目标和分类预测。在COCO数据集上进行的实验中,我们预测每个尺度上有3个预测框,因此对于4个边界框偏移量,1个对象预测和80个类预测,张量为 N×N×[3 *(4 + 1 + 80)]。

接下来,我们从先前的2层中获取特征图,并将其上采样2倍。我们还从网络中较早的地方获取了一个特征图,并使用串联将其与我们的上采样特征合并。这种方法使我们能够从早期特征映射中的上采样特征和更细粒度的信息中获得更有意义的语义信息。然后,我们再添加一些卷积层来处理此组合特征图,并最终预测出一个相似的、大小是原先两倍的张量。

我们用同样的网络设计来预测边界框的最终尺寸,其实这个过程有助于我们对第三种尺寸的预测,因为我们可以从早期网络中获得细粒度的特征。

和上个版一样,我们仍然使用 k-means 聚类来确定边界框的先验。在实验中,我们选择了 9 个聚类和 3 个尺寸,然后在不同尺寸的边界框上均匀分割聚类。在 COCO 数据集上,这 9 个聚类分别是:(10×13)、(16×30)、(33×23)、(30×61)、(62×45)、(59×119)、(116×90)、(156×198)、(373×326) 。

2.4 特征提取器

我们使用一个新的网络来执行特征提取。 我们的新网络是YOLOv2,Darknet-19中使用的网络与新的残留网络内容之间的一种混合方法。 我们的网络使用了连续的3×3和1×1卷积层,但现在也有了一些快捷连接,并且规模更大。 它有53个卷积层,所以我们称它为 Darknet-53!
在这里插入图片描述
这个新网络比Darknet-19强大得多,效率比ResNet-101或ResNet-152高。 这是一些ImageNet结果:
在这里插入图片描述
每个网络都使用相同的设置进行训练,输入 256 × 256 的图片,并进行单精度测试。运行环境为 Titan X。我们得出的结论是 Darknet-53 在精度上可以与最先进的分类器相媲美,同时它的浮点运算更少,速度也更快。和 ResNet-101 相比,Darknet-53 的速度是前者的 1.5 倍;而 ResNet-152 和它性能相似,但用时却是它的 2 倍以上。

Darknet-53 也可以实现每秒最高的测量浮点运算。这意味着网络结构可以更好地利用 GPU,使其预测效率更高,速度更快。这主要是因为 ResNets 的层数太多,效率不高。

2.5 训练

我们只是输入完整的图像,并没有做其他处理。实验过程中涉及的多尺寸训练、大量数据增强和批量标准化等操作均符合标准。模型训练和测试的框架是 Darknet 神经网络。

3.我们做的如何

YOLOv3很好!参见表3。就COCO而言,mAP度量标准很奇怪,与SSD变体相当,但速度提高了3倍。不过,在此指标上,它仍然比其他模型(例如RetinaNet)要落后很多。
在这里插入图片描述
但是,当我们用以前的评价指标,IOU=0.5 时的 mAP(表中的 AP50)来评价 YOLOv3 时,我们发现它真的很强。它几乎与 RetinaNet 媲美,且远远高于 SSD。这表明它是一个非常强大的检测器,擅长为检测目标生成合适的边界框。但是,随着 IOU 阈值的增加,YOLOv3 性能显著下降,这时候 YOLOv3 预测的边界框就不能做到完美对齐了。

在过去,YOLO 一直被用于小型对象检测。但现在我们可以看到其中的演变趋势,随着多尺寸预测功能的上线,YOLOv3 将具备更高 APS 性能。但它目前在中等尺寸或大尺寸物体上的检测表现还相对较差,仍需进一步的完善。

当我们在AP50度量标准上绘制精度与速度的关系时(参见图5),我们看到YOLOv3比其他检测系统具有明显的优势。即更快,更好。
在这里插入图片描述

4. 失败的尝试

我们在研究 YOLOv3 的时候尝试了很多东西,以下是我们记得的一些失败案例。

Anchor box 坐标的偏移预测。我们尝试了常规的 Anchor box 预测方法,比如使用线性激活来将坐标 x,y 的偏移预测为边界框宽度或高度的倍数。但我们发现,这种做法降低了模型的稳定性而且效果不佳。

用线性方法预测 x,y,而不是使用逻辑方法预测。我们尝试使用线性激活来直接预测 x,y 的偏移,而不是使用逻辑激活,这降低了 mAP 成绩。

Focal loss。我们尝试使用 focal loss,但它使我们的 mAP 大概降低了 2 个点。这可能是因为它具有单独的对象预测和条件类别预测,YOLOv3 对于 focal loss 函数试图解决的问题已经具有相当的鲁棒性。因此,对于大多数例子而言,类别预测没有损失?或者其他什么原因?我们并不完全确定。

双 IOU 阈值和真值分配。在训练期间,Faster RCNN 用了两个 IOU 阈值,如果预测的边框与标注边框的重合度不低于 0.7 ,那判定它为正样本;如果在 [0.3~0.7] 之间,则忽略;如果低于 0.3 ,就判定它为负样本。我们也尝试了这种方法,但是效果并不好。

我们对现在的模型很满意,至少是目前的最佳状态。上述的有些技术可能会使我们的额模型更好,但我们可能还需要对它们做一些调整。

5. 更新的意义

YOLOv3 是一个非常棒的检测器,它又准又快。虽然它在 COCO 数据集上,0.3 和 0.95 的新指标上的成绩并不好,但对于旧的检测指标 0.5 IOU,它还是非常不错的。

所以,为什么我们要改变指标呢?最初的 COCO 论文中只有这样的一句含糊其辞的话:评估完成,就会生成评估指标结果。但是 Russakovsky 等人曾经有份报告,说人类很难区分 0.3 和 0.5 的 IOU:“训练人们用肉眼区别 IOU 值为 0.3 和 0.5 的边界框是一件非常困难的事”。既然人类都难以区分,那这个指标还重要吗?

也许有个更好的问题值得我们去探讨:“我们用它来做什么”,很多从事这方面研究的人都受雇于 Google 和 Facebook,我想至少我们知道如果这项技术发展的完善,那他们绝对不会把它用来收集你的个人信息然后卖给…等一下,你把事实说出来了!!哦哦。

另外军方在计算机视觉领域投入了大量资金,他们从来没有做过任何可怕的事情,比如用新技术杀死很多人…哦哦。

我有很多希望!我希望大多数人会把计算机视觉技术用于快乐、幸福的事情上,比如就统计国家公园里斑马的数量,或者追踪他们小区附近有多少只猫。但是计算机视觉技术的应用已经步入歧途了,作为研究人员,我们有责任思考自己的工作可能带给社会的危害,并考虑怎么减轻这种危害。我们非常珍惜这个世界。

最后,不要在 Twitter 上 @ 我,我已经不玩了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值