Speed/accuracy trade-offs for modern convolutional object detectors

来源:互联网 发布:c语言有多少个函数 编辑:程序博客网 时间:2024/06/05 19:06

论文:https://arxiv.org/abs/1611.10012

1、Motivation

这篇文章通过大量的实验,主要权衡了三种被称为“元结构”(meta-architectures)的主流,教我们如何选择速度和精度满足要求的检测器。充分的对比了Faster RCNN、RFCN和SSD优缺点,并且实验的设计非常系统。

2、作者做了哪些实验

<1> 首先作者在TensorFlow里复现了Faster RCNN、RFCN和SSD三种方法,在统一框架下进行比较。

<2> Feature extractor的影响。实验的不同的主干网络:VGG16、Resnet-101、Inception v2、Inception v3、Inception Resnet(v2)和MobileNet。

<3>-<9>

3、元结构

Single Shot Detector (SSD):文中将SSD定义为使用单个前馈神经网络来直接预测类别和 anchor offsets,并不要求stage per-proposal分类操作。Multibox和RPN都使用了这一方法来预测类不可知(class-agnostic)的proposals。
注:SSD中直接得出分类和anchor offsets

Faster R-CNN:detection分两步走。第一步产生region proposals,中间层的一些特征(例如VGG16中的conv5)被用于预测box proposals。第二步利用这些box proposals在同一层来裁剪特征并将它们送入特征提取器的剩下几层(例如fc6和fc7)来获得所属类别并修正proposals。
注:Faster R-CNN中需要利用proposal generator先得出分类和proposals然后将box proposals再送回预测出它们的中间层进行对特征的crop,最后送入fc6和fc7(图中用蓝色矩形表示),得出最终结果(两个蓝色小矩形)
R-FCN:与Faster R-CNN不同的是,R-FCN是在产生预测region proposals的那一层的前面一层对特征进行裁剪而非与预测同一层。这样做的好处在于每个区域所需的计算总量实现最小化。
注:Box Classifier这一步中box proposals被送回到特征层的最后一层(也就是图中三个蓝色矩形后面的那一层),紧接着就是预测层了(蓝色小矩形)

文中用TensorFlow重新设计了三种结构的流程。这一块包括 Architectural configuration,Loss function configuration,Input size configuration,Training,hyperparameter tuning, Benchmarking procedure,Model Details等。

4、实验及结论

<1>Accurancy VS time

从上图可以看出SSD,R-FCN在速度上要远远超过Faster R-CNN,但是在精度上Faster R-CNN领先,R-FCN紧随其后。但是Faster R-CNN可以通过设置region proposal来降低处理速度,如Faster R-CNN w/ResNet 50 poposal。

速度选择:SSD,R-FCN,Faster R-CNN w/Resnet 101

精度选择:Faster R-CNN


<2>Feature extractor

从下图可以看到,SSD对Feature extractor并不是很敏感,Faster RCNN和RFCN对特征的好坏很敏感。我们还是可以看出ResNet-101的效果比其他的略好。

                                                                    

<2>、输入尺寸的影响

作者给出了下图,但是我觉得这张图很乱,并没有清楚展示出我想知道的结果。作者得到的结论是输入尺寸增大会提升map,速度会变慢等。我想要比较的是:当输入尺寸不断增加,SSD效果的提升和Faster RCNN系列方法的提升哪个大,即输入尺寸的提升对哪种方法的提升更大。作者做的实验也只是输入尺寸为300和600的对比,我觉得还可以试一试更大一点输入尺寸的效果。



<3> 目标尺寸的影响

从下图可以看出,SSD在小目标上的表现实在是太差了,但是大目标上的表现和two stage的方法还是差不多的,甚至在VGG16、Inception v2和MobileNet上更好。

这里写图片描述

从上图可以看出,三种基础架构对于大目标检测准确率均比较高,总体来说SSD在大目标检测上表现的比较好,但是在小目标检测上均比较低,SSD最低。

大目标:首选SSD。Faster R-CNN也可以。

小目标:Faster R-CNN,R-FCN

<4> 图片大小的影响

比较了分辨率对于检测器的影响,从图可以看出,图像分辨率增大后,Faster R-CNN与R-FCN检测率均提高,而SSD没有太大改变。


<5>、proposals的数量

从图(a)可以看出,当proposal 设置为10的时候mAP离最高的mAP:35也相差了不到5个点(proposal=300),最佳的是在proposal=50的情况。图(b)也表现出了同样的trade-off。


<6>、Flops 

图7再次印证了SSD的处理速度要比其它两个架构的快很多。从图8看出当FLOPs对等的情况下Inception与MobilNet这两种特征提取器处理速度要远比其它提取器要高。



<7> Memory

从图9图10可以看出,MobileNet架构与Inception架构相比较其它几个,同等条件下需要的内存较少,尤其是MobileNet架构。



<8>Good localization at .75 IOU means good localization at all IOUthresholds

从图11看出,当检测器在较大的IOU(.75)上表现出较差的性能的时候,往往在小的IOU(.5)上表现出同样的性能。这两个IOU较好的拟合了IOU在0.5~0.95上的情况,并且在IOU=0.75的时候曲线表现的稍微紧凑些。


<9> ensemble

作者显式的选择了一系列差异较大的模型,如果两个模型的category-wise AP vectors的cosine距离较大则认为这两个模型相似。

这里写图片描述

4、一些值得注意的实验细节

<1> 作者在实施Resnet和Inception Resnet时使用了atrous convolution来增大分辨率。更进一步,作者还测试了把conv4_3的stride也将为1,效果也有提升,但是速度也会受到影响。

<2> 对于SSD的额外层,作者使用truncated normal distribution with a standard deviation of σ = .03进行初始化。

<3> 对于SSD,作者没有使用SGD,而是用了RMSProp。


阅读全文
0 0
原创粉丝点击