APP下载

基于改进残差网络的扬尘图像识别方法①

2021-05-21张游杰

计算机系统应用 2021年5期
关键词:池化残差金字塔

王 艳,张游杰

1(太原科技大学 计算机科学与技术学院,太原 030024)

2(中国电子科技集团公司第三十三研究所,太原 030032)

随着我国经济迅速的发展,环境的问题也变得越来越明显,其中扬尘污染也越来越成为环境污染的重要来源.扬尘污染的存在方式是多种的,在土质和碎石道路上存在,在建筑工地和水泥等路面上也会存在.同时,因为重型车辆和一些大型设备对路面的影响,扬尘量也变得越来越多,扬尘污染也将会变得更加严重.因此,对于扬尘识别的研究具有重大的实际意义.

传统的扬尘识别方法中大多采用物理信号进行监测.李晋惠等[1]充分利用了Mie 散射原理,在这一基础上研究出了一种多光路扬尘监测方法.雷俊花[2]提出了一种高层建筑装修施工扬尘污染远程监测方法.牛志云等[3]设计了基于 STM32 微控制器的光散射式扬尘监测仪.Yu 等[4]根据实验室和教室实际环境中空气质量的监测要求,设计了粉尘浓度监测系统.为了能够实时监测大气扬尘,张所容[5]利用 Mie 散射原理和激光散射法,导出了计算扬尘物质量浓度的方法.随后搭建监测系统的实物架构,并采用基于 B/S的结构进行了相应的软件系统设计.袁冬琴[6]设计了基于遥感技术的工地扬尘污染自动监测方法.传统方法的缺点在于比较依赖环境,而且识别的距离是非常有限的,需要大量人力和物力.

除了传统方法外,应用图像处理技术监测扬尘污染也是一个很好的思路.王建鹏[7]提出一种融合了无线传感器技术、激光前散射粉尘监测技术、图像识别技术和云平台技术的扬尘监测系统.马国鑫等[8]充分使用了无人机和图像识别技术,将HSV 特征提取,直方图对比以及非零像素点计算作为核心,设计了施工扬尘污染源自动监测系统,并且测试了该系统的运行效果.任婷婷[9]运用图像处理技术中的图像滤波去噪,图像分割,图像特征提取和分类识别的方法,对道路扬尘污染监测与识别算法做了研究.这类方法相对于传统方法来讲,可以降低人力和物力的需求,提升识别精度和稳定性,但这一类方法的缺点是比较针对于某一个特定的场景,训练出的模型具有很大的局限性.

基于深度学习的扬尘识别方法能够很好地解决上述存在的问题.因此,提出一种基于改进残差网络的扬尘识别方法,将图像通过改进的ResNet-50 网络进行特征提取,更好的表达图像信息,提高识别精确度.

1 相关工作

1.1 卷积神经网络

卷积神经网络[10-12]是一类包含卷积计算并且具有深度结构的前馈神经网络,是深度学习的代表算法之一.它具有表征学习的能力,它能够以原始图像作为输入,通过卷积网络结构来形成更加抽象的高层次特征,从而可以获得更深层次的数据特征表示,避免了人工提取图像特征的复杂[13].其中的经典网络有LeNet-5,AlexNet,ZFNet,VGG-16,ResNet 等.

1.2 残差网络

模型使用的基础网络ResNet是2015年由He 等[14]提出的,在ImageNet 测试集上的误差达到3.57%,这个结果在ILSVRC 2015 分类任务中取得第一名.ResNet网络主要是为了解决网络中的梯度消失和退化问题,有利于网络更快的收敛.目前,残差网络主要应用于图像分类,物体识别,自然语言处理,目标检测等领域.

ResNet-50 结构图如图1(a)所示.

图1 网络结构图

图1中输入图像是大小为224×224×3的三维数组,第一个卷积层是独立卷积层Conv1,使用64 个大小为7×7,步长为2的卷积核,输出的大小为112×112.之后是一个最大池化层,池化窗口和步长分别为3×3和2,输出大小为56×56.接着是4 个不同的卷积残差块Conv2_x,Conv3_x,Conv4_x和Conv5_x,每个卷积残差块由2~3 个卷积层和跨越它们的连接组成,并且每个块的输出大小分别为56×56,28×28,14×14,7×7.最后是平均池化层,全连接层和损失函数Softmax.ResNet-50 网络中的残差块主要采用的是1×1+3×3+1×1的卷积层形式,相比常规网络的2 个3×3 卷积层形式,使用三层残差块结构不仅可以保持网络精度,同时还能减少网络的计算量.两种残差块的结构如图2(a)和图2(b)所示.

图2 残差块

1.3 残差网络的学习算法

通过一个假设将残差的概念引入进来:假设可以通过恒等映射的方式来构建所增加的层,这样就可以把一个深层网络变成了一个浅层的网络.至少可以保证深层网络的训练误差不会大于所基于的较浅模型.将H(x)假设为所需的底层映射,第一层的输入为x,让堆叠的非线性层来拟合另一个映射:F(x)=H(x)-x.因此原来的映射转化为:F(x)+x.

