Faster-RCNN阅读笔记

首发地址

系统架构

structure.png

Faster-RCNN是Fast-RCNN的后续版本,主要针对Fast-RCNN速度过慢进行优化。在Fast-RCNN中,速度的瓶颈主要是用于生成候选区域的Selective Search过程。在Faster-RCNN中,候选区域的生成使用RPN网络,且共享的使用了卷积产生的特性,由此将候选区域的生成方式纳入神经网络的范畴下。该系统有以下部分构成:

  • 卷积神经网络:对待测图片进行几层卷积,产生高级特征,这些高级特征用于RPN生成候选框和RoI池化输入
  • PRN网络:根据卷积产生的高级特性生成一系列不考虑物品类别的候选区域,即代替Selective Search方法
  • Fast-CNN:RoI pool层输入的Fast-RCNN网络,输入为高级特征和候选区域,生成该候选区域的类别信息和候选区域的调整因子

PRN网络

PRN网络用于产生类别无关的候选区域,即代替Selective Search的功能,其结构如下:

prn_structure.png

其输入为从共享卷积部分的输出feature map,该部分再经过PRN网络的卷积部分,变为PRN feature,其长宽不变,通道数变为(4+2)n,其中n为每个点上生成候选框的数量。即每个候选框对应六个数据,分别为:

  • 位置信息x,y,w,h:包含位置信息,分别是位置和大小的调整系数。
  • 评分信息a,b:对这个区域是否含有物体的打分,一个为物品的分数,另一个为是背景的分数。

需要注意的是,位置信息均是调整系数,其和真实位置信息的关系为:
t_x = \cfrac{x-x_a}{w_a} \\ t_y = \cfrac{y-y_a}{h_a} \\ t_w = log\cfrac{w}{w_a} \\ t_h = log\cfrac{h}{h_a}
其中,t_x,t_y,t_w,t_h为网络的输出,x_a,y_a,w_a,h_a为anchor box提供的基础框大小,而x,y,w,h为最终预测的结果。这里的anchor box为一种预设为固定大小的框,其长度和宽度为超参数,在训练前指定,其x坐标和y坐标为PRN feature产生该预测框的点在原图中对应的点。例如输入原图大小为400*400,卷积网络使用了三次2*2的池化,feature map的尺寸为50*50,那么在PRN feature中坐标为(4,4)产生的所有anchor box的预设中心坐标x_a,y_a均为(32,32)。

anchor box的尺寸共n个,每个点共享n个anchor box尺寸,该尺寸一般通过类聚数据集上的物品尺寸产生,每个点都按指定的n个anchor box尺寸生成n个anchor box的调整系数和分数,调整后产生RoI的尺寸,注意RoI尺寸是原图上的尺寸,应用到Fast-RCNN上还需要进行缩放变换。

Fast-RCNN网络

fast_rcnn_structure.png

这里的Fast-RCNN部分指RoI池化层之后的部分,输入为与PRN共享的卷积网络的输出,输出分为两个部分:

  • 类别信息:总物体类别加1,即类别+背景,用于判断候选框的物品类别
  • 调整因子:用于微调PRN的输出结果,该部分输出的每个数据的功能与PRN的4个调整因子相同

由上图所示,共享卷积层输出的结果与PRN输出的RoI结合通过RoI池化层,获得一个固定大小的RoI feature,该部分经过一个共享的处理(卷积层,全连接层等),获得后续的feature,该feature分别通过两个独立的全连接层,获得类别信息和调整因子。使用其中的调整因子调整PRN输出的RoI数据,获得最终的RoI位置和大小数据。

系统训练

标签标注

标记分为三种,分别是:

  • 标记为正例:相对于真实物体IoU高于0.7或相对于真实物体IoU在所有候选区域中最高
  • 标记为反例:相对于真实物体的IoU低于0.3
  • 不标记:不属于正例也不属于反例的候选区域,这些区域不影响训练过程

代价函数

PRN代价函数

L(\{p_i\},\{t_i\}) = \cfrac{1}{N_{cls}}\sum\limits_i{L_{cls}(p_i,p_i^*)}+\lambda\cfrac{1}{N_{reg}}\sum\limits_ip_i^*L_{reg}(t_i,t_i^*)

PRN网络的代价函数如上所示,其中i是anchor box的标号;p_i为PRN判定的该anchor box有物体的概率;p_i^*为该anchor box的标记,若标记正例为1,反例则标记为0;t_i为PRN判定的调整因子;t_i^*为真实的调整因子。

代价函数分为两个部分,分别是:

  • 类别代价:L_{cls}(p_i,p_i^*)衡量类别判断错误产生的代价,为log代价函数(交叉熵)
  • 回归代价:L_{reg}(t_i,t_i^*)衡量调整因子误差产生的代价,为R(t_i-t_i^*)

其中,R函数的表达式如下所示:
R(x)=\begin{cases}0.5x^2 & |x| <1 \\ |x|-0.5&otherwise\end{cases}

Fast-RCNN代价函数

Fast-RCNN代价函数分为两个部分,如下所示:
L(p,u.t_u,v) = L_{cls}(p,u) + \lambda[u \geq 1]L_{loc}(t^u,v)
第一个部分L_{cls}为分类部分的代价函数,使用交叉熵函数,公式如下,其中u为该RoI区域的标记类别,p为神经网络输出的分类向量:
L_{cls}(p,u) = -log(p_u)
第二个部分L_{loc}为调整因子的代价函数,[u \geq 1]表示仅当当前位置不是背景时才考虑该部分代价, 超参数\lambda表示两个部分之间的权重,论文中取1。L_{loc}如下所示,其中t为网络输出的调整因子,v为目标调整因子。
L_{loc}(t^u,v) = \sum\limits_{i \in \{x,y,w,h\}}smooth_{L_1}(t^u_i-v_i) \\ smooth_{L_1}=\begin{cases}0.5x^2 & |x| <1 \\ |x|-0.5&otherwise\end{cases}

训练过程

训练过程包括PRN和Fast-RCNN网络的训练,其中,前段的卷积层还是共享权值的,训练方法如下所示:

  1. 单独训练共享部分和PRN网络,使其能获得类别无关的候选区域
  2. 单独训练共享部分和Fast-RCNN网络,候选区域使用第一步中训练出的PRN获得,注意这里PRN和Fast-RCNN前端卷积(前向传播时共享权值的部分)并没有实现共享权值,PRN和Fast-RCNN是两个完全独立的网络
  3. 将PRN网络与第二步训练出的共享部分连接,并固定共享部分权值,单独微调训练PRN网络
  4. 使用第三步训练产生的PRN产生候选区域,固定共享部分权值,微调Fast-RCNN的ROI池化之后层的参数,注意这一步的PRN和Fast-RCNN网络的前端卷积的权值是共享的
train.png

Fast-RCNN和PRN的训练都是批处理的,每一批均是从一张图片中获取的anchor box,且要求正例和反例的数量相同,原论文中batch大小是256,由128个正例和128个反例组成。

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

推荐阅读更多精彩内容