【动手深度学习-笔记】R-CNN系列

【动手深度学习-笔记】R-CNN系列

  • R-CNN
  • Fast R-CNN
    • 兴趣区域池化层
  • Faster R-CNN
    • 区域提议网络
  • Mask R-CNN
  • 总结
  • 参考

R-CNN

区域卷积神经网络(region-based CNN或regions with CNN features,R-CNN)是将深度模型应用于目标检测的开创性工作之一。
R-CNN首先利用选择性搜索,从输入图像中选取若干提议区域(如锚框也是一种选取方法),并标注它们的类别和边界框(如偏移量)。
然后,用卷积神经网络分别对每个提议区域进行前向传播以抽取其特征。
接下来,用每个提议区域的特征来预测类别和边界框。
【动手深度学习-笔记】R-CNN系列_第1张图片

Fast R-CNN

R-CNN的主要性能瓶颈在于,要对每个锚框进行一次独立的CNN前向传播过程,这带来了巨大的计算成本。
Fast R-CNN对此进行了改进——只在输入图像上进行一次CNN的前向传播,提取出特征图
同时,对输入图像进行选择性搜索选取提议区域。
得到特征图和提议区域后,将二者输入到一个叫做兴趣区域池化层(RoI pooling) 的layer。
计算后传给全连接层进行类别和边界预测。
【动手深度学习-笔记】R-CNN系列_第2张图片

兴趣区域池化层

这个RoI pooling主要是将兴趣区域的大小进行一个统一,方便做成批量,举一个例子如下图所示:
【动手深度学习-笔记】R-CNN系列_第3张图片
这个例子的输入由一个 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),从而减少提议区域的生成数量,并保证目标检测的精度
【动手深度学习-笔记】R-CNN系列_第4张图片

区域提议网络

区域提议网络可以看成是一个粗糙的目标检测网络。它通过一定的方法(可以是选择性搜索或者其他方法)生成大量锚框,但不直接将这些锚框输入到RoI pooling,而是通过非极大值抑制(NMS)进行一个精选,在属于同一个目标的多个锚框中选择一个最优锚框保留,从而降低提议区域的数量。

Mask R-CNN

Mask R-CNN基于Faster R-CNN修改而来,它的主要改变是引入了一个新的全卷积网络进行Mask预测。如果在训练集中标注了每个目标在图像上的像素级位置,那么Mask R-CNN能够有效地利用这些详尽的标注信息进一步提升目标检测的精度。
【动手深度学习-笔记】R-CNN系列_第5张图片
此外,RoI池化层会带来区域不匹配问题,对于通常要精确到每个像素点的语义分割任务来说代价是比较大的。
Mask R-CNN将RoI池化层替换为了RoI对齐层兴趣区域对齐层不会进行不均匀的分割,而是直接进行像素级别的切割:
【动手深度学习-笔记】R-CNN系列_第6张图片
具体RoI池化的问题以及RoI对齐是如何改进的,可以移步这篇文章:
Mask R-CNN讲解_江南綿雨的博客-CSDN博客_mask_rcnn

总结

R-CNN虽然经历了几次改进,速度有了一些提升,但是和其他算法比,它的计算量还是偏大,主要优势还是精度高,所以常用在高精度场景中。

参考

  • 13.8. 区域卷积神经网络(R-CNN)系列 — 动手学深度学习 2.0.0-beta1 documentation
  • Mask R-CNN讲解_江南綿雨的博客-CSDN博客_mask_rcnn

你可能感兴趣的:(深度学习笔记,深度学习,cnn,目标检测)