前言
VGG16
Faster R-CNN使用的主干网络,网络结构如下(13个卷积层+3个全连接层):
RCNN,Fast-RCNN,Faster-RCNN以及YOLO的区别
论文
网络框架
摘要
SPPnet、 Fast R-CNN等网络减少了检测网络的运行时间,暴露了区域建议计算的瓶颈。
在Faster R-CNN中,引入了一个区域建议网络(RPN),它与检测网络共享全图像卷积特征,从而实现几乎零消耗的区域建议。
RPN是一个全卷积的网络,它可以同时预测每个位置的目标边界和目标得分。RPN经过端到端训练,生成高质量的区域建议,Fast R-CNN使用这些区域建议进行检测。我们进一步将RPN和Fast R-CNN合并为一个单一的网络,通过共享它们的卷积特征-使用注意力机制,RPN告诉整个网络在哪里查找。对于非常深的VGG-16模型,检测系统在GP上的帧率是5fps(包括所有步骤)。
(Faster R-CNN可以看成是RPN和Fast R-CNN模型的组合体,即Faster R-CNN = RPN + Fast R-CNN)
ROI pooling
ROI pooling层能实现training和testing的显著加速,并提高检测accuracy。该层有两个输入:
从具有多个卷积核池化的深度网络中获得的固定大小的feature maps;
一个表示所有ROI的N*5的矩阵,其中N表示ROI的数目。第一列表示图像index,其余四列表示其余的左上角和右下角坐标;
ROI pooling具体操作如下:
(1)根据输入image,将ROI映射到feature map对应位置;
(2)将映射后的区域划分为相同大小的sections(sections数量与输出的维度相同);
(3)对每个sections进行max pooling操作;
这样我们就可以从不同大小的方框得到固定大小的相应 的feature maps。值得一提的是,输出的feature maps的大小不取决于ROI和卷积feature maps大小。ROI pooling 最大的好处就在于极大地提高了处理速度。
为何需要ROI pooling?
RPN
经典的检测方法生成检测框都非常耗时,如OpenCV adaboost使用滑动窗口+图像金字塔生成检测框;或如R-CNN使用SS(Selective Search)方法生成检测框。而Faster RCNN则抛弃了传统的滑动窗口和SS方法,直接使用RPN生成检测框,这也是Faster R-CNN的巨大优势,能极大提升检测框的生成速度。
卷积
1.对于单通道图像+单卷积核做卷积
如图5,输入有3个通道,同时有2个卷积核。对于每个卷积核,先在输入3个通道分别作卷积,再将3个通道结果加起来得到卷积输出。所以对于某个卷积层,无论输入图像有多少个通道,输出图像通道数总是等于卷积核数量!
对多通道图像做1x1卷积,其实就是将输入图像与每个通道乘以卷积系数后加在一起,即相当于把原图像中本来各个独立的通道“联通”在了一起。