本文已参加【新人发明礼】活动,一同开启发明之路。

导读

对小方针检测进行了剖析,并结合已有的办法给出了一些思路。

小目标检测的一些问题,思路和方案

机器学习正越来越多地进入咱们的日常日子。从个人服务的广告和电影引荐,到主动驾驶轿车和主动送餐服务。几乎一切的现代主动化机器都能“看”世界,但跟咱们不相同。为了像咱们人类相同看到和识别每个物体,它们有必要特别地进行检测和分类。虽然一切现代检测模型都十分拿手检测相对较大的物体,比方人、轿车和树木,但另一方面,小物体依然给它们带来一些费事。关于一个模型来说,很难在房间的另一边看到手机,或许在100米之外看到红绿灯。所以今日咱们要讲的是为什么大多数盛行的方针检测模型不拿手检测小方针,咱们怎么进步它们的功能,以及其他已知的处理这个问题的办法。

原因

一切现代方针检测算法都是根据卷积神经网络的。这是一种十分强壮的办法,因为它能够发明一些低级的图画抽象,如线,圆圈,然后将它们“迭代地组合”成咱们想要检测的方针,但这也是它们难以检测小方针的原因。

小目标检测的一些问题,思路和方案

上面你能够看到一个通用的图画分类神经网络的插图。咱们最感兴趣的是隐藏层部分。如你所见,这个网络有许多卷积的组合,然后是一个池化层。许多方针检测网络,如YOLO, SSD-Inception和Faster R-CNN也运用这些,而且运用得适当多。将图画的分辨率从600600降低到约3030。因为这个现实,他们在第一层提取的小方针特征(一开端就很少)在网络中间的某个当地“消失”了,从来没有真实抵达检测和分类过程中。咱们能够测验一些办法来协助模型更好地查看这些方针,可是在改进功能之前,让咱们先看看它现在的状态。

现在盛行的方针检测器的功能

小目标检测的一些问题,思路和方案

论文SOD-MTGAN在COCO数据集上进行实验并收集了2016年的测验成果。+++表示F-RCNN的特别练习过程。

一些很小改动去进步小方针检测的办法

运用Focal loss

假如你有许多类要检测,一个最简略的办法来进步对小物体和难以检测的类的检测是在练习神经网络的过程中运用Focal loss。这儿的首要直觉是,这种丢掉对网络的“惩罚”不是对它现已能够很好地检测到的类别进行错误分类,而是对它现在有问题的类别进行更多分类。因而,为了进一步最小化丢掉函数,权值将开端以这样一种方式改动,使网络更好地挑选困难的类别。这很简略从首要论文供给的图中看到:

小目标检测的一些问题,思路和方案

将图画分成小块

咱们自己也遇到过模型不能检测到相对较小的物体的问题。使命是检测足球运动员和竞赛场上的足球。游戏的分辨率是2K,所以咱们有许多细节。但咱们用来检测玩家的模型的输入分辨率要小得多——从300300到604604。所以,当咱们把图画输入网络时,许多细节都丢掉了。它依然能够找到远景中的球员,但既没有球也没有球员在球场的另一边被检测到。因为咱们有一个大的输入图画,咱们决议先测验咱们能想到的最简略的处理方案 —— 把图画分割成小块,然后对它们运转检测算法。而且作用很好。你能够在下面看到运转测验的成果。

小目标检测的一些问题,思路和方案

虽然该模型的FPS大幅下降,但它给了该模型在玩家检测上一个十分好的准确性进步。另一方面,球依然是个问题。稍后咱们将更深化地探讨咱们是怎么处理它的。

运用图画的时刻特性

假如咱们有一个来自停止摄像机的视频,咱们需求检测它上面的移动物体,比方足球,咱们能够运用图画的时刻特性。例如,咱们能够做布景减法,或许仅仅运用后续帧之间的差异作为一个(或多个)输入通道。所以,咱们或许有3个RGB通道和一个或多个额外的通道。这的确让咱们改动了一些网络的输入,但依然不是许多。咱们所需求改动的仅仅第一个输入层,而网络的其他部分能够保持不变,依然能够运用整个架构的力气。

这一改动将预示着网络将为移动方针发明更“强壮”的特性,而这些特性不会消失在池化和大stride的卷积层中。

改动anchor巨细

现在的一些探测器运用所谓的“锚”来探测物体。这儿的首要直觉是通过明确地向网络供给一些关于物体巨细的信息来协助网络检测物体,并在图画中每个预界说的单元格中检测几个物体。

小目标检测的一些问题,思路和方案

因而,改动锚点以习惯你的数据集是一个很好的主见。关于YOLOv3,有一种简略的办法能够做到这一点。这儿:github.com/AlexeyAB/da…

为小方针检测定制模型

上面描绘的办法很好,但远不是最好的,假如你运用专为寻觅小方针而设计的体系结构,你很或许会获得更好的成果。所以,让咱们开端吧。

