动手学深度学习_目标检测算法 R-CNN 系列

简单整理记录一下,有个大概了解。

区域卷积神经网络 region-based CNN 或 regions with CNN features,R-CNN

比较有名的几个网络:R-CNN、Fast R-CNN、Faster R-CNN、Mask R-CNN

R-CNN

动手学深度学习_目标检测算法 R-CNN 系列_第1张图片

        R-CNN 首先从输入图像中选取若干提议区域(如锚框也是一种选取方法),并标注它们的类别和边界框(如偏移量)。然后,用卷积神经网络对每个提议区域进行前向传播以抽取其特征。 接下来,用每个提议区域的特征来预测类别和边界框。

  1. 对输入图像使用选择性搜索来选取多个高质量的提议区域。这些提议区域通常是在多个尺度下选取的,并具有不同的形状和大小。每个提议区域都将被标注类别和真实边界框。

  2. 选择一个预训练的卷积神经网络,并将其在输出层之前截断。将每个提议区域变形为网络需要的输入尺寸,并通过前向传播输出抽取的提议区域特征。

  3. 将每个提议区域的特征连同其标注的类别作为一个样本。训练多个支持向量机 SVM 对目标分类,其中每个支持向量机用来判断样本是否属于某一个类别

  4. 将每个提议区域的特征连同其标注的边界框作为一个样本,训练线性回归模型来预测真实边界框。

        尽管 R-CNN 模型通过预训练的卷积神经网络有效地抽取了图像特征,但它的速度很慢。 想象一下,从一张图像中选出上千个提议区域,这需要上千次的卷积神经网络的前向传播来执行目标检测。 这种庞大的计算量使得R-CNN在现实世界中难以被广泛应用。

Fast R-CNN 

        R-CNN 的主要性能瓶颈在于,对每个提议区域,卷积神经网络的前向传播是独立的,而没有共享计算。 由于这些区域通常有重叠,独立的特征抽取会导致重复的计算。 Fast R-CNN 对 R-CNN 的主要改进之一,是仅在整张图象上执行卷积神经网络的前向传播。 

  1. 与 R-CNN 相比,Fast R-CNN 用来提取特征的卷积神经网络的输入是整个图像,而不是各个提议区域。此外,这个网络通常会参与训练。设输入为一张图像,将卷积神经网络的输出的形状记为 1 × c × h1 × w1 。

  2. 假设选择性搜索生成了 n 个提议区域。这些形状各异的提议区域在卷积神经网络的输出上分别标出了形状各异的兴趣区域。然后,这些感兴趣的区域需要进一步抽取出形状相同的特征(比如指定高度 h2 和宽度 w2 ),以便于连结后输出。为了实现这一目标,Fast R-CNN 引入了兴趣区域汇聚层(RoI pooling):将卷积神经网络的输出和提议区域作为输入,输出连结后的各个提议区域抽取的特征,形状为 n × c × h2 × w2 。

  3. 通过全连接层将输出形状变换为 n × d,其中超参数 d 取决于模型设计。

  4. 预测 n 个提议区域中每个区域的类别和边界框。更具体地说,在预测类别和边界框时,将全连接层的输出分别转换为形状为 n × q(q是类别的数量)的输出和形状为 n × 4 的输出。其中预测类别时使用 softmax 回归。

        在 Fast R-CNN 中提出的兴趣区域汇聚层,设置汇聚窗口、填充和步幅的大小来间接控制输出形状。而兴趣区域汇聚层对每个区域的输出形状是可以直接指定的。

        例如,指定每个区域输出的高和宽分别为 h2 和 w2 。 对于任何形状为 h × w 的兴趣区域窗口,该窗口将被划分为 h2 × w2 子窗口网格,其中每个子窗口的大小约为 (h / h2) × (w / w2)。 在实践中,任何子窗口的高度和宽度都应向上取整,其中的最大元素作为该子窗口的输出。 因此,兴趣区域汇聚层可从形状各异的兴趣区域中均抽取出形状相同的特征。

        举例中提到,在 4 × 4 的输入中,我们选取了左上角 3 × 3 的兴趣区域。 对于该兴趣区域,我们通过 2 × 2 的兴趣区域汇聚层得到一个 2 × 2 的输出。 请注意,四个划分后的子窗口中分别含有元素0、1、4、5(5最大);2、6(6最大);8、9(9最大);以及10。

动手学深度学习_目标检测算法 R-CNN 系列_第2张图片

Faster R-CNN 

        为了较精确地检测目标结果,Fast R-CNN 模型通常需要在选择性搜索中生成大量的提议区域。 Faster R-CNN 提出将选择性搜索替换为区域提议网络(region proposal network),从而减少提议区域的生成数量,并保证目标检测的精度。

区域提议网络的计算步骤如下:

  1. 使用填充为 1 的 3 × 3 的卷积层变换卷积神经网络的输出,并将输出通道数记为 c 。这样,卷积神经网络为图像抽取的特征图中的每个单元均得到一个长度为 c 的新特征。

  2. 以特征图的每个像素为中心,生成多个不同大小和宽高比的锚框并标注它们。

  3. 使用锚框中心单元长度为 c 的特征,分别预测该锚框的二元类别(含目标还是背景)和边界框。

  4. 使用非极大值抑制,从预测类别为目标的预测边界框中移除相似的结果。最终输出的预测边界框即是兴趣区域汇聚层所需的提议区域。

        值得一提的是,区域提议网络作为 Faster R-CNN 模型的一部分,是和整个模型一起训练得到的。 换句话说,Faster R-CNN 的目标函数不仅包括目标检测中的类别和边界框预测,还包括区域提议网络中锚框的二元类别和边界框预测。 作为端到端训练的结果,区域提议网络能够学习到如何生成高质量的提议区域,从而在减少了从数据中学习的提议区域的数量的情况下,仍保持目标检测的精度。

Mask R-CNN

动手学深度学习_目标检测算法 R-CNN 系列_第3张图片

        如果在训练集中还标注了每个目标在图像上的像素级位置,Mask R-CNN 就是这样做的并且有效地利用这些详尽的标注信息进一步提升目标检测的精度。

        Mask R-CNN 是基于Faster R-CNN 修改而来的。 具体来说,Mask R-CNN 将兴趣区域汇聚层替换为了 兴趣区域对齐层,使用双线性插值(bilinear interpolation)来保留特征图上的空间信息,从而更适于像素级预测。 兴趣区域对齐层的输出包含了所有与兴趣区域的形状相同的特征图。 它们不仅被用于预测每个兴趣区域的类别和边界框,还通过额外的全卷积网络预测目标的像素级位置。

你可能感兴趣的:(边学边记,深度学习,目标检测,神经网络)