基于卷积神经网络的气体传感器阵列识别算法研究及应用
2023-11-25王秀玲王传玺罗志华董玉华孙炎辉
李 震,王秀玲,王传玺,罗志华,王 雪,董玉华,孙炎辉
(1.大连民族大学 信息与通信工程学院,辽宁 大连 116605;2.科德数控股份有限公司,辽宁 大连,116600)
如何检测混合气体,对动物和人类通过嗅觉系统识别嗅觉痕迹进行研究,嗅觉器官细胞感知嗅觉环境中的气体或挥发性有机物,然后大脑神经元系统可以对某些气体做出反应,并根据经验分析其信息[1]。受动物和人类嗅觉的启发,有人提出了“电子鼻(EN)”或“人工嗅觉系统(AOS)”的概念[2, 3]。电子鼻是一种用于测量和监测既定环境中混合气体的仪器,它通常结合了气体传感器阵列、模式识别算法和传感器阵列信号处理方法,用于目标气体的检测、识别和量化[4-11]。传感器阵列是依据每个传感器针对混合气体中的某个气体产生响应而设计的[12],所以传感器的输出对应目标气体的浓度。但是有些环境下需要同时检测多种气体,所以基于传感器阵列需要提出一种有效的能识别混合气体环境中目标气体的种类和浓度的识别算法[13]。
为了进一步优化电子鼻的应用,利用现有模块设计了一个三隐层卷积神经网络,其中卷积层采用卷积、归一化和ReLU激活函数,并使用一维卷积层来提高模型的轻量化程度,从而达到更好的训练效果。最后将模型在PC端训练后迁移到树莓派中,对气体进行有效识别。
1 实验过程及方法
1.1 实验过程及数据采集
以氨气、丙酮和甲醇的混合气体为目标,进行了收集数据集的相关实验。实验装置由气体传感器阵列、密闭实验箱和数据收集系统组成。其中密闭实验箱含有一个注液口、一个加热台、两个风扇。测试时,先打开风扇,确保密闭空间气体均衡,等密闭实验箱中的每个气体传感器达到稳定状态之后,通过注液口将目标气体的液态物注射到加热台,注射过程中,打开加热台进行加热,等待目标气体的液态物迅速蒸发为气态,风扇的持续运作,会使传感器阵列得到均匀的气体信号,最后将气体信号传输到PC端,按时序进行保存,重复90次,最终得到90组1~1 000 s左右的传感器阵列数据。实验温度在20 ℃ ± 2 ℃,湿度在60 % ± 5 %,这与实际环境是类似的,能够保证实验数据的有效性和真实性。
实验对三种气体单独和两两混合气体进行测量, 8个气体传感器在单一气体环境中的响应如图1a,两种混合气体环境中的响应如图1b,这样分为了6个类别,分别为纯氨气、纯丙酮、纯甲醇、氨气和丙酮混合,氨气和甲醇混合,丙酮和甲醇混合。每种气体浓度选择也分了6个类别,分别为0、5、10、20、30、50 ppm的气体浓度,根据响应时间与恢复时间,每组实验测试1 000 s左右,一共得到90组数据,每组数据以时间序列进行保存。数据包含8个传感器的0~1 000 s左右的响应、混合的气体类别和混合不同气体的浓度。
b)在两种混合气体环境中的响应图1 8个气体传感器在气体环境中的响应
a)在单一气体环境中的响应
1.2 数据预处理
每个目标气体的每个浓度都被集中测量。因此,通过气体传感器阵列获得504 000个数据。以大约1 Hz的采样频率获取原始响应数据,并从基线值中减去该数据,以消除基线值的影响。采集的数据约为0~1 000 s,取响应开始之后的700 s数据作为有效数据,每个实验得到一组尺寸为(700,8),整体数据集维度为(90,700,8)该数据作为每个实验类别X,每个气体的浓度值为Y1(90,1)和Y2 (90,3),然后采用公式(1)方法对数据进行标准化,以标准化数据作为输入特征进行模型训练。
(1)
式中:Xij为传感器i对样本j的响应;μi为传感器i响应的平均值;σi为传感器i响应的标准差。
2 不同识别算法的对比研究
通过实验验证KNN模型对本研究的数据集并不合适,因为数据特征较少,且数据量较少,分类准确率不足25%,因此KNN不适用本研究。BPNN与CNN通过训练分类准确率最高可达100%。
2.1 全连接神经网络
使用全连接神经网络对混合气体进行分类与预测,不需要将标签转为换为One-hot 编码,将预处理后的数据以数组形式进行输入,通过模型训练后,以数组形式输出对应三种气体的浓度。最终训练模型为同一个,改变输入输出即可完成分类与预测任务,本文使用Keras的Sequential类定义一个BPNN模型,包括3个隐藏层和1个输出层, BPNN模型如图2。
图2 BPNN模型
为了帮助模型学习非线性的特征和模式,提高模型的表达能力,其中每个隐藏层都使用ReLU作为激活函数其公式为
f(x)=max(0,x)。
(2)
为了解决混合气体中多分类问题,输出层使用Softmax作为激活函数。使用Compile函数编译模型,梯度下降优化算法为Adam,其具体公式如下:
首先定义一阶矩估计(mean)和二阶矩估计(variance)分别为
mt=β1mt-1+(1-β1)gt。
(3)
式中:mt表示对应的一阶矩阵;β1是衰减率;gt表示当前的梯度。
(4)
式中:gt表示当前的梯度;vt表示二阶矩阵;β2是衰减率。为了消除一开始时对估计不准的影响,需要对mt和vt进行偏差校正,即
(5)
(6)
(7)
式中,θt是学习率,ε是一个非常小的常数,用于防止除数为0。损失函数为二元交叉熵,最终以损失值和准确率来评估模型的性能。
2.2 卷积神经网络
使用卷积神经网络进行了成分识别和浓度估计。为了分类3种气体(NH3、CH3OH和CH3COCH3),并定量每种气体的浓度。该网络由三个卷积块和六个完全连接的层(致密)组成。利用3个卷积块(8×3)计算特征提取的卷积,对所有层进行批处理归一化,并使用校正线性单元(ReLU)函数作为激活函数,使用两种输出方式,在输出层中使用Softmax函数进行分类,在输出层不使用激活函数直接输出每种气体的浓度,模型如图3。
图3 卷积神经网络整体模型
卷积是将二维矩阵中的每个元素添加到其局部领域中的过程,并通过核进行加权。假设输入矩阵A具有维数(Ma,Na),而核矩阵B具有维数(M,N)。当块计算全输出大小时,离散卷积的方程可以表示为
(8)
式中,0≤i 图4 卷积操作 在实验中使用的卷积均为一维卷积[14],对于混合气体分类任务是能够有较好应用的[15-17]。 本文研究的卷积神经网络由三个卷积块和一层线性层组成,单个卷积块如图5。利用3个卷积核(8×3)提取特征,并使用校正线性单元(ReLU)函数作为激活函数,对所有层进行批处理归一化,针对混合气体类别进行分类,在输出层中使用Softmax函数进行分类,对混合气体进行浓度预测时直接使用梯度下降方式,输出三种对应气体的浓度。为了简化计算,并方便应用,卷积块的第一层使用一维卷积,为了提高特征表示能力,一维卷积和批处理归一化操作以及激活函数一起组成了一个卷积块[10]。 图5 卷积块 基于卷积层数问题,本研究为了寻求最优层数的卷积神经网络,设置了对比试验,训练次数设置为100,实验结果见表1。 表1 不同层数的卷积神经网络在数据集中的训练效果 通过实验发现,训练时间并不是严格随着卷积层数的增加而增加,出现了先减小后增加的情况,通过对卷积的特点分析,在两层卷积的网络结构中,相比一层卷积的结构,多了一层卷积层,这样可以更好地提取特征,减少了全连接层的参数数量,从而降低了模型的复杂度,因此训练时间会相对较短。同样的,随着卷积层数增加,准确率出现了先提升后下降的情况,这是因为随着卷积层数的增加,网络的复杂度和参数量也会增加,这会导致模型出现过拟合的情况。此外,还可能由于层数过多,出现梯度消失或者爆炸情况,这会导致梯度在反向传播时逐渐变小或变大,进而导致梯度消失或爆炸的情况,从而使训练过程不稳定。因此通过本次实验认为三卷积层的CNN综合训练效果最佳。模型训练的超参数设置见表2。 表2 CNN的训练超参数 在此基础上,三层卷积的CNN能够确保分类准确率达到98.88%,且参数量较小,模型较轻量化。 使用三种模型进行对比见表3。将混合气体进行分类,BPNN与CNN分类效果均能够达到100%。对混合的不同气体浓度进行预测,通过十折交叉验证后平均均方差能够达到3.89和2.47。 表3 模型对比结果 表3中的结果是在CPU型号为AMD Ryzen 7 5800H with Radeon Graphics,主频3.20 GHz,内存16G的计算机上训练,模型训练在Jupyter Notebook环境中执行,执行1 000次Epoch所用时间,经过十折交叉验证最终得到的模型训练准确率与损失值的平均数。为了验证CNN训练过程的效果如图6。可以看出CNN损失值下降较快。 (9) 为了保证训练时间稳定,以98.88%为阈值,通过对比BPNN与CNN的训练时间发现当分类训练达到98.88%时,CNN比BPNN训练速度要快约58%,见表4。通过分析BPNN与CNN的参数量与浮点数,可以得知BPNN模型参数量大,训练更加耗费资源。 表4 模型训练参数 为了能够实现传感器阵列系统的离线测量,使用单片机作为核心处理器,半导体电阻式气体传感器作为组成阵列的传感器,树莓派作为数据推理端和显示端,制作了一个可以实时采集混合气体的系统。使用8个金属氧化物电阻式传感器组合成传感器阵列,通过滤波电路,将信号传输至STM32单片机中,在单片机中对数据进行预处理后,通过串口将数据传送至树莓派中,并在树莓派中进行推理与显示。硬件系统框图如图7。 图7 硬件系统框图 根据所测气体的种类和特性,采用了由8个费加罗公司生产的金属氧化物传感器组成的传感器阵列对混合气体进行测试,传感单元中所包含的传感器见表5。这些传感器被专门用来检测大量特殊的化学品[18],如:甲烷、一氧化碳、VOC等。 表5 传感单元中包含的金属氧化物传感器 为了能够实现电子鼻离线测量,使用单片机作为核心处理器,制作了一个可以实时采集混合气体的设备,半导体电阻式气体传感器的结构原理图如图8。半导体电阻式气体传感器的原理基于半导体材料对气体吸附或氧化的灵敏度不同。当气体吸附或氧化到半导体表面时,会改变半导体的电阻值,这种电阻值变化与气体浓度成正比。因此,通过测量半导体电阻值的变化,可以确定气体浓度。又因为制造成本较低,外形小巧,所以适合集成在微型设备中。所以本文使用8个半导体电阻式传感器组合传感器阵列,结合STM32F103CET6单片机,对混合气体进行采集,得到数据。 图8 半导体电阻式传感器的结构原理图 将模型代码导入树莓派中,并进行离线训练。选用的树莓派采用4核64位的ARM Cortex-A72架构CPU,型号为博通BCM2711 SoC,为训练模型提供了很好的硬件支持。通过网线使计算机与树莓派建立链接,建立局域网,使用VNC viewer通过IP访问树莓派,并传输网络模型程序与E-nose软件到树莓派中。其中网络模型程序中相关路径提前设置为树莓派的相关路径。 将模型移植到树莓派后,使用树莓派训练,训练1 000次需要767 s,且准确率只能达到50%,通过与PC端训练环境对比分析,在不同的硬件平台上,CPU和内存的性能、速度等方面都有所不同,这会影响训练模型的速度和效果。另外,在PC端和树莓派上,运行的操作系统和环境也有所不同,这也会影响训练模型的准确率。因此,要提高识别准确率,将在PC端训练好的模型迁移到树莓派中,再对混合气体进行识别,以此保证对混合气体识别效果与PC端相同,此过程需要使用模型转换工具将模型格式从原来的格式.h5转换为适合在树莓派上运行的格式.tflite。最后可在树莓派上运行训练好的模型。当识别率降低时,模型需要进一步训练,可在树莓派中引入模型,通过定义编译参数和训练数据,进一步对模型进行训练。 对神经网络与传感器阵列在嵌入式平台的应用进行了研究,使用三种网络对自测数据集进行训练得到模型,发现KNN的分类准确率只有24%,并不适用于本研究。而BPNN与CNN分类准确率最高均可达到100%,预测浓度效果通过使用MSE进行评估,在训练1000次时损失值分别为21.36和20.69,均方差均在4以下,但是当训练分类模型时,BPNN的训练时间相较于CNN超出56%,训练预测模型时,训练1 000个epoch时间超出33.5%。通过对在计算机上与嵌入式处理器上训练模型,发现硬件的训练环境对结果影响较大,应用轻量化模型更为有效,所以相较于KNN与BPNN,使用CNN在嵌入式处理器中应用效果更好。通过设计原理图实现了离线采集混合气体的数据,最终将CNN网络模型与传感器阵列应用到嵌入式处理器中能够实现离线采集并训练模型,可得到便携式的电子鼻系统。2.3 模型效果对比
3 硬件平台的实现
3.1 传感器阵列设计
3.2 算法在树莓派中的移植
4 结 语