Faster-RCNN
简介
主要贡献
- 使用RPN(Region Proposal Network)产生建议窗口
- 产生建议窗口的CNN和目标检测的CNN共享
基本原理
整体结构
- 卷积层。跟Fast RCNN差不多。
- RPN层。
主要用于生成Region Proposals,首先生成一堆Anchor box,生成两个分支,其中一个分支对其reshape后用softmax判断anchors属于前景还是背景(一个二分类);另一个分支bbox regression修正anchor box,形成较精确的proposal。
- roi pooling层。
输入为feature map和proposal,得到固定大小的proposal feature map,送入全连接层。
特征提取
对于任意大小的图片,padding成固定尺寸,如上图M*N。
- 卷积层:size=3,pad=1,stride=1;feature map和原图尺寸一样。
- ReLU层
- pooling层:size=2,stride=2;池化后尺寸减半。
经过CNN后feature map变为原来的1/16。
RPN(Region Proposal Network)
- RPN整体框架
一、pn_conv/3*3和rpn_conv/3*3
得到feature map后进入RPN层,rpn_conv/3*3和rpn_conv/3*3是3*3的卷积,随后进入rpn_cls_score和rpn_bbox_pred均为1*1的全卷积。
3*3的卷积不改变feature map大小,仍是60*40*512。
全卷积实际上是将不同channel进行线性组合,从而升维或降维 。
二、 rpn_data
这一层主要是生成anchor box,并和GT对比。
- 生成Anchor
所谓Anchor即region proposal,由(x1,y1,x2,y2)表示,分别代表左上角和右下角坐标。尺寸的3种scale with box areas分别为{128*128,256*256,512*512},缩放的3种aspect ratios分别为{1:1,2:1,1:2},一共组合成9种矩形框。对于60*40大小的特征图,共生成60*40*9个anchor box。
当然,这些anchor box存在很多重叠和超边界情况,所以需要对所有的anchor进行过滤和标记。
标记anchor,对应分类任务
- 去除超过原图边界的anchor box。
- 如果anchor box和GT的IoU最大,则标记为正样本,label=1
- 如果anchor box和GT的IoU>0.7,则标记为正样本,label=1
- 如果anchor box和GT的IoU<0.3,则标记为负样本,label=0
- 余下的样本均丢弃,label=-1
结果返还到rpn_cls_score_reshape。
偏移量,对应定位任务
即计算anchor box和GT之间的偏移量,不断学习减小。
Δ x = ( x ∗ − x a ) w a Δ y = (