本篇博客一方面介绍R-FCN算法(NISP2016文章),该算法改进了Faster RCNN,另一方面介绍其Caffe代码,这样对算法的认识会更加深入。
论文:R-FCN:object detection via region-based fully convolutional networks
论文链接:http://papers.nips.cc/paper/6465-r-fcn-object-detection-via-region-based-fully-convolutional-networks.pdf
要解决的问题:
这篇论文提出一种基于region的object detection算法:R-FCN(Region-based Fully Convolutional Network),**R-FCN可以看做是Faster RCNN的改进版,速度上提高了差不多3倍左右,mAP也有一点提升。**另外一类object detection算法像YOLO,SSD等object detection算法是不基于region的。
为什么R-FCN相比Faster RCNN会有明显的提速呢?以主网络为ResNet101为例,在Faster RCNN中,ROI Pooling层的输入是在conv4_x,在做完ROI Pooling后会继续接conv5_x,conv5_x包含9个卷积层,另外在conv5_x后还有几个全连接层,这些层的计算都直接作用在每个roi上,因此存在许多重复计算。如果主网络换成VGG也类似,只不过重复计算的层数会少一些,主要是一些全连接层。而在R-FCN中,所有能共享的层都在ROI Pooling之前做好了,因此在ROI Pooling后基本不会有太多的重复计算。为了要在ROI Pooling之前实现层共享,一方面将conv5_x的计算移到Pooling层之前,但这样依然还存在一些全连接层的重复计算,因此再引入position-sensitive score map和position-sensitive ROI Pooling,使得经过Pooling后简单地执行一些操作就能得到回归和分类结果,而不再像Faster RCNN一样用几个全连接层去得到结果。
基于101层的ResNet网络在VOC 2007数据集上达到mAP 83.6%。测试的时候每张图像所用时间是170ms,比Faster RCNN快2.5到20倍。
代码地址:https://github.com/daijifeng001/r-fcn
算法概要:
首先之所以提出本文的算法,简单讲是为了提高Faster RCNN的速度,因此一方面很直观地想到要尽可能在网络中共享计算,所以就想到对原来ROI Pooling层进行改造和移动;另一方面希望基本网络可以更加强大,因此就想到了用类似Resnet等全卷积网络代替原来的VGG等网络。
这个算法的网络主要是基于ResNet-101,ResNet-101包含100个卷积层、一个均值降采样层和一个1000分类的全连接层。这里作者仅采用前面的100个卷积层来提取特征,其它层不用。ResNet-101的最后一个卷积层输出是2048维,这里作者为了降维,添加了一个1024维的11卷积层(随机初始化)。**最后,一方面添加一个k^2(C+1)维的卷积层用于生成score maps,这些score maps主要是用来生成object的类别;另一方面为了做bounding box regression,作者添加了和Fast RCNN类似的bounding box regression卷积层,维度是4k^2,该层和前面生成score maps的卷积层是并列的。**除了这个主网络以外,该算法还引入RPN网络生成ROI,生成的ROI将和分类的卷积层生成的score maps进行pooling并最终得到每个ROI属于每个类别的概率(一共C+1类)。另外这个ROI还将和回归卷积层的输出进行pooling,得到每个ROI的四个坐标。损失函数方面基本上和Fast RCNN一样。
因此,整个网络主要就是由全卷积网络(ResNet)和RPN网络构成,前者用于提取特征,后者用于生成ROI。
注意:文中的ROI就是region proposal。另外Faster RCNN中的ROI Pooling和本文的ROI Pooling不是一个意思,前者只是简单将每个region feature变换到统一的尺寸的feature,变换过程中采用Max pooling;而后者则是一种position-sensitive的ROI Pooling。
算法详解:
图片分类问题是具有平移不变性的(translation invariance),什么意思呢?就是说一张图像中目标的平移对这张图片的分类结果影响不大,这也是为什么全卷积网络可以在图像分类比赛中成绩更好;目标检测问题则具有平移敏感性(translati