Faster R-CNN

目录

1. Fast R-CNN的不足

2. Faster R-CNN

3. RPN(Region Proposal Network)

3.1 anchor

3.2 RPN 网络

3.3 RPN 网络的损失

4. Faster R-CNN 损失

5. Faster R-CNN 训练

6. 对比


1. Fast R-CNN的不足

Fast R-CNN 的算法流程

Faster R-CNN_第1张图片

Fast R-CNN网络运行速度慢的最主要原因,SS生成候选框的效率较低

所以Faster R-CNN主要对生成候选框进行了优化

Faster R-CNN_第2张图片

2. Faster R-CNN

Faster R-CNN 的算法流程

 Faster R-CNN可以看成:RPN + Fast R-CNN

其中RPN通过卷积网络生成候选框,抛弃了SS算法,这里RPN和Fast R-CNN里面提取特征的卷积层参数共享

Faster R-CNN_第3张图片

3. RPN(Region Proposal Network)

Faster R-CNN的重点就是RPN代替了SS算法,所以最重要的就是RPN网络的实现 。后面的部分就是Fast R-CNN

生成的2k分类类别,这里的2只是前景and背景的概率,不做具体的分类

生成的4k个边界框回归器,4个参数对候选框的调整

Faster R-CNN_第4张图片

3.1 anchor

窗口在卷积网络输出的特征提取进行滑动,在每个滑动窗口生成9个anchor

anchor 和 PRN 都会产生候选框,两者不一样

Faster R-CNN_第5张图片

虽然对于VGG来说,原始的输入图像经过几层的卷积和池化,最后输出特征图的像素点,映射到原图的感受野是228。虽然这里生成的anchor比228*228大,是不影响的。论文的作者是这样解释的,通过观察物体的一部分,也可以大概估计目标的大小。

关于感受野的计算

Faster R-CNN_第6张图片

例如,原始输入的图片是1000*600*3,经过特征提取层,空间分辨率大概变成60*40,每个像素点生成9个,就会生成60*40*9(20k)个anchor。去除越过边界的anchor,大概剩余6k个。利用RPN网络生成的回归器对anchor进行微调,得到需要的候选框,基于RPN生成的分类器,对候选框得分进行非极大值抑制,这样最后大概还剩2000个候选框

边界框参考anchors产生固定尺寸的,分类判断产生的边界框是背景还是前景,即产生的边界框是否正确

Faster R-CNN_第7张图片

3.2 RPN 网络

理论上,RPN网络不仅仅只包含下面的部分,还有CNN特征提取的部分,因为CNN那块参数共享了,所以只介绍剩余的生成分类器+回归器的小网络

VGG最后特征提取的输出为512*n*n(512为channel),通过3*3的same 卷积,输入输出维度都是VGG最后的输出channel 512。这样3*3卷积后输出的shape和VGG特征提取的shape是一致的

然后并联两个1*1卷积或者fc层实现类别的分类+边界框回归器的预测

例如,采用 输入chanel为512,输出为2k个,1*1卷积核就能产生2k个类别的分类

Faster R-CNN_第8张图片

3.3 RPN 网络的损失

RPN 的损失,λ为平衡参数,尽量让1/N(cls) = λ * 1/N(reg)

Faster R-CNN_第9张图片

其中分类的损失,是多类别的交叉熵

Faster R-CNN_第10张图片

边界框回归器损失:

Faster R-CNN_第11张图片

4. Faster R-CNN 损失

就是Fast R-CNN的损失

Faster R-CNN_第12张图片

5. Faster R-CNN 训练

论文中采用4步的分步训练方法

Faster R-CNN_第13张图片

6. 对比

框架的步骤逐渐合为一体

Faster R-CNN_第14张图片

你可能感兴趣的:(#,关于,object,detection,cnn,深度学习,人工智能)