【笔记】文献阅读[YOLOV3]-An Incremental Improvement

YOLOv3: An Incremental Improvement

  • 引言
  • 1 介绍
  • 2 细节
    • 2.2 类别预测
    • 2.3 多尺度预测
    • 2.4 特征提取
    • 2.5 训练
  • 3 我们是怎么做的(方法)
  • 4 一些无用的尝试
  • 5 这意味着什么(反思)
  • 申辩

引言

论文精读可以看B站大佬的视频:【精读AI论文】YOLO V3目标检测(附YOLOV3代码复现)
该篇论文其实是作者的一篇技术报告,所以文笔会相对俏皮,不是特别严肃。
翻译有问题欢迎指出,不断改进!
【笔记】文献阅读[YOLOV3]-An Incremental Improvement_第1张图片
  我们对YOLO提出了一些改进。我们做了一些小的设计改变,使它变得更好。我们也训练更好的网络。比上一个网络更大也更准确。放心,足够快。在 320 × 320的输入尺寸下YOLOv3每张运行22毫秒达到准确率28.2 mAP,准确率和SSD相媲美,但快3倍。以0.5为IOU阈值的mAP检测指标上,YOLOv3是足够好的。在一个Titan X每张图的运行速度是51 ms,AP50是57.9,对比RetinaNet每张图的运行速度是198ms,AP50是57.5,相似的性能下,速度快乐3.8倍。同样的,所有的代码在https://pjreddie.com/yolo/。

1 介绍

【笔记】文献阅读[YOLOV3]-An Incremental Improvement_第2张图片
  有时候,你一整年都只是在打电话。我今天没有做什么研究。花了大部分的时间在Twitter上。还了解了下生成对抗网络GAN。我去年遗留下了一些研究热情,我试图对YOLO提出一些改进。但是,实话说,没有什么用,只是一些小的改变让它变得更好了。我还帮助其他人做了一些研究。
  事实上,这就是这篇文章的原因。我们论文发表截止日期,需要引用我对YOLO提出的一些新的改进,但是没有来源。所以,开始这篇技术报告吧。
  技术报告的好处就是它不需要介绍。因此这篇介绍的结尾将为论文的其余部分指明方向。首先,我们会告诉你YOLOv3的细节,以及我们是怎么做的,还有一些但并无大用的尝试。最后,反思下这所有的一切都意味着什么。
【笔记】文献阅读[YOLOV3]-An Incremental Improvement_第3张图片
  图1:这张图我们引用了文献9Focal Loss的论文。YOLOv3比其他检测方法在性能方面运行的更快。无论是M40还是 Titan X,基本上都是相同的GPU。

2 细节

【笔记】文献阅读[YOLOV3]-An Incremental Improvement_第4张图片
  这部分介绍YOLOv3的细节:我们从其他研究者获得了一些好的想法。我们训练了比其他更好的分类器网络。我们将从头开始带你浏览整个系统,这样你就能理解它了。
【笔记】文献阅读[YOLOV3]-An Incremental Improvement_第5张图片
  根据YOLO9000,我们系统使用维度聚类作为锚框来预测边框。网络对每个边框预测了4个坐标 t x , t y , t w , t h t_x,t_y,t_w,t_h tx,ty,tw,th。如果单元格对于图像左上角的偏移为 ( c x , c y ) (c_x,c_y) (cx,cy),先验框的宽度和高度为 p w , p h p_w,p_h pw,ph,那么预测对应为:【笔记】文献阅读[YOLOV3]-An Incremental Improvement_第6张图片
  训练阶段我们使用平方和误差。如果一些坐标预测的真实框是 t ^ ∗ \hat{t}_* t^我们的梯度即为真实值(由真实框计算得出)减去我们的预测值: t ^ ∗ − t ∗ \hat{t}_*-t_* t^t。把上式中的t移到等号左边即可得到t的标签值。
  YOLOv3使用逻辑回归(sigmiod)预测每个框的置信度分数。如果该先验框与真实框的重叠率高于其他的先验框则置信度为1。如果该先验框并不是最佳的,但与真实框的重叠率高于阈值我们则忽略该预测。参照文献17.我们使用0.5的IOU阈值。与文献17不同的是,我们的系统指定分配一个先验框负责预测每一个真实框。如果先验框没有被指定去预测真实框,那么它就没有定位和分类损失,只有置信度预测。
