深度学习【55】物体检测:Light-Head R-CNN: In Defense of Two-Stage Object Detector

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/linmingan/article/details/81095718

对于2-state的物体检测,比如faster-RCNN和R-FCN。我们可以将RPN部分称为body,另一部分比如faster-RCNN中RCNN-subnet部分成为head。2-state之所以会很慢,主要原因在于head部分。论文分析了faster-RCNN和R-FCN中head部分的优缺点,然后提出了Light-Head R-CNN。Light-Head R-CNN结合了faster-RCNN和R-FCN各自的优点。

我们先简单回顾一下faster-RCNN和R-FCN的head设计。faster-RCNN在提取多个ROI后,首先对每个ROI进行ROI pooling,然后送入两个全连接层进行分类和回归。R-FCN则去掉了faster-RCNN中的两个全连接层,而是用全卷积来代替。R-FCN在基础网络的最后一层上加入了位置敏感的score-map层(宽高与最后一层一样,对于分类来说需要输出通道为:(物体类别数+1)×k×k,k×k表示位置分割数。假设有80类,k=7,那么需要的通道数为3969)。得到位置敏感的score-map后,利用RPN网络预测出来的候选框进行PSROI-pooling(对于某一ROI来说,并没有对所有的3969进行pooling。我们知道PSROI-pooling结果为k×k×(c+1)个值,那么对于第0×1×(c+1),是在0到0×1×(c+1)通道的块上进行pooling的,这个块的大小为w/k,h/k,w和h是ROI的宽高。)。PSROI-pooling后我们再进行一个平均池化就可以得到最后的类别了。这样就省去了全连接层。

那么faster-RCNN和R-FCN各种优缺点是什么呢?faster-RCNN由于要对每个ROI进行ROI pooling和全连接计算,这使得其速度很慢。但由于有额外的全连接层,其在分类的效果上会更好一些。不过由于全局池化和全连接层的原因,faster-RCNN的空间位置感知不是很好。R-FCN尽管没有了全连接层,不需要大量的重复计算,但在得到位置敏感score map上需要的计算量和内存也不小。由于没有了全连接层,其在效果上没有faster-RCNN那么好。

经过上面的对比,Light-Head RCNN结合了R-FCN的位置敏感score map思想和faster-RCNN的全连接层,提出了一个更快,效果好的检测框架。如下图:
这里写图片描述

图中的第一个框架是faster-RCNN,第二个是R-FCN,最后一个是Light-Head RCNN。我们可以看出Light-Head RCNN的ROI-pooling对象的通道数非常少,由于通道数比较少,使得后面的全连接层计算量也下降了很多。Light-Head RCNN的位置敏感score map的通道数与R-FCN不一样,其数目为 α k k , α = 10 , k = 7 ,这样总的为490个通道数。因此经过PSROI-pooling后的通道数只有10,然后全连接层的参数矩阵为490×81。这相对于faster-RCNN的2048*81来说小了很多。

为了进一步减少获取位置敏感score map的计算量,论文使用了Large separable 卷积:
这里写图片描述
通过设置不同的 C m i d 可以得到不同的网络模型,分别为S和L。S的网络中 C m i d = 64 ,L中则为256。另外k=16。

实验结果

在coco数据集上的比较。
精度的比较,结果不错。
这里写图片描述

速度的比价,主要是跟一阶段的检测方法比较,也是快的飞起。
这里写图片描述

猜你喜欢

转载自blog.csdn.net/linmingan/article/details/81095718