Faster RCNN详解结构介绍
    从RCNN到Mask-RCNN
      像玩乐高一样拆解Faster R-CNN:详解目标检测的实现过程
    Anchors
    Region Proposal Network
    ROI Pooling

    理解R-CNN
    (1).选择性搜索(Selective Search)一些区域提案(region proposal).
    (2).使用AlexNet(ImageNet 2012 的冠军版本)进行特征提取,在 CNN 的最后一层,R-CNN 添加了一个支持向量机(SVM)进行分类。
    (3).R-CNN 在区域提案上运行简单的线性回归,以生成更紧密的边界框坐标从而获得最终结果。
    问题:如何进行产生region proposal? 如何具体的进行线性回归?
    理解Fast R-CNN

    R-CNN 性能很棒,但是因为下述原因运行很慢:
    1. 它需要 CNN(AlexNet)针对每个单图像的每个区域提案进行前向传递(每个图像大约 2000 次向前传递)。
    2. 它必须分别训练三个不同的模型 - CNN 生成图像特征,预测类别的分类器和收紧边界框的回归模型。pipeline复杂难以训练。
    改进:
    (1). ROI(兴趣区域)池化
    让每个图像只运行一次 CNN,然后找到一种在 2000 个提案中共享计算. RoIPool 分享了 CNN 在图像子区域的前向传递, 从 CNN 的特征映射选择相应的区域来获取每个区域的 CNN 特征.
    (2).将所有模型并入一个网络
    在单一模型中联合训练卷积神经网络(CNN)、分类器(Softmax)和边界框回归器(线性回归层)。
    理解Faster R-CNN
    存在一个瓶颈问题——区域提案器(region proposer),这个过程相当缓慢。
    提出使用CNN提取的特征映射用于生成区域提案:
    Faster R-CNN 在 CNN 特征的顶部添加了一个
    简单的完全卷积网络,创建了所谓的区域提案网络。区域提案网络在 CNN 的特征上滑动一个窗口。在每个窗口位置,网络在每个锚点输出一个分值和一个边界框**(因此,4k 个框坐标,其中 k 是锚点的数量)。

    区域提案网络的输入和输出:

    • 输入:CNN 特征图。
    • 输出:每个锚点的边界框。分值表征边界框中的图像作为目标的可能性。

    理解Mask R-CNN
    image.png
    在 Mask R-CNN 中,在 Faster R-CNN 的 CNN 特征的顶部添加了一个简单的完全卷积网络(FCN),以生成 mask(分割输出)。
    Faster R-CNN 的 RoIPool 选择的特征图的区域与原始图像的区域略不对齐:
    对于一个尺寸大小为 128x128 的图像和大小为 25x25 的特征图。想要得到的是与原始图像中左上方 15x15 像素对应的区域(见上文)。
    我们知道原始图像中的每个像素对应于原始图像中的〜25/128 像素。要从原始图像中选择 15 像素,我们只需选择 15 25/128〜=2.93 像素。
    在 RoIPool,我们会舍弃一些,只选择 2 个像素,导致轻微的错位。然而,在 RoIAlign,我们避免了这样的舍弃。相反,*我们使用双线性插值来准确得到 2.93 像素的内容
    。这很大程度上,让我们避免了由 RoIPool 造成的错位。