为了更好的理解R-FCN网络,请先点击这里了解Faster RCNN网络
1 概述
- 在图像分类任务中,通过很多个卷积层和最后的全连接层,可以提取图像的高层语义特征。这种高层语义特征具有平移不变性(translation invariance),换言之,这样的网络提取到的该个图像的特征往往代表了该类图像的特征。
- 但是将图像分类网络应用在目标检测问题上,就会出现问题。主要有两点:①多个卷积层提取特征过程中会逐渐丢失原始图像的空间结构信息,这对于需要在原始图像上定位目标的任务来说,显然是有冲突的②即使卷积层提取到的特征仍持有原始图像的部分空间结构,在经过全连接层后,这种空间结构也会被完全抹除。换言之,目标检测要求深度网络具有平移可变性(translation variance),而主流图像分类网络并不能胜任
- 如何改造图像分类网络以使其具有平移可变性从而应用于目标检测任务呢?R-FCN正是用于解决这个问题。
- R-FCN网络借鉴全卷积网络(Fully Convolutional Networks, FCN),去掉了全连接层,同时在网络中插入了类似于fast RCNN的RoI pooling层,使最终得到的feature maps中编码了目标的位置信息
2 网络整体结构
- R-FCN与fast RCNN、faster RCNN一样,都是基于region proposal的两阶段(two-stages)的方法。R-FCN利用Faster RCNN中的RPN网络来生成proposal,再对这些proposal进行处理。
- R-FCN认为,影响检测速度的主要原因是是否参数共享。回想faster RCNN的网络结构,RoI pooling层之前的卷积操作是对所有proposal共享的(只对输入图片前向传播一次),但是RoI pooling层之后的操作对每个proposal是独立的,对每一个proposal都要进行卷积操作并前向传播,每个batch累积误差,计算梯度并反向传播。能不能将所有的卷积操作都进行共享以提高网络效率? R-FCN网络提出了一个position-sensitive score maps的结构,来实现上述目的。
3 网络理解
- R-FCN网络在ResNet101网络基础上进行修改,本博文只介绍一些主要的改动,其它细微的改动请参加原文。
- 如同faster RCNN,R-FCN网络先通过一系列卷积层得到一个feature map,同时,使用RPN网络生成一些proposal(Region of interest,RoI)。这些proposal显然可在该feature map上映射出对应的坐标。在做映射工作之前,先对这个feature map进行一下处理。
- 处理方式如上:对原始w * n* 1024(ResNet101网络某个卷积层后的输出维度)的feature maps,使用k2 * (C+1)个1 * 1 * 1024卷积核进行卷积,得到k2 * (C+1)层的feature maps。这个feature maps就被称为position-sensitive score maps。
- 然后将RPN网络得到的proposal映射到新得到的feature maps上。再对每一层进行RoI pooling池化,池化时对每一层feature map的每一个网格中的数取平均值。最后得到k * k * (C+1)尺寸的特征。对这个特征,从左到右,每C+1层,分别取左上角的值、上边中间的值、上边右边的值、……、下边中间的值、下边右边的值,拼成一个k * k * (C+1)的特征。该特征每一层代表proposal属于该类的得分举证,再对每一层取平均值得到一个C+1维的一维向量,代表原proposal属于各个类别的得分,如下图所示:
- 边框回归也是这种方式,不同的是,采用了4 * k2个卷积核,最后生成一个四维向量
训练网络
- 损失函数非常标准,没什么可说的,就是分类误差加上边框回归误差:
- online hard example mining(OHEM):训练网络时采用OHME策略,对每张输入图像,选取N个proposal进行前向传播,然后对各个proposal的loss进行降序排序,选出前B个proposal,对它们的loss求和后进行反向传播
网络性能
- 83.6% mAP,6 FPS on PASCAL VOC 2007 set with 101-layer ResNet