为什么要使用ROI pooling?
在RCNN中,整体流程是:先在原图中截取大约2K个region proposals 然后送入CNN网络进行训练,训练完成后用分类器进行分类,完成物体的检测。
但是这个结构会出现问题:
- 产生大量的region proposals 会导致performance problems,很难达到实时目标检测。
- 在处理速度方面是suboptimal。
- 无法做到end-to-end training
因此为了改善这种情况,引出了ROI pooling ,ROI pooling层能够实现training 和testing的显著加速,并且提高基恩侧效率。
- 从具有多个卷积核池化的深度网络中获得的固定大小的feature maps;
- 一个表示所有ROI的N*5的矩阵,其中N表示ROI的数目。第一列表示图像index,其余四列表示其余的左上角和右下角坐标;
ROI Pooling
如上图所示,在对特征进行ROI pooling 的时候先对特征缩小16倍,(16倍的原因在Fast RCNN中,此处不做详细解释),原来的特征是第一幅图虚线部分,但是由于一些特征除不尽16,比如100*200,因此需要对特征进行向下取整,得到一个整数(就是实线框部分),