基于GoogLeNet的场景识别研究

2020-11-29 09:02蔡青青崔志强张尚然
中国新技术新产品 2020年8期
关键词:卷积神经网络测试

蔡青青 崔志强 王 睿 张尚然

(承德石油高等专科学校,河北 承德 067000)

0 引言

场景识别,即通过计算机采集场景图片并自主判断场景所处的类型,使计算机可以深刻理解所在场景,辅助计算机进行判断,是场景理解中的基本问题,是计算机视觉领域里非常有前途的研究方向。随着科技的不断进步,场景识别问题引起了学者的广泛关注。国内外诸多知名大学及科研机构都在场景识别领域展开了深入探索。

1 场景识别技术

目前的场景识别方法可以分成2 类,即利用人工的场景识别方法以及基于学习的场景识别方法。最初使用的方法一般基于简单的底层特征,例如颜色和纹理特征,后面发展到著名的SIFT、HOG、GIST、CENTRIST 特征等。随着人工智能技术的兴起,深度学习技术开始发展,其中的神经网络算法更是广泛应用于图像识别领域[1]。目前卷积神经网络成了研究图像识别的主流方法,实验结果证明,卷积神经网络在场景识别研究领域存在无限潜力,与传统的方法相比具有强大的优势。

2 卷积神经网络模型

2.1 卷积神经网络

卷积神经网络由多层网络构成,一般包括卷积层、下采样层、全连接层以及输出层[2]。输入的图像经过卷积神经网络结构中多层网络的处理后,可得到输入图像的概率分布,根据最后结果可以判断出图像所属的类型。卷积神经网络不仅具有普通神经网络的优点,它的局部感知和权值共享特性,可以让卷积神经网络更接近生物神经网络,而且可以减小运行过程的计算量。

2.2 GoogLeNet模型

基于卷积神经网络的作用机理,许多学者根据研究问题设计了针对特定问题的卷积神经网络模型,例如AlexNet、GoogLeNet、VGGNet、ResNet 模型等。其中Google团队提出的GoogLeNet 模型是近年来较为成功的卷积神经网络模型。该模型一共有22 层网络结构,模型除普通的卷积层、池化层、全连接层以外,还有Google 团队提出的Inception 结构。通过Inception 结构中不同尺度的卷积核,可以提取到不同的图片特征,然而这样的方式会使训练过程的计算变得复杂。因此,在模型中需要使用1×1 的卷积核来降低维度,减小计算量。GoogLeNet 模型正是凭借多层卷积神经网络结构以及Inception 结构,在图像识别领域取得了优秀的成绩。

2.3 残差结构

众所周知,网络层数越多,模型的识别效果越好,但也会产生梯度消失的问题,从而影响模型的训练。为了保证识别的准确率并解决梯度消失的问题,何凯明提出了用ResNet 来解决所谓的“退化”问题。为了解决网络层数过深时的梯度消失问题,在网络中引入了残差结构。加入残差结构后可以设计深层的卷积神经网络模型,并且在图像识别问题中能够取得理想的识别效果。

3 场景识别模型

3.1 场景特点

场景图像不同于一般的图像,场景图像中包含的内容较多,往往是多种内容才能表达一种的场景。同时场景的环境复杂多样,有时还会存在干扰,如果只提取某种特征来进行场景识别,就不能准确描述场景图像的全部内容,容易造成识别任务的失败,因此,需要提取场景的多种特征进行融合,以此来表达场景的内容[3]。

3.2 模型设计

基于场景图像中多特征的特点,可以使用GoogLeNet网络模型中的Inception 结构来进行多尺度场景特征的提取。此外,ResNet 网络模型中的残差结构,可以缓解由于层数加深而产生的退化问题,利用残差结构可以增加GoogLeNet网络模型的层数,从而提高识别效果。对以上2 种思想进行结合,设计了Inception-Residual 结构。

该结构中使用1×1、3×3、5×5 3 种尺寸的卷积核来提取场景中的多尺度特征,并在之后使用1×1 的卷积核来降低维度,从而减小计算量。基于残差网络的设计思想,将输入输出直接相连来构成残差结构,从而避免了由于层数过深而产生的过拟合问题。此外,在卷积层后选择ReLU作为激活函数,可以提高卷积神经网络的训练速度,而且精确度更高。最后基于该种结构,设计出能够完成场景识别任务的卷积神经网络模型。

为了避免模型的过拟合问题并提高模型的泛化性,还在模型中引入了批归一化和随机丢弃的方法。其中,批归一化添加在每个卷积层的后面,随机丢弃添加在网络最后的全连接层,减少节点间的依赖性,并在训练过程中将随机丢弃的丢弃率设置为0.5。

4 场景识别过程

4.1 数据预处理

