记录Faster R-CNN(目标检测)
-
- 1 Faster R-CNN框架介绍
- 2 RPN网络(区域生成网络)
- 2.1 Anchor
- 2.2 cls层(Box Classification层)
- 2.3 reg层(Box regression层)
- 2.4 Proposal Layer
- 3 Fast R-CNN网络
- 3.1 ROI pooling layer
- 4 Loss计算
- 4.1 RPN LossFunction
- 4.2 Faster R-CNN LossFunction
- 5 网络训练
由RPN(区域生成网络)和Fast R-CNN构成的网络系统,用RPN(区域生成网络)代替Fast R-CNN中的Selective Search方法(选择性搜索)。
Faster R-CNN主要完成的是:
(1)提出了RPN网络;
(2)RPN和Fast R-CNN网络特征共享与训练;
(3)使用了ROI Pooling技术;
(4)使用NMS技术
1 Faster R-CNN框架介绍
图 1 Faster R-CNN 模型
Faster R-CNN算法主要是由:
(1)RPN候选框提取模块:全卷积神经网络
(2)Fast R-CNN检测模块:基于RPN提取的候选区域检测并且识别区域中的目标。
2 RPN网络(区域生成网络)
使用全卷积网络直接产生Region Proposal(候选区域),在经过卷积层提取到的feature map上用一个33的slide window,去遍历整个feature map,在遍历过程中,每个窗口中心按scale(1:2,1:1,2:1)和rate(1282,2562,5122)生成9个anchors,紧接着利用窗口分类层(cls层)对每个anchors做2分类(区分是前景还是背景),利用位置精修层(reg层)确定每个anchors的坐标位置。比如,有一张HW的feature map输入RPN,经过这一步,cls层能够得到HW92,reg层得到HW94的偏移量。
2.1 Anchor
Faster R-CNN提出锚点的方法用于简化proposal的生成。即设定一系列固定大小的框框,并利用RPN对生成的锚点进行筛选得到proposal。
2.2 cls层(Box Classification层)
分类层(二分类任务),把所有的Anchor分为前景和背景,IOU>0.7的Anchor标注为前景,IOU<0.3的标注为背景,之间的值就不参与训练。
2.3 reg层(Box regression层)
用于得出每个Anchors的大致位置,来建立Anchor与ground truth之间的关系,便于Proposal Layer 层的回归 。这一层主要是用来得出Anchor的偏移量,Anchor的中心位置为Ax,Ay,长Aw,高Ah。
2.4 Proposal Layer
在RPN训练收敛以后,可以得出Anchor相对于proposal的偏移量,再根据公式: 计算出proposal的大致位置,其中对应的ground truth的坐标为(Gx,Gy,Gw,Gh)。
利用如下方法选择出最接近ground truth 的proposal:
(1)选择出前景概率最高的N个proposal;
(2)进行非极大值抑制(NMS);
(3)NMS后再选择前景概率最高的M个proposal。最终得到proposal的大致位置,经过不断的迭代回归找到最佳的proposal。
3 Fast R-CNN网络
3.1 ROI pooling layer
该层主要作用有:
(1)根据输入的image,将ROI映射到feature map对应的位置上;
(2)将映射后的区域划分为相同大小的输出;
(3)对相同大小的输出进行max pooling操作
(4)极大的提高了处理速度
4 Loss计算
4.1 RPN LossFunction
训练时,需要将cls层(Box Classification层)与reg层(Box regression层)损失加在一起来实现联合训练。
4.2 Faster R-CNN LossFunction
5 网络训练
第一步:用model初始化RPN网络,然后端到端的训练RPN;
第二步:用model初始化Fast R-cnn网络,使用训练过的RPN来生成proposal,再将proposal输入到Fast R-cnn网络对Fast R-cnn网络进行训练(此时两个网络还没有共享卷积层(model));
第三步:使用第二部训练完成的model来初始化RPN网络,对RPN网络进行第二次训练,与之前不同的是,此次需要将model锁定,在训练过程中,model不变,而RPN的参数会随着迭代学习发生改变。
第四步:依旧保持第三步的model不变,初始化Fast R-cnn网络,对Fast R-cnn网络进行第二次训练,微调其FC层,两个网络共享相同的卷积层,构成一个统一的网络。