Faster R-CNN

Paper : Faster R-CNN
Code : official

摘要

Fast R-CNN将多阶段训练合并到单阶段,并将目标检测算法的结构改进为Region Proposal + CNN classifier/regressor的结构。由于Selective Search 算法进行Region Proposal时,SS算法本身并不是深度学习算法,运行在CPU上,因此计算的瓶颈位置在于SS算法上。Faster R-CNN开创性地提出了RPN网络用来进行Region Proposal的工作,而由于RPN的结构与classifier/regressor相近,都是多层卷积后接全连接的结构,因此作者提出共用卷积部分的参数,加速训练和测试。我认为这篇文章值得关注的有以下几点

  • RPN的结构
  • 使用DNN进行回归任务时,损失函数的设计
  • 对于共用卷积层的网络,训练的方式

正文

Faster R-CNN整体框架

在这里插入图片描述
上图是论文中的原图,比较粗糙,下图是源自一文读懂Faster RCNN 给出的Vgg16作为base model的Faster R-CNN模型的结构
在这里插入图片描述

  • 首先将输入图片缩放至固定大小MxN,然后将MxN图像送入网络
  • Conv layers部分包含了13个conv层+13个relu层+4个pooling层
  • RPN网络首先经过3x3卷积,再分别生成positive anchors和对应bounding box偏移量,然后计算出proposals
  • 后面的与Fast R-CNN结构相同,RoI Pooling层利用proposals从feature maps中提取proposal feature送入后续全连接和softmax网络作物体分类和更加精细的bounding box位置的回归

RPN

RPN接受任意尺寸的图片输入,输出矩形窗的集合表示RoI,每个RoI还会输出一个分数表示是物体还是背景。RPN使用全卷积神经网络实现,前若干层卷积的参数与Fast R-CNN共用,如框架中所示。为了生成RoI,RPN在共享的卷积层生成的特征图上使用固定长度的窗口进行滑动,在图中显示为3*3的卷积层接ReLU激活函数
在这里插入图片描述
设卷积的输出为 C*H*W 传递给两个分支部分,上面一个分支负责预测给RoI区域打分,下面一个分支负责对Anchor 进行回归,用来提高RoI的准确性。

Anchor :所谓anchors,实际上就是一组预先定义好长宽比和尺寸的矩形,使用这些矩形进行Region Proposal的粗粒度初始化,通过RPN的回归进行细粒度调整,Anchors的尺寸长宽比可以根据实际情况进行调正。Paper的实验中选择了三种尺寸的长宽比 { 1 : 1 , 1 : 2 , 2 : 1 } \{1:1,1:2,2:1\} {1:1,1:2,2:1},同时选择了三种不同的尺寸 { 12 8 2 , 25 6 2 , 51 2 2 } \{128^2,256^2,512^2\} {1282,2562,5122},因此可以组成3*3中尺寸长宽比不同的Anchors

在这里插入图片描述

RPN采用了遍历的方式来测试Archors的表现,对于上一步卷积输出 C*H*W,需要将9种Archors以每个像素为中心进行计算,因此总共有 H*W*9 个 Archors 进行计算,对于每个Archors都需要使用RPN进行打分和bounding box的回归,打分采用二分类的方式,因此输出规模为 2*9*H*W,而bounding box回归需要对 x,y,w,h 四个参数进行回归,输出规模为 4*9*H*W。FPN采用1*1的卷积核来进行feature map到结果的转换,因此在上图中标有18和36。

下图也说明了类似的事情,在原文中使用的是ZF model中,其Conv Layers中最后的conv5层channel=256,对应生成256张特征图,所以相当于feature map每个点都是256-dimensions
在conv5之后,做了3x3卷积且channel=256,相当于每个点又融合了周围3x3的空间信息,同时256-d不变。

在这里插入图片描述
作者认为,Anchors具有以下两点优势

  • 平移不变性
  • 相比于图片金字塔处理和多尺寸滑动窗口,Anchors使用多尺寸的Anchor来处理检测目标具有尺寸的问题,节省计算力

RPN的训练:RPN的训练包含两部分,第一部分是根据feature map 和 Archor进行打分,第二部分是根据feature map和Archor进行回归

RPN将满足以下条件的Archor标记为positive

  • 与ground truth box IoU最高的Archor
  • 与ground truth box IoU得分高于0.7的Archor

将以下的Archor标记为negtive

  • 与所有ground truth box IoU得分都低于0.3

