本文记录的目的是方便自己学习和复习,有误之处请谅解,欢迎指出。
从之前Fast R-CNN文章的介绍中知道,它已经把很多工作集成到一个端对端CNN网络进行训练,但是依然存在一个外部的前提工作——候选框生成。此前R-CNN、Fast R-CNN的候选框生成一直采用选择性搜索(Selecter Search SS),为了尽可能加快网络速度和集成一个网络,Faster R-CNN被提出。
主要创新的提出一种区域推荐网络(Region Proposal Networks,RPN),集成在Fast R-CNN网络中,共享卷积层,生成候选区供Fast R-CNN使用,其他与Fast R-CNN基本一致。其整体框架如下图所示。
基本流程:
1、特征提取。使用常见CNN网络,如VGG16,ResNet等,取其前几层网络作为基础共享卷积网络,然后输入图像提取特征。
2、RPN候选区生成。前向传播经过一些列的卷积操作得到 feature map,将feature map 输入RPN网络生成许多候选区,并进行筛选。
3、将不同大小候选区映射至原图特征,得到区域特征,输入ROI pooling提取特征。
4、区域特征输入全连接层,输出分类结果和边框修正
一、Region Proposal Networks(RPN)与锚框(Anchors)
Anchors
介绍RPN之前需要的一个前提知识是锚框(Anchors),锚框是RPN生成候选框的核心。高层特征图中每个元素点都代表了原图的一个小区域信息,在这个小区域周边生成9种面积(3种面积 x 3种比例)的Anchors用来框住物体,如下图所示。
例如原图,经过VGG下采样16倍,所以此Anchors的数量为:
RPN
一些经典的候选框检测方法非常耗时,例如滑动窗口+图像金字塔、Selective Search等。Faster R-CNN放弃传统滑动窗口和选择性搜索方法,提出基于卷积的候选框生成方法,极大的提升了检测速度。
如上图所示,主要有两条传播线路。1)通过卷积生成256维度特征图,再经过1个卷积生成18维度的特征(数字含义后面解释),最后经过一个Softmax进行前景和背景的二分类。2)同样经过和的卷积,输出36维的特征坐标信息,最后选出候选区。
对于每个Anchors需要知道的信息是,否包含物体以及它的坐标信息。如何判断是否包含物体,这就是为什么第一条线路输出通道为18,RPN的分类属于Softmax二分类,输出前景和背景的概率,所以每个锚点的9种Anchors需要输出;同理,如何判断锚框坐标位移信息,就是个特征通道。
接下来就是正负样本的选择与损失函数。
正样本:(1)anchor与ground_truth box有最大的
IoU重叠;(2)IoU重叠超过0.7
负样本:(1)IoU小于0.3
损失函数与Fast R-CNN基本一致,区别是RPN分类损失属于二分类。
二、训练方式
(1)交替训练:训练RPN,得到的region proposals来训练fast r-cnn进行微调;此时网络用来初始化RPN网络,迭代此过程;
(2)近似联合训练:把RPN与Fast R-CNN的损失一起训练(没太搞懂,相加?)