【笔记】文献阅读[YOLOV3]-An Incremental Improvement_第7张图片
  图2:具有尺度先验和位置预测的边界框。我们预测了框的宽和高作为簇质心的偏移。我们使用逻辑回归函数预测了边框相对于滤波器位置的中心坐标。这张图是公然抄袭自己的文献15。

2.2 类别预测

【笔记】文献阅读[YOLOV3]-An Incremental Improvement_第8张图片
  每个框使用多标签分类来预测边界框可能包含的类别。我们不使用SoftMax,因为我们发现它对于良好的性能是不必要的,相反,我们只需使用独立的逻辑分类器。在训练阶段,我们使用二进制交叉熵损失来进行预测。
  当我们迁移到像 Open Images Dataset更为复杂的领域时,该公式是有帮助的。该数据集有很多重叠的标签(如女人和人物)。使用Softmax会加强这样的假设,即每个框只有一类,但现实往往并非如此。多标签方法可以更好地对数据进行建模。

2.3 多尺度预测

【笔记】文献阅读[YOLOV3]-An Incremental Improvement_第9张图片
  YOLOv3预测3中不同尺度的框。我们的系统使用类似的概念来构建特诊金字塔(FPN)从这些尺度中提取特征。基于我们基准的特征提取器我们增加了些许卷积层。最终这些预测是将边界框、置信度和类别概率编码为3维张量。我们在COCO数据集的实验中每个维度预测了3个边框,因此张量为 N ∗ N ∗ [ 3 ∗ ( 4 + 1 + 80 ) ] N*N*[3*(4+1+80)] NN[3(4+1+80)]其中包含4个边界框偏移量,1个置信度预测和80个类别概率。
【笔记】文献阅读[YOLOV3]-An Incremental Improvement_第10张图片
  接下来,我们从前面的两个层中提取特征图,并对其进行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 ) (10 × 13), (16 × 30), (33 × 23), (30 × 61), (62 × 45), (59 ×119), (116 × 90), (156 × 198), (373 × 326) (10×13),(16×30),(33×23),(30×61),(62×45),(59×119),(116×90),(156×198),(373×326)

2.4 特征提取

【笔记】文献阅读[YOLOV3]-An Incremental Improvement_第11张图片
  我们使用新的网络来执行特征提取。我们的网络是在YOLOv2,Darknet-19和新奇时髦的残差网络中使用网络的一种混合方法。我们的网络使用3 × 3和1 × 1卷积层,但现在也使用一些快捷连接(shortcut),而且明显更大。它有53层的卷积,因此就叫它 Darknet-53!【笔记】文献阅读[YOLOV3]-An Incremental Improvement_第12张图片
【笔记】文献阅读[YOLOV3]-An Incremental Improvement_第13张图片
  这个新的网络比Darknet19强大得多,但仍然比ResNet-101或ResNet-152更有效率。以下是一些在mageNet的测试结果:
  表2:骨干比较。准确率、十亿次执行率、每秒十亿浮点处理量和各种网络的FPS。
  每个网络都使用相同的设置进行训练,并在256x256、单一裁剪精度下进行测试。运行时间是基于 Titan X 并在 256 × 256输入分辨率下计算的。因此 Darknet-53的性能与最先进的分类器不相上下,但浮点运算更少,速度更快。 Darknet-53比ResNet-101更好且快1.5倍。 Darknet-53的性能和 ResNet-152不相上下但快2倍。
  Darknet-53达到了最高的每秒浮点运算量。这意味着网络更好地利用了GPU,使其评估更高,从而更快。这主要是因为 ResNets层数太多,效率不是很高。

2.5 训练

【笔记】文献阅读[YOLOV3]-An Incremental Improvement_第14张图片
  我们仍然训练完整的图像(即端到端训练)而没有难例挖掘或其他。我们使用多尺度训练,大量的数据增强,批次归一化(BN)以及所有标准的操作。我们使用 Darknet神经网络框架实现训练和测试。

3 我们是怎么做的(方法)

