R-FCN 笔记

R-FCN:Region-based Fully Convolutional Network

R-FCN 也是知名度较高的一个目标检测框架,mAP 和前传速度能够与 Faster R-CNN 一较高下,尽管速度比不过 YOLO 系,但相对而言准确度更高。值得一看的是里面的全卷积思路,使得 R-FCN 作为一个 two-stage 的方法却有着相对简单的网络结构。

R-FCN论文:R-FCN: Object Detection via Region-based Fully Convolutional Networks


出发点

对于知名的 R-CNN 系网络(R-CNN、Fast R-CNN、Faster R-CNN、Mask R-CNN)而言,将每个 RoI 中的特征图分别进行前向传播都是不可避免的。尽管从 Fast R-CNN 起,这一弊端已经被权重共享的特征提取网络缓解了,但在其后的目标检测与分类网络上的运算仍然是 per-RoI 的。由于 RPN 可以提供以千为数量级的 RoI,R-CNN 系的网络结构在训练和预测过程中都会导致一定的时间消耗。

这些最先进的目标检测网络引入大量 per-RoI 运算的一个原因在于,它们都是基于 ResNet 或 GoogLeNet 等骨干网络的,这些骨干网络是全卷积的,因为骨干网络本来就是在图像分类数据集上进行预训练的。为了将网络的任务从“进行准确的分类”迁移到“定位目标并进行分类”,不得不在骨干网络后面再次引入多层的卷积结构,尽管这些卷积层的参数是共享的,但它们的运算却是分散的,这种结构——据 R-FCN 作者所言——是不自然的。

一般策略:对每个 RoI,分别进行共享权重的卷积(和可选的全连接)运算,这增加了计算开销

这并非在否认 R-CNN 系网络,毕竟至今它们仍是目标检测任务中的首选模型,并且在前向传播速度上也不能称之为慢。但尽管是最先进的方法,其中存在的问题也仍然确实值得解决。 R-FCN 的主要出发点就是尽可能地减轻 per-RoI 的运算,加快网络的训练和预测速度。


思路

在 R-FCN 论文中提出的观点:图像分类任务存在平移不变性,而深度卷积网络又具有不在意图像内容平移的特性,所以能够在此类任务中有非常好的表现;但对于目标检测任务而言,这种特性是无法很好地被过渡的,因为此时需要得到目标的位置信息,这在一定程度上引入了平移变化性。所以,不能直接将骨干网络的结构用于目标检测任务中。

许多其它方法中,解决这一问题的做法都是通过在特征图上进行 RoI Pooling 操作,以及进行后续的 per-RoI 运算,借此引入平移变化性。

与一般策略不同,R-FCN 的做法是,仍然通过共享运算的全卷积网络提取图像在空间上的特征,并且不令 RoI Pooling 层后还有任何可训练参数。


网络结构

RoI 的提取采用 RPN(Region Proposal Network),此项工作在 Faster R-CNN 中已有完善的实现,且几乎无需更多地进行训练。初步的特征提取在 ResNet-101 上进行,得到 feature maps。

R-FCN 网络结构


网络结构(注明通道数)

定义超参数k,表示网络将把 RoI 分为k \times k的小窗格分别进行考虑。文中取 k=3,即把 RoI 分为 9 个小窗格子,考虑 RoI 的左上方、上方、右上方、左方、中间、右方、左下方、下方、右下方。

在初始特征图上引入新的卷积层,以得到对位置敏感的 score map,score map 通道数为k^2(C+1),表示对于C+1个类别而言的k^2个RoI位置(或者,也可以理解成k^2C+1在不同的维度上,不过这样子特征就是4维了,不好画图表示),这个 score maps 大概算整个论文里最抽象的东西了。尽管这些新的卷积层功能特殊,但它们在结构上与一般的卷积层没有什么差别。

在其后连接一个对位置敏感的特殊 RoI Pooling 层,以引导来自 score map 的信息。该池化层以及后续的层都不再具有可训练的权重。该池化层的池化算法需要单独说明。


位置敏感的 RoI Pooling 层

RoI 已由 RPN 得到,RoI Pooling 层将此 RoI 下的 score map 中的内容分割成k \times k的窗格。若 RoI 尺寸为w\times h,则每个窗格的大小为(w/k)\times (h/k)

在 RoI Pooling 层中,对于每个类别,每个窗格最后都得到一个输出,此池化层采用平均池化,输出 shape 为k \times k \times (C+1)。注意池化层之前 RoI 窗口内的特征 shape 为w \times h \times k^2(C+1),按说池化层应该只改变尺寸,不改变通道数,可是这里的 RoI Pooling 却在改变特征图尺寸的同时,改变了其通道数,这里是 R-FCN 方法中较容易令人迷惑的一点。

通道数的改变是因为 RoI Pooling 层上的特殊操作:score map 之所以被称为对位置敏感的,就是因为它对k \times k个窗格内的特征进行了分立的特征提取。对应地,在 RoI Pooling 层进行平均池化时,只池化 score map 上符合条件 {①在相同的窗格内 and ②在对应的通道上} 的特征像素。比如,在对右上角(即第 3 个)窗格池化时,池化操作是对 score map 上,对应窗格内,在总共k^2(C+1)通道上,第 3 个(C+1)通道上的特征进行的。

上述 score map 通道到池化输出窗格的映射,的网络结构图中以不同的颜色标示了出来。


目标检测的后续操作

R-FCN 在 RoI Pooling 层之后就不再有可训练参数,所以需要用其他的方式判断 RoI 是否(较好地)覆盖目标、目标的类别以及边框回归参数。

RoI 是否覆盖目标

在一个 RoI 内,对特定的类别c,RoI Pooling 的k^2个输出进行一次投票,投票以不加权平均值的形式实现,如果这个投票值超过一定的阈值,则认为该 RoI 内有属于类别c的目标。

下图示意 RoI 是否覆盖所导致 RoI Pooling 层的不同输出,可以看到,当 RoI 的左上方窗格“在目标的左上方(的置信度高)”时,score map 上对应的窗格及通道上的特征将被高度激活,上方、右上方、左方、中间、右方、左下方、下方、右下方这些位置也符合此规律。如果一个 RoI 恰好覆盖目标,那么其投票值就会很高。

至于为什么会有这样的特性?可以认为这种特征就是 R-FCN 所构建和训练的网络从训练集中所学习到的。

对比:RoI 覆盖目标 / RoI 未覆盖目标

目标分类

一个 RoI 将输出通道数为(C+1)的投票值,对该输出进行 softmax 激活,得到置信度最高的类别,作为目标类别。

边框回归

与上述的 k^2(C+1) 通道的卷积层并行,构造了一个兄弟卷积层,通道数为4k^2,用同样的策略将它聚合到一个4通道的平均投票值上,这四个值表示(t_x, t_y, t_w, t_h),为目标检测领域通用的边框回归参数。


感想

感觉 R-FCN 的思路比较清奇,虽然看懂了它是怎么做的,但并没理解它为什么要这么设计。

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

推荐阅读更多精彩内容