R-CNN
区域卷积神经网络(region-based CNN或regions with CNN features,R-CNN)是将深度模型应用于目标检测的开创性工作之一。 R-CNN首先利用选择性搜索,从输入图像中选取若干提议区域(如锚框也是一种选取方法),并标注它们的类别和边界框(如偏移量)。 然后,用卷积神经网络分别对每个提议区域进行前向传播以抽取其特征。 接下来,用每个提议区域的特征来预测类别和边界框。
Fast R-CNN
R-CNN的主要性能瓶颈在于,要对每个锚框进行一次独立的CNN前向传播过程,这带来了巨大的计算成本。 Fast R-CNN对此进行了改进——只在输入图像上进行一次CNN的前向传播,提取出特征图。 同时,对输入图像进行选择性搜索选取提议区域。 得到特征图和提议区域后,将二者输入到一个叫做兴趣区域池化层(RoI pooling) 的layer。 计算后传给全连接层进行类别和边界预测。
兴趣区域池化层
这个RoI pooling主要是将兴趣区域的大小进行一个统一,方便做成批量,举一个例子如下图所示: 这个例子的输入由一个
4
×
4
4 \times 4
4×4的特征图(由CNN提取)和一个位于左上角的
3
×
3
3 \times 3
3×3的提议区域(由选择性搜索提取)组成 池化核大小是
2
×
2
2 \times 2
2×2,它会把输入提议区域分割为
2
×
2
2 \times 2
2×2共4个子区域,每个子区域提取一个最大值,得到
2
×
2
2 \times 2
2×2的输出提议区域。这一过程可以看成是一种非均匀的Max pooling操作。
Faster R-CNN
Faster R-CNN 是在Fast R-CNN的基础上的进一步改进,从提议区域的生成着手优化,提出将选择性搜索替换为区域提议网络(region proposal network),从而减少提议区域的生成数量,并保证目标检测的精度。
区域提议网络
区域提议网络可以看成是一个粗糙的目标检测网络。它通过一定的方法(可以是选择性搜索或者其他方法)生成大量锚框,但不直接将这些锚框输入到RoI pooling,而是通过非极大值抑制(NMS)进行一个精选,在属于同一个目标的多个锚框中选择一个最优锚框保留,从而降低提议区域的数量。
Mask R-CNN
Mask R-CNN基于Faster R-CNN修改而来,它的主要改变是引入了一个新的全卷积网络进行Mask预测。如果在训练集中标注了每个目标在图像上的像素级位置,那么Mask R-CNN能够有效地利用这些详尽的标注信息进一步提升目标检测的精度。 此外,RoI池化层会带来区域不匹配问题,对于通常要精确到每个像素点的语义分割任务来说代价是比较大的。 Mask R-CNN将RoI池化层替换为了RoI对齐层。兴趣区域对齐层不会进行不均匀的分割,而是直接进行像素级别的切割: 具体RoI池化的问题以及RoI对齐是如何改进的,可以移步这篇文章: Mask R-CNN讲解_江南綿雨的博客-CSDN博客_mask_rcnn
总结
R-CNN虽然经历了几次改进,速度有了一些提升,但是和其他算法比,它的计算量还是偏大,主要优势还是精度高,所以常用在高精度场景中。
参考
|