RCNN学习笔记

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

系统结构

structure.png

RCNN物品目标识别系统如上图所示,如图所示,共分为四步:

  • 候选区域提取:使用Selective search选择候选区域,并进行预处理,全部处理为相同大小
  • CNN特征提取:使用CNN将特征区域图像提取为一个特征向量
  • SVM分类:使用支持向量机判断支持该候选区域是否属于某一个类别
  • 边界回归:若确定某候选框属于某个类别,则使用回归的方式微调候选框的位置

候选区域提取

RCNN使用Selective search算法代替滑动框,该算法可以提取类别无关的物品候选区域。该算法分为以下步骤:

  • 初始化一些小候选框
  • 不断合并小候选框为大候选框,并保存所有未合并的候选框,产生一系列候选区域
ss_algorithm.PNG

具体算法如上文所示,首先产生一系列初始区域R,并计算R中所有相邻区域之间的评分s,保存在集合S中,随后不断合并最高评分的两个区域,最终产生一系列候选区域。

初始化

初始化的过程使用论文《Efficient graph-based image segmentation》过程中的方法,即使用无向图G=(V,E)表示一张图片,其中V表示所有无向图中所有像素,即令每一个像素对应一个顶点;E表示连接,仅有相邻的像素(顶点)之间才有连接,两个顶点之间的连接权值有不同的衡量标准。产生初始框的方式类似于类聚算法,类聚的依据如下所示:
D(C_1,C_2) = \begin{cases} true & Dif(C_1,C_2) > MInt(C_1,C_2) \\ false & otherwise \\ \end{cases} \\ Dif(C_1,C_2) = min_{v_i \in C_1,v_j \in C_2,(v_i.v_j) \in E}w(v_i,v_j) \\ MInt(C_1,C_2) = min(Int(C_1)+t(C_1),Int(C_2)+t(C_2)) \\ Int(C) = max_{e \in MST(C,E)}w(e) \\ t(C) = \cfrac{k}{|C|}
类聚的依据为D(C_1,C_2)的结果,当为true时,即外部最小连接强度Dif(C_1,C_2)大于内部最大连接强度MInt(C_1,C_2)时,两个区域合并。若两个区域之间无连接,则外部链接强度为无穷大。

合并候选框

候选框的合并基于一个评分,若两个区域的评分高于某个阈值,则将这两个候选框合并,评分函数如下:
s(r_i,r_j) = a_1s_{colour}(r_i,r_j) + a_2s_{texture}(r_i,r_j) + a_3s_{size}(r_i,r_j) + a_4s_{fill}(r_i,r_j)
其中,{a_x}(x=1,2,3,4)为权值,表示每个部分的重要性;s_{i}为评分分量:

  • s_{colour}:颜色分量,用于评价颜色关联性,计算方法为对所选区域不同颜色空间内进行横轴被分为n份(bin=n)的一维直方图统计,可得C_i=\{c^1_i,c^2_i,...,c^n_i\}c_i^k表示数据落在直方图第k个区域对应范围内的像素数量,最终区域i和j的颜色分量评分为s_{colour}(r_i,r_j)=\sum\limits_{k=1}^nmin(c_i^k,c_j^k)
  • s_{texture}:纹理分量,用于评价纹理的关联性,使用Fast SIFT-like特征描述,与颜色分量类似做直方图统计,获得T_i = \{t_i^1,...,t_i^n\},最终区域i和j的纹理分量评分为s_{texture}(r_i,r_j) = \sum\limits^n_{k=1}min(t_i^k,t_j^k)
  • s_{size}:大小分量,s_{size}(r_i,r_j) = 1-\frac{size(r_i)+size(r_j)}{size(im)},用于优先考虑小尺寸图像的合并。size(im)为图片尺寸
  • s_{fill}:重叠分量,s_{fill} = 1 - \frac{size(BB_{ij})-size(r_j)-size(r_i)}{size(im)},用于优先考虑重叠大的尺寸合并,im为整个图片,BB_{ij}为两个区域合并后的矩形区域。

这一步合并完成后产生一系列候选框,测试集测试大约每张图片有2K个候选区域。

预处理

