Faster R-CNN 笔记

Faster R-CNN论文:Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Network


Fast R-CNN的缺点

基于Fast R-CNN的网络结构是当时最先进的目标检测网络结构,统称为Region-based CNN,而它们共同的问题就是,提出Region Proposal的过程(比如Selective Search、EdgeBoxes)太过耗时间。


Faster R-CNN提出的改进方法

Region Proposal由深度卷积网络(Region Proposal Networks, RPN)提出。RPN和分类网络共享特征提取网络。


Faster R-CNN的结构

Faster R-CNN论文中的网络结构示意图

Faster R-CNN的结构较之Fast R-CNN还要简洁。

1.输入:任意大小的图像

2.特征提取网络,输出feature map。

3.RPN:根据feature map,预测若干ROI的位置和尺寸,以及该ROI“包含目标的置信度”。ROI的表示采用了anchor方法,ROI为anchor经过映射(预测输出)得到的区域。详细的解释在后面。

4.ROI Pooling:在特征图像上,对于每个ROI而言,保留其里面的特征图内容。将保留的内容压缩成H×W长度的向量输出。

5.Classification


RPN

RPN以一个任意大小的特征图作为输入,预测若干ROI的位置和尺寸,以及该ROI“包含目标的置信度”。

在特征提取网络的最后一层输出的特征图上,一个n×n(论文中n取3)的窗口滑动遍历整个图像,每个窗口内的特征数据都分别被映射(d维1×1卷积)到一个较低维度(对Zeiler and Forgus网络而言是256-d,对VGG-16而言是512-d)的特征向量,这个特征向量输入至两个全连接层——分别对应Box-regression和Box-classification。对每个窗口将预测k个边界框,所以Box-regression全连接层有4k个输出(4个值反映一个边界框的位置和大小),Box-classification全连接层有2k个输出(表示对应的anchor“包含”或“不包含”目标,作者将它实现为具有2个类别的softmax层,实际上也可以改为实现为逻辑回归层,这样Box-classification层就有k个输出)。

映射的具体实现方式:先用3×3(256或512个)卷积核对特征图进行卷积,结果输入进cls和reg层。cls和reg层分别是1×1(2k个)和1×1(4k个)的卷积层——全连接层可以用1×1卷积层实现。

在滑动窗口的某个位置上,都预设了k个anchor,对于这个位置上预测出的k个选框而言,每个选框表示为一个anchor中的映射(作者将k取9,为3种尺度和3种长宽比的组合)。


RPN结构示意图。注意RPN有一两个分支的全连接层,这里的cls层判断是否包含对象,并不具备分类功能,别和后面的分类网络搞混了。

平移不变性

用此种方法设计anchor,模型对输入具有平移不变性,即,如果输入图像经过了一定的平移,RPN预测到的边框回归变换参数是不变的,只是对应的anchor位置变了。这种特性对比的是采用固定anchor(一般由聚类方法预先获得)各种方法,比如MultiBox或者YOLO2(3?)。

这种特性的一个好处是不用预先设定太多的anchor,相应地,全连接层参数会减少,模型过拟合的风险下降。

多尺寸问题

有些模型采用图像金字塔解决多尺寸问题,这种方法问题在于比较耗时(因为重复的特征被映射到新特征图的不同尺度上);有些模型采用不同尺寸的卷积核(卷积核金字塔),这种方法问题在于不同的卷积核使训练更为困难。Faster R-CNN中,多尺寸的anchor解决了该问题,并且对模型引入了相对而言最小的代价。


损失函数

在训练数据中,将以下两种anchor标记为“包含目标”:(1)与一个Ground Truth有最大重叠比例者;或(2)与任意一个Ground Truth的重叠比例达到0.7者。将未被标记为“包含目标”的anchor中,符合如下条件的标记为“不包含目标”:(1)与任何Ground Truth的重叠比例都未达到0.3者。剩余的既未被标记为包含目标又未被标记为不包含目标的anchor,将不对目标函数做出贡献。

训练RPN的损失函数为:

\begin{aligned} L\left(\left\{p_{i}\right\},\left\{t_{i}\right\}\right) &=\frac{1}{N_{c l s}} \sum_{i} L_{c l s}\left(p_{i}, p_{i}^{*}\right) \\ &+\lambda \frac{1}{N_{\text {reg}}} \sum_{i} p_{i}^{*} L_{\text {reg}}\left(t_{i}, t_{i}^{*}\right) \end{aligned}\\