特征金字塔网络 (FPN)

因为其有趣的结构,这些类型的网络在检测小方针方面表现得适当有用。虽然像SSD和YOLOv3这样的网络也检测不同标准的方针,可是只运用了这些标准的信息,即所谓的金字塔特征层,而FPN建议将高层特征向下传播。这一办法“丰富”了抽象的底层,并具有更强的语义特征,这些特征是网络在其头部邻近计算出来的,终究协助探测器拾取小物体。这种简略而有用的办法表明,能够将方针检测数据集的整体平均精度从47.3进步到56.9。

Finding Tiny Faces

这篇做了大量的工作和研究。我强烈建议你阅览全文:arxiv.org/pdf/1612.04…

上下文很重要,运用它更好地找到小物体

  • 建立多个不同标准的网络成本高,但作用好
  • 假如你想要高精度,区域建议依然是一个好办法
  • 查看你的骨干网络做预练习的数据集,然后测验缩放你的图画,使你需求检测/分类的方针的巨细匹配那些预练习的数据集。这将减少练习时刻和并得到更好的成果。检测巨细为2045的方针,运用相同巨细的kernel或许并不一定是最有用的。将图画扩大两倍并运用4090的kernel,就或许真实进步功能。大物体的状况则相反。

F-RCNN的改进

因为在几乎一切你看到的关于网络之间的速度/准确性比较的图表中,F-RCNN总是在右上角,人们一直在努力进步这种体系结构的速度和准确性。咱们将简要看一下不同的改进办法,以进步其准确性。

Small Object Detection in Optical Remote Sensing Images via Modified Faster RCNN

在本文中,作者做了几件事。首先,他们测验了不同的预练习骨干网络用于F-RCNN的小方针检测。成果表明,ResNet-50的作用最好。他们现已挑选了最适合他们测验网络的数据集的最佳锚尺寸。此外,就像之前关于寻觅小人脸的论文相同,运用物体周围的布景也明显有助于检测。最后,他们采用了从高到低结合特征的FPN办法。

小目标检测的一些问题,思路和方案

然而,架构并不是他们仅有改动和立异的东西。练习过程也得到了改进,并对练习成果产生了很大的影响。第一个改动是为练习平衡数据集的特定方式。他们通过多次处理一些图画来平衡数据集,而不是让它保持原样,然后调整丢掉函数来进行均衡类别的学习。这使得每个时代的阶层散布更加均匀。他们改动的第二件事是添加了一个随机旋转。因而,它们不是将图画旋转90或180度,而是将图画旋转一个随机生成的角度,例如13.53。这需求从头计算鸿沟框,你能够在原始论文中看到公式。

Small Object Detection with Multiscale Features

本文作者也运用Faster-RCNN作为首要网络。他们所做的修改与FPN的主意类似 —— 将高层的特征与低层的特征结合起来。可是,他们没有迭代地组合层,而是将它们连接起来,并对成果运转11卷积。这在作者供给的体系结构可视化中得到了最好的体现。

小目标检测的一些问题,思路和方案

在成果表中,他们显示,与普通的Faster-RCNN相比,这种办法使mAP增加了0.1。

SOD-MTGAN: Small Object Detection via Multi-Task Generative Adversarial Network

首先,在读到这种办法的称号后,你或许会想:“等等,运用GAN来检测方针?”。但请耐性等待,这种办法的作者做了一件适当聪明的事情。你或许之前就想到过:“假如物体都很小,为什么咱们不扩大它们呢?”简略地运用插值将图画扩大的问题在于,关于原来的55的含糊的像素,咱们将得到1010(或2020,或任何你设置的倍增因子)乃至更含糊的像素。这在某些状况下或许有所协助,但通常状况下,这以处理更大的图画和更长时刻的练习为代价,供给了相对较小的功能进步。可是假如咱们有一种办法能够扩大图画同时保存细节呢?这就是GANs发挥作用的当地。你或许知道,它们被证明在扩大图画时十分有用。所谓的超分辨率网络(SRN)能够可靠地将图画缩放到x4倍,假如你有时刻练习它们并收集数据集的话,乃至能够更高。

但作者们也不只仅是简略地运用SRN来进步图画,他们练习SRN的意图是创立图画,使终究的检测器更简略找到小物体,检测器与生成器一同练习。因而,这儿的SRN不只用于使含糊的图画看起来明晰,而且还用于为小物体创立描绘性特征。正如你在之前的图中看到的,它工作得很好,供给了一个明显的进步准确性。

总结

今日咱们学到的是:

  • 小方针检测依然不是一个彻底处理的问题,
  • 上下文问题
  • 扩大图画是个好主见
  • 结合不同层的输出
  • 查看预练习网络的数据集,更好地评估其功能和运用它。

英文原文:medium.datadriveninvestor.com/small-objec…