【笔记】文献阅读[YOLOV3]-An Incremental Improvement_第15张图片
  YOLOv3真的很棒!参见表3。就COCO平均AP指标而言,它与SSD变种持平,但速度快3倍。 但在该指标中它仍然微小的落后于其他像RetinaNet的模型。
  但是,当我们看旧评价指标IOU=0.5的mAP,YOLOv3是非常强大的。它几乎与RetinaNet不相上下,远远超过SSD变种。这表明YOLOv3是一个非常强大的检测器,擅长预测物体边界框。但随着IOU阈值的增加,性能会有所下降,这表明YOLOv3难以是预测框和对象完美对齐。
  过于YOLO难以检测小目标。然而,现在,我们看到这一趋势发生了逆转。通过新的多尺度预测,我们看到YOLOv3具有相对较高的APs性能。但它在中型和较大尺寸的对象上性能相对较差。需要更多调查才能弄清楚这一真相。
  当我们在AP50指标(参见图5)上绘制精度与速度的关系图时,我们看到了YOLOv3比其他检测系统具有显著的优势。也就是说,它更快、更好。
【笔记】文献阅读[YOLOV3]-An Incremental Improvement_第16张图片
  表3:我真的是在偷这些图表,它们要花费好长时间才能从头做起。(作者太可爱了吧)好了,YOLOv3做得很好。请记住,RetinaNet处理图像的时间大约是YOLOv3的3.8倍。YOLOv3比SSD变种要好得多,在AP50指标上可以与最先进的模型相媲美。

4 一些无用的尝试

  在开发YOLOv3的过程中,我们尝试了很多东西。其中很多都没有奏效。这是我们能记住的尝试。
  定位框x,y偏移量预测。我们尝试使用普通锚框预测机制,在该机制中使用线性激活将x,y偏移量预测为框宽或框高的倍数。我们发现这个公式降低了模型的稳定性,而且效果不是很好。
  对x,y线性预测,取代逻辑预测。我们尝试使用线性激活来直接预测x,y偏移量,而不是Logistic激活。这导致 mAP下降了几个百分点。
  Focal loss。我们试着用Focal loss。它使我们的mAP下降了大约2个点。YOLOv3可能已经对Focal loss试图解决的问题具有鲁棒性,因为它有单独的客观性预测和条件类预测。因此,对于大多数例子来说,类预测没有损失吗?还是别的什么?我们不能完全确定。
【笔记】文献阅读[YOLOV3]-An Incremental Improvement_第17张图片
  图3:同样修改自文献[9],这一次在 mAP显示了0.5阈值IOU度量的速度/精度权衡。你可以看出YOLOv3很好,因为它速度快精度高。能引用自己的论文吗?猜猜谁会尝试,这个人→[16]。哦,我忘了,我们还修复了YOLOv2中的一个数据加载错误,这有助于提高 2 mAP。只是把这个偷偷引用进来以免弄乱版面。
【笔记】文献阅读[YOLOV3]-An Incremental Improvement_第18张图片
  双IOU阈值和真实性分配。Faster RCNN在训练期间使用两个IOU阈值。如果一个预测与基本事实重叠了0.7,这是一个积极的例子,[0.3−0.7]则被忽略,小于0.3对于所有真实对象,它是一个反面例子。我们尝试了类似的策略,但没有取得好的效果。
  我们非常喜欢我们目前的方案,至少它似乎处于局部最优状态。这些技巧中的一些可能最终会产生良好的效果,也许它们只是需要一些调整来稳定训练。

5 这意味着什么(反思)

【笔记】文献阅读[YOLOV3]-An Incremental Improvement_第19张图片
  YOLOv3是一个很好的检测器。它又快又准。在0.5到0.95之间的COCO平均AP指标上,它并不是很好。但与0.5IOU的旧检测指标相比,这是非常好的。
  不管怎样,我们为什么要改变衡量标准?最初的COCO论文只有一句隐晦的话:“一旦评估服务器完成,将添加对评估指标的全面讨论”。Russakovsky等人报告说,人类很难区分0.3和0.5的IOU!“训练人类用肉眼观察IOU为0.3的边界框,并将其与IOU为0.5的边界框区分开来,难度大得出奇。”]如果人类都很难分辨出两者的区别,那这个指标又有什么必要性呢?
【笔记】文献阅读[YOLOV3]-An Incremental Improvement_第20张图片
  但也许一个更好的问题是:“既然我们有了这些检测器,我们要怎么处理它们?”很多从事这项研究的人都在谷歌和Facebook工作。我猜至少我们知道这项技术掌握在好的人手中,肯定不会被用来收集你的个人信息并将其出售给……等等,你是说这就是它的用途??噢。
  嗯,其他大量资助视觉研究的人是军方,他们从来没有做过可怕的事情,比如用新技术杀死很多人。哦,等等……
  我非常希望,大多数使用计算机视觉的人只是在用它做一些快乐的、好的事情,比如在国家公园里数斑马的数量,或者跟踪他们的猫在他们的房子里四处走动。但计算机视觉已经被用于可疑的用途,作为研究人员,我们有责任至少考虑到我们的工作可能造成的危害,并考虑减轻它的方法。我们欠世界的太多了。
  在结束时,不要用“我”。(因为我终于戒掉了推特)。
