大数据,机器学习,人工智能

Faster R-CNN讲透版

2020-01-03  本文已影响0人  赵小闹闹

之前对Faster R-CNN一直模棱两可,最近将Faster R-CNN进行了深入了解。用此文对Faster R-CNN讲透。
参考:https://zhuanlan.zhihu.com/p/32404424
https://zhuanlan.zhihu.com/p/31426458

1. Faster R-CNN架构

image.png

主体为3部分。

2.数据处理

Faster R-CNN有对原始图像进行resize成HxW的操作。使得长边小于等于1000,短边小于等于600(至少有一个等于)。可直接理解为resize为1000*600.

3.特征提取

image.png

以VGG16为例,conv层feature map尺寸不变,经过四次pooling后,原始图像尺寸下降为1/16。原始图片resize之后尺寸为3×H×W,四次下采样后的feature map尺寸为C×(H/16)×(W/16)

4.RPN

4.1 anchor生成

RPN对feature map的每一个点生成9中尺寸的anchor,即大小为(128,256,512),长宽比为(1:1,1:2,2:1)。


image.png

对于1000×600尺寸的图片,经过四次下采样的feature map 尺寸为62×37(即(1000/16)×(600/16))每个点取9个anchor即62×37×9约为20000个anchor。

4.2 RPN训练

image.png
RPN的训练过程是对anchor进行分类与坐标回归。20000个anchor全部进行训练不现实,所以AnchorTargetCreator用于从20000个anchor选择256个。

NMS的作用是消除冗余框,希望只有一个框来代表目标
操作过程,1)对所有框的得分排序,选中得分最高的框,2)将与该框IOU比例高于阈值的框删去,3)从未选过的框再选择得分最高的框,重复这个过程。

5.Fast R-CNN/ROI Head

image.png
RPN给ROIHead传给2000个ROIs,ProposalTargetCreator将2000个ROIs减少为128个RIOs,传给RIO Pooling,其作用是将128个尺寸各异的RIOs pooling成相同尺寸的feature map(7*7),pooling成相同的尺寸因为后面分类与回归用的是全连接层,需要固定尺寸。ROIPooling后两个全连基层与特征提取网络的FC尺寸相同,可是用预期参数共享,作为初始化参数。再接FC21用于目标分类(20个类别+1背景)FC84坐标回归(21个类别,每个类别4个位置参数)。

5.1ProposalTargetCreator

ROIHead不是讲RPN给的2000个ROIs全部训练,而是ProposalTargetCreator将2000个ROIs减少为128个RIOs。

5.2 训练细节

对128个ROIs的坐标进行标准化处理(减去均值除以标准差)。
对于分类问题,直接利用交叉熵损失. 而对于位置的回归损失,一样采用Smooth_L1Loss, 只不过只对正样本计算损失.而且是只对正样本中的这个类别4个参数计算损失。

5.3测试

测试的时候对所有的RoIs(大概300个左右) 计算分类(21类)概率,并利用位置参数调整预测候选框的位置。然后再用一遍极大值抑制(之前在RPN的ProposalCreator用过)。

细节

RPN 分类损失:anchor是否为前景(二分类)
RPN位置回归损失:anchor位置微调
RoI 分类损失:RoI所属类别(21分类,多了一个类作为背景)
RoI位置回归损失:继续对RoI位置微调

AnchorTargetCreator : 负责在训练RPN的时候,从上万个anchor中选择一些(比如256)进行训练,以使得正负样本比例大概是1:1. 同时给出训练的位置参数目标。 即返回gt_rpn_loc和gt_rpn_label。
ProposalTargetCreator: 负责在训练RoIHead/Fast R-CNN的时候,从RoIs选择一部分(比如128个)用以训练。同时给定训练目标, 返回(sample_RoI, gt_RoI_loc, gt_RoI_label)
ProposalCreator: 在RPN中,从上万个anchor中,选择一定数目(2000或者300),调整大小和位置,生成RoIs,用以Fast R-CNN训练或者测试。
其中AnchorTargetCreator和ProposalTargetCreator是为了生成训练的目标,只在训练阶段用到,ProposalCreator是RPN为Fast R-CNN生成RoIs,在训练和测试阶段都会用到

上一篇 下一篇

猜你喜欢

热点阅读