目标检测中Rpn的简单理解(Faster R-CNN部分)
目标检测 FasterRCNN
最后更新 2020-04-16 14:36 阅读 7966
最后更新 2020-04-16 14:36
阅读 7966
目标检测 FasterRCNN
1. 锚点anchor的真实含义:
特征图的某一像素对应的原始图像的某一个像素,本质上指的是特征图上当前滑窗(也就是3*3的卷积核)中心在原始像素空间的映射点。
即anchor是在原始图像上然后以这个锚点为中心,配上9个基本的候选框。 特征图作为RPN输入,首先是512channel,3*3kernel的卷积层,然后并行两个1*1卷积,这里分类只分为有和无两类,即候选框有没有目标,至于目标到底是什么先不管。
每一个anchor对应K个候选框,每一个候选框的取值(即有和无,用概率表示),所以每一个anchor对应的输出应该为一个2k维度的向量,分类卷积使用2k个channel。回归对应4K个channel。
其中,i表示mini-batch中第i个anchor,pi表示第i个anchor是前景的概率,当第i个anchor是前景时pi为1反之为0,ti表示预测的bounding box的坐标,ti∗为ground truth的坐标。 一个是交叉熵损失,一个是smooth_L1损失函数。
2. RPN生成RoIs的过程(ProposalCreator)如下:
对于每张图片,利用它的feature map, 计算 (H/16)× (W/16)×9(大概20000)个anchor属于前景的概率,以及对应的位置参数。(这里的W、H表示原始图像的宽和高,前面已经有说过了)
选取概率较大的12000个anchor,利用回归的位置参数,修正这12000个anchor的位置,得到RoIs,利用非极大值((Non-maximum
suppression, NMS)抑制,选出概率(rpn只分类为前景和背景,提供的是前景最大)最大的2000个RoIs
注意:在inference的时候,为了提高处理速度,12000和2000分别变为6000和300。
3. RPN的输出:
RoIs(形如2000×4或者300×4的tensor)RoI
Pooling 是一种特殊的Pooling操作,给定一张图片的Feature map (512×H/16×W/16)
和128个候选区域的座标(128×4),RoI Pooling将这些区域统一下采样到
(512×7×7),就得到了128×512×7×7的向量。可以看成是一个batch-size=128,通道数为512,7×7的feature map。
FC 21
用来分类,预测RoIs属于哪个类别(20个类+背景)
FC 84
用来回归位置(21个类,每个类都有4个位置参数)
4. RPN网络中bounding-box回归的实质:
其实就是计算出预测窗口,然后以生成的anchor为基准,计算Ground
Truth对其的平移缩放变化参数,以及预测窗口【可能第一次迭代就是anchor】对其的平移缩放参数,因为是以anchor窗口为基准,所以只要使这两组参数越接近,以此构建目标函数求最小值,那预测窗口就越接近Ground
Truth,达到回归的目的。
本文链接地址:https://www.flyai.com/article/artccb3edf8bb6f2586d827e23e