李 震,王秀玲,王傳璽,羅志華,王 雪,董玉華,孫炎輝
(1.大連民族大學(xué) 信息與通信工程學(xué)院,遼寧 大連 116605;2.科德數(shù)控股份有限公司,遼寧 大連,116600)
如何檢測(cè)混合氣體,對(duì)動(dòng)物和人類通過(guò)嗅覺(jué)系統(tǒng)識(shí)別嗅覺(jué)痕跡進(jìn)行研究,嗅覺(jué)器官細(xì)胞感知嗅覺(jué)環(huán)境中的氣體或揮發(fā)性有機(jī)物,然后大腦神經(jīng)元系統(tǒng)可以對(duì)某些氣體做出反應(yīng),并根據(jù)經(jīng)驗(yàn)分析其信息[1]。受動(dòng)物和人類嗅覺(jué)的啟發(fā),有人提出了“電子鼻(EN)”或“人工嗅覺(jué)系統(tǒng)(AOS)”的概念[2, 3]。電子鼻是一種用于測(cè)量和監(jiān)測(cè)既定環(huán)境中混合氣體的儀器,它通常結(jié)合了氣體傳感器陣列、模式識(shí)別算法和傳感器陣列信號(hào)處理方法,用于目標(biāo)氣體的檢測(cè)、識(shí)別和量化[4-11]。傳感器陣列是依據(jù)每個(gè)傳感器針對(duì)混合氣體中的某個(gè)氣體產(chǎn)生響應(yīng)而設(shè)計(jì)的[12],所以傳感器的輸出對(duì)應(yīng)目標(biāo)氣體的濃度。但是有些環(huán)境下需要同時(shí)檢測(cè)多種氣體,所以基于傳感器陣列需要提出一種有效的能識(shí)別混合氣體環(huán)境中目標(biāo)氣體的種類和濃度的識(shí)別算法[13]。
為了進(jìn)一步優(yōu)化電子鼻的應(yīng)用,利用現(xiàn)有模塊設(shè)計(jì)了一個(gè)三隱層卷積神經(jīng)網(wǎng)絡(luò),其中卷積層采用卷積、歸一化和ReLU激活函數(shù),并使用一維卷積層來(lái)提高模型的輕量化程度,從而達(dá)到更好的訓(xùn)練效果。最后將模型在PC端訓(xùn)練后遷移到樹(shù)莓派中,對(duì)氣體進(jìn)行有效識(shí)別。
以氨氣、丙酮和甲醇的混合氣體為目標(biāo),進(jìn)行了收集數(shù)據(jù)集的相關(guān)實(shí)驗(yàn)。實(shí)驗(yàn)裝置由氣體傳感器陣列、密閉實(shí)驗(yàn)箱和數(shù)據(jù)收集系統(tǒng)組成。其中密閉實(shí)驗(yàn)箱含有一個(gè)注液口、一個(gè)加熱臺(tái)、兩個(gè)風(fēng)扇。測(cè)試時(shí),先打開(kāi)風(fēng)扇,確保密閉空間氣體均衡,等密閉實(shí)驗(yàn)箱中的每個(gè)氣體傳感器達(dá)到穩(wěn)定狀態(tài)之后,通過(guò)注液口將目標(biāo)氣體的液態(tài)物注射到加熱臺(tái),注射過(guò)程中,打開(kāi)加熱臺(tái)進(jìn)行加熱,等待目標(biāo)氣體的液態(tài)物迅速蒸發(fā)為氣態(tài),風(fēng)扇的持續(xù)運(yùn)作,會(huì)使傳感器陣列得到均勻的氣體信號(hào),最后將氣體信號(hào)傳輸?shù)絇C端,按時(shí)序進(jìn)行保存,重復(fù)90次,最終得到90組1~1 000 s左右的傳感器陣列數(shù)據(jù)。實(shí)驗(yàn)溫度在20 ℃ ± 2 ℃,濕度在60 % ± 5 %,這與實(shí)際環(huán)境是類似的,能夠保證實(shí)驗(yàn)數(shù)據(jù)的有效性和真實(shí)性。
實(shí)驗(yàn)對(duì)三種氣體單獨(dú)和兩兩混合氣體進(jìn)行測(cè)量, 8個(gè)氣體傳感器在單一氣體環(huán)境中的響應(yīng)如圖1a,兩種混合氣體環(huán)境中的響應(yīng)如圖1b,這樣分為了6個(gè)類別,分別為純氨氣、純丙酮、純甲醇、氨氣和丙酮混合,氨氣和甲醇混合,丙酮和甲醇混合。每種氣體濃度選擇也分了6個(gè)類別,分別為0、5、10、20、30、50 ppm的氣體濃度,根據(jù)響應(yīng)時(shí)間與恢復(fù)時(shí)間,每組實(shí)驗(yàn)測(cè)試1 000 s左右,一共得到90組數(shù)據(jù),每組數(shù)據(jù)以時(shí)間序列進(jìn)行保存。數(shù)據(jù)包含8個(gè)傳感器的0~1 000 s左右的響應(yīng)、混合的氣體類別和混合不同氣體的濃度。
b)在兩種混合氣體環(huán)境中的響應(yīng)圖1 8個(gè)氣體傳感器在氣體環(huán)境中的響應(yīng)
a)在單一氣體環(huán)境中的響應(yīng)
每個(gè)目標(biāo)氣體的每個(gè)濃度都被集中測(cè)量。因此,通過(guò)氣體傳感器陣列獲得504 000個(gè)數(shù)據(jù)。以大約1 Hz的采樣頻率獲取原始響應(yīng)數(shù)據(jù),并從基線值中減去該數(shù)據(jù),以消除基線值的影響。采集的數(shù)據(jù)約為0~1 000 s,取響應(yīng)開(kāi)始之后的700 s數(shù)據(jù)作為有效數(shù)據(jù),每個(gè)實(shí)驗(yàn)得到一組尺寸為(700,8),整體數(shù)據(jù)集維度為(90,700,8)該數(shù)據(jù)作為每個(gè)實(shí)驗(yàn)類別X,每個(gè)氣體的濃度值為Y1(90,1)和Y2 (90,3),然后采用公式(1)方法對(duì)數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)化,以標(biāo)準(zhǔn)化數(shù)據(jù)作為輸入特征進(jìn)行模型訓(xùn)練。
(1)
式中:Xij為傳感器i對(duì)樣本j的響應(yīng);μi為傳感器i響應(yīng)的平均值;σi為傳感器i響應(yīng)的標(biāo)準(zhǔn)差。
通過(guò)實(shí)驗(yàn)驗(yàn)證KNN模型對(duì)本研究的數(shù)據(jù)集并不合適,因?yàn)閿?shù)據(jù)特征較少,且數(shù)據(jù)量較少,分類準(zhǔn)確率不足25%,因此KNN不適用本研究。BPNN與CNN通過(guò)訓(xùn)練分類準(zhǔn)確率最高可達(dá)100%。
使用全連接神經(jīng)網(wǎng)絡(luò)對(duì)混合氣體進(jìn)行分類與預(yù)測(cè),不需要將標(biāo)簽轉(zhuǎn)為換為One-hot 編碼,將預(yù)處理后的數(shù)據(jù)以數(shù)組形式進(jìn)行輸入,通過(guò)模型訓(xùn)練后,以數(shù)組形式輸出對(duì)應(yīng)三種氣體的濃度。最終訓(xùn)練模型為同一個(gè),改變輸入輸出即可完成分類與預(yù)測(cè)任務(wù),本文使用Keras的Sequential類定義一個(gè)BPNN模型,包括3個(gè)隱藏層和1個(gè)輸出層, BPNN模型如圖2。
圖2 BPNN模型
為了幫助模型學(xué)習(xí)非線性的特征和模式,提高模型的表達(dá)能力,其中每個(gè)隱藏層都使用ReLU作為激活函數(shù)其公式為
f(x)=max(0,x)。
(2)
為了解決混合氣體中多分類問(wèn)題,輸出層使用Softmax作為激活函數(shù)。使用Compile函數(shù)編譯模型,梯度下降優(yōu)化算法為Adam,其具體公式如下:
首先定義一階矩估計(jì)(mean)和二階矩估計(jì)(variance)分別為
mt=β1mt-1+(1-β1)gt。
(3)
式中:mt表示對(duì)應(yīng)的一階矩陣;β1是衰減率;gt表示當(dāng)前的梯度。
(4)
式中:gt表示當(dāng)前的梯度;vt表示二階矩陣;β2是衰減率。為了消除一開(kāi)始時(shí)對(duì)估計(jì)不準(zhǔn)的影響,需要對(duì)mt和vt進(jìn)行偏差校正,即
(5)
(6)
(7)
式中,θt是學(xué)習(xí)率,ε是一個(gè)非常小的常數(shù),用于防止除數(shù)為0。損失函數(shù)為二元交叉熵,最終以損失值和準(zhǔn)確率來(lái)評(píng)估模型的性能。
使用卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行了成分識(shí)別和濃度估計(jì)。為了分類3種氣體(NH3、CH3OH和CH3COCH3),并定量每種氣體的濃度。該網(wǎng)絡(luò)由三個(gè)卷積塊和六個(gè)完全連接的層(致密)組成。利用3個(gè)卷積塊(8×3)計(jì)算特征提取的卷積,對(duì)所有層進(jìn)行批處理歸一化,并使用校正線性單元(ReLU)函數(shù)作為激活函數(shù),使用兩種輸出方式,在輸出層中使用Softmax函數(shù)進(jìn)行分類,在輸出層不使用激活函數(shù)直接輸出每種氣體的濃度,模型如圖3。
圖3 卷積神經(jīng)網(wǎng)絡(luò)整體模型
卷積是將二維矩陣中的每個(gè)元素添加到其局部領(lǐng)域中的過(guò)程,并通過(guò)核進(jìn)行加權(quán)。假設(shè)輸入矩陣A具有維數(shù)(Ma,Na),而核矩陣B具有維數(shù)(M,N)。當(dāng)塊計(jì)算全輸出大小時(shí),離散卷積的方程可以表示為
(8)
式中,0≤i 圖4 卷積操作 在實(shí)驗(yàn)中使用的卷積均為一維卷積[14],對(duì)于混合氣體分類任務(wù)是能夠有較好應(yīng)用的[15-17]。 本文研究的卷積神經(jīng)網(wǎng)絡(luò)由三個(gè)卷積塊和一層線性層組成,單個(gè)卷積塊如圖5。利用3個(gè)卷積核(8×3)提取特征,并使用校正線性單元(ReLU)函數(shù)作為激活函數(shù),對(duì)所有層進(jìn)行批處理歸一化,針對(duì)混合氣體類別進(jìn)行分類,在輸出層中使用Softmax函數(shù)進(jìn)行分類,對(duì)混合氣體進(jìn)行濃度預(yù)測(cè)時(shí)直接使用梯度下降方式,輸出三種對(duì)應(yīng)氣體的濃度。為了簡(jiǎn)化計(jì)算,并方便應(yīng)用,卷積塊的第一層使用一維卷積,為了提高特征表示能力,一維卷積和批處理歸一化操作以及激活函數(shù)一起組成了一個(gè)卷積塊[10]。 圖5 卷積塊 基于卷積層數(shù)問(wèn)題,本研究為了尋求最優(yōu)層數(shù)的卷積神經(jīng)網(wǎng)絡(luò),設(shè)置了對(duì)比試驗(yàn),訓(xùn)練次數(shù)設(shè)置為100,實(shí)驗(yàn)結(jié)果見(jiàn)表1。 表1 不同層數(shù)的卷積神經(jīng)網(wǎng)絡(luò)在數(shù)據(jù)集中的訓(xùn)練效果 通過(guò)實(shí)驗(yàn)發(fā)現(xiàn),訓(xùn)練時(shí)間并不是嚴(yán)格隨著卷積層數(shù)的增加而增加,出現(xiàn)了先減小后增加的情況,通過(guò)對(duì)卷積的特點(diǎn)分析,在兩層卷積的網(wǎng)絡(luò)結(jié)構(gòu)中,相比一層卷積的結(jié)構(gòu),多了一層卷積層,這樣可以更好地提取特征,減少了全連接層的參數(shù)數(shù)量,從而降低了模型的復(fù)雜度,因此訓(xùn)練時(shí)間會(huì)相對(duì)較短。同樣的,隨著卷積層數(shù)增加,準(zhǔn)確率出現(xiàn)了先提升后下降的情況,這是因?yàn)殡S著卷積層數(shù)的增加,網(wǎng)絡(luò)的復(fù)雜度和參數(shù)量也會(huì)增加,這會(huì)導(dǎo)致模型出現(xiàn)過(guò)擬合的情況。此外,還可能由于層數(shù)過(guò)多,出現(xiàn)梯度消失或者爆炸情況,這會(huì)導(dǎo)致梯度在反向傳播時(shí)逐漸變小或變大,進(jìn)而導(dǎo)致梯度消失或爆炸的情況,從而使訓(xùn)練過(guò)程不穩(wěn)定。因此通過(guò)本次實(shí)驗(yàn)認(rèn)為三卷積層的CNN綜合訓(xùn)練效果最佳。模型訓(xùn)練的超參數(shù)設(shè)置見(jiàn)表2。 表2 CNN的訓(xùn)練超參數(shù) 在此基礎(chǔ)上,三層卷積的CNN能夠確保分類準(zhǔn)確率達(dá)到98.88%,且參數(shù)量較小,模型較輕量化。 使用三種模型進(jìn)行對(duì)比見(jiàn)表3。將混合氣體進(jìn)行分類,BPNN與CNN分類效果均能夠達(dá)到100%。對(duì)混合的不同氣體濃度進(jìn)行預(yù)測(cè),通過(guò)十折交叉驗(yàn)證后平均均方差能夠達(dá)到3.89和2.47。 表3 模型對(duì)比結(jié)果 表3中的結(jié)果是在CPU型號(hào)為AMD Ryzen 7 5800H with Radeon Graphics,主頻3.20 GHz,內(nèi)存16G的計(jì)算機(jī)上訓(xùn)練,模型訓(xùn)練在Jupyter Notebook環(huán)境中執(zhí)行,執(zhí)行1 000次Epoch所用時(shí)間,經(jīng)過(guò)十折交叉驗(yàn)證最終得到的模型訓(xùn)練準(zhǔn)確率與損失值的平均數(shù)。為了驗(yàn)證CNN訓(xùn)練過(guò)程的效果如圖6??梢钥闯鯟NN損失值下降較快。 (9) 為了保證訓(xùn)練時(shí)間穩(wěn)定,以98.88%為閾值,通過(guò)對(duì)比BPNN與CNN的訓(xùn)練時(shí)間發(fā)現(xiàn)當(dāng)分類訓(xùn)練達(dá)到98.88%時(shí),CNN比BPNN訓(xùn)練速度要快約58%,見(jiàn)表4。通過(guò)分析BPNN與CNN的參數(shù)量與浮點(diǎn)數(shù),可以得知BPNN模型參數(shù)量大,訓(xùn)練更加耗費(fèi)資源。 表4 模型訓(xùn)練參數(shù) 為了能夠?qū)崿F(xiàn)傳感器陣列系統(tǒng)的離線測(cè)量,使用單片機(jī)作為核心處理器,半導(dǎo)體電阻式氣體傳感器作為組成陣列的傳感器,樹(shù)莓派作為數(shù)據(jù)推理端和顯示端,制作了一個(gè)可以實(shí)時(shí)采集混合氣體的系統(tǒng)。使用8個(gè)金屬氧化物電阻式傳感器組合成傳感器陣列,通過(guò)濾波電路,將信號(hào)傳輸至STM32單片機(jī)中,在單片機(jī)中對(duì)數(shù)據(jù)進(jìn)行預(yù)處理后,通過(guò)串口將數(shù)據(jù)傳送至樹(shù)莓派中,并在樹(shù)莓派中進(jìn)行推理與顯示。硬件系統(tǒng)框圖如圖7。 圖7 硬件系統(tǒng)框圖 根據(jù)所測(cè)氣體的種類和特性,采用了由8個(gè)費(fèi)加羅公司生產(chǎn)的金屬氧化物傳感器組成的傳感器陣列對(duì)混合氣體進(jìn)行測(cè)試,傳感單元中所包含的傳感器見(jiàn)表5。這些傳感器被專門用來(lái)檢測(cè)大量特殊的化學(xué)品[18],如:甲烷、一氧化碳、VOC等。 表5 傳感單元中包含的金屬氧化物傳感器 為了能夠?qū)崿F(xiàn)電子鼻離線測(cè)量,使用單片機(jī)作為核心處理器,制作了一個(gè)可以實(shí)時(shí)采集混合氣體的設(shè)備,半導(dǎo)體電阻式氣體傳感器的結(jié)構(gòu)原理圖如圖8。半導(dǎo)體電阻式氣體傳感器的原理基于半導(dǎo)體材料對(duì)氣體吸附或氧化的靈敏度不同。當(dāng)氣體吸附或氧化到半導(dǎo)體表面時(shí),會(huì)改變半導(dǎo)體的電阻值,這種電阻值變化與氣體濃度成正比。因此,通過(guò)測(cè)量半導(dǎo)體電阻值的變化,可以確定氣體濃度。又因?yàn)橹圃斐杀据^低,外形小巧,所以適合集成在微型設(shè)備中。所以本文使用8個(gè)半導(dǎo)體電阻式傳感器組合傳感器陣列,結(jié)合STM32F103CET6單片機(jī),對(duì)混合氣體進(jìn)行采集,得到數(shù)據(jù)。 圖8 半導(dǎo)體電阻式傳感器的結(jié)構(gòu)原理圖 將模型代碼導(dǎo)入樹(shù)莓派中,并進(jìn)行離線訓(xùn)練。選用的樹(shù)莓派采用4核64位的ARM Cortex-A72架構(gòu)CPU,型號(hào)為博通BCM2711 SoC,為訓(xùn)練模型提供了很好的硬件支持。通過(guò)網(wǎng)線使計(jì)算機(jī)與樹(shù)莓派建立鏈接,建立局域網(wǎng),使用VNC viewer通過(guò)IP訪問(wèn)樹(shù)莓派,并傳輸網(wǎng)絡(luò)模型程序與E-nose軟件到樹(shù)莓派中。其中網(wǎng)絡(luò)模型程序中相關(guān)路徑提前設(shè)置為樹(shù)莓派的相關(guān)路徑。 將模型移植到樹(shù)莓派后,使用樹(shù)莓派訓(xùn)練,訓(xùn)練1 000次需要767 s,且準(zhǔn)確率只能達(dá)到50%,通過(guò)與PC端訓(xùn)練環(huán)境對(duì)比分析,在不同的硬件平臺(tái)上,CPU和內(nèi)存的性能、速度等方面都有所不同,這會(huì)影響訓(xùn)練模型的速度和效果。另外,在PC端和樹(shù)莓派上,運(yùn)行的操作系統(tǒng)和環(huán)境也有所不同,這也會(huì)影響訓(xùn)練模型的準(zhǔn)確率。因此,要提高識(shí)別準(zhǔn)確率,將在PC端訓(xùn)練好的模型遷移到樹(shù)莓派中,再對(duì)混合氣體進(jìn)行識(shí)別,以此保證對(duì)混合氣體識(shí)別效果與PC端相同,此過(guò)程需要使用模型轉(zhuǎn)換工具將模型格式從原來(lái)的格式.h5轉(zhuǎn)換為適合在樹(shù)莓派上運(yùn)行的格式.tflite。最后可在樹(shù)莓派上運(yùn)行訓(xùn)練好的模型。當(dāng)識(shí)別率降低時(shí),模型需要進(jìn)一步訓(xùn)練,可在樹(shù)莓派中引入模型,通過(guò)定義編譯參數(shù)和訓(xùn)練數(shù)據(jù),進(jìn)一步對(duì)模型進(jìn)行訓(xùn)練。 對(duì)神經(jīng)網(wǎng)絡(luò)與傳感器陣列在嵌入式平臺(tái)的應(yīng)用進(jìn)行了研究,使用三種網(wǎng)絡(luò)對(duì)自測(cè)數(shù)據(jù)集進(jìn)行訓(xùn)練得到模型,發(fā)現(xiàn)KNN的分類準(zhǔn)確率只有24%,并不適用于本研究。而B(niǎo)PNN與CNN分類準(zhǔn)確率最高均可達(dá)到100%,預(yù)測(cè)濃度效果通過(guò)使用MSE進(jìn)行評(píng)估,在訓(xùn)練1000次時(shí)損失值分別為21.36和20.69,均方差均在4以下,但是當(dāng)訓(xùn)練分類模型時(shí),BPNN的訓(xùn)練時(shí)間相較于CNN超出56%,訓(xùn)練預(yù)測(cè)模型時(shí),訓(xùn)練1 000個(gè)epoch時(shí)間超出33.5%。通過(guò)對(duì)在計(jì)算機(jī)上與嵌入式處理器上訓(xùn)練模型,發(fā)現(xiàn)硬件的訓(xùn)練環(huán)境對(duì)結(jié)果影響較大,應(yīng)用輕量化模型更為有效,所以相較于KNN與BPNN,使用CNN在嵌入式處理器中應(yīng)用效果更好。通過(guò)設(shè)計(jì)原理圖實(shí)現(xiàn)了離線采集混合氣體的數(shù)據(jù),最終將CNN網(wǎng)絡(luò)模型與傳感器陣列應(yīng)用到嵌入式處理器中能夠?qū)崿F(xiàn)離線采集并訓(xùn)練模型,可得到便攜式的電子鼻系統(tǒng)。2.3 模型效果對(duì)比
3 硬件平臺(tái)的實(shí)現(xiàn)
3.1 傳感器陣列設(shè)計(jì)
3.2 算法在樹(shù)莓派中的移植
4 結(jié) 語(yǔ)