版权声明:转载请注明出处 https://cloud.tencent.com/developer/article/1347417
这是一篇讨论 “ trade-off ” 的神文。
由于市面上的基于深度网络的检测算法不胜枚举。但是每篇论文在介绍自己提出的算法时,实现水准、具体trick、所用框架、硬件条件等等重要因素均不一致,甚至连所采用的评价标准都有差别。因此,对检测算法做一个性能上的综述,是不切实际的。
但是,作者另辟蹊径,在Faster R-CNN、R-FCN和SSD这三个极具特点,又在一定程度上代表着当时state-of-the-art (那个时候还没有FPN、RetinaNet、Light-head R-CNN) 的经典检测算法上做了大量实验,最终给出了一系列很棒的对比结果,以帮助从业者了解各算法的优缺点,从而更好地在具体应用场景下选择和改造合适的检测算法。
作者先做了控制变量,即统一了很多实现的配置:
作者提出了“meta-architecture”的说法,即从“组件”的角度来横向地庖丁解牛三大检测算法:
并画出了图示:
Faster R-CNN的速度瓶颈主要在proposal的数量上。
在GPU耗时上,Faster R-CNN最高,R-FCN次之,SSD最少。其中灰色虚线表示当时检测算法的性能天花板:
但是当Faster R-CNN的proposal数量降到50时,它的GPU耗时可以降到和SSD相差无几。这意味着:Faster R-CNN也可以很快。
下图为三大算法采用不同的base model后,在COCO上取得的mAP比较:
可以看出,只有SSD的检测精度对特征抽取器的变化不那么敏感 (或许是由于SSD是one-stage吧)。
输入像素为300的图像时,在不同base model下,三大算法对不同size的object的mAP:
其中,SSD对小物体的mAP很低,在大物体上则与另两个算法相差不多。
蓝色点为300像素的图像,绿色点为600像素的图像:
可以看出,图像分辨率对三种算法都有影响。
调高分辨率,能提升精度 (因为有利于处理小物体),但是会牺牲速度。
实线代表mAP变化,虚线代表GPU inference time变化:
在原文中的reference阶段,Faster R-CNN和R-FCN的proposal数量都取300。
对Faster R-CNN而言:
对R-FCN而言:
需要注意的是,当proposal数量降下来后,Faster R-CNN可以在accuracy占优的情况下,取得稍逊于R-FCN的inference speed。这样一来,我个人觉得Faster R-CNN的速度瓶颈靠降proposal数量就能解决了,何必再设计一个R-FCN呢?
可以明显看出,越大越强的特征抽取器,会导致越大的内存占用:
作者还发现,mAP@.75和标准的COCO mAP取值相关性最大:
因此如果非要用一个单IoU的AP值来取代复杂的COCO标准,那么取mAP@.75最合适了。
作者最后贴出了一系列对比图,来直观地提供检测效果对比: