2. 北京邮电大学 可信分布式计算与服务教育部重点实验室, 北京 100876
卷积神经网络模型要求训练图像与测试图像在空间尺度上一致.为弱化这一限制,对卷积层特征提取器进行多尺度改进,提出了一种尺度不变卷积神经网络模型,以自动适应输入图像在平面空间上的尺度变化.同时,将多层Maxout网络嵌入新模型中,以进一步提高特征提取能力,提高图像识别与分类的准确性.实验测试结果表明,该模型提高了传统卷积神经网络模型的尺度不变性和分类精度.
2. Key Laboratory of Trustworthy Distributed Computing and Service, Ministry of Education, Beijing University of Posts and Telecommunications, Beijing 100876, China
Convolution neural network models require the consistency of spatial scales between training images and testing images. In order to alleviate this restriction, a scale invariant convolution neural network model with multi-scale feature extractor was proposed, which can adapt to the in-plane scale change of input images. Meanwhile, multi-layer Maxout networks are nested into the model in order to improve the ability of feature extraction, so as to improve the accuracy of image recognition and classification. Experiments show that the new model improves the scale invariance and classification accuracy of traditional convolution neural networks.
近年来,以卷积神经网络(CNN,convolutional neural network)模型为代表的深度学习算法和模型在计算机视觉领域取得了引人注目的进展. 对于传统CNN模型,其在同一个卷积层中所使用的所有卷积核都具有相同的空间尺度. 如果使用某一尺度的训练集来训练这个模型,得到的特征提取器将仅对这一尺度的测试集具有较高的激活值,对于其他尺度的测试图像适应性较差.
为了改善CNN模型的尺度不变性,笔者设计了一种多尺度CNN模型,在卷积层中训练多个尺度的特征提取器,以提高其尺度不变性. 同时,为了提高识别和分类精度,在卷积层中嵌套了多层最大值选出(Maxout[1])神经网络.
1 CNN经典CNN模型由交替叠加的卷积层和池化层组成,最后附加一层或多层全连接层作为输出. 卷积层的特征图通过将上一层输出值与本层的可学习卷积核相卷积得到,其前向传导过程如下:
$z_{j}^{l}=\sum\limits_{i\in {{M}_{j}}}{x_{i}^{l-1}}*k_{ij}^{l}+b_{j}^{l}$ | (1) |
$y_{j}^{l}=f(z_{j}^{l})$ | (2) |
其中:xil-1为l-1层的第i个特征图的输入信号;yjl为第l层的第j个特征图的输出值;Mj为特征图的一组;符号“*”表示有效边界卷积;kijl为第l-1层的第i个特征图与第l层的第j个特征图之间的可学习的卷积核;bjl为输出特征图的偏置;f(·)表示输出激活函数,通常选为逻辑回归函数或修正线性单元.
2 多尺度CNN 2.1 问题描述经过训练,CNN可以提取任意输入图像的特征,而不管特征点位于输入图像的哪个空间位置,因此具有空间位置不变性. 但是对于输入图像的空间尺度变化,传统神经网络具有较差的适应性. 使用某个尺度的训练集训练的网络模型,仅对这个尺度的测试集具有较高的识别精度.
如果对于CNN的尺度不变性处理不当,将会造成输出层对于与训练集尺度相似的测试图像输出较高的激活值,尽管图像中包含的特征的代表性实际上要低于其他尺度的测试图像中的特征. 这种尺度失配一方面会使得真正有鉴别力的特征被忽略,从而造成识别精度或分类精度的下降;另一方面也与CNN的设计思想相矛盾,其设计本意是不论输入图像如何多变,模型都能自适应调整网络权值,从而捕捉到真正有效的隐藏特征.
2.2 多尺度卷积模型前向传播为了使CNN在一定范围内具有尺度不变性,对卷积层进行改进,按照尺度的不同将卷积操作分成多个组,每个组具有不同的尺度. 多个尺度的卷积互相配合,从而能够提取输入图像中包含的不同尺度的特征. 多尺度CNN模型如图 1所示.
![]() |
图 1 多尺度CNN模型 |
多尺度CNN模型的前向传导过程分为以下5个步骤:
1) 网络输入训练图像,标记为x.
2) 通过空间尺度变换Ti(i = {1,2,… ,n}),构建包含n个副本的多尺度训练图像金字塔xi(i = {1,2,… ,n}). 图 1中多尺度金字塔包含3个尺度的副本,其中第i个副本的图像由式(3)生成.
${{{\tilde{x}}}_{i}}={{T}_{i}}\left( x \right)$ | (3) |
当i=1时,尺度变换系数为1,即保持输入图像的原有尺度,这个尺度称为主尺度.
3) 根据CNN的权值共享原则和前向传播算法,对于图像多尺度金字塔中的每个尺度的图像副本,使用相同卷积核进行卷积,计算多尺度金字塔中每个尺度图像的预激活值:
$\tilde{z}_{j}^{l}=\tilde{x}_{i}^{l-1}*{{W}^{l}}+{{b}^{l}},i\in \left\{ 1,2,\ldots ,n \right\}$ | (4) |
其中:Wl为卷积核,bl为卷积核偏置.
4) 通过尺度归一化,将各个尺度的预激活值归一化到相同尺度,即主尺度上,归一化表达式如式(5)所示. 主尺度即输入信号的原始空间尺度.
$z_{j}^{l}=T_{i}^{-1}({{{\tilde{z}}}^{l}}_{i})$ | (5) |
5) 计算归一化后的信号响应的激活值,并对归一化后的多尺度激活值使用Maxout方法进行池化,激活值计算及池化方式如式(6)所示. 因为经过归一化后,信号响应被映射到了相同的空间尺度,所以Maxout可以对各尺度响应在相同位置的激活值进行池化操作.
$y_{j}^{l}=\underset{i\in \left\{ 1,2,\ldots ,n \right\}}{\mathop{\text{Maxouti}}}\,(\sigma (z_{j}^{l}))$ | (6) |
其中σ(·)为激活函数.
2.3 反向传播相比传统CNN,多尺度CNN与之不同的有两点,一是输入信号的尺度变换和逆变换,二是多尺度激活值的最大值池化.
输入信号的尺度变换和逆变换可以采用最近邻插值或者双线性插值等方法,这类插值都是线性变换,只要在前向传播过程中标记了来源数据的空间位置,并且记录其在插值数据中所占权值,在反向传播阶段就可以计算与此插值数据相关联的所有卷积核的梯度.
对于多尺度最大值池化,其反向传播计算过程与Maxout或者概率Maxout算法类似. 在池化阶段,需要记录最终选出的激活值所在的尺度空间标号,结合其在这一尺度空间中的位置索引,就可以计算与这一激活值相关的梯度. 临近空间区域的非最大值不会被选出,因此其梯度为零,在反向传播阶段不参与求导和参数更新.
3 嵌套多层Maxout网络传统CNN在卷积层中使用单层线性卷积,对非线性特征的提取能力不足,难以表征复杂图像中隐含的抽象特征. 笔者将小型多层神经网络嵌套进卷积层中,能够提高模型的特征拟合与提取能力,从而提高识别和分类精度.
此外,Maxout[1]激活函数具有强大的拟合能力,在神经元节点数量足够的情况下,能够拟合所有特征模式. 因此,在嵌套多层神经网络中使用Maxout激活函数,能进一步提高拟合能力,提高分类精度.
在具体实现上,用1×1大小的卷积操作来实现多层感知机,并采用Maxout作为最后一层的激活函数,以提高对非线性特征的提取能力,提高识别精度. 图 2展示了改进前的线性卷积层与改进后的多层Maxout卷积层的区别.
![]() |
图 2 改进前后的两种卷积层对比 |
下面将嵌套多层Maxout网络的多尺度CNN模型(以下标记为MS-CNN嵌套MMN,意为Multi-Scale CNN嵌套Multilayer Maxout Networks)与Wan等[2]的ConvNets、Farabet等[3]的分层ConvNets、Sohn等[4]的受限玻尔兹曼机(RBM,restricted Boltzmann machines)与尺度不变RBM(SI-RBM,scale invariant RBM),以及 Kanazawa等[5]的局部SI-ConvNets等模型进行比较.
测试数据选自MNIST-scale[4]数据集,这是Sohn等在MNIST数据集的基础上,经过平面尺度变换处理过的多尺度版本的MNIST数据集. 数据集包含28×28大小的灰度手写数字图像,由MNIST数据集经过随机尺度变换得到,尺度变换系数为平均分布于[0.3,1.0]之间的随机数.
测试网络基于简单CNN,模型结构如表 1所示. 结构包含两层CNN,分别包含36和64个特征图,对应卷积核大小分别为7×7和5×5. 第1个卷积层使用多尺度模型,每个卷积层嵌套两层Maxout全连接神经网络,神经元数目分别为512和128. 最后一个全连接层包含150个神经元,之后是10个神经元的输出层. 整体网络模型的训练使用随机梯度下降和权值衰减算法,在MNIST-scale数据集上迭代700次,每个小批次训练128个样本. 然后,使用迭代完成的模型测试分类精度和尺度不变性,并与其他算法进行比较.
![]() |
表 1 MNIST-scale实验模型 |
使用Goodfellow等[6]提出的尺度不变性度量方法. 当神经元的输出值hi(x)>ti时,表明这个神经元处于激活状态. 其中,神经元激活阈值ti是一个根据网络状态选出的值,当向网络输入N个单尺度训练样本时,ti的取值可以使G(i)=∑|hi(x)>ti|/N等于或者略大于0.01. 其中G(i)称为全局激活率,根据经验设定其值为0.01.
尺度不变性度量值S的计算方式如下:
1) 对网络模型输入单尺度训练样本,进行前向传播,根据全局激活率G(i)选出神经元激活阈值ti,记录处于激活状态的神经元.
2) 对网络模型输入经过各种尺度变化后的训练样本,对每个神经元计算局部激活率L(i). 局部激活率L(i)表示向网络模型输入尺度变换后的训练集时,步骤1)中神经元仍能保持激活状态的概率. L(i)能体现各神经元对于尺度变换的鲁棒性.
3) 计算每个神经元的尺度不变性S(i)=L(i)/G(i),并选出得分最高的前20%,求其平均值,即为网络模型的整体尺度不变性度量S. 模型尺度不变性度量S越高,表明其对尺度变换的稳定性越好.
图 3显示了MS-CNN嵌套MMN模型与传统单尺度CNN模型在MNIST-scale数据集的尺度不变性度量对比,包括两个卷积层和一个全连接层. 由图 3可以看出,MS-CNN嵌套MMN模型相比传统单尺度模型在尺度不变性上有显著的提高.
![]() |
图 3 MNIST-scale网络各层尺度不变性度量值 |
将MS-CNN嵌套MMN模型在MNIST-scale数据集上进行训练,训练算法使用随机梯度下降和权值衰减. 多尺度卷积层包含6个尺度变化,缩放系数从0.5到2.0,按照21/3的倍数递增. 学习率为固定值0.01,动量为0.9,权值衰减系数为0.000 1. 每个小批次包含128个训练图像,共计迭代700次.
模型训练过程如图 4所示. 训练完成以后,最终分类精度与其他模型的对比如表 2所示. 从表 2中可以看出,未嵌套多层Maxout网络的MS-CNN模型相比其他单尺度模型和多尺度SI-RBM[4],分类精度有所提高,与Kanazawa等[5]的多尺度SI-ConvNets性能相近. MS-CNN嵌套MMN模型相对其他模型,在分类精度上都有10%以上的改进. 4个CNN模型的错误率均低于2个RBM模型,显示了CNN模型在图像识别与分类等机器视觉领域的适用性. 分层ConvNets性能略优于传统CNN,局部SI-ConvNets相比分层ConvNets模型分类精度更高. 在改进尺度不变性,并嵌套多层Maxout网络以后,MS-CNN嵌套MMN模型在多尺度MNIST数据集上取得了最低的分类错误率.
![]() |
图 4 MNIST-scale 训练曲线 |
![]() |
表 2 分类精度对比 |
CIFAR-10[7]数据集包含60 000个32×32大小的RGB彩色图像样本,分为10个类别,每类6 000个样本. CIFAR-10数据集中包含多种尺度的目标类别,大至飞机,小至猫狗,尺度变化范围很大.
用于CIFAR-10样本集实验的MS-CNN嵌套MMN模型包含3层CNN,分别包含32、32和64个特征图,对应卷积核大小均为5×5. 第1个卷积层使用多尺度模型,包含4个尺度变化,缩放系数从0.5到2.0,按照2的倍数递增. 每个卷积层嵌套两层Maxout全连接神经网络,神经元数目分别为128和64. 每个池化层之后都跟着一个局部响应归一化层. 最后是一个全连接层,包含256个神经元,采用Dropout[8]规则化,丢弃概率为0.5. 最后经过10个神经元的Softmax输出层输出预测标签. 网络模型各层参数如表 3所示.
![]() |
表 3 CIFAR-10实验模型 |
模型共训练30 000次迭代,分为3个阶段,分别包含20 000、5 000、5 000次迭代,对应学习率分别为0.001、0.000 1、0.000 01,动量为0.9,权值衰减系数为0.004. 模型训练曲线如图 5所示.
![]() |
图 5 CIFAR-10训练过程 |
图 5中两条虚线分别表示MS-CNN嵌套MMN模型的测试精度和损失函数,实线表示同样设置的常规CNN的测试精度和损失函数. 上边两条曲线为测试精度,下边两条为损失函数. 经过30 000次迭代后,MS-CNN嵌套MMN模型的分类精度为82.7%,常规CNN模型分类精度为79.9%,分类错误率降低了13.9%,取得了明显的改进.
6 结束语尺度不变性问题是图像识别与图像分类中的一个重要问题. 为了提高CNN的多尺度适应性,设计了MS-CNN嵌套MMN模型. 多尺度设计提高了模型对于尺度变化的稳定性,同时,由于多层Maxout网络的嵌入,使得分类精度得以进一步提高. 实验表明,MS-CNN嵌套MMN模型可以有效提高CNN模型对于输入图像尺度变化的适应性,分类精度也有明显的提高.
[1] | Goodfellow I J, Warde-Farley D, Mirza M, et al. Maxout networks[J]. Computer Science , 2013, 28 :1319–1327. |
[2] | Wan Li, Zeiler M, Zhang Sixin, et al. Regularization of neural networks using dropconnect[C]//International Conference on Machine Learning. Atlanta, USA:[s.n.], 2013: 1058-1066. |
[3] | Farabet C, Couprie C, Najman L, et al. Learning hierarchical features for scene labeling[J]. IEEE Transactions on Pattern Analysis & Machine Intelligence , 2013, 35 (8) :1915–1929. |
[4] | Sohn K, Lee H. Learning invariant representations with local transformations[C]//In Proceedings of the 29th International Conference on Machine Learning (ICML). Edinburgh, Scotland:[s. n. ], 2012: 1311-1318. |
[5] | Kanazawa A, Sharma A, Jacobs D. Locally scale-invariant convolutional neural networks[C]//NIPS 2014 Workshop on Deep Learning and Representation Learning. Montreal, Canada:[s. n. ], 2014: 982-992. |
[6] | Goodfellow I, Lee H, Le Q V, et al. Measuring invariances in deep networks[C]//Advances in neural information processing systems. Vancouver, B. C., Canada:[s. n. ], 2009: 646-654. |
[7] | Krizhevsky A. Learning multiple layers of features from tiny images[D]. Toronto, Canada: Department of Computer Science, University of Toronto, 2009. |
[8] | 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. |