Fast-RCNN阅读笔记

公式渲染完整版请移步个人博客

系统架构

structure.png

由于RCNN存在流水线过长,检测速度慢的问题,Fast-RCNN几乎将整个过程置于深度学习的框架下,因此带来了准确率和速度的提升,该系统主要组成部分如上图所示,有:

  • CNN特征提取器:与RCNN不同,该网络的输入为整张图片,输出为特征张量
  • 候选框提取:与RCNN相同使用Selective Search提取候选框,只是候选框通过大小变换后作用于CNN提取出的特征张量中,而不直接作用于图片
  • RoI Pooling层:该层次用于将不同大小的候选框归一化到同一个大小上,然后通过全连接层计算出固定长度的特征向量
  • 分类器:根据特征向量对物品进行分类,列表包括物品类别和背景
  • 回归器:根据特征向量微调候选框位置和大小,最终生成针对候选框的调整因子

该系统对于待识别图片,首先将其使用Selective Search处理获得一系列候选框,随后将其归一化到固定大小,送入CNN网络中提取特征。对于提取出的特征张量,假设其保留了原图片的空间位置信息,将候选框做对应变换后映射到特征张量上,提取出大小不同的候选区域的特征张量。对于每个候选区域的特征张量,使用RoI pooling层将其大小归一化,随后使用全连接层提取固定长度的特征向量。对于该特征向量,分别使用全连接层+softmax和全连接层+回归判断类别并计算原候选框的调整因子。

候选框提取

候选框的提取与RCNN相同,使用Selective Search算法,该算法会提供一系列候选区域框,而不是遍历各种大小的子图,所以速度快于滑动框,Selective Search的具体说明参看RCNN笔记。需要指出的是,该部分是整个网络的速度瓶颈。

CNN特征提取

网络的基本结构是VGG-16网络,相对于原网络,做了以下调整:

  • 最后一个最大值池化层用RoI池化层代替,该池化层可将不同大小的输入池化为统一大小输出。
  • 最后一层全连接层使用两个分裂的全连接层代替,一个用于计算分类,一个用于计算候选框的调整因子
  • 输入改为两个,分别为原图和Selective Search产生的候选框坐标

RoI池化层

RoI池化层用于将不同大小的输入张量池化为固定大小,RoI池化层指定池化窗口的数量为W \times H,每个池化窗口的大小是根据池化区域变化的,例如一张图片的尺寸为w \times h,则每个窗口的大小为\frac{w}{W} \times \frac{h}{H},假设W=4,H=4,有以下例子:

roi.png

如图左右各有一个大小不同的RoI区域,划分为W \times H个池化窗口,每个池化窗口的大小因原RoI区域尺寸不同而不同,经过RoI池化尺寸变为相同的W \times H

分类器与回归器

分类器和回归器的输入为RoI池化输出的固定大小向量经过两层全连接层后产生的特征向量,分类器用于判断物品属于哪一类(类别+背景),回归器用于计算4个调整因子,调整因子部分内容见RCNN笔记。

模型训练

模型的训练过程与RCNN不同,Fast-RCNN将分类器和回归器的训练统一到深度学习的框架下,在Selective Search提取出候选区域RoI后,所有的训练均在深度学习框架下进行。

批处理

训练使用SGD算法,因此需要提取batch进行训练。batch的提取基于N张图片,每个batch提取\cfrac{R}{N}个区域,每个batch共R个数据。当N较小时,这种提取方法充分的使用了数据局部性,能提高训练速度。在本论文中,有R=128,N=2,即每个batch的数据来自两张图片,共128个RoI数据,其中要求25%的RoI为包含物体的(IoU>0.5),这些RoI被标记为对应类别,剩下的75%的RoI要求IoU在0.1~0.5之间,标记为背景。

多任务代价函数

该网络的输入有两个:

  • 分类结果p=(p_0,p1,...,p_K),共K+1个类别,包括K个物品和背景
  • 调整因子t_k=(t_x^k,t_y^k,t_w^k,t_h^k),调整的方式与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}
$$

训练过程

由上,可以归纳Fast_RCNN的训练过程:

  1. 获取预训练模型
  2. 取N=2张图片前向传播,按批处理部分所述进行前向传播,并计算代价函数
  3. 根据代价函数反向传播更新权值跳转到2

其中,RoI pooling层的反向传播与Pool层相同,详情见CNN的反向传播,不同RoI的反向传播结果对应位置相加后再反向传播到前一层。为了达成尺寸不变性,还在训练中使用了图像金字塔和数据增强的方法。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念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

推荐阅读更多精彩内容