在残差网络中,对于网络中每一个堆叠层都将采用残差学习的方式.残差块如图2所示.并将残差块定义为:

其中,x和y是考虑层的输入和输出向量,f(x,{Wi})是要学习的残差映射,Wi是i层的权重.在式(1)中x和f的维度是必须要相等的.如果维度不同,可以通过快捷连接方式执行线性投影Ws以匹配维度:

2 模型设计

ResNet-50 网络在许多领域都得到了广泛的应用,比如在人脸识别等比较成熟的领域应用较为理想,但应用于扬尘识别时,识别准确率较低.因此,对ResNet-50 网络进行改进,形成新的网络模型,以适应扬尘图像识别,改进如下:(1)将网络中最后一次空间下采样操作的卷积层步长从原来的2 设置为1;(2)移去了网络中最后的平均池化层.同时,在该网络的基础上引入了多尺度的金字塔池化方法;(3)在全连接层后加入改进的Softmax 损失函数,进一步提高模型的识别性能.整体的网络结构如图1(b)所示.

2.1 扩大特征图

在ResNet-50 网络中,网络中的每个块都会有一个空间下采样的操作,为了增大扬尘特征图的空间大小,去除网络最后一次空间下采样.当输入一张224×224的扬尘图像后,网络会输出一个7×7的特征图.将网络中最后一次空间下采样卷积层的步长从2 设置为1,将特征图的输出尺寸扩大为14×14.这样不仅不会增加模型的参数量,而且还能够使得模型的参数结构得以保持,增大特征图的空间大小有利于提取到更加细粒度的扬尘图像特征,进而提升扬尘识别模型的性能.

2.2 金字塔池化层加入

在针对扬尘识别的ResNet-50 网络中,卷积层接受任意大小的输入,但它们产生的输出大小不一,而全连接层需要固定长度的向量作为输入.那么对于结构已经确定的ResNet-50 网络,就需要对扬尘图像进行裁剪或缩放等操作,这么做会降低扬尘识别的精度.在2015年He 等[15]提出的金字塔池化(SPP)方法解决了这一问题.金字塔池化方法能够让网络适应不同大小尺寸的扬尘图片,不仅增加了扬尘识别模型的尺度不变性,而且还可以抑制训练过程中过拟合现象的发生.它可以通过将空间信息集中在本地的空间容器中来维护空间信息,这些空间存储单元的大小与扬尘图像大小成比例,无论图像大小,存储单元的数量都是固定的.因此,改进的ResNet-50 网络模型去掉全连接层之前的平均池化层,并将金字塔池化的方法引入到扬尘识别中.金字塔池化层如图3所示,具体操作是将经过ResNet-50 网络输出的特征映射采用不同的池化尺度(1×1,2×2,4×4),得到 21 个固定的特征向量,然后把这些向量平铺组成一个新的特征向量并送入全连接层.

金字塔池化层就是在最后一个残差块conv5_x 卷积层的扬尘特征图的每个图片上进行了3 个卷积操作.最下边为原图像特征图,中间的是分成大小为4的特征图,最上边的是分成大小为16的特征图.因此,每一个特征图就变为1+4+16=21 个特征图.其中每一个卷积操作的本质都是平均池化,不同的只是窗口大小和步长.参数设置如图4所示.

图3 金字塔池化层

图4 金字塔池化参数设置

2.3 损失函数的改进

为了充分发挥ResNet-50 网络体系结构学习表示的识别能力,受人脸识别中损失函数的启发,在扬尘识别模型训练阶段加入了改进的Softmax 损失函数.Softmax对于类间距离的优化效果很明显,对于所学习的特性,Softmax 损失函数公式为:

其中,m是训练过程中的样本的数目,p是训练数据集中的类数.xi是第i个样本的特征,yi是对应于xi的标签,W和b是Softmax 损失之前的最后内积层的权重矩阵和偏置向量,x是网络最后一层输出的特征,经过一个全连接的分类层,即乘以权重W并加上偏置b,输出score.Wj是W的第j行,对应于j类.Softmax 可以有效区分类间差异,但是对于类内的分布没有很好的约束,因此监督效果不够.

原始的Softmax 损失在空间分布比较随意,输出的score为式(4),即神经元的权重向量的模||Wj||乘以特征向量的模||x||,再乘以两个向量夹角的余弦值cosθj,因此,在分类过程中score 会受到模和夹角的影响.

为了消除在扬尘识别过程中模和夹角的影响,将权重向量Wj和特征向量x归一化,从而消除模的影响.如式(5)所示,归一化之后的Softmax 只需要比较两个角度的大小,这样可以减少损失函数优化参数的数量,只需要考虑角度,大大提升了Softmax 分类器的分类性能,提高了扬尘识别的准确率.

