Fast R-CNN

论文:Fast R-CNN
来源:ICCV 2015

1. Motivation

  • Fast R-CNN旨在实现端到端训练。

2. Fast R-CNN

2.1 整体流程

  1. 产生候选区域:使用Selective Search找出输入图片中可能存在目标的侯选区域region proposals
  2. CNN提取特征:使用一个CNN对整张图像进行特征提取
  3. 区域映射:将候选区域大小映射到特征层上
  4. RoI pooling:将尺寸不同的RoI特征图pool至相同的固定大小,展平后再经过几层FC层,得到RoI特征向量。
  5. softax多分类及边界框回归:用全连接层做分类和回归
  6. NMS:剔除重叠建议框,得到该列即该类中得分最高的一些建议框。

在这里插入图片描述

注:步骤1,2,3属于SPPnet,步骤4借鉴SPP层,步骤5是Fast R-CNN新提出来的步骤。

2.2 RoI pooling层和SPP层的区别:

  • RoI pooling层是SPP层的一个特例。SPP层先产生多个大小不同的特征图,再分别将特征图展平后拼接起来得到固定大小的特征向量,而RoI pooling借用SPP层构造池化核的方法,只产生一个固定大小的特征图(e.g. 7 × 7 7\times7 7×7)。

2.3 多任务损失函数

  • 对于每一个RoI,网络将输出 K + 1 K+1 K+1维的softmax分类概率 p = ( p 0 , p 1 , . . . , p K ) p=(p_0,p_1,...,p_K) p=(p0,p1,...,pK)和4*K维的边界框偏移量(每一个前景类分别对应一个4维的边界框偏移量 t k = ( t x k , t y k , t w k , t h k ) t^k =(t_x^k,t_y^k,t_w^k,t_h^k) tk=(txk,tyk,twk,thk) t k t^k tk的构建与R-CNN和SPPnet一样)。
  • 假设RoI的真实类别为 u u u,边界框回归的训练标签为 v = ( v x , v y , v w , v h ) v= (v_x,v_y,v_w,v_h) v=(vx,vy,vw,vh),则多任务损失函数为:
    L ( p , u , t u , v ) = L c l s ( p , u ) + λ [ u ≥ 1 ] L l o c ( t u , v ) L(p,u,t^u,v)=L_{cls}(p,u)+\lambda[u\geq 1]L_{loc}(t^u,v) L(p,u,tu,v)=Lcls(p,u)+λ[u1]Lloc(tu,v) L c l s ( p , u ) = − l o g ( p u ) L_{cls}(p,u)=-log(p_u) Lcls(p,u)=log(pu)在这里插入图片描述
    使用smoothL1损失,是为了减小对异常点的敏感程度。回归问题的偏移量可以是无界的,R-CNN和SPPnet使用L2损失可能会导致梯度爆炸,使用smoothL1则不会。
    参考:https://blog.csdn.net/weixin_41940752/article/details/93159710

为什么SPPnet无法更新在SPP层之前的卷积层参数,而Fast R-CNN却可以更新在RoI pooling层之前的卷积层参数?这体现了端到端训练的好处。

  • SPPnet的训练步骤与R-CNN一样,先预训练+微调backbone,然后固定backbone,利用backbone提取特征,并训练SVM和边界框回归器。显然在训练SVM和边界框回归器时,SPP层之前的卷积层参数是不变的。
  • Fast R-CNN采用端到端训练后,可以同时更新backbone,分类分支和回归分支的参数。

2.4 新mini-batch采样策略

  • SPPnet在训练时,采用了RCNN的mini-batch采样策略,即每次都从 N = 128 N=128 N=128张图像各选择一个proposal,然后由这128个proposal组成了mini-batch。由于每个RoI的感受野都非常大,通常会覆盖整个输入图像,所以反向传播更新参数的效率是非常低的。
  • Fast R-CNN提出了新的mini-batch采样策略,即每次只从 N = 2 N=2 N=2张图像选择proposal,每张图像选择64个proposal,最终组成batch size=128的mini-batch。对少量图像提取多个RoI,减小了特征提取的时间,减小了训练时间(比SPPnet大约快了64倍)

3. 实验

(1)多任务训练的效果比分段训练更好吗?
在这里插入图片描述
S:AlexNet; M:VGG_CNN_M_1024(which has the same depth as S, but is wider);L:VGG16

  • 每组的第一列:训练和测试都只用分类分支。
  • 每组的第二列:训练时,分类分支和归回分支联合训练;测试时,只用分类分支。
    结论:回归分支也可以提高分类准确度(个人解释是,在存在遮挡时,回归分支可以指引分类分支关注正确的目标区域)
  • 每组的第三列:分段训练:固定第一列训练后得到的模型参数,添加回归分支并进行训练。测试时,同时采用分类分支和回归分支。
    结论:测试时,使用回归分支可以提高目标检测mAP
  • 每组的第四列:训练时,分类分支和归回分支联合训练;测试时,同时采用分类分支和回归分支。
    结论:对比第三、四列,发现多任务训练的效果比分段训练更好。(比第三列好,是因为消除了分类和回归的差异。)

(2)softmax比SVMs效果更好吗?
在这里插入图片描述
实验结论:softmax比SVMs效果稍好一点点,使用softmax的好处是:可以方便实现端到端的训练。

4. 贡献

  1. 实现了除SS提取region proposal外的端到端训练;
  2. 使用多任务损失,进行多任务联合训练。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值