Skip to content

区域卷积神经网络(R-CNN)系列

一、R-CNN 系列的背景

R-CNN 系列是将深度模型应用于目标检测的开创性工作,它的出现让目标检测的精度有了很大提升。R-CNN 系列包括 R-CNNFast R-CNNFaster R-CNNMask R-CNN,每一代都比上一代更快、更准确。

二、R-CNN:最早的区域卷积神经网络

1. R-CNN 的原理

R-CNN 的思路很简单:先从图片里找出很多可能有目标的区域(提议区域),然后用卷积神经网络提取每个区域的特征,最后用这些特征判断每个区域里的目标类别,以及预测目标的边界框。

alt text

2. R-CNN 的步骤

R-CNN 的步骤分为四步:

  1. 选取提议区域:用选择性搜索的方法从图片里选出大约 2000 个可能有目标的区域,这些区域的形状和大小都不一样。
  2. 提取特征:用一个预训练好的卷积神经网络(比如 VGG),把每个提议区域调整成网络需要的大小,然后通过网络提取每个区域的特征。
  3. 分类:用支持向量机(SVM)对每个区域的特征进行分类,判断这个区域里的目标是什么类别。
  4. 预测边界框:用线性回归模型,根据每个区域的特征预测目标的真实边界框。

3. R-CNN 的缺点

R-CNN 的缺点很明显:速度太慢了。因为要对每个提议区域都做一次卷积神经网络的前向传播,一张图片有 2000 个提议区域,就要做 2000 次前向传播,计算量非常大,在实际应用中很难使用。

三、Fast R-CNN:更快的区域卷积神经网络

1. Fast R-CNN 的改进

Fast R-CNN 主要解决了 R-CNN 速度慢的问题。它的改进点是:不再对每个提议区域单独做卷积神经网络的前向传播,而是对整张图片做一次前向传播,然后再从网络的输出里提取每个提议区域的特征。这样就避免了重复计算,大大提高了速度。

2. Fast R-CNN 的步骤

Fast R-CNN 的步骤分为四步:

  1. 提取整张图片的特征:用卷积神经网络对整张图片做前向传播,得到图片的特征图。
  2. 兴趣区域汇聚层(RoI pooling):把选择性搜索得到的提议区域映射到特征图上,然后用兴趣区域汇聚层把每个提议区域的特征转换成相同的大小,这样方便后续处理。
  3. 全连接层处理:把每个提议区域的特征通过全连接层转换成固定长度的向量。
  4. 分类和预测边界框:用这些向量同时预测每个提议区域的类别和边界框,分类用 softmax 回归,边界框预测用线性回归。

alt text

3. 兴趣区域汇聚层的原理

兴趣区域汇聚层的作用是把不同形状的提议区域转换成相同形状的特征。比如我们想要把每个提议区域转换成 2×2 的特征,不管这个区域原来是什么形状,都会把它分成 2×2 的子窗口,然后取每个子窗口里的最大值作为这个子窗口的输出。这样不管原来的区域是什么形状,输出的特征都是 2×2 的。

alt text

一个 2×2 的兴趣区域汇聚层

4. Fast R-CNN 的优点

Fast R-CNN 比 R-CNN 快很多,因为它只对整张图片做一次卷积神经网络的前向传播,避免了重复计算。而且 Fast R-CNN 可以端到端训练,不需要单独训练支持向量机和线性回归模型,训练更方便。

四、Faster R-CNN:更快更快的区域卷积神经网络

1. Faster R-CNN 的改进

Fast R-CNN 虽然比 R-CNN 快,但是它还是用选择性搜索来生成提议区域,选择性搜索的速度还是比较慢。Faster R-CNN 的改进点是:把选择性搜索换成了区域提议网络(RPN),区域提议网络是和整个模型一起训练的,它可以更快地生成高质量的提议区域。

2. Faster R-CNN 的步骤

Faster R-CNN 的步骤和 Fast R-CNN 差不多,只是把生成提议区域的方法换成了区域提议网络:

  1. 提取整张图片的特征:用卷积神经网络对整张图片做前向传播,得到图片的特征图。
  2. 生成提议区域:用区域提议网络在特征图上生成提议区域。区域提议网络会在特征图的每个像素上生成多个不同大小和宽高比的锚框,然后预测每个锚框里有没有目标,以及锚框的边界框。最后用非极大值抑制去掉重复的提议区域。
  3. 兴趣区域汇聚层:把区域提议网络生成的提议区域映射到特征图上,然后用兴趣区域汇聚层把每个提议区域的特征转换成相同的大小。
  4. 分类和预测边界框:用这些特征同时预测每个提议区域的类别和边界框。

alt text

3. 区域提议网络的原理

区域提议网络的步骤分为三步:

  1. 特征变换:用一个 3×3 的卷积层对特征图进行变换,得到新的特征图。
  2. 生成锚框并预测:在新的特征图的每个像素上生成多个不同大小和宽高比的锚框,然后用两个卷积层分别预测每个锚框的类别(是目标还是背景)和边界框。
  3. 非极大值抑制:去掉重复的提议区域,只保留高质量的提议区域。

4. Faster R-CNN 的优点

Faster R-CNN 比 Fast R-CNN 更快,因为它用区域提议网络生成提议区域的速度比选择性搜索快很多。而且区域提议网络是和整个模型一起训练的,生成的提议区域质量更高,目标检测的精度也更高。

五、Mask R-CNN:可以分割目标的区域卷积神经网络

1. Mask R-CNN 的改进

Mask R-CNN 是在 Faster R-CNN 的基础上改进的,它不仅可以检测目标的类别和边界框,还可以分割目标的像素级位置,也就是可以知道目标的每个像素在哪里。

2. Mask R-CNN 的步骤

Mask R-CNN 的步骤和 Faster R-CNN 差不多,只是把兴趣区域汇聚层换成了兴趣区域对齐层,并且增加了一个全卷积网络来预测目标的像素级位置:

  1. 提取整张图片的特征:用卷积神经网络对整张图片做前向传播,得到图片的特征图。
  2. 生成提议区域:用区域提议网络在特征图上生成提议区域。
  3. 兴趣区域对齐层:把区域提议网络生成的提议区域映射到特征图上,然后用兴趣区域对齐层把每个提议区域的特征转换成和原区域相同的大小。兴趣区域对齐层用双线性插值的方法,保留了特征图上的空间信息,更适合像素级预测。
  4. 分类、预测边界框和分割目标:用这些特征同时预测每个提议区域的类别、边界框和目标的像素级位置。

alt text

3. Mask R-CNN 的优点

Mask R-CNN 不仅可以检测目标的类别和位置,还可以分割目标的像素级位置,在很多需要精细目标检测的场景里非常有用,比如自动驾驶、医疗影像分析等。

六、R-CNN 系列的总结

模型优点缺点
R-CNN第一个将深度模型应用于目标检测的模型,精度比传统方法高很多速度太慢,计算量大
Fast R-CNN比 R-CNN 快很多,端到端训练更方便还是用选择性搜索生成提议区域,速度不够快
Faster R-CNN速度比 Fast R-CNN 更快,提议区域的质量更高不能分割目标的像素级位置
Mask R-CNN可以检测目标的类别、位置和像素级分割,精度更高计算量比 Faster R-CNN 大,速度稍慢

(注:文档部分内容可能由 AI 生成) 源地址

京ICP备2024093538号-1