Light-Head R-CNN学习笔记

在这篇文章里,作者主要分析了:

为什么two-stage detector会慢,主要慢在哪?

如何在解决速度慢同时保证精度?

文中,作者把 two-stage 拆解成 body 跟 head:

body: 生成proposal(RoI)的过程, 即: ROI warping.

head: 基于proposal的recognition过程, 即: RCNN subnet.
作者认为,目前的算法,为了追求best accurcy,一般都会把head设计的非常heavy,所以即使我们把前面的base model变小,还是无法明显提升检测速度。

下面的Figure1为我们展示了Faster R-CNN,R-FCN,Light-Head RCNN在结构上的对比图。
Light-Head R-CNN学习笔记
我们知道,由于Faster RCNN经过ROI Pooling之后需要对每个候选框进行检测,这是特别耗时的,特别是图片中目标很多时。针对这种情况,R-FCN将所有的权重共享,并引入了Position Sensitive Score Map来解决CNN的位置不敏感性,所以在R-FCN中将Score Map的通道设计为P^2(C+1)个,因为对于COCO数据集来说就需要3969个通道,这样就极大的增加了运算的复杂度,基于这一点Light-Head RCNN的出发点就是是否可以将这个特征图变薄?但一旦将特征图变薄,那么R-FCN里面的vote方式产生预测结果就不能用了,所以需要增加全连接层做输出映射。

相对于Faster RCNN来讲,Light-Head RCNN的检测头部分是做了轻量化的,从上图可以看到Light-Head RCNN中的Region Proposal的通道数变小了,只有490层,并且只有一个全连接层,参数量大幅减少了。

(这里这个490是怎么来的,一脸懵逼,还有怎么缩减成490的?还是一脸懵逼)

另外论文还在BackBone的最后一层卷积中加入了可分离卷积,以减少该层卷积的运算复杂度,同时实现两路卷积以增加不同的感受野。
Light-Head R-CNN学习笔记

Inception 3中将大小为k_k的卷积核,用1_k和k*1的两层卷积来代替。使用这种卷积替换之后,可以在计算结果一致的前提下减少计算量。减少的计算量,大致为原来的k/2,文中作者将k取15,因此这里大大减少了计算了。当然,计算复杂度还跟 C_mid 和 C_out 有关。

下面是精度和速度比较图:
Light-Head R-CNN学习笔记

相关文章: