*、Faster R-CNN由四个部分组成:
(1)、卷积层:提取图片特征。输入为整张图片,输出为feature maps
(2)、RPN网络(Region Proposal Network):推荐候选区域。输入为整张图片(RPN网络和Fast R-CNN共用一个CNN,输入也可理解为feature maps),输出为多个候选区域
(3)、Rol pooling:将不同大小的输入转换为固定长度的输出
(4)、分类和回归:输出候选框区域所属的类,和候选框区域在图像中的精确位置
*、RPN网络
(1)、CNN最后的conv5层num_output=256,对应生成256张特征图(feature maps),相当于feature map每个点都是256-dimensions
(2)、conv5之后,做了rpn_conv/3*3卷积且num_output=256,相当于每个点又融合了3*3的空间信息,256-dimensions不变
(3)、假设在conv5 feature map中每个点上有k个anchor(论文k=9),而每个anchor要分foreground和background,所以每个点由256d转化为cls=2*k scores;每个anchor都有[x, y, w, h]对应4个偏移量,所以reg=4*k coordinates。(scores和coordinates为RPN的最终输出)
(4)、全部anchors训练太多了,训练程序会在合适的anchors中随机选取128个positive anchors + 128个negative anchors进行训练。
*、RPN训练
(1)、RPN训练正样本:1)与gt box有最大的IoU的anchors作为正样本;2)与gt box的LoU大于0.7的作为正样本
(2)、RPN训练负样本:与gt box的LoU小于0.3的作为负样本
(3)、RPN的loss函数:
其中,i表示mini-batch中第i个anchor, pi表示第i个anchor是前景的概率,当第i个anchor是前景时pi*为1反之为0,ti表示预测的bounding box的坐标,ti*为gt box的坐标
*、RPN网络和Fast R-CNN网络训练(RPN网络和Fast R-CNN网络共享CNN网络)
(1)、迭代的,先训练RPN,然后使用得到的候选区域训练Fast R-CNN,之后再使用得到的Fast R-CNN中的CNN去初始化RPN中CNN在此训练RPN(这里不更新CNN,仅更新RPN特有的层),最后再次训练Fast R-CNN(这里不更新CNN,仅更新Fast R-CNN特有的层)
(2)、简单的方法:end-to-end的训练方法,将RPN和Fast R-CNN结合起来一起训练