R-CNN是下面所有提到的算法的根算法,它为研究人员提供了在其之上构建更复杂,更好的算法的途径。下面解释R-CNN及它的变体。
R-CNN(基于区域的卷积神经网络)
R-CNN包含3个简单步骤:
使用选择性搜索(Selective Search)算法在输入图像中扫描可能的对象,生成约2000个候选区域(region proposals)
在每个候选区域之上运行卷积神经网络- (CNN)
取每个CNN的输出,并将其输入到 a)支持向量机(SVM)对区域进行分类, b)线性回归器以收紧对象的边界框(如果存在这样的对象)。
Fast R-CNN(基于区域快速识别的CNN)
Fast R-CNN紧随R-CNN之后。通过以下几点,Fast R-CNN更快更好:
在候选区域之前对图像进行特征提取,因此在整个图像上只运行一个CNN,而不是在2000个重叠区域中运行2000个CNN
用softmax层替换SVM,扩展神经网络进行预测,而不是创建新模型。
直观地讲,删除2000个conv图层并进行一次卷积,以及在其上放置框是很有意义的。
Faster R-CNN(基于快速区域生成网络的CNN)
Fast R-CNN的缺点之一是选择性搜索算法比较慢,Faster R-CNN引入了候选区域网络(RPN)。
下面RPN的工作原理:
在初始CNN的最后一层,一个3x3滑动窗口在特征图上移动并将其映射到较低的维度(例如256-d)。对于每个滑动窗口位置,它会根据k个固定比例的锚点生成多个可能的区域框(默认边界框).
每个候选区域包括:
该区域的“客观”得分,
4个代表区域边界框的坐标。换句话说,我们查看最后一个特征图中的每个位置,并考虑以k为中心的k个不同的框:高框,宽框,大框等。
对于每个框,要看输出是否包含对象以及该框的坐标是什么。下面一个滑动窗口位置的外观:
2k scores
表示k个边界框中的每一个在“对象”上的softmax概率。请注意,尽管RPN输出边界框的坐标,但它不会尝试对任何潜在对象进行分类:它的唯一工作仍然是选取对象区域。如果锚点框的“客观性”得分高于某个阈值,则该框的坐标将作为候选区域而向前传递。
一旦有了候选区域,就将它们直接馈入实质上的Fast R-CNN。我们添加了一个池化层,一些全连接层,最后是一个softmax分类层和边界框回归器。从某种意义上说,Faster R-CNN = RPN + Fast R-CNN.