前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >论文阅读: Fast R-CNN

论文阅读: Fast R-CNN

作者头像
JNingWei
发布2018-09-27 11:28:04
7640
发布2018-09-27 11:28:04
举报
文章被收录于专栏:JNing的专栏

Introduction

structure层面

论文中给出了Fast R-CNN的大致结构。需要注意的是,右半边的结构图(灰底色)中,黑框表示operation红框表示output

这里写图片描述
这里写图片描述

我画了一个流程图,用来解释Fast R-CNN的形成:

这里写图片描述
这里写图片描述

如图所示,R-CNN留下了两大问题亟待后人解决: 1. feature map不共享; 2. mutli-stage (特征抽取、SVM分类、location回归) 太复杂太costly。

第一个问题,被前辈SPPNet通过 共享卷积 (本质上就是共享特征提取的结果) 解决了。 Fast R-CNN继承了SPPNet这一思想,并把SPPNet的SPP layer改进为了RoI Pooling。

Note

  • SPP layer是在RP上做3-stage (每个scale宽高比相等但H×WH×WH×W大小不等) 的average pooling;RoI Pooling将之简化为1-stage的max pooling。
  • 由于SPP layer有着明显的缺陷——pooling后得到的一根根tensor并没有按原先的位置排放成阵列,而是直接头尾相接,从而放弃了重要的位置信息,对RoI的分类不利。Fast R-CNN对此进行了修正。

由于这个时期人们都只在topmost-feature map上进行RP操作,因此,弃SPP layer 而用RoI Pooling相当于主动放弃了SPPNet中的multi-scale思想。而这一multi-scale思想在SSD中通过multi-feature map再次被发扬光大,并成为了之后的detection算法标配。当然,这都是后话。

针对第二个问题,特征抽取网络、SVM分类器、location回归器在Fast R-CNN中被整合到了同一个深度学习网络中,从此可以便捷快速地一起训练了。

loss层面

LlocLlocL_{loc} :由R-CNN、SPPNet时代沿用的 L2L2L_2 演化为了 Smooth L1Smooth L1Smooth\ L_1 。

batch层面

RBG大神提出了mini-batch (即N=2) 的认知。

basemodel层面

出于basemodel的限制,R-CNN、SPPNet的basemodel用的都是AlexNet。到了Fast R-CNN的时候,已经有VGG了。于是Fast R-CNN采用了VGG-16作为其basemodel。

在SPPNet中,由于其basemodel是AlexNet这种小网络,所以SPPNet的作者们说,train的时候只fine-tune最后的几个fc层,模型精度最高。 RBG大神说,这套定理到了以VGG-16为basemodel的深网络中就不适用了。RBG大神做了一系列ablation,发现沿用SPPNet的fine-tune定理会掉点:

这里写图片描述
这里写图片描述

而如果把fine-tune的范围往前一直扩大到conv3_1 (再往前就对mAP几乎没有提升了) 则效果最好。

compute层面

从time的角度来看,fc层的存在对于单图的cls任务而言,耗时占比小于前面的那些conv层;但在detection任务中,conv只需执行一次,fc却要执行几千次 (对每个RoI都要完整地走一遍fc) ,此时在fc上的耗时就占到了总耗时的50%。

RBG大神给出了解决方案:通过TSVD (截断奇异值分解) 来简化计算。 该方法节省了30%的detection耗时,mAP只牺牲了0.3%:

这里写图片描述
这里写图片描述

Innovation

宏观上,

  • 从 stage 的角度来看,是从 four-stage 到 two-stage 的演进;
  • 从 task system 的角度来看,是从 two-network system (将分类器和定位回归器用两个网络分开,各自独立训练) 到 one-network system (虽然这两个task是并行的,但都属于同一个network,可以一起训练) 的演进。

Result

Fast R-CNN在VOC数据集上吊打其他算法。

VOC2007:

这里写图片描述
这里写图片描述

VOC2010:

这里写图片描述
这里写图片描述

VOC2012:

这里写图片描述
这里写图片描述

Thinking

Fast R-CNN最吸引我的地方是它第一个将三个独立的任务 (feature extraction、cls、loc regression) 三合为一。将原本笨拙的Detection惯用设计大大精简,Simple is powerful。

到了Faster R-CNN,更是将Selective Search也替换为了能无缝衔接的RPN,从此,Detection的四大任务 (feature extraction、region proposal、cls、loc regression) 归于一统 (可以被一起训练了) 。


[1] Fast R-CNN

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018年05月15日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Introduction
    • structure层面
      • loss层面
        • batch层面
          • basemodel层面
            • compute层面
            • Innovation
            • Result
            • Thinking
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档