Faster RCNN 算法_面试版

参考链接:

Faster RCNN 学习笔记:https://www.cnblogs.com/wangyong/p/8513563.html

总结faster r-cnn可能会问到的面试问题:https://blog.csdn.net/qq_43477550/article/details/105584364

快速理解RPN:https://zhuanlan.zhihu.com/p/138515680

RoIPooling和ROI Align以及双线性插值法:https://blog.csdn.net/ifreewolf_csdn/article/details/101352352


参考书本:

深度学习之pytorch物体检测实战,第二篇:物体检测经典框架,第四章:两阶经典检测器: Faster RCNN

1、Faster RCNN 是什么

Faster RCNN 是在 Fast RCNN 的基础上,引入了 RPN 网络来代替 Fast RCNN 中的选择性搜索算法来生成候选区域,使得目标检测速度大大提高。Faster RCNN 的网络结构是使用 VGG16 卷积阶段的网络层来提取特征,然后分别传入到 RoI 池化层和 RPN 网络中,RPN 网络得到 RoI 后跟特征图一起传入到 RoI 池化层,获得固定尺寸大小的输出,最后再传入到多层全连接层中,同时得到分类得分和边框坐标偏移量回归的预测结果


2、Faster RCNN 的网络结构图


3、Faster RCNN 的算法步骤

第一步:将原图除以缩放因子来变换图片的尺寸,图像短边不超过600,图像长边不超过1000。然后输入到 VGG16 卷积阶段的网络层来提取特征,生成特征图

第二步:将特征图分别输入到 RPN 网络中以及 RoI 池化层中,RPN 的过程

1、在特征图上滑动使用 3*3 卷积,通过融合周边特征,加强特征的鲁棒性,获得新的特征图

2、由于特征图上的每一个特征点都对应了 9 个 anchors ,所以可以使用 1*1 卷积来代替全连接层,预测每一个 anchor 的分类得分以及坐标偏移量

3、在训练 RPN 网络阶段,首先按照规则生成全部 anchors ,然后将超过图像边界的 anchors 剔除掉,然后计算 anchors 跟所有真值的 IoU,对于每个真值跟其有最大 IoU 的 anchor 标记为正样本,IoU > 0.7 的也标记为正样本, IoU < 0.3 的标记为负样本,然后从中随机抽取正负样本比例为 1:1,总数为 256 个 anchors 作为训练样本,而其余的 anchor 则不参与训练。然后将每个 anchor 跟它有最大 IoU 的真值标记为它的真值。然后计算 anchors 跟真值的坐标偏移量,然后用来训练 RPN 网络

4、在训练 Faster RCNN 网络阶段,首先按照规则生成全部 anchors,然后利用 2 中预测的坐标偏移量来校正 anchors 的坐标,然后将超过图像边界的 anchors 坐标修整到图像边界。然后按 anchors 的分类得分来进行降序排序,保留分类得分的前 12000 个 anchors,然后使用非极大值抑制。然后选取分类得分前 2000 个 anchors 作为候选框。然后计算所有的候选框跟真值的 IoU,对于任意一个候选框,如果它跟所有的真值的最大 IoU 大于等于 0.5,则标记为正样本,否则标记为负样本。然后从中随机抽取正负样本比例为 1:3,总数为 256 的 RoI 作为训练样本。然后将每个 RoI 跟它有最大 IoU的真值标记为它的真值,然后计算 RoI 跟真值的坐标偏移量。

第三步:RoI 池化层的过程:

1、将 RoI 跟特征图输入到 RoI 池化层中

2、将 RoI 的坐标除以 VGG16 网络的下采样率 16 ,并向下取整,得到它在特征图中的坐标

3、将 RoI 划分为 7*7 大小的网格,每个网格的宽和高分别由 RoI 区域的宽和高除以 7 并向下取整来得到

4、在每个网格里使用最大值池化,输出 7*7 大小的特征图

第四步:RoI 池化层后接多层全连接层,然后再接两个并行的预测分支,分别预测分类得分和边框坐标偏移量


4、Faster RCNN 的优点

1、相对于 Fast RCNN,Faster RCNN 使用 RPN 网络来取代了选择性搜索算法来生成候选区域,在训练和测试阶段的速度都大大地提高了,也节省了存储空间

