目标检测:Faster RCNN网络详解

Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks

RCNN系列论文:
目标检测:RCCN网络详解
目标检测:Fast RCNN网络详解
目标检测:Faster RCNN网络详解

简述:

Fast RCNN存在着Selective Search(选择性搜索)。要找出所有的候选框,这个也非常耗时。在Faster R-CNN中加入一个提取边缘的神经网络,即找候选框的工作也交给神经网络。这样,目标检测的四个基本步骤(候选区域生成,特征提取,分类器分类,回归器回归)全部由深度网络完成,且全在GPU上进行,大大的提高了操作效率。Faster RCNN可看成由两个模块组成的:区域生成网络RPN候选框提取模块+Fast RCNN检测模块。

模型:

目标检测:Faster RCNN网络详解_第1张图片
  Faster RCNN是基于RPN提取的proposal检测并识别proposal中的目标。其具体流程大致可概括为:1.输入图像。2.通过区域生成网络RPN生成候选区域。3.提取特征。4.分类器分类。5.回归器回归并进行位置调整。
RPN的工作步骤如下:
目标检测:Faster RCNN网络详解_第2张图片
  区域代网络RPN的核心思想是直接使用卷积神经网络CNN生成候选区域region proposal区域提议,是在最后一个卷积层上滑动窗口。
  在最后一个共享卷积层的卷积特征图输出上滑动一个小网络。这个小网络作为feature map。每个滑动窗口被映射到 输入卷积维特征的一个较低的n×n空间窗口。最后将这个低维矢量发送到两个完全连接的层。即 bbox回归层( reg)和 box分类层(cls)。其中,reg层的作用是预测proposal的anchor对应的proposal的(x,y,w,h),cls层的作用是判断该proposal是前景(object)还是背景(non-object)。
anchor机制:
  同时预测多个地区的提议,其中每个位置可能的最大建议数记为k。所以reg层4 k输出编码k框的坐标,和cls层输出2k分数估计概率的对象或对象的建议。k个建议是相对于k个参考框参数化的,称之为锚。锚位于所述滑动窗口的中心,并与比例和高宽比相关(图3,左侧)。
  把每个点当作一个下锚的地方,每个点生成若干个框代表撒网的意思。把整幅特征图当作汪洋的大海,没过一个点下一个锚,然后开始撒网捕鱼。
  第一步,把feature maps(256张map)拍扁,变成一张图(每个点都是256维)。基于每个256d点开始“下锚”。
  第二步,“下锚”以后开始撒网,即以每一个锚点为中心生成大小不同的k个框。原文中选用的k=9。九个大小形状不一的框,致力于使目标对象能出现在某个框中。框的大小也是有讲究的,如下:
目标检测:Faster RCNN网络详解_第3张图片
  选用长宽比{1:1,2:1,1:2}三种,大小也有三种。如下图:
目标检测:Faster RCNN网络详解_第4张图片
  对于feature maps上的点(每个点维度是256),以每个点为中心生成9个大小不一的框,那么一定有跟ground truth很接近的框。
边界框回归:
图像的损失函数的定义:
目标检测:Faster RCNN网络详解_第5张图片
  其中分类的损失函数包含两个类(对象和非对象),回归损失函数:
在这里插入图片描述
  对于(1)来说,意味着回归损失只有正锚点才会被激活(当p_i^* =1时)。
  对于Bounding box regression,采用以下四个坐标的参数化:
目标检测:Faster RCNN网络详解_第6张图片
  其中,x, y, w, h表示盒子的中心坐标及其宽度和高度。以X、Xa、X*为例,分别为为预设框,锚框,和地面真相框(likewise for y; w; h)。
宏观上可以这么理解:
目标检测:Faster RCNN网络详解_第7张图片
A是anchor,G’是调整后的,G是GroundTruth。那么对A的这个调整,就是Bounding Box回归。当bbox和GT比较接近时,调整框操作才可以使用线性回归模型。
线性回归模型:

  1. 回归模型的作用:微调整bbox的位置和大小。每个bbox可以由四个数值来表示(中点坐标x,y和长宽l,w)。平移bbox只需在x,y上作加减,调整大小只需在l,w上作乘法。
  2. 回归模型的输出:x,y上的增量以及l,w的系数。即,输出也是4个值。
  3. 回归模型的输入:bbox在feature maps上划下的区域。
    训练:
      本文中,采用一种实用的四步训练算法(更多次迭代意义不大),通过交替优化来学习共享结构。
      1.按照描述来训练RPN。该网络使用ImageNet预训练的模型进行初始化,并针对区域建议任务进行端到端的微调。
      2. 利用步骤1中训练好的RPN网络,收集proposals。ImageNet预训练模型初始化,训练Fast R-CNN。(与1中,两个网络不共享卷积层。)
      3. 使用2中的网络参数来初始化RPN训练,但是我们修正了共享的卷积层,只微调了RPN特有的层。现在这两个网络共享卷积层。
      4. 保持共享的卷积层不变,我们微调Fast R-CNN的独特层。
    如下图:
    目标检测:Faster RCNN网络详解_第8张图片

RCNN、Fast RCNN、Faster RCNN对比:

目标检测:Faster RCNN网络详解_第9张图片

你可能感兴趣的