物体识别的研究目标是识别图片中是否包含某个物体,关键技术有特征提取和训练分类器,由于这两个步骤是大多数高级视觉任务的组成部分,如:显著性区域提取、物体检测、场景理解等。所以,物体识别可以看作计算机视觉领域的一项基础研究,可促进其他视觉任务的发展与完善。
近年来,卷积神经网络(Convolutional Neural Network,CNN)已被广泛应用于物体识别任务,并在很多标准数据集上取得了前所未有的成果[1-8]。文献[4]提出基于深度学习的R-CNN(Regions with CNN)方法,该方法将传统物体检测的平均精度(mean Average Precision,mAP)由34.3%提升到66%。但是R-CNN存在训练阶段复杂,分为多个步骤,测试图片花费时间长等缺点。之后,学者们在物体检测方面研究成果丰硕,如SPP-NET(Spatial Pyramid Pooling Network)[5]、Fast R-CNN[6]、Faster R-CNN[7]和YOLO(You Only Look Once)[8]等代表性文章。这些文章都是用CNN的方法实现物体检测,不仅在R-CNN的基础上提高了检测精度,而且缩短了检测的时间,甚至YOLO可以进行实时检测。
以上物体检测的方法都只是利用RGB彩色信息,而没有利用深度信息。由于深度数据具有光照和颜色不变性,并且能提供彩色数据不能提供的几何信息,对深度数据提取额外的特征将大幅提升视觉算法的性能。华盛顿大学Lai等[9]创建了一个RGB-D物体数据库用于验证物体识别算法。这个数据库既包含彩色图片又包含对应的深度信息,分别约为25万张,这些图片是用Kinect传感器对日常生活中的300个物体进行拍摄得到的,拍摄的时候相机被安装在离水平方向成30°、45°以及60°三个方向,并采用上义词/下义词的词网关系来部署物体类别,这些物体可被分成51个类,按照首字母排序的方式对应苹果类(apple)到水瓶类(water bottle),每个类别下包含多个同类物体。图 1列出了这个数据库中一些物体的彩色图片。
根据特征提取算法的不同,代表性的物体识别方法可以分为传统的方法和深度学习的方法两种。传统的方法在特征提取时采用的是人工设计的特征,这种特征受光照、形变和环境背景影响较大,不具有通用性。当Lai等[9]最初提出这个数据库时,同时还提出了一种用于这个数据库的识别和检测算法,彩色图像上提取的特征是尺度不变特征变换(Scale-Invariant Feature Transform,SIFT)、纹理直方图和颜色直方图,深度图像上提取的特征是Spin Images,实验证明了将彩色和深度图像的特征结合起来训练分类器的方法能显著提高分类精度。之后,Bo等[10]对方向直方图的方法(SIFT、方向梯度直方图(Histogram of Oriented Gradient,HOG)等)进行了推广,提出了一种核描述子的方法,在这个数据库上实现了物体识别功能,这些核描述子有颜色核、梯度核、形状核等,这种方法在他们之前的工作基础上取得了较大的突破。以上两种研究属于监督学习的范畴,文献[10]又提出了一种非监督学习的方法,用无标签的数据训练模型,首先使用k-奇异值分解(k-Singular Value Decomposition,k-SVD)方法从图片块中学习到稀疏词典,再用空间金字塔池化和正交匹配追踪的方法从词典构建分层的特征,最终在5种数据库上都实现了当时最高的分类精度,但这种方法的缺陷是特征的维度太高(188300维),不能用到大规模数据库的视觉任务当中[11]。
Socher等[12]提出了一种结合卷积神经网络和递归神经网络的模型对RGB-D物体数据库提取彩色和深度图像的特征,并将特征串联起来训练支持向量机(Support Vector Machine,SVM)分类器,虽然最终的分类效果较好,但这种方法并没有采用学习的方式来训练模型参数,卷积层的模板参数是通过k-means方法对图片块聚类得到的,递归神经网络中的参数都是随机初始化得到的。在此基础上,2014年Bai等[13]对文献[12]方法进行了改进,将稀疏自编码器和递归神经网络结合起来,用稀疏自编码器取代卷积神经网络中的卷积核模板,用非监督学习的方式训练了一个深度神经网络模型,这个模型能接受将彩色和深度数据结合起来的四通道数据作为输入,精度能达到87.3%。文献[14]中提出了一种递归卷积神经网络(Recurrent Convolutional Neural Network,RCNN)用于物体检测,但该方法没有加入深度信息,在数据集CIFAR-10上的测试精度达到了90.7%,取得了当时最好的结果。
本文首先用RGB-D物体数据库中的彩色图片训练了一个三个卷积层和一个全连接层的卷积神经网络模型,直接用这个模型在彩色数据的测试集上得到的分类精度是51%。由于已有的研究已证明在特定任务中训练的深度卷积神经网络模型,可以被用于其他视觉任务中不同的数据库上,本文还在Caffe开源库中提供的AlexNet基础之上采用了微调的方法[15]。所谓微调就是用任务数据库对已有的在大规模数据库上训练好的模型进行再训练,从而使训练好的模型参数能够拟合当前的数据库。实验发现,用微调的方法在彩色图片上的分类精度能达到74%,由此就确定了用微调的方法来提取图片特征完成物体识别的功能。针对微调时所用的模型只能接受三通道数据这一问题,采用了将深度数据转换为三通道数据的方法,然后用于彩色图片相同的方法来训练卷积神经模型。最后用两个训练好的模型对彩色和转换后的深度图片提取第一个全连接层的特征,训练线性支持向量机(Linear Support Vector Machine,LinSVM)分类器,最终分类精度达到了91.4%,比文献[13]中的稀疏自编码递归神经网络(Sparse Auto-Encoder Recursive Neural Network,SAE-RNN)方法提高4.1个百分点。
此外,本文还将提出的物体识别算法应用到了基于NYU Depth V2数据库的场景理解任务中的超像素特征提取过程,实现对场景中各个物体的类别进行标注。该数据库可以作为验证复杂室内环境下场景理解算法的一个基准,彩色和深度图片分别是1449张,分辨率为480×640,数据库中同时还提供了对场景中各类物体进行人工标记的图片。图 2中是数据库中两个场景的彩色图片、深度图片以及真实标记的图片。
卷积神经网络最大的特点是权值共享。图 3中,假设大的矩形框表示的是一张输入图片,图片中各个像素值表示不同的输入神经元,卷积层的每个神经元只与输入图片中一定数量的神经元有权重连接,假设对应的输入区域是3×3。卷积操作就是先确定一个3×3的卷积模板,代表9个权重参数,连接输入神经元与卷积层神经元,再将这个卷积模板从图片的左上角,以一定的步长,在图片上滑动,每滑到一个位置,就对输入神经元和对应的权重参数求乘积和。假设输入是{x1,x2,…,x9},激活函数为f,则输出y为:
$y=f(b+{{x}_{1}}{{w}_{1}}+{{x}_{2}}{{e}_{2}}+...{{x}_{9}}{{w}_{9}})$ | (1) |
其中b可以看成输出神经元与上层输出为1的神经元以权重b相连。所以,卷积操作就是用卷积模板对输入图片的各个3×3区域提取特征,图 3中三个小矩形实际上表示同一个卷积模板,也就是权值是共享的。之所以能这么做,是因为当能对图片的某个位置提取某种特征时,往往也能对图片其他的位置提取相同的特征,原因是图片中的物体可能存在于图片的不同位置。当这个卷积模板在图片上卷积过一遍之后,就得到一张特征图,特征图中每个像素值对应卷积层各神经元的输出。当有多个这样3×3大小的卷积模板时,每个卷积模板都能对图片进行一次这样的卷积操作,有多少个模板,就能得到多少张特征图。这种卷积操作的好处是大幅减少了模型要训练的参数个数,从而缩短模型的训练时间,还可以增加要提取的特征维数。又由于这种模型可以直接接受原始的图片作为输入,卷积神经网络现已被广泛用到计算机视觉领域。
卷积神经网络用于图像识别的一个技术难点是卷积神经网络结构的设计。为了得到一个适合用于RGB-D物体数据库的模型,本文采用了从头设计模型和微调现有模型这两种方法。首先在彩色图像上进行对比实验,观察哪种方法在彩色测试集图片上的分类精度高,选择精度高的方法作为最终训练模型的方法。经过在训练集和测试集上的多次实验验证,针对RGB-D物体数据库所设计的深度卷积神经网络的结构如图 4所示。对比性的实验结果表明,微调经典的AlexNet网络的效果要比我们自己设计的几种卷积神经网络的实验效果要好,原因可能是数据库不够大,不能拟合一个多层的卷积神经网络模型,或者是训练过程中各参数没有调好,如卷积层的层数、各层神经元的个数等不符合目标数据库的统计特性。虽然图 4中的网络比微调时所用的模型效果要差一些,但设计网络时总的思想和所用的关键技术都是一样,只是在参数选择、模型大小上有所差异,且这个网络模型更简单一些,也更容易理解,所以本文将以图 4中的网络来说明卷积神经网络中的相关技术。
为了对这个网络结构有个直观的认识,图 5给出了这个模型全部关键技术的布局以及详细的参数设置情况。以下将从前向传播到反向传播过程,依次解释图 5中不同序号所对应的流程。要说明的是,为了便于观察,图 5中给出的输入数据只包含一张图片,实际训练的时候,采用的是mini-batch的方法,即每训练一次,训练集包含100张图片,这在图 4中可以看出,测试的时候,每次输入的是50张图片。总的来看,不算池化层,这个模型包含3个卷积层和1个全连接层。
本节对应图 5中序号①部分,关键技术如下。
1.2.1 图像预处理(Data)用深度卷积神经网络对图像提取特征的一个好处是不用对原始的图片作一些底层的图像处理操作,可以把原始的图片直接输入给网络模型。但由于计算机计算能力有限,现在还不能达到完全依赖增加训练数据来训练大的模型这样的程度,而是要对训练数据增加一些先验知识,也叫作数据增强处理。主要方法是从原始的图片中随机选取出几张大的图片块,并对这些图片块作左右翻转,将得到的图片块都作为训练数据的一部分,这样做的好处是可以减少过拟合。本文在从头训练这个模型的时候,对图像的处理部分仅仅包括将图片的分辨率统一变换成148×148×3,再将图片分成训练集和测试集,测试集的数据是从所有51类物体中各随机取出一个物体的所有图片构成的,把剩下的所有图片作为训练集,并求出训练集的均值,训练和测试模型的时候,将输入数据减去训练集的均值,从而降低数据间的相似性,提高训练速度。
1.2.2 卷积操作(Conv1)卷积操作上节已经介绍过。从头设计模型的实验中,首先随机初始化64个大小为9×9×3的卷积模板,再以4个像素大小的步长对输入图片进行卷积,经过激活函数,得到64个大小为35×35的特征图,每个特征图对应一个卷积模板,特征图上每个像素的值是对应的卷积模板与相应位置处9×9×3区域的图片块进行卷积的结果,特征图的高度h和宽度w满足以下公式:
$h=w=x-k/s-1$ | (2) |
其中:x是输入图像的高度或宽度,k是卷积模板的高度或宽度,s是步长。此步骤中x=148,k=9,s=4。
1.3 从第一个卷积层到第二个卷积层本节对应图 5中序号②部分,关键技术如下。
1.3.1 激活函数的选择(Relu1)激活函数的作用是引入非线性因素,解决线性函数表达能力不够的问题。不同的激活函数对应不同的神经元,本文选取的是线性阈值神经元,输出表达式为:
$f=\max (0,b+\sum\limits_{i=1}^{n}{{{x}_{i}}{{w}_{i}}})$ | (3) |
其中n表示输入神经元的个数。这是一种强制输出为0的方法,训练后的网络具备一定的稀疏性,从而减少数据冗余,使提取的特征更具表达能力。这种神经元也是现在深度神经网络中经常用到的神经元[16]。
1.3.2 最大池化(Pool1)卷积神经网络提取出来的特征不具有对平移、旋转等的变换不变性,而是会受输入数据变换的影响。如果要实现提取出来的特征具有一定的变换不变性,可以使用下采样的方法,减小卷积后生成的特征图的分辨率,这种方法现在被称为pooling技术。从图 5可以看出,本文训练的深度卷积神经网络在激活层的后面加上了pooling层,即在提取出来的特征图上以步长为2依次取3×3区域中的最大值,还可以提取区域的均值,但取最大值的方法更常用一些,结果就得到第一个pooling层中大小为17×17×64的特征图。在模型中加上这一技术的好处是减少了上一层到下一层输入神经元的个数,可以减少过拟合,还可以增加要提取的特征维数。但这样做也存在一个问题,就是会丢失一些物体的空间位置信息。
1.3.3 局部响应归一化(Norm1)从图 5可以看出,在pooling层的后面有一个归一化层,被称为局部响应归一化技术x,y[16]。加上这项技术的主要目的是抑制隐藏层输出大的激励,从而提升模型的泛化能力。基本思想是对局部输入的区域进行归一化,主要有两种形式:一种是对相邻特征图中的激励进行的归一化,另一种是对同一特征图中相邻局部区域进行的归一化。本文采用的是第一种方法。假设ai是最大池化层产生的第i个特征图,(x,y)位置处的激励,ox,yi是归一化的响应,计算公式为:
$o_{x,y}^{i}=\frac{a_{x,y}^{i}}{{{(k+\alpha \sum\limits_{j=\max (0,i-n/2)}^{\min (N-1,i+n/2)}{{{(a_{x,y}^{j})}^{2}}})}^{\beta }}}$ | (4) |
其中: n表示同一空间位置相邻特征图的个数,N表示总的特征图数目,特征图的排列顺序是任意的,这在训练模型之前就已经确定了。k,n,α以及β这几个参数值是从一系列的验证集中确定出来的,本文所用的参数与文献[16]中一样:k=2,n=5,α=10-4以及β=0.75。
1.4 从全连接层到输出层序号②和序号③之间的部分对应第二个卷积层到第三个卷积层,以及第三个卷积层到全连接层,这之间所采用的技术与前面是类似的,即从卷积层,到激活层,到池化层,再到归一化层,然后又是卷积层,归一化层,到全连接层,这些在前面都已经介绍过。本节对应图 5中序号③部分,关键技术如下。
1.4.1 全连接层(Full4)卷积层的每张特征图表示的是图像的一种特征,层数越高,特征越抽象,加上全连接层的目的是将底层各特征图的特征结合到一起,然后用SVM进行分类。本文全连接层中设计的神经元个数是2048,每个神经元都与上一层全部的神经元相连接。
1.4.2 Dropout技术对全连接层的输出归一化之后,有一个dropout层。Dropout技术是多伦多大学Hinton教授提出,用来避免训练的模型产生过拟合。Dropout技术的实现过程是,每次用一张图片或一组图片训练网络模型时,将dropout所在的全连接层中的隐藏神经元的激励按照一定的比例随机设置成0,本文中这个比例是0.5,这能使这些神经元对应的权重系数在前向和反向传播过程中保持不变,也就是不参与权重的更新,当用下一组图片进行训练时,这些随机选出的不参与权重更新的神经元与上一组是不一样的,是重新随机设置的,所以每组训练数据对应的模型都是不一样的。测试的时候,将全连接层中所有的神经元的激励都乘上比例系数0.5,相当于取不同模型预测的平均值。与分别训练多个不同模型,再将模型结合起来降低训练误差的方法相比,这种方法能够取得类似的效果,还能减少训练模型的时间。Dropout技术基于的思想是,如果每次用训练样本进行权重更新时,全连接层中的神经元节点都以一定的概率随机出现,这样就能避免有些神经元每次都同时出现,从而使权重的更新不再依赖于有固定关系的神经元节点的共同作用,可以减小神经元之间的相互影响,阻止有些特征只在其他特征存在的条件下才有效的情况发生。这种方法能促进训练数据的收敛,但是会降低模型对测试数据的泛化能力[17]。
1.5 从输出层到反向传播过程 1.5.1 Softmax分类器模型的输出层采用的是Softmax分类器,输出不同预测结果的概率分布。由于RGB-D物体数据库有51类物体,所以Softmax分类器有51个输出,分别对应一张图片属于各个类别的预测得分,假设有一个训练集{(x(1) ,y(1) ),(x(2) ,y(2) ),…,(x(100) ,y(100) )},其中x(i)表示全连接层的输出特征向量,y(i)是这个数据的真实标签,值为{1,2,…,51}中的一个。100是每训练一次,输入数据所包含的图片数目。前向传播之后,即在数据传到输出层之后,对于单个训练数据,Softmax分类器的输出可以表示为:
${{h}_{w}}({{x}^{(i)}})=\frac{1}{\sum\limits_{j=1}^{51}{{{e}^{w_{j}^{T}{{x}^{(i)}}}}}}{{\left[ \begin{matrix} {{e}^{w_{1}^{T}{{x}^{(i)}}}}&{{e}^{w_{2}^{T}{{x}^{(i)}}}}&\cdots &{{e}^{w_{51}^{T}{{x}^{(i)}}}} \\ \end{matrix} \right]}^{T}}$ | (5) |
其中wi是全连接层中2048个神经元与Softmax分类器第i个输出神经元相连接的权重参数。用Softmax分类器时,损失函数一般采用交叉熵的方法,本模型的损失函数为:
$\begin{align} & J(W,b)=-\frac{1}{100} \\ & [\sum\limits_{i=1}^{100}{\sum\limits_{j=1}^{51}{(1\{{{y}^{(i)}}=j\}log\frac{{{e}^{w_{j}^{T}{{x}^{(i)}}}}}{\sum\nolimits_{l=1}^{51}{w_{l}^{T}{{x}^{(i)}}}})}}] \\ & +\frac{\lambda }{2}\sum\limits_{i=1}^{51}{\sum\limits_{j=0}^{2048}{w_{ij}^{2}}} \\ \end{align}$ | (6) |
其中:1{yij(i)=j}表示当第i个训练数据的类别属于第j类时,输出为1;$\frac{\lambda }{2}\sum\limits_{i=1}^{51}{\sum\limits_{j=0}^{2048}{w_{ij}^{2}}}$是权重衰减项,加上这一项可以限制权重的大小,降低模型的复杂度,确保损失函数是严格的凸函数,从而在求解的时候可以求得全局最小解,还能减弱模型过拟合问题;λ是权重衰减系数,在训练这个模型的时候,λ的值对网络性能的影响还是比较大的,如果λ调得过大,模型容易过拟合,如果λ值太小,模型容易欠拟合,通过控制模型中其他参数不变,对一系列不同大小的λ作对比训练,本模型最终确定的λ的值为0.04。在求得损失函数值之后,再通过反向传播算法更新模型中各个权重参数。
1.5.2 反向传播算法神经网络中参数的学习规则通常采用随机梯度下降法,目标是学习到最优的权重参数(W,b)使损失函数值最小,参数更新的关键是求损失函数对各权重参数的偏导数,梯度下降法每次用如下公式对参数(W,b)进行更新:
$w_{ij}^{(l)}=w_{ij}^{(l)}-\alpha \frac{\partial J(W,b)}{\partial w_{ij}^{(l)}}$ | (7) |
$b_{i}^{(l)}=b_{i}^{(l)}-\alpha \frac{\partial J(W,b)}{\partial b_{i}^{(l)}}$ | (8) |
其中:wij(l)表示第l+1层的第i个神经元与第l层的第j个神经元相连接的权重参数,bi(l)表示第l+1层的第i个神经元的偏置项。α为学习率:学习率越大,训练速度越快,但可能使模型进入局部最优;学习率越小,训练速度越慢,往往都能找到最优解。实际训练的时候,对学习率的选择要在这两者间进行折中,本模型的学习率在经过多次对比训练后确定为10-5。对(W,b)的偏导数求解可以进一步转化为:
$\frac{\partial J(W,b)}{\partial w_{ij}^{(l)}}=\frac{\partial J(W,b)}{\partial s_{i}^{(l)}}\frac{\partial s_{i}^{(l)}}{\partial w_{ij}^{(l)}}=\delta _{i}^{(l)}a_{j}^{(l-1)}$ | (9) |
$\frac{\partial J(W,b)}{\partial b_{i}^{(l)}}=\delta _{i}^{(l)}$ | (10) |
其中:aj(l-1) 为第l-1层第j个神经元激活函数的输出,可以通过前向传播求得,δi(l)为第l层第i个神经元输出的残差。求偏导数的问题最终就转化为求各层的残差。残差可以通过反向传播算法有效地计算,输出层的残差可以表示为:
${{\delta }^{5}}=-(y-{{h}_{w}}(x))$ | (11) |
输出层之前几层的残差可以通过反向传播算法求出,当前层(l)的残差可以通过下一层(l+1) 的残差推导求出。所以反向传播算法的主要思想可以概括为,已知损失函数J(W,b)、期望输出y和实际输出hw(x),网络得到的是输出层的残差,这样就可以一层一层往后计算各隐藏层的残差,并求得各个权重参数更新的梯度,从而对参数进行更新。
2 物体识别的实验本文最终基于RGB-D物体数据库的物体识别总体框图如图 6所示,实验中的两个卷积神经网络模型是在Caffe开源库中提供的AlexNet的基础之上,用微调的方法再训练得到的,该网络有5个卷积层和2个全连接层[18]。以下是全部的实验步骤。
物体识别主要任务是识别训练集中没有出现过的物体,为了使RGB-D物体数据库适合用于Caffe模型,需要对这个数据库作一些预处理。实验中,彩色图像和深度图像分别训练各自的深度卷积神经网络模型。
2.1.1 获取训练集和测试集本文按照文献[12]中的方法来划分数据库的训练集和测试集,训练集用来对模型进行训练,测试集用来测试训练好的模型的好坏,对模型的评价指标是在测试集上的精度。因为训练集中的各类样本都是均匀选取的,所以不用考虑不平衡数据集的问题。数据集的划分方法是,先从数据库的300个物体共51类图片中各随机选取出一类中的一个物体的所有图片组成测试集,约为34874张,将剩下的249个物体,约为172788张图片作为训练集。
2.1.2 调整图片尺度由于Alexnet模型只能接受固定分辨率的输入数据,本文先将训练集和测试集中每张图片的分辨率都上采样成256×256×3,并计算出训练集的均值,在将训练集输入给模型进行训练之前,会减去训练集的均值。重复的实验表明,对彩色图片减去ImageNet训练集上求得的均值,对深度图片减去RGB-D物体数据库中深度图片自身的训练集均值的方法要比其他的组合要好。
2.1.3 数据增强处理训练的时候,本文先从训练集每张分辨率为256×256的图片中的不同位置随机选取出几个分辨率为227×227的图片块,并对这些图片块作水平翻转,再将训练集中所有这些图片块组成训练集。测试的时候,取测试图片左上、右上、中间、左下以及右下5个图片块,并作水平翻转,对得到的10个图片块上的预测结果取均值,作为测试图片的预测结果。
2.1.4 将深度数据转化为三通道数据对Caffe模型进行微调的时候,要求输入数据是三维的。由于原始的深度数据是一通道的,每个像素的值表示的是图片中物体到相机的距离,所以训练模型之前会将深度数据转化为三通道数据。又由于Kinect在采集深度数据时会存在信息丢失,在将深度数据转化为三通道数据之前,需要先修复深度图像中丢失的信息,这些丢失的信息在深度图像中的像素值为0。本文使用迭代的方法,依次取0像素值周围5×5区域中所有像素的均值替代该0像素值。然后,参考文献[19]中的方法将修复后的深度图像转化为三通道图像,分别是物体到相机的距离、物体离点云中最低点的高度以及点云中法向量与重力方向的夹角。
2.2 微调AlexNet模型本文用彩色数据和三通道的深度数据微调两个AlexNet模型,方法是在训练好的AlexNet模型的基础上,再用这两种模态数据的训练集分别对这两个模型进行再训练,通过观察测试集上的分类精度判断训练效果。在深度神经网络中,层数越高,提取特征的泛化能力就越差。也就是说,在AlexNet模型中层数越高,对应的权重参数越匹配原始训练时所用的数据库,对其他数据库的适用性较差。因此,实验在微调AlexNet模型的时候,会将输出层的学习率设置得比其他层稍大一些,从而使训练速度更快,使模型能够收敛。
实验结果是,在彩色图像上微调2000次,在深度图像上微调4000次之后(每组训练数据包含100张图片),得到了这两个模态数据各自最优的模型。当尝试更多次迭代的时候,网络在测试集上的分类精度不会再继续上升,反而会持续下降,最后维持在一个比较小的值。理论上来说,在测试集上的精度达到一个比较高的值之后是不会再下降的,可能的原因是学习率调得稍微大了些,但如果将学习率再调小,模型的收敛速度会非常慢,又由于RGB-D物体数据库不够大,从而不能使模型收敛。
实验中各参数设置情况为:对于彩色数据,初始学习率是10-5,迭代20000次之后减为10-6,momentum系数为0.9,权重衰减系数为0.0005;对于深度数据,各参数与彩色数据一样。由于AlexNet模型中参数比较多,实验所用计算机显卡的内存不够用,这部分的实验都是在CPU上进行的。计算机的配置是intel i5处理器,16GB内存,GTX 750 2GB显卡,训练时间约为15h。
2.3 特征可视化模型训练完之后,为了对模型各层的特征有个直观的认识,实验还对包含灯泡的图片提取的各层特征进行了可视化。从图 7可以看出,第一个卷积层的特征反映的是物体的边缘信息,越往上层,特征的可解释性越差,但特征也越稀疏,表达能力越强。文献[20]中用了一种间接的方法来观察不同层特征的作用。
实验表明,用微调好的模型对RGB-D物体数据库提取特征,由于SVM分类器对大数据高维特征的分类支持较好,而且实验表明SVM效果比模型中的Softmax分类器直接分类的效果好很多。本文采用最近邻(Nearest Neighbor,NN)分类器和线性SVM分类器(LinSVM)对微调后的模型中提取的特征进行分类。
为了与现有方法进行比较,本实验选取训练集和测试集的方法与文献[4]和文献[7]是相同的。先从51个类别的每种类别中都随机选取出一个物体,即51个物体,再从选出的每个物体的全部图片中每隔5个选取一张图片,构成测试集,在剩下的246个物体的每个物体的全部图片中每隔5个选取一张图片,组成训练集。对这个过程重复5次,即随机选取5组训练集和测试集,最后的实验结果是在这5组测试集上精度的平均值。
选取好训练集和测试集之后,再用微调后的AlexNet模型对这些训练集和测试集提取第一个和第二个全连接层的特征,用这些特征训练线性SVM分类器(LinSVM)和最近邻分类器(NN)。表 1列出了这两个全连接层的特征在两种分类器中分类的结果,数字以百分比表示。可以看出,第一个全连接层中提取的特征和线性SVM分类器的组合要比其他的组合在测试集上的分类精度高。
表 2中将本文的实验结果与现有方法进行比较,可以看出,虽然文献[6]方法在深度数据上的分类精度比本文的精度高,但在彩色数据和将二者结合起来的精度上,本文所用的方法效果最好,而且跟基于人工设计的特征比较起来,这种基于深度学习的方法更具有通用性,也更有效。
图 8是本文在RGB-D物体数据库上取得的最好实验结果的混淆矩阵。可以看出,除了第32类、第37类以及第38类物体,其他的都能被很好地的识别出来。这几种容易混淆的物体类别分别是:a)球和洋葱、蘑菇和洋葱之间;b)梨和苹果之间;c)水壶和洗发水瓶、水壶和纸盒以及水壶和咖啡杯之间。a)和b)中类别易混淆是因为不同类物体之间的相似性,c)中各类易混淆是因为水壶这类物体的类内差比较大。这些都是物体识别领域的难点,对算法的要求很高。
验证了物体识别算法之后,本文还将以上提出的算法应用到了场景理解任务中的超像素特征提取过程。场景理解的主要流程包括超像素分割;微调深度卷积神经网络模型用于提取图片块特征,进而求得超像素的特征;训练线性SVM分类器完成场景标注。以下将依次对这些关键技术予以介绍。
3.1 超像素分割物体识别、三维重建等技术的发展对图像分割算法性能的要求越来越高,实际场景中拍摄的图片往往复杂度高、包含多个物体,将这些图片中的各个物体都分割出来,有利于对图片进行解析,这些分割出来的不规则图片区域被称为超像素。场景理解中对分割算法性能的要求更苛刻,对图片分割的好坏对后面进行训练样本的标注过程会有较大影响。
本文选择文献[23]中Arbeláez等提出的gPb-ucm算法,并采用文献[24]中的方法加入深度信息。这种算法将边缘检测算法和分水岭分割算法相结合,实现了一种有向的分水岭分割,将图片分割成多个最细粒度的带边界概率值的封闭区域。边界概率值表示像素属于边界像素的可能性,通过设定不同的边界概率阈值,可实现对一张图片不同尺度的分割。本文选择的分割阈值为0.12。图 9是原始图片和分割后的结果。
场景理解中需要对超像素提取特征,但是超像素是由分割算法得到的不规则图片区域,直接对其提取特征是困难的。本文采取的方法是先在图片四周扩充5个零值像素,再以6个像素的步长,从图片左上角开始,对图片中46×46大小的图片块提取特征,最后将图片块的中心像素落在各超像素内部的所有图片块的特征,用非最大抑制的方法转化为对应的超像素特征。其中,对图片块提取特征的方法就是上一节物体识别中深度卷积神经网络提取特征的方法,所以在对图片块提取特征之前,要先训练对应彩色和深度通道的两个深度卷积神经网络模型。本文所用的这两个模型是文献[19]中Gupta等用NYU Depth V2数据库验证对13类物体进行物体检测的算法时,也在AlexNet上采用微调的方法训练得到的。为了将深度数据转换为三通道,实验所用的图片分辨率为425×560。
3.3 训练分类器NYU Depth V2数据库中提供的带真实标签的图片总共有894个类别,若对场景中的这894类物体都进行标注,对算法要求较高。本文将对场景中的40类物体进行标注,这40类物体与文献[16-17]中相同,如表 3所示。
训练集和测试集的图片数分别为795和654,求得超像素的特征之后,再用训练集的超像素特征训练线性SVM分类器,惩罚参数C=1。表 3中是最终在测试集上对40类物体进行标记的精度。文献、文献以及本文的方法在40类物体标注的平均精度分别为19.0%、20.5%和19.9%。与现有方法进行比较,可以看出本文方法与文献[16-17]效果相当,在对door、pillow、floor mat、fridge等类别的标记上效果甚至是相对最好的,由此证明了本文提出的物体识别算法应用到场景理解的可行性。
4 结语本文摒弃传统的人工提取特征的方法,用微调深度卷积神经网络的学习的方法来提取图片特征,并采用将单通道深度数据转换为三通道数据的方法解决微调时模型只能接受三通道数据的问题,实现了在RGB-D物体数据库上物体识别的功能,并且精度能达到91.35%,比现有方法高出将近4%。此外,本文还将这种提取特征的方法应用到了基于NYU Depth V2数据库的场景理解任务,取得了与现有方法标记精度相当的效果。可见,大规模数据库上训练后的模型,可以作为多种其他视觉任务中通用的提取图片特征的模型。但是,这种方法要求输入给模型的图片分辨率和通道数都是固定的,这是其局限性,有待进一步研究。
[1] | CHATFIELD K, SIMONYAN K, VEDALDI A, et al. Return of the devil in the details:Delving deep into convolutional nets[EB/OL].[2016-01-20]. http://arxiv.org/pdf/1405.3531v4.pdf. |
[2] | LIN M, CHEN Q, YAN S. Network in network[EB/OL].[2016-01-20]. http://arxiv.org/pdf/1312.4400v3.pdf. |
[3] | RAZAVIAN A S, AZIZPOUR H, SULLIVAN J, et al. CNN features off-the-shelf:an astounding baseline for recognition[C]//Proceedings of the 2014 IEEE Conference on Computer Vision and Pattern Recognition Workshops. Washington, DC:IEEE Computer Society, 2014:512-519. |
[4] | GIRSHICK R, DONAHUE J, DARRELL T, et al. Rich feature hierarchies for accurate object detection and semantic segmentation[C]//Proceedings of the 2014 IEEE Conference on Computer Vision and Pattern Recognition. Piscataway, NJ:IEEE, 2014:580-587. |
[5] | HE K, ZHANG X, REN S, et al. Spatial pyramid pooling in deep convolutional networks for visual recognition[C]//Proceedings of the 13th European Conference on Computer Vision. Berlin:Springer, 2014:346-361. |
[6] | GIRSHICK R. Fast R-CNN[C]//Proceedings of the 2015 IEEE International Conference on Computer Vision. Piscataway, NJ:IEEE, 2015:1440-1448. |
[7] | REN S Q, HE K M, GIRSHICK R, et al. Faster R-CNN:towards real-time object detection with region proposal networks[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2015 . |
[8] | REDMON J, DIVVALA S, GIRSHICK R, et al. You only look once:unified, real-time object detection[EB/OL].[2016-01-20]. http://ai2-website.s3.amazonaws.com/publications/YOLO.pdf. |
[9] | LAI K, BO L, REN X, et al. A large-scale hierarchical multi-view RGB-D object dataset[C]//Proceedings of the 28th IEEE International Conference on Robotics and Automation. Piscataway, NJ:IEEE, 2011:1817-1824. |
[10] | BO L, REN X, FOX D. Depth kernel descriptors for object recognition[C]//Proceedings of the 23th IEEE/RSJ International Conference on Intelligent Robots and Systems. Piscataway, NJ:IEEE, 2011:821-826. |
[11] | BO L, REN X, FOX D. Unsupervised feature learning for RGB-D based object recognition[C]//Proceedings of the 13th International Symposium on Experimental Robotics. Berlin:Springer, 2013:387-402. |
[12] | SOCHER R, HUVAL B, BATH B, et al. Convolutional-recursive deep learning for 3D object classification[EB/OL].[2016-01-20]. http://machinelearning.wustl.edu/mlpapers/paper_files/NIPS2012_0304.pdf. |
[13] | BAI J, WU Y. SAE-RNN deep learning for RGB-D based object recognition[C]//Proceedings of the 10th International Conference on Intelligent Computing Theory. Berlin:Springer, 2014:235-240. |
[14] | LIANG M, HU X. Recurrent convolutional neural network for object recognition[C]//Proceedings of the 2015 IEEE Conference on Computer Vision and Pattern Recognition. Piscataway, NJ:IEEE, 2015:3367-3375. https://www.computer.org/csdl/proceedings/cvpr/2015/6964/00/index.html |
[15] | SIMONYAN K, ZISSERMAN A. Very deep convolutional networks for large-scale image recognition[J/OL]. ArXiv.[2016-01-20]. http://www.robots.ox.ac.uk:5000/~vgg/publications/2015/Simonyan15/simonyan15.pdf |
[16] | KRIZHEVSKY A, SUTSKEVER I, HINTON G E. Imagenet classification with deep convolutional neural networks[C]//Advances in Neural Information Processing Systems 25. Piscataway, NJ:IEEE:1106-1114. |
[17] | HINTON G E, SRIVASTAVA N, KRIZHEVSKY A, et al. Improving neural networks by preventing co-adaptation of feature detectors[J]. Computer Science, 2012, 3 (4) : 212-223. |
[18] | JIA Y, SHELHAMER E, DONAHUE J, et al. Caffe:convolutional architecture for fast feature embedding[C]//Proceedings of the 22th ACM International Conference on Multimedia. New York:ACM, 2014:675-678. |
[19] | GUPTA S, GIRSHICK R, ARBELÁEZ P, et al. Learning rich features from RGB-D images for object detection and segmentation[C]//Proceedings of the 15th European Conference on Computer Vision. Berlin:Springer, 2014:345-360. |
[20] | GIRSHICK R, DONAHUE J, DARRELL T, et al. Rich feature hierarchies for accurate object detection and semantic segmentation[C]//Proceedings of the 2014 IEEE International Conference on Computer Vision and Pattern Recognition. Piscataway, NJ:IEEE, 2014:580-587. |
[21] | SILBERMAN, N, HOIEM, D, KOHLI, P, et al. Indoor segmentation and support inference from RGB-D images[C]//Proceedings of the 13th European Conference on Computer Vision. Berlin:Springer, 2012:746-760 |
[22] | REN X, BO L, FOX D. RGB-(D) scene labeling:features and algorithms[C]//Proceedings of the 2012 IEEE International Conference on Computer Vision and Pattern Recognition. Piscataway, NJ:IEEE, 2012:2759-2766. |
[23] | ARBELÁEZ P, MAIRE M, FOWLKES C, et al. Contour detection and hierarchical image segmentation[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2011, 33 (5) : 898-916. doi: 10.1109/TPAMI.2010.161 |
[24] | GUPTA S, ARBELAEZ P, MALIK J. Perceptual organization and recognition of indoor scenes from RGB-D images[C]//Proceedings of the 2013 IEEE International Conference on Computer Vision and Pattern Recognition. Piscataway, NJ:IEEE, 2013:564-571. |
[25] | BLUM M, SPRINGENBERG J T, WVLFING J, et al. A learned feature descriptor for object recognition in RGB-D data[C]//Proceedings of the 2012 IEEE International Conference on Robotics and Automation. Piscataway, NJ:IEEE, 2012:1298-1303. |