2、相对于 Fast RCNN 不是端到端的形式,Faster RCNN 将生成候选区域阶段也融入到了神经网络中,使得 Faster RCNN 变成了端到端的形式

3、Faster RCNN 通过两阶段网络与 RPN,实现了精度较高的物体检测性能

4、Faster RCNN 是两阶段网络,相对于其他一阶段网络,两阶段网络更加精准,尤其是针对高精度、多尺度以及小物体问题上,两阶段网络的优势更明显


5、Faster RCNN 的缺点

1、卷积网络:卷积网络提取到的特征图是最后一个卷积阶段的特征,并没有融合多个阶段的特征,而且分辨率通常也较小,这些都不利于小物体及多尺度的物体检测

2、非极大值抑制:非极大值抑制本身的过滤对于遮挡物体不是特别友好,本身属于两个物体的候选框有可能因为非极大值抑制而被过滤为 1 个,造成漏检

3、RoI 池化层:RoI 池化层有两次对坐标进行向下取整的操作,会导致 RoI 的坐标跟在原图中的坐标产生偏差,使得网络回归的效果变差,特别是对于小物体检测的时候,影响更大。而且第二次的向下取整操作,会导致只提取了 RoI 部分区域的特征,会影响网络的学习效果

4、全连接网络:原始的 Faster RCNN 最后使用全连接网络,这部分全连接网络占据了网络的大部分参数,并且 RoI 池化层后每一个 RoI 都要经过一遍全连接网络,没有共享计算

5、正负样本数量:在 RPN 及 RCNN 部分,都是通过超参数来限制正负样本的数量,以保证正负样本的均衡。而对于不同任务与数据,这种正负样本均衡方法不一定是最有效的

6、两阶段网络:RPN 与 RCNN 两个阶段分工明确,带来了精度的提升,但速度相对较慢,实际实现上还没有达到实时


6、Faster RCNN 的损失函数

Faster RCNN 的损失分别由 RPN 的分类得分损失、RPN 的坐标偏移量回归、 RCNN 的分类得分损失和 RCNN 的边框回归损失,总共四部分组成,其中 RPN 的分类得分损失函数和 RCNN 的分类得分损失函数使用交叉熵,而 RPN 的坐标偏移量回归损失函数和 RCNN 的边框回归损失则使用 smooth_L1 

具体表达式为:

假设 rpn_{cls}, rpn_{bbox}, rcnn_{cls}, rcnn_{bbox} 为其预测值,带 * 号的则是其真值,\lambda_1、\lambda_2 则是多任务平衡系数,[u\geq 1] 表示只选取 u 大于 1 的部分,因此

L(rpn_{cls}, rpn_{bbox}, rcnn_{cls}, rcnn_{bbox}) =

-\frac{1}{N_{rpn\_cls}} \sum\nolimits rpn_{cls}^{*} log(rpn_{cls}) +

\frac{\lambda_1}{N_{rpn\_bbox}}[u\geq 1]{\sum_{i\in\{x, y, h, w\}}{smooth_{L1}}}(rpn_{bbox\_i}, rpn_{bbox\_i}^{*})  +

-\frac{1}{N_{rcnn\_cls}}* \sum\nolimits rcnn_{cls}^{*} log(rcnn_{cls}) +

\frac{\lambda_2}{N_{rcnn\_bbox}}{[u\geq 1]}{\sum_{i\in\{x, y, h, w\}}smooth_{L1}(rcnn_{bbox\_i}, rcnn_{bbox\_i}^{*}) }

注:RPN 中是二分类,而 RCNN 中则是类别数 + 1

RPN 回归中的正样本数量为 128,而 RCNN 中的正样本数量为 64


7、RPN 的步骤(面试重点)

RPN 是一个全卷积网络,可以输入任意尺寸的图像,然后生成候选区域,它的具体过程是:

1、在特征图上使用 3*3 卷积,通过融合周边特征,加强特征的鲁棒性,获得新的特征图

2、由于特征图上的每一个特征点都对应了 9 个 anchors ,所以可以使用 1*1 卷积来预测每一个 anchor 的分类得分以及坐标偏移量

