ROI Pooling层详解

ROI Pooling层详解
网络

原文连接:https://blog.deepsense.ai/region-of-interest-pooling-explained/spa

目标检测typical architecture 一般能够分为两个阶段:
(1)region proposal:给定一张输入image找出objects可能存在的全部位置。这一阶段的输出应该是一系列object可能位置的bounding box。这些一般称之为region proposals或者 regions of interest(ROI)。
(2)final classification:肯定上一阶段的每一个region proposal是否属于目标一类或者背景。
这个architecture存在的一些问题是:
  • 产生大量的region proposals 会致使performance problems,很难达到实时目标检测。
  • 在处理速度方面是suboptimal。
  • 没法作到end-to-end training。
这就是ROI pooling提出的根本缘由。
ROI pooling层能实现training和testing的显著加速,并提升检测accuracy。该层有两个输入:
  • 从具备多个卷积核池化的深度网络中得到的固定大小的feature maps;
  • 一个表示全部ROI的N*5的矩阵,其中N表示ROI的数目。第一列表示图像index,其他四列表示其他的左上角和右下角坐标;
ROI pooling具体操做以下:
(1)根据输入image,将ROI映射到feature map对应位置;
(2)将映射后的区域划分为相同大小的sections(sections数量与输出的维度相同);
(3)对每一个sections进行max pooling操做;
这样咱们就能够从不一样大小的方框获得固定大小的相应 的feature maps。值得一提的是,输出的feature maps的大小不取决于ROI和卷积feature maps大小。ROI pooling 最大的好处就在于极大地提升了处理速度。
ROI pooling example
考虑一个8*8大小的feature map,一个ROI,以及输出大小为2*2.
(1)输入的固定大小的feature map 

(2)region proposal 投影以后位置(左上角,右下角坐标):(0,3),(7,8)。
rest


(3)将其划分为(2*2)个sections(由于输出大小为2*2),咱们能够获得:
orm


(4)对每一个section作max pooling,能够获得:
blog


ROI pooling总结:
(1)用于目标检测任务;(2)容许咱们对CNN中的feature map进行reuse;(3)能够显著加速training和testing速度;(4)容许end-to-end的形式训练目标检测系统。