ROI Pooling

4.2.2 ROI Pooling
ROI Pooling的目的为将获得的ROI特征统一规划为固定尺寸,与RCNN中的CNN框架不同,这里的ROI Pooling接受任意尺寸的特征图并将其转化为统一维度。具体操作见下图。

在下图中我们假设输入的ROI为4x6维度,输出的结果为3x3维度(该维度可以自行修改,Fast-RCNN维度设置不是这样,只是举例说明)。

如上图所示,无论我们输入多大尺寸的ROI特征图,我们最终得到的输出结果必定都是同样尺寸的特征图。

1.4.3  4.3 Fast-RCNN算法训练注意事项

4.3.1 训练流程

  1. 同RCNN一样,使用分类数据集Pre-train CNN模型,得到Pre-train模型;
  2. 将Pre-train的CNN模型最后一个Max-Pooling层改为ROI-Pooling;
  3. 将最后的分类全连接改为(K+1类别,1是背景);
  4. 给Pre-train模型加入Bbox回归层,回归部分计算方式详见RCNN中Bbox回归部分。

1.4.4  4.4 Fast-RCNN算法优缺点

4.4.1 优点

  1. 对流程进行修改,只需要做一个CNN前向传递即可;
  2. 引入ROI Pooling层,使得可以适应不同尺寸的ROI 特征输入;
  3. 将分类和Bbox回归合并到一个模型中进行计算;

4.4.2 缺点

  1. 仍旧采用Selective Seach获得兴趣区域(ROIs),这一步操作十分耗时,印象整个算法的实时性。


ROI Pooling改进(ROI Alignment)

6.2.2 ROI Align基本流程
因为在ROI Pooling中由于量化操作会造成各种误差,因此有人提出不需要进行取整操作,如果计算得到小数,也就是没有落到真实的像素(pixel)上,那么就用最近的像素(pixel)对这一点虚拟的像素(pixel)进行双线性插值,从而得到这个点的值,具体操作可以参考上图中b子图:

  1. 将bbox区域按输出要求的size进行等分(在b图中为进行2x2等分),很可能等分后各顶点落不到真实的像素点上;
  2. 在每个等分区域中(bin)再取固定的4个点,也就是图b右子图中的蓝色点;
  3. 针对每一个蓝点,距离它最近的4个真实像素点的值加权(双线性插值),求得这个蓝点的值。图b中右子图中蓝色的点等于图b左子图中黑色的点(𝑥,𝑦)(x,y),而真实的像素点为(𝑥1,𝑦1),(𝑥2,𝑦2),(𝑥3,𝑦3),(𝑥4,𝑦4)(x1,y1),(x2,y2),(x3,y3),(x4,y4);
  4. 一个bin内会算出4个新值,在这些新值中取max,作为这个bin的输出值;
  5. 最后就能得到2x2的输出;

6.2.3 ROI Align示例说明
为了进一步理解ROI Align操作,我们将用一个实际案例进行说明。在该示例中,我们对一个ROI区域红色方框部分进行ROI Align操作,希望最后得到一个3𝑋33X3的特征图。该ROI原始区域左上角点坐标为(9.25,6)(9.25,6) ,长宽为别为6.25和4.25。

Step 1 划分区域
按照6.2.2中的步骤,第一步我们要将整个ROI区域按照输出(3𝑋3)(3X3)等份的划分为9个区域,则有划分区域后每一份的宽 𝑤𝑖𝑑𝑡ℎ=2.08width=2.08, 每一份的高为ℎ𝑒𝑖𝑔ℎ𝑡=1.51height=1.51。

Step 2 定位四点
接下来就是找寻每一个区域(bin)中四个点的位置,在此处我们以左上第一个区域(bin)为例进行说明。
这四个点的位置分别由𝑤𝑖𝑑𝑡ℎwidth和ℎ𝑒𝑖𝑔ℎ𝑡height除3得到,即:

同样以左上区域(bin)的第一个采样点,𝑃1=(9.94,6.50)P1=(9.94,6.50)为例进行说明。对于𝑃1P1点,其附近最近的四个真实像素点分别为𝑃𝑟𝑒𝑎𝑙1=(9.50,6.50)Preal1=(9.50,6.50), 𝑃𝑟𝑒𝑎𝑙2=(9.50,7.50)Preal2=(9.50,7.50), 𝑃𝑟𝑒𝑎𝑙3=(10.50,6.50)Preal3=(10.50,6.50), 𝑃𝑟𝑒𝑎𝑙4=(10.50,7.50)Preal4=(10.50,7.50)

为什么第一个点𝑃𝑟𝑒𝑎𝑙1=(9.50,6.50)Preal1=(9.50,6.50)?
从图中我们可以知道,整个ROI的左上角点坐标为(9.25,6)(9.25,6),即9.25其实是在第一个方框(像素栅格,cell)的1/41/4处,而真实的像素点又在第一个方框(像素栅格的中心位置,即1/2),因此克制第一个真实像素点的x坐标与9.25之间差1/4个方框(像素栅格),所以有:

真实像素𝑥坐标值=𝑅𝑂𝐼左上点𝑥坐标值+1/4=6.25+0.25=6.50真实像素x坐标值=ROI左上点x坐标值+1/4=6.25+0.25=6.50
其他坐标值都是类似计算。

找到四个真实像素点后,我们运用双线性插值公式即可求解得到该点的灰度值为0.14。

重复以上步骤,便利求解𝑃1−𝑃4P1−P4四个点的灰度值。

Step 4 求解𝑃1−𝑃4P1−P4中的Max
改操作就是进行Max取值,不再赘述。

Step 5 得到3X3特征图
不再赘述。

整体操作的流程,可以进一步参考以下动图。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值