上一章:深度篇—— CNN 卷积神经网络(二) 细说 池化(pooling) 与 反池化(unpooling)
下一章:深度篇—— CNN 卷积神经网络(四) 使用 tf cnn 进行 mnist 手写数字 代码演示项目
本小节,细说 关于 ROI 与 插值
三. 关于 ROI
1. ROI pooling (Region Of Interesting pooling, ROI pooling) 感兴趣区域池化
(1). 目标检测 typical architecture (典型架构) 通常可以分为两个阶段:
①. region proposal (区域提案)
给定一张输入 image 找出 objects 可能存在的所有位置。这一阶段的输出应该是一系列 object 可能的 bounding boxes。这些通常称为 region proposal 或 region of interest (ROI)
②. final classification (最终分类)
确定上一阶段的每个 region proposal 是否属于目标一类或者背景。
(2). 这 architecture 存在的一些问题:
①. 产生大量的 region proposal 会导致性能问题,很难达到实时目标检测。
②. 在处理速度方面是 suboptimal (次优)
③. 无法做到 end-to-end training。
(3). 于是提出了 ROI pooling。ROI pooling 层实现 training 和 testing 的显著加速,并提高检测 accuracy。该层有两个输入:
①. 从具体多个卷积核池化的深度网络中获得的固定大小的 feature map
②. 一个表示所有 ROI 的 的矩阵,其中 表示 ROI 的数目。 则表示 第一列为图像的 index,其余四列分别为 左上角 和 右下角 的坐标。
(4). ROI pooling 的具体操作
①. 根据输入 image,将 ROI 映射到 feature map 对应位置
②. 将映射后的 感兴趣区域 划分为不同大小(也可以有相同大小) 的 sections (部分), sections 数量与输出的维度相同。
③. 对每个 sections 进行 max pooling 操作。
这样就可以从不同大小的方框得到固定大小相应的 feature map。值得一提的是,输出的 feature map 的大小不取决于 ROI 和卷积 feature map 的大小。ROI pooling 最大的好处就在于极大地提高了处理速度。