天天看点

记录Faster R-CNN(目标检测)

记录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框架介绍

记录Faster R-CNN(目标检测)

图 1 Faster R-CNN 模型

Faster R-CNN算法主要是由:

(1)RPN候选框提取模块:全卷积神经网络

(2)Fast R-CNN检测模块:基于RPN提取的候选区域检测并且识别区域中的目标。

2 RPN网络(区域生成网络)

记录Faster R-CNN(目标检测)

使用全卷积网络直接产生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。

记录Faster R-CNN(目标检测)

2.2 cls层(Box Classification层)

分类层(二分类任务),把所有的Anchor分为前景和背景,IOU>0.7的Anchor标注为前景,IOU<0.3的标注为背景,之间的值就不参与训练。

记录Faster R-CNN(目标检测)

2.3 reg层(Box regression层)

用于得出每个Anchors的大致位置,来建立Anchor与ground truth之间的关系,便于Proposal Layer 层的回归 。这一层主要是用来得出Anchor的偏移量,Anchor的中心位置为Ax,Ay,长Aw,高Ah。

记录Faster R-CNN(目标检测)

2.4 Proposal Layer

在RPN训练收敛以后,可以得出Anchor相对于proposal的偏移量,再根据公式: 计算出proposal的大致位置,其中对应的ground truth的坐标为(Gx,Gy,Gw,Gh)。

记录Faster R-CNN(目标检测)

利用如下方法选择出最接近ground truth 的proposal:

(1)选择出前景概率最高的N个proposal;

(2)进行非极大值抑制(NMS);

(3)NMS后再选择前景概率最高的M个proposal。最终得到proposal的大致位置,经过不断的迭代回归找到最佳的proposal。

3 Fast R-CNN网络

记录Faster 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层)损失加在一起来实现联合训练。

记录Faster R-CNN(目标检测)

4.2 Faster R-CNN LossFunction

记录Faster R-CNN(目标检测)

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层,两个网络共享相同的卷积层,构成一个统一的网络。