其中,p_{i}是anchor包含目标的置信度,p_{i}^*表示anchor实际上是否包含目标,L_{cls}log损失函数,N_{cls}为mini-batch size;t_{i}是表示anchor到预测的边界框的四维变换向量,t_{i}^*是anchor到Ground Truth的变换向量,L_{reg}Smooth_{L_{1}}损失函数,前面乘p_{i}^*表示只有包含目标的anchor才对边框回归损失有贡献,N_{reg}是有匹配的Ground Truth的anchor数,\lambda 为调整权重的超参数。

边框位置和大小回归计算公式和R-CNN、Fast R-CNN里一样:

\begin{aligned} t_{\mathrm{x}} &=\left(x-x_{\mathrm{a}}\right) / w_{\mathrm{a}}, \quad t_{\mathrm{y}}=\left(y-y_{\mathrm{a}}\right) / h_{\mathrm{a}} \\ t_{\mathrm{w}} &=\log \left(w / w_{\mathrm{a}}\right), \quad t_{\mathrm{h}}=\log \left(h / h_{\mathrm{a}}\right) \\ t_{\mathrm{x}}^{*} &=\left(x^{*}-x_{\mathrm{a}}\right) / w_{\mathrm{a}}, \quad t_{\mathrm{y}}^{*}=\left(y^{*}-y_{\mathrm{a}}\right) / h_{\mathrm{a}} \\ t_{\mathrm{w}}^{*} &=\log \left(w^{*} / w_{\mathrm{a}}\right), \quad t_{\mathrm{h}}^{*}=\log \left(h^{*} / h_{\mathrm{a}}\right) \end{aligned}\\


RPN的训练

在Faster R-CNN中,RPN和分类网络(基于Fast R-CNN)是分开训练的。

训练集采样

采样策略类似Fast R-CNN,取少量图像中的多个ROI,只是Faster R-CNN更加极端,每个mini-batch只取1张图片,采样其中的256个有标记的区域建议作为样本,并尽可能地保证正样本和负样本的比例在1:1。

超参数

和Fast R-CNN基本一样。略。

关于RPN和Fast R-CNN的共享特征提取网络在训练时的处理方法

方案1:交替训练

用初始权重训练RPN;然后将RPN输出的Region Proposal作为Fast R-CNN的输入,用初始权重训练Fast R-CNN(这时RPN和Fast R-CNN并不共享权重);然后再将特征提取网络作为RPN的初始化权重,并保持特征提取网络权重不变,仅对RPN的全连接层进行finetune(此时RPN和Fast R-CNN共享权重)...这个过程被迭代执行若干次。

这个方法是论文中所有实验采用的方法。

方案2:Approximate joint training(近似联合训练)

将RPN和Fast R-CNN串联成一个网络(即完整的Faster R-CNN结构),此时前向传播如同Faster R-CNN被设计的那样如常进行,且反向传播也正常进行,因为RPN和Fast R-CNN都有Loss,在反向传播时这两个Loss将被结合(我猜可能就是加权相加吧...)起来考虑。

作者表示它的问题在于忽略了对Region Proposal的坐标的偏导,而这其实也是网络的响应...好把这句话我完全没看懂,但是结合下面一个方案说的,我的理解是:在Fast R-CNN里直接将Region Proposal作为固定输入了,而没有考虑它实际上是RPN的输出,所以在反向传播时没有考虑它对Fast R-CNN的Loss的贡献。而实际上Region Proposal的坐标明显和RPN的权重有关。

不过在实验中,这个方案能够加快训练速度,而且表现也基本符合预期,所以不失为一种可用的训练方案。

方案3:Non-approximate joint training(非近似联合训练)

这个方案如同方案2,但是也将Region Proposal坐标的偏导考虑进去了。如作者所言,这个解决方案的实现较为困难,已超过了本论文的讨论范围。

明明Fast R-CNN的训练是很简单的,到了Faster R-CNN,训练网络却如此复杂。不过好处在于, RPN 训练出来能被各种其他的网络应用。

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

推荐阅读更多精彩内容