目标检测之R-FCN网络

论文地址:https://arxiv.org/abs/1605.06409
Github代码:Matlab版Python版

背景

在Fast R-CNN中,rbg利用 ROI Pooling 解决了不同尺寸 proposal 的特征提取问题,在其升级版 Faster R-CNN 中rbg进一步提出了 RPN 网络,通过共享输入图像的卷积特征,快速生成 proposal。纵观整个 R-CNN 系列的发展过程,我们可以发现,Fast R-CNN中之所以引进 ROI Pooling 是因为网络中全连接层的存在。事实上,一些state of art的图片分类网络均为全卷积网络,如ResNet、GoogLeNet等。所以很自然地,是否可以将目标检测的网络也用全卷积网络来实现?事实证明,如果简单地丢弃全连接层(实现融合特征和特征映射),检测的效果会很差。

作者认为这主要来源于这样的一对矛盾:

图像分类:要求图像具有平移不变性(translation invariance)
目标检测:要求图像具有位置敏感性(translation variance)

Region based Fully Convolutional Network(R-FCN)的提出即是为了解决这样的一对矛盾,R-FCN中的一个关键层是位置敏感ROI池化层(position-sensitive RoI pooling layer)。

R-FCN结构

r-fcn

首先来看一下R-FCN的网络结构。和Faster R-CNN一样,R-FCN也是 基于region proposal的两级检测架构。

“对于region-based的检测方法,以Faster R-CNN为例,实际上是分成了几个subnetwork,第一个用来在整张图上做比较耗时的conv,这些操作与region无关,是计算共享的。第二个subnetwork是用来产生候选的boundingbox(如RPN),第三个subnetwork用来分类或进一步对box进行regression(如Fast RCNN),这个subnetwork和region是有关系的,必须每个region单独跑网络,衔接在这个subnetwork和前两个subnetwork中间的就是ROI pooling。我们希望的是,耗时的卷积都尽量移到前面共享的subnetwork上。因此,和Faster RCNN中用的ResNet(前91层共享,插入ROI pooling,后10层不共享)策略不同,本文把所有的101层都放在了前面共享的subnetwork。最后用来prediction的卷积只有1层,大大减少了计算量。”

R-FCN 首先也是一个RPN的网络,用于生成和训练proposal(ROI)。所不同的是,Faster R-CNN中,ROI Pooling层直接对ROI进行分块池化输出用于分类和回归的特征向量。

R-FCN中,则将每一个ROI划分成k×k个格,池化输出每个格的位置得分,再通过投票方式得到 ROI 最后的输出特征向量。的首先生成 k^2(C+1) 通道大小的输出。其中,C 为类别数(+1为背景), k^2 表示将ROI区域划分成 k×k个格,如上图所示。如 k=3,则对应9个格,分别为上左(左上角),上中,上右,中左,中中,中右,下左,下中,下右(右下角),如下图所示:

Backbone网络:ResNet101——去除原始网络最后的平均池化层和全连接层,保留100层的卷积层用于特征提取。为了降维,100层卷积层之后又添加了一层1×1×1024的卷积层,使输出维度变成1024(原始的是2048)。之后再接一层卷积层用于产生得分图。

位置敏感得分图&位置敏感ROI Pooling:将w×h大小的ROI划分成k×k个格(大小 ≈ \frac{w}{k}×\frac{h}{k})。对每个格进行位置敏感池化操作,如下式:
r(i,j|Θ) = \sum_{(x,y)∈bin(i,j)}^{}z_i,_j,_c(x+x_0,y+y_0|Θ)/n
式中,r(i,j|Θ)是第(i,j)个格的池化响应;z_i,_j,_c表示k^2(C+1) 中的一个得分图;(x_0,y_0)表示ROI左上角的格。

k^2个得分图通过投票(eg.求均值)后得到ROI上 C+1 维的输出向量。后接一个softmax层得到每一类的最终得分,并在训练时计算损失,如下图。

ROI的位置回归:R-FCN的位置回归方式与R-CNN和Fast R-CNN相似。上面说到,在base网络的 feature map 之后连接了一层卷积用于产生k^2(C+1)维的位置敏感得分图。此处仍然从base网络上连接一个 4k^2 通道的得分图(与位置敏感得分图并列),用来做 ROI 的坐标微调。同样对这个 4k^2 大小的得分图进行 ROI Pooling操作,输出 t=(t_x, t_y, t_w, t_h) 大小的 4 维坐标向量。

训练的相关细节:损失函数与Fast RCNN相似,分类部分为交叉熵损失,回归部分为平滑L1损失,总的损失为这两部分的和:

L(s, t_{x, y, w, h}) = L_{cls}(s_{c^*}) + \lambda[c^* > 0]L_{reg}(t, t^*)

  1. IoU大于0.5的ROI被当做正样本,其余作为负样本
  2. 采用单尺度训练,尺度大小为600像素(min(w, h))。每张图片通过OHEM选取128个hard example做反向传播
  3. 分别用学习率为0.001,20k次迭代;学习率为0.0001,10k次迭代在VOC数据集上做微调
  4. 采用类似Faster R-CNN中的4步训练策略交替训练RPN网络和R-FCN网络

推理部分:与Faster R-CNN等类似,采用阈值0.7的NMS进行非极大值抑制。

À trous卷积和stride调整:R-FCN调整了部分卷积核的stride大小(conv4及之前的保持stride=16,conv5的stride由2变为1)。同时,conv5上的卷积采用À trous卷积(空洞卷积),补偿减小stride带来的影响。

实验结果

VOC数据集

1. 与Faster R-CNN的对比

2. ResNet深度、ROI生成策略的影响

COCO数据集

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,616评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,020评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,078评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,040评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,154评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,265评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,298评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,072评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,491评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,795评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,970评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,654评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,272评论 3 318
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,985评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,223评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,815评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,852评论 2 351

推荐阅读更多精彩内容