深度学习·神经网络·计算机视觉Artificial Intelligence读论文

读论文系列:Object Detection NIPS2015

2018-03-29  本文已影响56人  梦里茶

转载请注明作者:梦里茶

Faster RCNN在Fast RCNN上更进一步,将Region Proposal也用神经网络来做,如果说Fast RCNN的最大贡献是ROI pooling layer和Multi task,那么RPN(Region Proposal Networks)就是Faster RCNN的最大亮点了。使用RPN产生的proposals比selective search要少很多(300vs2000),因此也一定程度上减少了后面detection的计算量。

Introduction

Fast RCNN之后,detection的计算瓶颈就卡在了Region Proposal上。一个重要原因就是,Region Proposal是用CPU算的,但是直接将其用GPU实现一遍也有问题,许多提取规则其实是可以重用的,因此有必要找一种能够共享算力的GPU版Region Proposal。

Faster RCNN则是专门训练了一个卷积神经网络来回归bounding box,从而代替region proposal。这个网络完全由卷积操作实现,并且引入anchor以应对对象形状尺寸各异的问题,测试速度与Fast RCNN相比速度极快。

这个网络叫做region proposal layer.

RPN

RPN

训练数据就是图片和bounding box

两个FC在实现的时候是分别用两个1x1卷积实现的


FC

以橙色为例,256向量和W1矩阵相乘,得到长度为18的向量,这样的操作在51x39个feature都要做一遍,实现起来就很自然变成了用一个1x1的卷积核在feature map上做卷积啦,这样也暗含了一个假设,不同位置的slide window对于anchor的偏好是相同的,是一个参数数量与精度的权衡问题。

上面这个过程可以完全独立地训练,得到一个很好的Region Proposal Network

理论上我们可以用上面这个流程去训练RPN,但训练RPN的时候,一个batch会直接跑20K个anchor开销太大了。

因此最终的一个mini batch的训练损失函数为:

RPN Loss

其中,

但这就意味着loss中的mini-batch size是以3x3的slide window为单位的,因为只有slide window和anchor的个数才有这种1:9的关系,而挑选训练样本讲的mini-batch size却是以anchor为单位的,所以我猜实际操作是这样的:

论文这里讲得超级混乱:

minibatch anchor

Proposal layer

其实这也可以算是RPN的一部分,不过这部分不需要训练,所以单独拉出来讲

Anchor Filter

Fast RCNN

接下来就是按照Fast RCNN的模式来训练了,我们可以为每张图前向传播从proposal_layer出来得到最多300个proposals,然后

迭代训练

RPN和Fast RCNN其实是很像的,因此可以一定程度上共享初始权重,实际训练顺序如下(MATLAB版):

  1. 先用ImageNet pretrain ZF或VGG
  2. 训练RPN
  3. 用RPN得到的proposal去训练Fast RCNN
  4. 用Fast RCNN训练得到的网络去初始化RPN
  5. 冻结RPN与Fast RCNN共享的卷积层,Fine tune RPN
  6. 冻结RPN与Fast RCNN共享的卷积层,Fine tune Fast RCNN

论文中还简单讲了一下另外两种方法:

Approximate joint training

SUMMARY

网络结构和训练过程都介绍完了,实验效果也是依样画葫芦,就不再介绍了,整体来说,Faster RCNN这篇论文写得很乱,很多重要的细节都要去看代码才能知道是怎么回事,得亏是效果好才能中NIPS。。

上一篇 下一篇

猜你喜欢

热点阅读