Deep Learning Note: 4-9 Region Proposal
无论是前文介绍的滑窗检测算法还是其卷积实现,都需要无差别地计算整张图片,即使用分类器对图像上各个位置的窗口进行识别。Ross Girshick 等人提出的 R-CNN(Regions with CNN features)算法会先对图像中可能存在目标的区域进行建议,然后仅对这些区域进行识别。
R-CNN 算法对识别区域进行建议的方式是,先通过分割算法(Segmentation Algorithm)将输入图像划分为若干区域,在从这些区域中提取可能存在物体的区域,使用分类器进行识别。例如对于图 1 左图所示的输入数据,由分割算法得到的结果如图 1 中图,其中一些区域可能存在物体,如图 1 右图白框。此时只需在原图像上使用分类器检测白框区域,检测区域的数量远小于滑窗算法。
基础的 R-CNN 算法先通过区域建议得到可能存在目标的区域,然后在这些区域上依次使用分类器,输出标签和边框。注意当 R-CNN 在某个建议区域检测到目标时,并不是以建议区域的边框为目标边框,而是通过分类器获得更准确的边框。虽然 R-CNN 算法仅识别部分可能存在目标的区域,其运行速度仍不够快,由此产生了跟很多改进的版本。
Fast R-CNN 算法也是先通过区域建议得到可能存在目标的区域,然后使用卷积实现的滑窗算法来对所有建议区域进行检测,从而提高了检测的速度,但区域建议的速度仍较慢。Faster R-CNN 算法使用卷积网络替代传统的分割算法来进行区域建议,进一步提高了运行速度,但其速度通常还是不如 YOLO 算法。