RCNN(Regions with CNN features)是使用CNN方法解决图片中目标检测问题,借助CNN良好的特征提取和分类性能,通过RegionProposal方法实现目标检测问题的转化。
算法可以分为四步:
1)候选区域选择
Region Proposals是CNNs使用的一类传统的区域提取方法,主要进行特定目标检测,比如人脸、行人可以看作不同宽高的滑动窗口,通过窗口滑动获得潜在的目标图像,RCNN采用的是SelectiveSearch,RCNN的候选区域选择2000个;
根据Proposal提取的目标图像进行归一化(进行warp),作为CNN的标准输入。
2)CNN特征提取
标准CNN过程,根据输入进行卷积/池化等操作,得到固定维度的输出(224*224);
并且RCNN通过使用权值共享和低维输入(相对于其他算法),因此速度极大提升
3)分类与边界回归
实际包含两个子步骤,一是对上一步的输出向量进行分类(需要根据特征训练分类器);二是通过边界回归(bounding-box regression) 得到精确的目标区域,由于实际目标会产生多个子区域,旨在对完成分类的前景目标进行精确的定位与合并,避免多个检出。
RCNN存在三个明显的问题:
1)多个候选区域对应的图像需要预先提取,占用较大的磁盘空间;
2)针对传统CNN需要固定尺寸的输入图像,crop/warp(归一化)产生物体截断或拉伸,会导致输入CNN的信息丢失;
3)每一个ProposalRegion都需要进入CNN网络计算,上千个Region存在大量的范围重叠,重复的特征提取带来巨大的计算浪费。
4)训练步骤繁琐(预训练+微调+SVM+训练bbox)
5)训练、测试速度均比较慢