部分检测算法对比(Faster R-CNN, R-FCN, SSD, FPN, RetinaNet and YOLOv3)

声明:笔者转载文章仅为学习研究和个人方便查阅,如有侵权请联系作者删除博文,谢谢
文章转载自 最全最先进的检测算法对比Faster R-CNN, R-FCN, SSD, FPN, RetinaNet and YOLOv3

很难衡量一个检测算法的好坏,因为除了算法本身的思路之外,还有许多因素影响它的速度和精度,比如:

  • 特征提取网络(VGG, ResNet, Inception, MobileNet);
  • 输出的步长,越大分类数目越多,相应的速度也会受影响;
  • IOU的评判方式;
  • NMS的阈值;
  • 难样本挖掘的比率(正样本和负样本的比率);
  • 生成的proposal的数目(不同的方法输出是不同的);
  • bbox的编码方式,是预测offset还是相对位置;
  • 数据预处理的数据增广方法;
  • 用哪个特征层来做检测;
  • 定位误差函数的实现方法;
  • 不同的框架;
  • 训练时候的不同设置参数,如batch_size, 输入图片大小,学习率,学习衰减率等因素;

为了对比不同的算法,可以不考虑上述的所有影响因素,直接对论文结果评测,应该能大体看出不同方法的速度差异。

在这里插入图片描述
上图是一个所有方法的预览。从图中可以看出RFCN的准确度是最高的。

在这里插入图片描述
上图可以看出,速度最快的还是yolo和SSD一体化的方法。

在这里插入图片描述
这是在ms-coco数据集上的测试效果,从效果可以看出,RetinaNet 在mAP效果是最好的。其中Faster-RCNN改用Resnet作为特征抽取网络准确率有较大的提升。

最后是Google做的一个research,在TensorFlow上统一的实现了所有的检测算法,yolo没有包含在内。最终的测试结果可以表示为:
在这里插入图片描述
从上面可以大致的看出,Faster-RCNN的准确度更加精确,而RFCN和SSD更快。

上述只是一个预览,但是除了这些之外,我们还需要考虑一些更加细化的因素。

不同的特征抽取网络

特征抽取网络不通,最终的结果也不同。简单来说,一个更加复杂的特征抽取网络可以大大的提高Faster-RCNN和RFCN的精确度,但是对于SSD,更好的特征抽取网络对结果影响不大,所以你看SSD+MobileNet也不会太大的影响结果。从这个图可以看得很清楚:
在这里插入图片描述

目标物体的大小

对于大物体,SSD即使使用一个较弱的特征抽取器也可以获取较好的精确度。但在小物体上SSD的表现结果非常不好。

在这里插入图片描述
具体来看,SSD在一张图片里面就经常漏检测小物体,比如:

在这里插入图片描述

Proposal的数目

不同的Proposal数目会影响检测器的速度和精度。这个很重要,很多人想加速Faaster-RCNN但是不知道从何下手,显然这里是一个很好的切入点。
将Proposal的数目从300削减到50,速度可以提高3倍,但是精度仅仅降低4%,可以说非常值了。我们从这张图可以看得很清楚:

在这里插入图片描述
最终我们可以得到一个很科学的结果:

1.最高精度

使用Faster-RCNN毫无疑问,使用Inception ResNet作为特征抽取网络,但是速度是一张图片1s;
还有一种方法是一种叫做集成的动态选择模型的方法(这个你就不要追求速度了);

2.最快

SSD+MobileNet是速度最快的,但是小目标检测效果差;

3.平衡
如果既要保证精度又要保持速度,采用Faster-RCNN将proposla的数目减少到50,同时还能够达到RFCN和SSD的速度,但mAP更优。

发布了10 篇原创文章 · 获赞 8 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/dexterod/article/details/104663833