机器学习与数据挖掘深度学习·神经网络·计算机视觉

RCNN学习笔记

2018-07-19  本文已影响0人  月见樽

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

系统结构

structure.png

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

候选区域提取

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}为评分分量:

这一步合并完成后产生一系列候选框,测试集测试大约每张图片有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的分类任务训练集。预训练完成后开始针对特定任务微调,微调对应过程如下:

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为提取出的候选框的位置数据。

上一篇下一篇

猜你喜欢

热点阅读