RoI Pooling Layer

方法提出的背景

目标检测一般分为两个阶段:

    1.  输入一张image,输出一系列objects的可能位置(即:bounding box或region proposals或region of interest(ROI))

        2.  确定1中的每个region proposal是否属于目标一类或者背景

问题:

    产生大量的region proposals,很难达到实时目标检测,并且无法做到end-to-end training

ROI pooling layer的两个输入

    1.  从具有多个卷积核池化的深度网络中获得的固定大小的feature maps

    2.  一个表示所有ROI的N*5矩阵(N表示ROI的数目,第一列表示图像index,其余四列表示左上角和右下角坐标)

ROI pooling layer具体操作

RoI Pooling Layer

    1.  根据输入image,将ROI映射到feature map对应位置

    2.  将映射后的区域划分为相同大小的sections(sections数量与输出的维度相同)

    3.  对每个sections进行max pooling操作

    这样我们就可以从不同大小的方框得到固定大小的feature maps

一个例子

考虑一个8*8大小的feature map,一个ROI,以及输出大小为2*2

    1.  输入固定大小的feature map

RoI Pooling Layer

    2.  region proposal投影之后的位置(左上角(0,3),右下角坐标(7,8))

RoI Pooling Layer

    3.  将其划分为2*2个sections(因为输出大小为2*2)

RoI Pooling Layer

    4.  对每个section做max pooling

RoI Pooling Layer

总结

    1.  用于目标检测

    2.  允许对CNN中的feature map进行reuse

    3.  可以显著加速training和testing

    4.  允许end-to-end的形式训练目标检测系统

原文地址:https://blog.deepsense.ai/region-of-interest-pooling-explained/