R-FCN 的论文全称是R-FCN: Object Detection via Region-based Fully Convolutional Networks
意思就是通过基于区域的全卷机网络的目标检测。
现在,深度学习网络的学习很多新的成果,但在文章当中,作者将目标检测的这些成果列举了两类,一类就是向vggnet或者AlexNet这样的网络:非全卷积网络,即在卷积网络的后部天机了空间上的池化层和全连接层。正是由于这一类网络的发展,才产生了像RCNN系列的基于Roi神经网络的产生,此为第二类。
然而,作者总结了以后神经网络的发展趋势:卷积神经挽留过将会向全卷积神经网络发展,例如ResNet,GooLeNets等等。因此Roi发展的趋势也会是这样的,即以前的Roi的全卷积网络将会将隐藏层去除,而使用卷积网络。然而,一个问题就产生了,这种简单的应用,目标追踪的精度和目标检测的精度不相称,目标检测的精度太低了。
于是乎,作者就分析了一波,发现,是因为应用的场景不同,导致了万能的神经网络学习特征没有学习全。卷积网络是万能的,表达特征的能力是举世无双的,现在的卷积网络的发展都是基于这个准则,所要进步的,就是将卷积网络的结构合理化,让卷积网络的学习到的特征尽可能的多。现在,将目标检测运用到目标追踪上,精度低,原因是目标追踪要有位移不变性的要求,但是,我们以前学习到的网络都是用来做检测的。这就导致了我们的卷积网络太专了,没法跟踪。
为了解决这个问题,作者发明了一个R-FCN全卷积网络。让这个卷积网络能够学习到位移的变化,对位置敏感。
具体的框架就是加了一个像rcnn系列的ROI作为区域建议框,然后又加了一个后置的ROI作为评估特征图上不同区域的位移变化。但是如果直接这样做的话,训练和测试的效率就大大降低了,这是因为基于区域的层(region-wise layers)的数量多。为了解决这个问题,作者又弄出了一个办法,称之为位置敏感评分图(position-sensitive score maps)。这个图上的分数都评估了对应位置上目标的空间相对位置的信息。这个是FCn的输出。
然后在FCN的尾巴上加了一个位置敏感RoI池化层。这个池化层的目的就是汇聚这些评分。啥也不说了上图
具体的操作是这样滴:
RoI的提取依然是使用RPN来进行的,但是这个RPN是提前训练好的,所以也不用担心这个RPN会对这个网络产生负面的影响(你弄出来的当然说没问题了我们只能赞同)
这个RFN和我们的R-FCN共享同一个特征。就像图中看到的辣样。
RoI都给出来了,下一步当然是要对RoI里面的东西分类和位置回归喽。重点来了,敲黑板敲黑板敲黑板.......大家都注意了。
前面都说了,特征提取器和resnet的Backbone architecture差不多,区别就在最后一层也就是RFCN的最后一层。这个卷积层是一个k^2*(C + 1)个通道的输出,其中c是分类的数量,那个+1是背景,把背景也看做了是一个目标标签。
也就是说,每一个类会产生尺寸为k^2的位置敏感评分图。
这个最后的卷积层具体的实施细节是这样滴:
首先利用ResNet的Backbone architecture,将全连接层和池化层去掉之后,添加了一个2048通道转1024通道的卷积层。论文里说这样可以降低维度,这个输出的就是k^2*(C + 1)个通道的卷积层,来产生评分图。
位置敏感评分映射和位置敏感RoI池化层
为了能够更好的编码相对位置信息,论文中将ROI的矩形框分割成K*K的bin。比如说原来的ROI的尺寸为w*h,那么我们划分出来的每个小格里面的像素的点数为w/k*h/k。然后,这个池化层(位置敏感池化层)就对上面分好的bin块进行评分了。
上面这个公式很好的说明了具体的池化操作
rc(i; j)是在下表为i,j分类为c的池化操作的响应。z(i;j;c) is one score map out of the k2(C + 1) score maps,
z(i;j;c)是K^2(c+1)评分图上在(i,j)位置的输出。
看不懂的上图:
那个颜色和坐标(i,j)是一一对应的。在每一个颜色上使用的是平均池化或者最大池化。
接下来就是投票了。投票的方法是使用了简单的平均分投票。
投票的公式如上,输出的结果是一个和每一个RoI对应的(c+1)维度的输出,最后使用交叉熵损失对每个roi中的内容进行分类,然后对其进行位置回归。
写到这里基本上算是完成了任务了,如果还是不懂就看下图
和下图
训练:
训练使用的是分类的交叉熵损失和位置回归的损失的和。在此基础之上使用梯度下降法进行参数的更新。
让我休息一会儿:
个人的总结:
归根结底,论文一直在讨论怎样将位移不变性添加到神经网络中,让它学习位移不变性。首先将backbone网络提取出来的特征进行重新规划,在维度上重新分配,然后在此基础上学习位置评分图,这个评分图最后,再使用位置回归和分类。
这种方法的优点是精度相对目标跟踪而言高了一点。如果能够搜索的目标区域再多一点,就像fdsst那样,搜索的区域再多一点,计算的速度能够再快一点,精度就好多了,这好像是卷积网络加上核相关性的组合的味道,那么,怎样实现这个观点,请看我的下一篇。有什么问题请关注我,再在评论里问我,咱们一起讨论,记得关注我。