其他的Archor对训练目标无贡献,这一步用来生成训练RPN打分部分的样本。实际上,我们每个mini batch 都是从一张图片上抽取出来的正负样本比例相当的Archor来训练,全部anchors拿去训练太多了。

假定 (x,y,w,h) 分别表示一个矩形的中心点坐标,宽度和高度,那么Archor 表示为 A = ( A x , A y , A w , A h ) A = (A_x,A_y,A_w,A_h) A=(Ax,Ay,Aw,Ah),ground truth box 表示为 G = ( G x , G y , G w , G h ) G = (G_x,G_y,G_w,G_h) G=(Gx,Gy,Gw,Gh),那么回归任务即找到一种变换方式使得 F ( A ) = G ‘ F(A) = G‘ F(A)=G,且 G ′ ≈ G G'\approx G GG
在这里插入图片描述
在这里固定变换 F F F的形式,而是学习 F F F的参数, F F F的形式为

G x ′ = A w ⋅ t x ( A ) + A x G y ′ = A h ⋅ t y ( A ) + A y G w ′ = A w ⋅ exp ⁡ ( t w ( A ) ) G h ′ = A h ⋅ exp ⁡ ( t h ( A ) ) \\G'_x = A_w \cdot t_x(A)+A_x \\G'_y = A_h \cdot t_y(A)+A_y \\G'_w = A_w \cdot \exp(t_w(A)) \\G'_h = A_h \cdot \exp (t_h(A)) Gx=Awtx(A)+AxGy=Ahty(A)+AyGw=Awexp(tw(A))Gh=Ahexp(th(A))

前两个对应平移变换,后两个对应缩放。因此,对于bounding box回归任务来说,学习和预测的结果是 t x , t y , t w , t h t_x,t_y,t_w,t_h tx,ty,tw,th
在这里插入图片描述
其中, x , x a , x ∗ x,x_a,x^* x,xa,x分别对应回归输出,archor,ground truch。对于RPN来说,总损失函数如下

L ( { p i } , { t i } ) = 1 N c l s ∑ i L c l s ( p i , p i ∗ ) + λ N r e g ∑ i p i ∗ L r e g ( t i ∗ , t i ) L(\{p_i\},\{t_i\}) = \frac{1}{N_{cls}}\sum_i L_{cls}(p_i,p_i^*) +\frac{\lambda}{N_{reg}}\sum_i p_i^* L_{reg}(t_i^*,t_i) L({pi},{ti})=Ncls1iLcls(pi,pi)+NregλipiLreg(ti,ti)

其中, L c l s L_{cls} Lcls使用对数损失函数, L r e g L_{reg} Lreg使用smooth L1损失函数。实验时, N c l s = 256 N_{cls} = 256 Ncls=256,而 N r e g ∼ 2400 N_{reg} \sim 2400 Nreg2400,因此默认设置 λ = 10 \lambda = 10 λ=10,实验表明算法对该超参数不敏感。

在这里插入图片描述
在这里插入图片描述

Faster R-CNN训练

论文中采用四步迭代法进行训练

  1. 在ImageNet pretrained模型上finetune,训练RPN网络
  2. 使用第一步中训练好的RPN模型进行Region Proposal,在ImageNet pretrained model上finetune Faster R-CNN,此时没有卷积层共享
  3. 使用Faster R-CNN的卷积层替换RPN的卷积层,进行共享,固定卷积参数,finetune RPN模型
  4. 保持卷积参数固定,finetune Faster R-CNN模型

更多的迭代根据实验来看并没有产生更好的效果,说明算法收敛了

在这里插入图片描述

论文中的实现细节:

  • 作者首先将图片短边放大到600px,然后传入网络,此时对应的archor选取为

    For anchors, we use 3 scales with box areas of 1282, 2562, and 5122 pixels, and 3 aspect ratios of 1:1, 1:2, and 2:1.

  • 在训练中,对于穿过图片边界的Archor,我们忽略掉它们

    If the boundary-crossing outliers are not ignored in training, they introduce large, difficult to correct error terms in the objective, and training does not converge.

  • 测试时,对于RPN生成的穿过边界的RoI,我们clip到边界内,然后使用NMS取IoU threshold = 0.7进行舍弃,选择最高的若干个传递给后面的检测器

总结

Faster R-CNN的核心贡献包括以下几点:RPN结构,卷积参数共享结构的训练,Archor的提出。目前大多数双阶段目标检测模型都是在Faster R-CNN的基础上进行改进和加工。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值