3 实验分析

3.1 实验数据集

由于扬尘图像识别目前没有公开的数据集.因此,通过在互联网上收集各类有关扬尘场景的图片,整理形成训练集和测试集,然后使用数据增强在训练集和测试集中生成更多的数据,解决了该研究中没有数据集以及数据量不足的问题.为了增强模型的泛化能力,采用数据增强的操作扩充所需的数据样本,让网络模型更好的适应各种应用场景.

首先收集含有扬尘以及非扬尘的图像制作训练和测试数据集,并使用数据扩增技术增加数据量,部分实验图像如图5,图6所示.实验数据集分为训练集和测试集,每个集合均含有扬尘图像与非扬尘图像.将10 000张扬尘图像与5000 张非扬尘图像作为实验数据,将其中的13 000 张作为训练集,2000 张作为测试集.

3.2 实验设置

实验使用的操作系统是64 位的Ubuntu18.04 操作系统,在训练和测试过程中使用了NVIDIA GTX 1660Ti GPU 进行加速,算法使用深度学习框架PyTorch实现,Python 版本为3.6.

实验的主干网络采用了在ImageNet[16]上预训练好的ResNet-50 模型,完成模型的权重初始化,这样可以减少训练时间.扬尘图片的输入尺寸将其调整为224×224.在训练过程中,设定初始学习率为0.001,迭代次数为120 次,batch 大小设置为32.

图5 非扬尘图像

图6 扬尘图像

3.3 实验结果

为了说明改进ResNet-50 网络的有效性,选择了3 种方法进行对比,方法1是使用原始的ResNet-50 网络,方法2是将最后一次空间下采样操作的卷积层步长从原来的2 设置为1,不使用金字塔池化的ResNet-50网络,方法3是只使用金字塔池化,最后一次空间下采样操作的卷积层步长不变的ResNet-50 网络,方法4是使用改进的ResNet-50 网络.此外,在训练中4 种方法均使用Softmax 损失函数进行优化.4 种方法的实验对比结果如表1所示.各个实验的训练曲线如图7所示.

表1 不同网络实验对比结果

通过对这4 种网络结构的实验结果进行比较可以看出,使用初始ResNet-50 网络的准确率最低.与方法1 相比,通过增大特征图尺寸来提高识别效果的方法可以提高2.5%,使用金字塔池化后可以提高5.1%,而方法4 要比方法1 提高8%,说明了将增大特征图尺寸和金字塔池化的方法加入到ResNet-50 网络中是有效的,证明了改进ResNet-50 网络的有效性.

从图7可以看出,准确率提高和损失率下降最快的是方法4,相比其他3 种方法,方法4的收敛速度更快,在训练次数达到60 次时趋于稳定在0.94 左右.方法2和方法3的收敛速度有交叉的部分,方法1的速度是最慢的.

图7 训练曲线

为了验证ResNet-50 网络的性能,选取了其他两种卷积神经网络Vgg16[17]和Alexnet[18]训练扬尘数据集,并和ResNet-50 网络的训练准确率作比较,比较结果如表2所示.通过表中数据可以发现,在这3 种网络结构模型中ResNet-50的准确率最高.

为了说明模型的泛化能力,采用改进ResNet-50 网络和ResNet-50 网络分别在公共数据集CIFAR-10 上进行了实验.CIFAR-10是一个和普适物体相近,由Hinton的学生整理的一个用于识别普适物体的小型彩色图像数据集,共包含10 个类别的RGB 彩色图像,每个类别有6000 张图像,每张图像的尺寸大小为32×32.该数据集有50 000 张图像用于训练集,10 000 张图像用于测试集.实验准确率对比结果如表3所示.

表2 3 种网络模型准确率对比

表3 CIFAR-10 数据集准确率对比

基于改进ResNet-50 网络的扬尘识别方法在该数据集下的准确率为91.3%,相比基础的ResNet-50 网络提高了10.8%,说明了改进的网络模型有较好的泛化能力.

4 结论

深度学习在图像识别中具有重要意义,相比传统的图像识别方法,基于深度学习的识别方法具有自学习和适应能力,可以更好地对目标进行特征提取.改进的网络模型将ResNet-50 网络应用到扬尘识别中,并对其进行了改进.经实验验证,改进ResNet-50 网络对扬尘图像有较高的识别率,同时也有很好的泛化能力,可以有效地识别各种类扬尘图像以及其他非扬尘图像,在实际中有很大的应用价值.

猜你喜欢

池化残差金字塔
基于高斯函数的池化算法
“金字塔”
多级计分测验中基于残差统计量的被试拟合研究*
基于残差-注意力和LSTM的心律失常心拍分类方法研究
用于处理不努力作答的标准化残差系列方法和混合多层模型法的比较*
卷积神经网络中的自适应加权池化
融合上下文的残差门卷积实体抽取
Great Vacation Places
用于手写汉字识别的文本分割方法
金字塔是用金子造的吗