由于候选框的尺寸不同,而后续卷积神经网络的输入要求一定,因此需要一定的预处理将图片尺寸归一化,该系统中直接使用仿射变换将图片尺寸强行变为卷积神经网络要求的输入(不考虑保证长宽比)。需要注意的是,为了保留上下文,在原有候选框的基础上将候选框外周围16个像素范围内的候选框边缘也加入候选框中。

除了尺寸,预处理还包括减去平均值。

卷积神经网络

卷积神经网络在本系统中用于特征提取,该卷积神经网络输入尺寸为227X227X3,使用的色彩空间为RGB。输出为一个长度为4096的向量,即提取出的特征。该网络共有5个卷积层和2个全连接层。

支持向量机

支持向量机用于判断物品类别,针对每个类型训练一个二分类支持向量机,用于判断候选框是否属于某种类别。该支持向量机输入为特征向量,输出为二分类正例或反例。

边界回归

当支持向量机判断出该候选框属于某个类别后,使用该类别的边界回归器微调边框位置和大小,边界回归器的输入为卷积神经网络Pool5层的输出(即最后一层池化层的输出,第一层全连接的输入),输出调整因子d_*(P)
d_*(P) = w^T\phi_5(P)
其中,P为候选框的参数\{P_x,P_y,P_w,P_h\}\phi_5(P)为卷积神经网络Pool5层的输出,w为权值,调整因子d_*(P)包括四个部分:\{d_x(P),d_y(P),d_w(P),d_h(P)\},调整过程如下所示:

$$
G_x = P_wd_x(P)+P_x \\
G_y = P_hd_y(P) + P_y \\
G_w = P_we^{d_w(P)} \\
G_h = P_he^{d_h(P)}
$$

最终获得调整后的候选框\{G_x,G_y,G_w,G_h\}

模型训练

模型的训练包括三个部分,分别是作为特征提取器的CNN网络的训练、分类器SVM和边界回归器的训练。

CNN训练

CNN使用alexnet的5层卷积+3层全连接层的网络,首先在大型数据集上预训练,训练集使用ILSVRC2012的分类任务训练集。预训练完成后开始针对特定任务微调,微调对应过程如下:

  • 网络结构修改:将原网络最后一层全连接层换为输出为N+1的全连接层(N为物品类别,+1表示背景),随机初始化最后一层全连接层参数。
  • 标记:对于相对于真实标注IoU>0.5的候选框,认为为对应物体,否则为背景
  • 训练参数:SGD优化算法,初始学习率0.001,batch尺寸为128(32个物品+96背景)

SVM训练

针对每种类型训练一个二分类SVM,用于根据特征向量判断该候选框中是否有该类型物品,训练的标记与CNN网络类似使用IoU判断,若与标记物品IoU大于0.3(该阈值可依据不同人物修改),则认为是正例,否则是反例。

边界回归器

边界回归器的训练基于以下公式:
w_* = argmin_{w_*}\sum\limits^{N}_{i}(t_*^i - w_*^T\phi_5(P^i))^2 + \lambda||w_*||^2
其中,t_*^i为标签,使用以下公式计算:

$$
t_x = \cfrac{G_x-P_x}{P_w} \\
t_y = \cfrac{G_y-p_y}{P_h} \\
t_w = log\cfrac{G_w}{P_w} \\
t_h = log\cfrac{G_h}{P_h}
$$

其中G为物品标签中的相关位置数据,P为提取出的候选框的位置数据。

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

推荐阅读更多精彩内容

  • 【记者】 看到网络上热传的这条消息,突然想到写一篇一千个字以内的文章,这个很难去展开的话题,最多只能讲1/3。...
    竹童阅读 251评论 0 0
  • 爱情分为两种,一见钟情和日久生情。可我总认为日久生情是在一见钟情的基础上产生的,只有在初见的那瞬间心中有了悸动的感...
    拾土阅读 407评论 0 3
  • 周日本该是个好好休息,陪着老公孩子出去玩耍的好日子,可惜我还是上班,把他们爷仨扔在家里度过了一天。 ...
    假装自己是仙女阅读 151评论 0 0
  • 二十几岁。本该是七八点钟的朝阳,朝气蓬勃,意气风发。你却感到迷茫,前路漫漫,何处是远方? 无论你是大学生还是刚入职...
    我的老师是只猫阅读 2,735评论 7 18