卷积神经网络的识别精度与数据集的大小有很大关系,数据集越大最终训练完的模型的识别效果越好。该文实验中选用的场景数据集为MIT 场景数据集,该数据集的场景类型丰富,适合用来作为场景识别问题的验证工具。为了对模型进行训练并验证训练好的网络模型性能,将该数据集分为训练集和测试集,其中训练集与测试集的比例为4 ∶1。选定好场景数据集后,需要对数据集进行标注后才能进行模型的训练与测试。把每张图像的数据用(X,y)来表示,其中X ∈RH×W×C为该图像数据,H 为图像高度,W为图像宽度,C 为图像的通道数量,y ∈Z1×M代表图像的场景类别,通过1-of-K 编码对图像的场景类别进行编码,如果图像X 属于第k 类场景,则yk=1,如果X 不属于第k 个类别,则yk=0。

同时,使用充足的数据训练模型可以避免过拟合问题,提高识别的精度。为丰富训练数据集,通常会采用数据增强的方法。数据增强可以提高网络的识别性能和泛化能力,常用的数据增强方法包括翻转、随机裁剪、旋转、颜色抖动、缩放变化、平移变化、噪声扰动、尺度抖动等。该文选择对场景图像进行放大旋转、水平翻转和垂直翻转的数据增强操作。数据预处理是模型完成识别任务过程中非常重要的环节,通过预处理的操作可以丰富训练数据,从而能提高网络的识别率,还能够提高网络的泛化能力,避免过拟合。因此,在很多深度学习算法中都需要对数据进行预处理操作,在图像领域的研究中,经常使用的预处理方法包括去均值、归一化和主成分分析与白化。实验中使用了去均值归一化的预处理方法,通过该操作可以消除图像中不必要的干扰信息,减少识别过程的计算量。

4.2 模型的训练与测试流程

数据预处理后,可以用数据集对模型进行训练和测试。

训练过程步骤包括以下6 步。1) 设置卷积神经网络模型的各项参数。2)每次迭代时从训练集中选取64 个样本进行训练,作为模型训练过程的输入。3)经过前向传播,计算网络的输出结果。4) 计算预测值与实际值之间的差值。如果到达最大迭代次数,则停止训练,否则训练继续。5)进行误差的反向传播,利用随机梯度下降算法逐层更新网络的权值。6)训练结束后保存参数。再次回到步骤(2),并导出网络参数。训练中使用Softmax 损失函数来输出对于每个场景类别的预测概率。

测试过程步骤包括5 步。1)读取训练好的网络模型。2)测试集中的样本作为网络的输入。3)将数据逐层前向传播,计算网络的输出结果。4)比较预测值与样本的标签是否一致,判断识别结果的正确性,并统计分类正确的结果。5)重新回到(2),完成对所有测试样本的识别,计算识别的准确率。

4.3 实验结果

按照上述过程对模型进行训练与测试,并设定好训练与测试过程的各项参数,最终选择TensorFlow 来完成模型的训练[4]。TensorFlow 是谷歌团队开发的一种机器学习库,能够支持Python、C++、Go、Java 多种编程语言,后端使用C++、CUDA 等写成。TensorFlow 目前广泛用于深度学习的研究中。除此之外,还可以用于实现其他算法,例如逻辑回归、随机森林等。因此该文选择TensorFlow 来进行模型的训练与测试。

实验中使用Python 语言编写训练与测试的程序,并在服务器上进行模型的训练。训练过程中选择Adam方法对模型进行训练[5],Adam 方法是一种基于梯度的优化方法,在训练过程中可以根据训练进度更新学习率,是随机的。训练完毕后,对模型进行测试,验证识别的准确度。最终训练好的模型在测试集上的准确率为64.99%。

根据结果可以看出,在对场景数据集进行识别时,卷积神经网络的场景识别方法能得到比较好的识别效果,与传统方法相比准确度可以提高10%以上。此外,使用卷积神经网络的识别方法更加简单,不需要人为设定如何提取图像中的特征,通过卷积神经网络模型可以自主提取能够表达图像信息的特征。同时,GPU 的出现提升了运算速度,解决了过去训练模型耗时长的问题,因此在GPU 加速运算的基础上,卷积神经网络等深度学习模型可以缩短模型的训练时间,将卷积神经网络在实际问题中的应用变成了可能。

5 结语

场景识别作为机器视觉的重要内容,一直是各国专家学者研究的重点问题。随着人工智能的不断发展,越来越多的问题可以利用卷积神经网络等智能算法解决。该文的研究证明了卷积神经网络在场景识别问题中的有效性,可以为场景识别问题的研究提供借鉴。

猜你喜欢
卷积神经网络测试
基于3D-Winograd的快速卷积算法设计及FPGA实现
幽默大测试
神经网络抑制无线通信干扰探究
从滤波器理解卷积
“摄问”测试
“摄问”测试
“摄问”测试
基于傅里叶域卷积表示的目标跟踪算法
基于神经网络的拉矫机控制模型建立
复数神经网络在基于WiFi的室内LBS应用