MXNet的Faster R-CNN(基于区域提议网络的实时目标检测)《2》

上一篇文章 是对这个模型做个测试,效果很不错,然后这节,我们来关注下论文中的一些知识点 

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

本文不是按照原论文的顺序一路下来讲解,按照自己对其的理解做说明,希望能够帮到大家的更进一步的理解

这个模型既然是基于区域提议网络(Region Proposal Network (RPN)),那这个RPN的方法在这个模型中起到什么作用呢?
作用:可以训练出一个判断图片中是否有对象以及是否生成边界框的区域方案的网络,也就是说可以判别出图片中包含哪些对象,还可以通过锚框给标注出来。我们先来看下论文中的一张图:

MXNet的Faster R-CNN(基于区域提议网络的实时目标检测)《2》_第1张图片

左边:在卷积特征图上面有一个sliding window滑动窗口,在它的中心位置点叫,在滑动的时候会预测多个区域提议(锚框),而且这个锚是不变的,始终保持在中心位置。这个锚框数的数量在这里默认是9,是3个尺度和3个纵横比的组合,3*3=9
右边:是VOC数据集的测试效果,可以看到图片中的各种对象都识别出来了,且生成了锚框标注。
我们的锚点设计提出了一种解决多尺度(和纵横比)的新方案。由于这种基于锚点的多尺度设计,我们可以简单地使用在单尺度图像上计算的卷积特征,正如Fast R-CNN检测器所做的那样。多尺度锚点的设计是共享特征而无需额外寻址尺度成本的关键组件。

平移不变锚

我们的RPN方法的一个重要特性是,它是平移不变的,无论是就锚点而言,还是就相对于锚点计算提议的函数而言。
平移不变的属性还可以减小模型的大小。
如,在MultiBox有一个(4 + 1)×800=4000维全连接输出层,且不是平移不变,而我们的方法在k = 9个锚点的情况下是一个(4 + 2)×9=54维卷积输出层。可以看出在使用RPN方法,这个参数量就小很多了。

多尺度预测

对于多尺度的预测,除了我们这里说到的移动滑窗的方法,还有就是常见的基于图像和特征金字塔,图像在多个比例尺上调整大小,并为每个比例尺计算特征图。这种方法通常很有用,但很耗时,所以我们使用这种在特征图上运用滑动窗口的办法。

例如,在DPM和基于CNN的方法,使用不同的过滤器大小(如5×7和7×5)分别训练不同纵横比的模型。如果使用这种方式来处理多个尺度,则可以将其视为“过滤器金字塔”,第二种方式通常与第一种方式一起采用,如下图: MXNet的Faster R-CNN(基于区域提议网络的实时目标检测)《2》_第2张图片

(a)构建图像和特征图的金字塔,并在所有尺度上运行分类器。
(b)在特征图上运行多个比例尺度/大小的过滤器金字塔。
(c)我们在回归函数中使用金字塔的参考框。

损失函数

两部分组成,分类损失和回归损失,直接上公式看下损失函数,是归一化的分类log损失+λ*回归log损失,其中的回归损失有一个超参数λ,从后面实验的参数比对,设置成10的效果最好,也是默认值

MXNet的Faster R-CNN(基于区域提议网络的实时目标检测)《2》_第3张图片

p_{i}:预测锚是一个物体的概率,p_{i}^{*}:正类锚框1与负类锚框0,N_{cls}:迷你批处理大小256

t_{i}:预测边界框(4个参数化坐标的向量),t_{i}^{*}:正类锚框相关的基本真实方框的情况,N_{reg}:锚点数量2400

回归损失可以看到乘以一个p_{i}^{*},说明只跟正类锚框有关,因为负类锚框为0

边界框回归

对于边界框回归,我们采用如下4个坐标的参数化

MXNet的Faster R-CNN(基于区域提议网络的实时目标检测)《2》_第4张图片

x、y、w、h:预测框
x_{a}y_{a}w_{a}h_{a}:锚框
x*、y*、w*、h*:真实框
这样就可以认为是从锚框到附近真实框的边界框回归。

共享特征训练网络 

有三种共享特征的训练网络的方法:

1、Alternating training交替训练。在这个解决方案中,我们首先进行训练RPN,并使用RPN的这些建议来训练Fast R-CNN。然后使用Fast R-CNN调优的网络初始化RPN,并迭代此过程。这是本文所有实验中使用的方法

2、Approximate joint training近似联合训练。RPN网络和Fast R-CNN网络在训练过程中合并为一个网络,在每个SGD迭代中,前向传递生成区域建议,这些建议在训练Fast R-CNN检测器时被视为固定的预先计算的建议。反向传播照常进行,其中对于共享层,来自RPN损失和Fast R-CNN损失的反向传播信号被组合在一起。这个解决方案很容易实现。但是这个解决方案忽略了w.r.t.的导数,提议框的坐标也是网络响应,所以叫做近似。在我们的实验中,我们经验地发现该求解器产生了接近的结果,但与交替训练相比,训练时间减少了约25-50%。

3、Non-approximate joint training非近似联合训练。RPN预测的边界框也是输入的函数。在Fast R-CNN中的RoI池化层接受卷积特征和预测的边界框作为输入,因此理论上有效的反向传播求解器也应该涉及到框坐标w.r.t.的梯度,这些梯度在近似联合训练中被忽略,在非近似联合训练解决方案中,我们需要一个RoI池化层,该层可微于框坐标。这不是一个简单的问题,可以通过“RoI翘曲”层给出解决方案,但这超出了本文的讨论范围

交替优化来学习共享特征

第一步,训练RPN,使用ImageNet预训练的模型初始化该网络,并对区域建议任务进行端到端微调

第二步,我们使用第一步RPN生成的建议,用Fast R-CNN训练一个单独的检测网络,该检测网络也由ImageNet预训练模型初始化。在这一点上,两个网络不共享卷积层

第三步,我们使用检测器网络初始化RPN训练,但我们修复了共享的卷积层,只对RPN特有的层进行微调。现在两个网络共享卷积层。

第四步,保持共享卷积层固定,我们微调Fast R-CNN的独特层。因此,两个网络共享相同的卷积层,形成一个统一的网络。类似的交替训练可以进行更多的迭代,但我们观察到可以忽略不计的改进

注意事项

另外需要注意的是,在训练过程中,我们忽略了所有跨界锚点,它们不会造成损失。对于典型的1000 × 600图像,总共大约有20000个(≈60 × 40 × 9)锚点。在忽略跨界锚点的情况下,每张图像大约有6000个锚点用于训练。如果训练中不忽略边界异常值,则在目标中引入较大的、难以修正的误差项,训练不收敛。

其余部分主要就是小结和一些不同模型不同数据集下的实验数据的对比,这里就忽略不赘述了。在最后,论文也再次说明了使用这种方法可以探测到尺度和纵横比范围很广的物体。每个输出框都与一个类别标签和softmax[0,1]产生的分数阈值相关联着。而且利用下游检测网络的特点,区域提议的步骤几乎是零成本的。我们的方法使统一的、基于深度学习的对象检测系统能够以接近实时的帧速率运行。学习的RPN还提高了区域提议的质量,从而提高了整体目标检测精度。

这几天羊了,反复发烧,还好白天又好了,喉咙太痛,还是坚持先把论文过一遍,由于水平有限所以其中的错误之处或不全面在所难免,有错误望伙伴们指正,一起交流进步。 

你可能感兴趣的:(深度学习框架(MXNet),RPN区域提议网络,Faster,R-CNN论文,RPN损失函数)