【笔记】文献阅读[YOLOV3]-An Incremental Improvement_第21张图片
【笔记】文献阅读[YOLOV3]-An Incremental Improvement_第22张图片

申辩

【笔记】文献阅读[YOLOV3]-An Incremental Improvement_第23张图片
  我们要感谢Reddit(类似于中国百度贴吧、知乎)的评论者、实验室伙伴、电子邮件发送者和“游客”,感谢他们真诚的、发自内心的话语。如果你像我一样是ICCV审稿人的话,那么我们知道你可能还有另外37篇论文需要审阅,当然你总是会推到最后一周,直到些领域的大牛给你发电子邮件,告诉你真正应该完成这些审阅,不然完全清楚他们在说什么,也许他们来自未来?无论如何,这篇论文非常感谢各位网友的支持,如果没有你们这篇论文只是零星进展而不像现在这样大踏步进展。如果你推特我,我也不会知道,再说一遍。
  2号评论丹·格罗斯曼(笑瞎了眼)坚持认为,我在这里指出,我们的图表不是一个而是两个非零起源。你完全正确,丹,那是因为这样看起来比承认我们只是优化了2%-3%的MAP要好得多。但以下是所需的图表。我也加了一个FPS,因为当我们在FPS上绘制时,我们看起来就像是超级好的。
【笔记】文献阅读[YOLOV3]-An Incremental Improvement_第24张图片
  Reddit上的4号评论者AKA JudasAdventus写道:“阅读很有趣,但反对MSCOCO指标的论点似乎有些站不住脚。”我一直都知道你会背叛我的犹大。你知道,当你在一个项目上工作时,它只会表现得很好,所以你必须找出一些方法来证明你所做的实际上是相当酷的?我基本上就是想这么做,我对COCO指标进行了一些抨击。但既然我已经用木桩标出了这座山,我还不如死在这座山上(开弓没有回头箭,既然如此就把指标捶死)。
  但话说回来, mAP确实是不太好的指标,所以对它的更新可能会解决它的一些问题,或者至少证明为什么更新后的版本在某些方面更好。而我最大的异议就是缺乏正当理由。对于Pascal VOC,IOU阈值被故意设置得很低,以解决真实数据中边界框中的不准确问题。COCO的标签比VOC更好吗?这绝对是可能的,因为可可有语义分割,也许标签更值得信赖,因此我们不会那么担心不准确。但同样,我的问题是缺乏正当理由。
【笔记】文献阅读[YOLOV3]-An Incremental Improvement_第25张图片
  COCO指标强调更好的边界框,但这种强调必须意味着它不强调其他东西,如分类准确性。是否可以有充分理由认为更精确的边界框比更好的分类更重要?一个错误分类的例子比一个略微移动的边界框要明显得多。
  mAP已经烂透了,因为各个类别单独计算mAP。例如,如果您的测试集只有这两个图像,那么根据 mAP,产生这些结果的两个检测器也是一样好的:
【笔记】文献阅读[YOLOV3]-An Incremental Improvement_第26张图片
  图5:根据这两幅图像上的mAP,这两个假设的检测器是完美的,完全等价。备注:应该是recall召回率一样,而不是mAP
【笔记】文献阅读[YOLOV3]-An Incremental Improvement_第27张图片
  上图明显过分夸张了,我在想能不能提出一个新的,能够更加倾向于反应真实世界,反应人类真实敏感的目标检测评估指标,而这个指标应该充分反应上述说的这些差异(算法性能与人类关注的应该吻合)。
  备注:average 指的是各个类别AP的平均值,mean指的是不同IOU阈值下AP的平均值
  人类关注的无非就是分类和定位,我们能否不用各个类别的AP,而是全局的AP。能不能每张图片算一个AP,然后再求一个平均值。
  目标检测不如图像分割更加细粒度,但是YOLO无法解决图像分割问题。

你可能感兴趣的:(YOLO,深度学习,目标检测,人工智能)