一、公用特征Feature Maps的获取
二、Region Proposal Network
Feature Maps[bs,1024,38,38]经过3*3卷积,然后分别经过两个1*1的卷积,通道数分别为18,36
18 = 9*2 代表每个位置9个先验框为背景和目标的概率
36 = 9*4 代表每个位置9个先验框的坐标调整参数(Faster Rcnn也是有先验框的)
先验框 + 位置调整参数 = 建议框
建议框的初筛
由于建议框非常多,要对建议框进行初筛,先根据建议框是目标的分数,选出得分最高的前K个建议框,再进行NMS,然后再选出得分最高的前K个建议框。如一张照片有300个建议框。
三、ROI Pooling
根据建议框的参数,在Feature Map上裁剪出对应特征,比如[1024,82,79],每个特征的大小是不一样的。
1.ROI Pooling 的输入
ROI Pooling 该层有两个输入:
- feature maps,如[bs,1024,38,38];
- 一个表示所有 ROI 的 N*5 的矩阵,其中N表示ROI的数目。一列表示图像index,其余四列表示其余的左上角和右下角坐标,如[[x1,y1,x2,y2,index1],];
2.ROI Pooling 的输出
输出特征为[bs,k,1024,14,14],其中k为一张图片有k个建议框,14 * 14为pooling后的大小
eg:
如feature maps [1024,8,8],一号建议框坐标[0,3,7,8,1],其中(0,3),(7,8)左下角坐标和右上角坐标,输出为2 * 2
3. RoI pooling 与RoI Align区别
参考视频:[快速学懂]ROI pooling 和ROI align_哔哩哔哩_bilibili
3.1RoI pooling
实际得到的建议框往往不是整数,即上图绿色框。(网格的像素值在网格左上角顶点)
将实际顶点对其到离他最近整数节点
3.2 RoI Align
如Roi 后的图像大小为K * K(将特征缩放为K * K)
首先将建议框划分为 K * K个区域,每个区域选择4个采样点,利用双线性插值求出采样点的像素,最后对该4个像素平局池化,即得到此区域的像素
四、边界框的类别预测与坐标回归
RoI pooling后的输出特征[bs,k,1024,14,14] ,经过全局平局池化[bs,k,1024],然后经过两个线性层
nn.Linear(1024, n_class) 进行类别预测, nn.Linear(1024, n_class * 4) 进行坐标回归预测。