Fast R-CNN(2015)论文笔记

Fast R-CNN

简介

  • 针对当时主流目标检测算法训练都是multi-stage training pipeline,这过程麻烦,且需要额外的存储空间,
  • 论文提出one-stage 训练方案,a multi-task loss,也可以更新所有网络的参数。
  • 模型使用VGG16,比RCNN训练快9倍,测试快213倍,比SPPnet,训练快3倍,测试快10倍。

一、创新点

  • 改进了RCNN和SPPNet的缺点(两者的缺点⻅背景/问题)
    • 除了region proposal使用selective search,其它参数的训练的训练过程是single-stage
    • 训练方案可以更新网络中所有层的参数(而SPPNet无法对卷积层进行finetune)
    • 不需要将feature存储在磁盘中
  • 使⽤softmax进行分类,而非SVM
  • 对全连接层使用truncated SVD进行压缩和加速
  • 速度和准确度(mAP)比RCNN和SPPNet⾼
    • 速度(VGG16):
      • 训练:比RCNN快9倍,比SPPNet快3倍
      • 测试:比RCNN快213倍,比SPPNet快10倍;每张图片0.3秒(不包括region proposal的耗时)
    • 准确度:SOTA,比RCNN和SPPNet都准确,VOC2012上mAP为66%(RCNN为62%)

总结

  • 论文在实验中精度上达到了最优( VOC07, 2010, and 2012)
  • 进行了9组实验

二、论文链接

原文链接

arxiv.org

代码链接

作者code

论文投稿期刊

相关论文

SPPNet:Spatial pyramid pooling in deep convolutional networks for visual recognition

三、论文评价

  • 创新:
    • 首次引入multi-task loss,多阶段训练转为单阶段
    • 主要对训练过程和推理速度作为切入点,进行改进和优化。
      • 文中还对模型的各部分推理时间进行统计分析
  • 行文:
    • 指出当时主流模型(RCNN、SPPNet)的缺点,对比地提出论文的贡献
    • 进行Design evaluation, 有
      • 有Does multi-task training help?
      • Scale invariance: to brute force or finesse?
      • Do SVMs outperform softmax?
      • Do we need more training data?
      • Are more proposals always better?
        等可能影响精度的因素都进行了控制变量的分析,

四、模型

基本流程


在这里插入图片描述

  1. 输⼊:整张图⽚ + ⼀组对应图像的region proposal
  2. backbone输出feature map
  3. RoI pooling(a special case of one-level SPP):为feature map上每个region proposal⽣成fixed-length feature vector
  4. 每个feature vector输⼊到⼀系列FC层中
  5. 2个并行分支
    • 1个FC层 + softmax:对于每个feature vector,⽤softmax(K个category + 1个“background”)进⾏分类,输出形状如1×(K+1)。N个feature vector的话,输出形状则如N×(K+1)◦
    • 1个FC层 + category-specific BBox regressor:对于每个feature vector,为K个category中的每一个都输出4个实数值(offset),输出形状如K*4。N个feature vector的话,输出形状则如N×K*4
  6. NMS:和RCNN⼀样,判断出class之后,独⽴对每个class的所有prediction进⾏筛选

truncated SVD

推理时RoI的数量很多,因此FC层计算的耗时将近是整个forwar pass耗时的⼀半,因此使⽤truncated SVD对较⼤的FC层进⾏压缩以实现加速。

训练

Initialize Fast RCNN from pre-trained networks

使⽤pre-trained network初始化Fast RCNN的3个步骤:

  • 将pre-trained network的最后1个max pooling换成RoI pooling,RoI pooling输出feature map的size(H×W)
  • 将pre-trained network最后1个FC层和softmax替换为Fast RCNN最后的2个并行分支(1个FC层 +softmax,1个FC层 + category-specific BBox regressor)
  • 对pre-trained network进⾏修改,以将1组图片和1组RoI作为输入

hierarchical sampling

  • 由于当每个训练样本(即RoI)来⾃不同image时,SPP层back propagation的效率⾮常低。
  • Fast RCNN中SGD的mini-batch是分层采样的。⾸先采样N张image,每张Image中采样R/N个RoI,
    • 来自相同image的RoI在forward pass和backward pass中共享计算和内存

Multi-task loss


每个RoI的multi-task loss如上式所⽰, λ 是平衡因⼦,[u ≥ 1] 表示计算 K 个类的回归loss,背景0不计算回归loss,因为没有真实标签(gtb)

  • 分类分支
    • 输出 p p p概率值(k+1)个,其中0表示背景
    • 标签 u u u
  • 回归分支
    • 对每个RoI,为每个class k k k,输出一组BBox offset : t k = ( t x k , t y k , t w k , t h k ) t^k=(t^k_{x} ,t^k_{y} ,t^k_{w} ,t^k_{h}) tk=(txk,tyk,twk,thk)
    • 标签:GT BBox offset v = ( v x , v y , v w , v h ) v = (v_{x}, v_{y}, v_{w}, v_{h}) v=(vx,vy,vw,vh)
    • 使用smooth L1 loss
      • 使用smoothL1,可以避免异常值带来的梯度爆炸在这里插入图片描述

五、实验

数据集

  • VOC 2007、2010 and 2012
  • MS COCO

具体实验

3个pre-trained ImageNet network

  • RCNN中的AlexNet,缩写为S(small)
  • VGG_CNNM_1024,缩写为M(medium)
  • VGG16,缩写为L(large)

图⽚scale:均使⽤single-scale(s=600)

实验1,2,3(不同数据集上mAP比较)

在这里插入图片描述

实验4(Training and testing 速度比较)

实验5(Which layers to fine-tune?)

在这里插入图片描述

  • 微调backbone的卷积参数对mAP是有很大帮助的,但并不是所有的网络微调都有用,
    • 像conv1是通用的与任务无关,
    • 从conv2_1开始微调,开始有作用,但仅比conv3_1开始精度就高了一点,但训练速度会慢1.3 倍
      -论文的模型是从conv3_1开始微调的,

实验6(Does multi-task training help?)

在这里插入图片描述

  • 多任务训练有积极影响,不同任务相互影响

实验7(Scale invariance:to brute force or finesse?)

在这里插入图片描述

  • 深度卷积网络本身就擅长学习尺度不变性,更深的模型可能效果会跟好

实验8(Do SVMs outperform softmax?)

实验9(Are more proposals always better?)

  • 不需要太多region proposal
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值