R-FCN: Object Detection via Region-based Fully Convolutional Networks
论文下载地址
源码地址
本篇论文是微软亚研何凯明代季峰的团队做的工作,虽然何凯明16年去了facebook,但是相关工作还在进行,代码还是公布在github上。感兴趣的可以从链接下载源码进行分析测试。
Introduce
论文主要提出了一种利用全卷积网络进行目标检测的方法。在目标检测中,会用到深度学习的网络框架。比如ALexNet和VGG一般来说,都是先经过一系列的卷积层,每层卷积以后会有一些pooling层,最后跟着若干全连接层。fast-rcnn,sppnet就是conv层后跟着spp pooling或者RoI pooling,然后再进行全连接层。
但是最近的网络结构,比如GoogleNet, ResNet都是采用了全卷积层,去除了Fc层,因为大量的参数都是在FC层上。直观的想法就是用全卷积网络来做目标检测,但是全卷积网络的分类效果远远大于目标检测的效果。为了解决这个问题,ResNet在更深的网络层中插入RoI-wise subnetwork,由于RoI的参数不共享,所以以损失速度的代价下提高了目标检测的精度。
分析分类和目标检测这两种任务,首先目标检测比分类level更高。更深入分析,可以发现:分类是要增加物体的平移不变性(不同的位置都是同一个物体);目标检测时减少物体的平移变化(目标检测需要画出物体所在的框)。但是平时常用的网络模型比如AlexNet,VGG,Google都是基于ImageNet的分类任务训练得到的,在目标检测的时候进行fine-tuning。由于得到的模型基于分类任务,那么会偏向于平移不变性,这和目标检测就出现了矛盾。所以作者提出了position-positive score maps 来解决这个矛盾。作者假定,更深的convolution layer对图像分类旋转不敏感。在ResNet中作者在深层的convolution layer中插入了RoI pooling layer,这种操作打破了Roi pooling前的平移不变性。但是ResNet这种方法牺牲了训练和测试有效性。表1介绍了ResNet和本文的插入的RoI-wise的位置。
本文为了解决分类的平移不变性,作者构建了position-sensitive score
maps。每一个position-sensitive score map融合位置信息。在position-sensitive score maps上,再添加一个RoI pooling layer融合所有的信息。整个网络可以通过端到端学习,图1显示了R-FCN的过程。作者用101层的Residual Net,R-FCN取得了83.6%的mAP在VOC2007上,2012上取得了82.0。同时时间170ms每张图片,是Faster RCNN的2.5倍以上。
Main approach
基于Region proposal的方法主要包括以下步骤:(i)region proposal (ii)region classification。尽管16年出现了YOLO,SSD这种不基于region proposal的方法,但是基于region proposal的方法精度更好。作者在本文中也是采用了region proposal的想法。RPN网络中,共享了conv 层的参数,本文也采用了这种方式。图2显示了本文中的方法和RPN网络的异同。
在R-FCN网络中,最后一个conv layer后每类产生了 K2 大小position-sentitive score maps。所以,feature map的大小为 K2(C+1) 。C代表的是分类的类别数目,+1代表背景。 K2 score map 对应着