3、首先按照规则生成全部 anchors ,然后将超过图像边界的 anchor 剔除掉,然后计算保留下来的 anchors 跟所有真值的 IoU,对于每个真值跟其有最大的 IoU 的 anchor 标记为正样本,IoU > 0.7 的也标记为正样本, IoU < 0.3 的标记为负样本,然后从中随机抽取正负样本比例为 1:1,总数为 256 个 anchors 作为训练样本,而其余的 anchor 则不参与训练。然后计算作为训练样本的 anchors 跟真值的坐标偏移量

4、首先按照规则生成全部 anchors,然后利用 2 中预测的坐标偏移量来更新 anchors 的坐标,然后将超过图像边界的 anchors 坐标修整到图像边界,得到最初的候选框。然后按 anchors 的分类概率来进行降序排序,保留概率大的前 12000 个 anchors,然后使用非极大值抑制。然后选取前 2000 个 anchors 作为候选框

5、筛选候选框得到 RoI,首先计算所有的候选框跟真值的 IoU,对于任意一个候选框,如果它跟所有的真值的最大 IoU 大于等于 0.5,则标记为正样本,否则标记为负样本。然后从中随机抽取正负样本比例为 1:3,总数为 256 的 RoI 作为训练样本。同时计算每个 RoI 所对应的类别,以及真值的偏移量。


8、RoI 池化是什么(面试重点)

RoI 池化是输入任意尺寸的图像,然后得到固定尺寸大小的输出。它的具体过程是:

1、将 RoI 跟特征图输入到 RoI 池化层中

2、将 RoI 的坐标除以 VGG16 网络的下采样率 16 ,并向下取整,得到它在特征图中的坐标

3、将 RoI 划分为 7*7 大小的网格,每个网格的宽和高分别由 RoI 区域的宽和高除以 7 并向下取整来得到

4、在每个网格里使用最大值池化

5、输出 7*7 大小的特征图


9、ROI Align 是什么(面试重点)

RoI Align 是对 ROI 池化的改进,主要是在于取消了计算坐标时的向下取整操作,以及避免了只对 ROI 部分区域选取特征的缺点,它的具体过程是:

1、将 RoI 跟特征图输入到 RoI 池化层中

2、将 RoI 的坐标除以 VGG16 网络的下采样率 16 ,但是不进行向下取整的操作,得到它在特征图中的坐标

3、将 RoI 划分为 7*7 大小的网格,每个网格的宽和高分别由 RoI 区域的宽和高除以 7 得到,但是不进行向下取整的操作

4:将每个网格划分为大小相同的 4 个小方格,每个小方格内各取一个点,该点的坐标则为小方格的中心点,而该点的像素点,则由特征图上相邻的 4 个特征点使用双线性插值来得到。然后对每个网格都使用最大值池化

5:输出尺寸大小为 7*7 的特征图


10、1*1 卷积的作用

1*1 卷积的作用是按特征图的跨通道来融合特征,同时保持特征图的平面结构,以及可以改变通道数,实现升维和降维。而且它还可以输入任意尺寸的特征图,所以也可以用来取代全连接层,保持特征图的平面结构。


11、坐标偏移量的计算公式

假设真值的坐标中心点为 x^{*}, y^{*},宽和高分别为 w^{*}, h^{*},而 anchor 的坐标中心点为 x_a, y_a,宽和高分别为 w_a, h_a

s_x = (x^* - x_a) / w_a

s_y = (y^* - y_a) / h_a

s_w = log(w^*/w_a)

s_h = log(h^*/h_a)

其中 除以 w_a、h_a 的目的是为了进一步限制偏移量的范围,便于预测


12、Faster RCNN 的优化点


13、非极大值抑制(NMS)的具体过程

非极大值抑制是将标记为同一个类别的候选框中,只保留概率大的候选框

第一步:对于同一个类别的候选框,取概率最大的候选框为 A

第二步:计算 A 跟其他候选框之间的 IoU,如果 IoU 超过阈值则剔除掉,反之则保留

第三步:在保留下来的候选框中选择概率最大的候选框为 B,重复第二步

第四步:重复第三步,直到所有的候选框都不可再被剔除


14、SoftNMS 的具体过程

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

推荐阅读更多精彩内容