论文题目:Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks
论文地址:https://arxiv.org/abs/1506.01497
代码地址:https://github.com/endernewton/tf-faster-rcnn 或者
https://github.com/dBeker/Faster-RCNN-TensorFlow-Python3
Faster R-CNN可以解决Fast RCNN使用第三方工具selective search提取region proposal的问题,它用RPN代替selective search,将整个目标检测功能做成一个统一的网络。Faster RCNN运用RPN,使得region proposal的计算更加elegant和efficient,RPN是一个全卷积网络,候选区域生成和目标检测共享卷积特征,并且运用了attention机制,RPN会告诉网络应该关注什么地方。
一、对论文的解读
1、RPN(region proposal network),区域生成网络
RPN是faster rcnn的核心,它的本质是基于滑窗的无类别obejct检测器,图像每个位置有多种类型的anchor boxes(region proposal),用这些region proposal 训练 faster rcnn,分类和框回归通过梯度下降反向传播调节网络参数,重新生成region proposal,再继续训练faster rcnn,不断重复这个过程。
详细内容可以参考:https://blog.youkuaiyun.com/qq_32172681/article/details/99104310
2、Faster RCNN
Faster RCNN分为3个模块:第1个模块是提取图像的公共特征网络,第2个模块是深度全卷积神经网络用来生成region proposals,第3个模块是利用这些生成的region proposals做Fast RCNN目标检测器。整个系统是一个统一的网络,并采用了attention机制,RPN模块会告诉Fast RCNN模块注意力应该在什么地方。
(1)把RPN看作一个黑盒,它输入一张任意size的图像,输出一系列矩形region proposals和每个region proposals的score。
(2)采用全卷积神经网络
(3)为了共享计算,让候选框生成网络和目标检测网络共享一系列卷积层。如VGG16,共享13个卷积层。
(4)为了生成region proposals,在卷积层的最后一个卷积层的feature map输出上,加上了一个小型网络。这个小网络输入n*n 窗口到feature map中,每个滑动窗口映射到一个低维特征,这个特征喂入到2个并行全连接层:1个框回归层reg和一个分类层cls。论文中n=3,但是输入图像的感受野很大,比如VGG是228 pixels。由于mini-network是通过滑动窗口操作的,所以对于所有的空间位置,全连接层参数也是共享的。
3、Anchors
anchor就是feature map上的一个像素,以该anchor为中心,可以生成k种anchor boxes(region proposal),每个anchor boxes有着不同的宽高比和缩放比,论文中使用的3种宽高比是(1:2,1:1,2:1),3种缩放比是(128,256,512),因此每个anchor产生9个anchor boxes。
4、Translation-Invariant anchors (平移不变性)
由于RPN采用FCN网络,参数共享,具有平移不变性。当每个anchor的anchor boxes个数为9时,输出有(4+2)*9d的输出参数,其中4为框位置的4个位置参数,2为分类分支输出参数的个数(有目标/无目标)。正是因为anchors的平移不变性,我们方法的参数比其他方法少很多。
5、multi-scale Anchors
multi-scale Anchors是特征共享的关键,多尺度预测,有以下3种方式:
(1)image:pyramids of images
(2)feature map:pyramids of filters with multiple scale/sizes
(3)anchor boxes:pyramids of reference boxes in the regression functions(论文提出的)