[深度学习]Object detection物体检测之Faster R-CNN(5)

目录

1.综述

2.Region Proposal Networks (RPN)

Anchor(锚)

loss function

Training RPNs

3.Sharing Features for RPN and Fast R-CNN 

1.交替训练 Alternating training

2.近似联合训练 Approximate joint training

3.非近似联合训练Non-approximate joint training


论文全称:《Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks》

论文地址:https://arxiv.org/pdf/1506.01497.pdf

1.综述

提出的背景是proposals成为了当前各种detection模型里面计算资源时间消耗最大的一部分,无论是selective search还是EdgeBoxes,对比起detection部分的网络都是在复杂度上要高很多。所以为了解决这个问题提出了Region Proposal Networks (RPNs),使用深度卷积神经网络计算proposals,可以得到一种优雅而有效的解决方案,在这种方案计算中,由于detection网络的计算的共享,proposal的计算几乎是不花费任何资源的。(计算proposal可以达到10张每秒)

三个detection算法的对比可以参考下图。

FASTER R-CNN由两个模块组成,第一个模块是一个fully convolutional network深度完全卷积的网络,用于提出region proposal,第二个模块是使用region proposal的Fast R-CNN detector。论文使用最近流行的‘attention’ mechanisms注意力机制,RPN模块告诉Fast R-CNN模块关注什么值得关注的区域。

2.Region Proposal Networks (RPN)

区域提议网络(RPN)接收任何大小的图像作为输入和输出的一组矩形region proposal,每个proposal都有一个物体的得分。下图便是它的结构。在卷积输出的feature map上再次生成一个a small network每个滑动窗口都映射到一个低维feature(图中的256-d),这个feature被输入到两个完全连接的层中——一个box-regression层(reg)和一个box-classification层(cls)

Anchor(锚)

上图的中间部分有一个重要的概念——Anchor(锚)

Anchor锚的中心是就是滑动窗口的中心,Anchor与比例和长宽比相关联。如上图之中每个Anchor的大小和比例都是不同的。论文里面默认是使用三种大小,三种长宽比,所以Anchor的个数k=9,若一张feature map的大小是W*H,那么就会有W*H*k个Anchor。这种方法是具有平移不变性的。也就是object平移了,预测proposal也会跟着平移。

loss function

在这里,i是一个anchor 在mini-batch中的索引,pi是anchor i作为一个object的预测概率。pi∗代表真实的标签(即是否为一个object),如果anchor是positive的(是object),该值为1,如果anchor是negative的(不是object),该值为0。 ti 是一个4维向量代表参数化预测边界框的坐标,和t∗是ground-truth 的边界框坐标(与positive anchor关联)。分类损失Lcls是两个类(objectvs.no object)的损失 函数。回归的损失,使用Lreg(ti,t∗i)= R(ti−t∗),R是健壮的损失函数(光滑L1),在rcnn论文中已经定义。回归损失之所乘一个pi∗,指的是在positive的时候才计算回归损失。

前面两部分乘一个分母代表一种正则化。并且引入了一个一个平衡参数λ。

Training RPNs

RPN可以通过反向传播和随机梯度下降(SGD)进行端到端训练。每个minibatch都来自一个包含许多positive示例anchor和negative示例anchor的一张image。如果对所有anchor的损失函数进行优化是可能的,但这将偏向于negative,因为negative的样本比重大。相反,在图像中随机抽取256个anchor,计算小他们的损失函数,其中positive anchor和negative anchor的比例几乎是1:1。如果一幅图像中有少于128个positive样本,就用negative样本填充。

使用随机初始化所有新层,从0均值高斯分布中初始化权重,标准差为0.01。分类的卷积层则是来自imagenet的pre-trained model。

3.Sharing Features for RPN and Fast R-CNN 

论文给出了三种方式共享卷积网络的feature:

1.交替训练 Alternating training

先训练RPN,再使用PRN的proposal来训练Fast R-CNN,经过Fast R-CNN调整的权重再作为RPN的初始化。这个过程是迭代的,并且贯穿了整篇论文的实验。

2.近似联合训练 Approximate joint training

RPN和Fast R-CNN网络在训练过程中合并成一个网络。在每个SGD迭代中,前向遍历生成region proposals,当训练一个快速R-CNN检测器时,这些proposals就像固定的、预先计算好一样。反向传播像往常一样进行,对于共享层,将来自RPN损失函数和快速R-CNN损失函数的反向传播信号结合起来。这个解决方案很容易实现。

3.非近似联合训练Non-approximate joint training

在一个非近似的联合训练解决方案中,需要一个RoI池层,它是可微的w.r.t.盒坐标。可以通过“RoIwarping”层来解决,这超出了本文的范围。

 

本论文采取了四步交替训练

  1. 在第一步中,按照上面Training RPNs的描述训练RPN。这个网络是用imagenet预训练的模型初始化的,并针对 region proposal任务对端到端进行了微调。
  2. 在第二步中,使用step-1 RPN生成的proposal,用Fast R-CNN训练一个单独的检测网络。这个检测网络也是由imagenet预训练模型初始化的。此时,这两个网络并不共享卷积层。
  3. 在第三步中,使用Fast R-CNN检测器网络初始化RPN训练,但是固定共享的卷积层,只微调RPN特有的层。现在这两个网络共享卷积层。
  4. 最后,保持共享卷积层的固定,微调独特的R-CNN层。因此,两个网络共享相同的卷积层,形成一个统一的网络。

类似的交替训练可以用于更多的迭代,但是观察到的改进微不足道。

一些RPN region proposal相互之间有很大的重叠。基于他们的cls分数,对 region proposal使用非最大抑制(NMS)减少冗余。将NMS的IoU阈值固定在0.7,这使得每个图像大约有2000个提案区域。NMS不会损害最终的检测准确率,但是会大大减少proposal的数量。在NMS之后,使用排名前n的region proposal进行检测。接下来,使用2000个RPN proposal训练快速R-CNN,但是在测试时评估不同数量的proposal。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值