賈穎淼,李紫蕊,范書瑞,張 艷
(河北工業大學電子信息工程學院,天津 300401)
動態氣體的分析在檢測氣體泄漏源[1],環境監測[2-3],估計氣源距離[4]等方面有巨大應用。在復雜的動態環境中,傳感器的響應曲線受周圍環境的溫度,濕度以及空氣的方向和速度的影響[5-6],導致氣體羽流發生復雜的不規則變化,另外,當存在不同種類的氣體時,復雜環境也會導致多種氣體的不均勻分布。
為了對室外復雜環境中的氣體進行準確識別,深度學習被應用到氣體識別領域中。Mishra等人[7]利用最簡單的四神經元人工神經網絡對進行了歸一化差分處理(NDSRT)的傳感器數據進行分類,把原始傳感器響應轉換成為具有濃度不變性的虛擬多傳感器使用,所有的測試樣本在變換后都得到了準確分類。張天君等人[8]使用LSTM基于煤礦實際生產時檢測的時間序列預測瓦斯濃度,可以較好的預測出瓦斯濃度,預測誤差在0.000 5~0.040 0之間,在拐點處的預測誤差也保持在0.014以下。之后,他又提出了基于RNN的多參數融合預測模型對瓦斯濃度進行預測[9],對瓦斯濃度時間序列的預測精度較高,可作為礦井瓦斯濃度預測的參考模型。胡志偉等人[2]利用K-最近鄰算法(KNN)與深度卷積神經網絡相結合,實現了空氣質量的短期預測。但是模型較為復雜,數據處理繁瑣。但以上算法均在PC端實現,具有訓練的模型大,參數多;訓練緩慢;功耗大和成本高等問題,如何在終端設備上運轉深度學習相關算法,實現模型的輕量化人工智能的設計,是我們還面臨的一項挑戰。
陳寅生等人[10]利用基于KPCA和MRVM算法實現了二元混合氣體的準確識別,準確率達到了99.83%。李紫蕊等人[11]研究了基于隨機森林和粒子群優化的SVR混合氣體的定量分析方法,可以準確的對混合氣體進行分類并且預測氣體濃度。但是由于EAIDK-310支持的安裝包的格式為aarch64類型文件,而sklearn官網上提供的安裝包沒有此種類型的文件,這種情況導致sklearn在EAIDK-310上無法安裝,從而論文中提出的方法暫時無法在EAIDK-310上部署調用。
為解決上述問題,本文研究了基于CNN的氣體濃度預測方法,提出了用于動態氣體識別的輕量級卷積神經網絡架構FD-CNN(fast detection-convolutional neural network),采用OPEN AI LAB的EAIDK-310開發板作為嵌入式端智能平臺,將在PC端訓練好的氣體模型部署到嵌入式端實現氣體的成分識別以及濃度預測,測試模型在嵌入式端的有效性和可靠性,得到空氣質量分析結果。
趙小今提出的1D-CNN[12]、Guangfen Wei提出的改進型LeNet-5[13]Peng Pai提出的GasNet[14]均是基于CNN的氣體識別方法,與這三種方法相比,本文提出的網絡結構層數較少,只包括一個卷積層和一個最大池化層用于提取和選擇特征,一層Flatten層將多維數據轉換為一維數據,兩層全連接層將學習到的分布式特征映射到樣本標簽中。
如果將模型應用于動態氣體的成分識別,最后一層全連接層有5個神經單元,激活函數選擇“Softmax”,使輸出結果為測試樣本屬于各個類別的概率;如果將模型應用于回歸預測,網絡最后一層只有一個神經單元,激活函數選擇“lineaer”,使輸出結果預測的氣體濃度。如圖1所示。

圖1 FD-CNN網絡結構
網絡中,卷積核大小為3×3,數量為64個,Padding選擇為SAME,步長為1,以保證卷積層的輸入輸出形狀不變,池化層步長為2,減少輸出特征圖的大小。第一層全連接層有128個神經單元。網絡結構優化參數選擇如表1,權重W的初始化方式為Glorot uniform initializer,由均勻分布來初始化數據,偏置b初始化為0。利用Adam進行優化,其超參數設置為默認值,Adam優化器實現簡單,對內存需求少,其超參數具有很好的解釋性,通常無需調整,屬于默認工作性能比較優秀的優化器,適合本問題。用均方誤差(MSE)作為優化的目標函數,均方誤差代表預測值與真實值之差平方的平均值,計算公式如式(1)。m為預測樣本數量,yi為第i個樣本的預測值,為第i個樣本的真實值。

表1 參數設置

訓練過程中選用隨機梯度下降法進行多次迭代訓練,迭代次數設置為150,在每次訓練迭代中,從訓練數據選擇N個樣本作為一批數據而不進行替換,然后,利用神經網絡的正向傳播來計算損耗,利用反向傳播來更新參數。在反向傳播中,通過最小化損耗對θ的梯度乘以一個小的步長α(稱為學習率)的梯度來更新每層的參數θ(包括權重W和偏置b),如式(2)。

對動態氣體進行成分識別時,輸入樣本數據的大小是100×8,經過150次迭代訓練,訓練過程中損失值和準確率的變化如圖2,其中帶“+”的代表訓練集損失,平滑曲線代表訓練集準確率,可以看到在訓練過程中,損失值下降,準確率上升,最后損失值平穩在0.02左右,準確率平穩在98%。

圖2 氣體成分識別模型訓練時損失和準確率變化
對混合氣體進行回歸預測時,利用文獻[11]中預處理后的數據,網絡結構的輸入數據尺寸為(1,4,1),即每個訓練樣本的大小為1×4,只有1個通道。經過150次迭代訓練,損失值和MAE的變化過程如圖3所示,其中帶“+”的代表訓練集損失,平滑曲線代表訓練集MAE,可以看到在訓練的過程中,損失值和MAE都在不斷地下降,最后損失值平穩在16附近,MAE平穩在2附近。

圖3 氣體濃度預測模型訓練時損失和MAE的變化
模型的部署完整流程圖如圖4所示,模型由計算機端部署到嵌入式端。在windows系統下利用Keras框架訓練得到的分析模型為.h5文件,首先將其轉換為Tensoflow的.pb文件,然后在Ubuntu系統中利用tengine模型轉換工具將模型由.pb文件轉換為.tmfile文件,以上操作均可以在計算機端完成,最后在EAIDK-310板子上的Linux系統下完成模型的調用與氣體的分析。

圖4 模型部署流程圖
通過第1節PC端的訓練,我們得到了FD-CNN.h5模型,此模型是在Kears框架下利用CPU訓練得到的模型,h5文件包含模型的結構,以便重構該模型;模型的權重;訓練配置(損失函數、優化器等)和優化器的狀態。而嵌入式端Tengine的模型文件為.tmfile文件,因此需要將FD-CNN.h5文件轉換為FD-CNN.tmfile文件。
Tengine的模型轉換工具僅支持Caffe、Onnx、Mxnet、Tensorflow或tf-lite模型向tmfile模型的轉換,因此首先要在計算機端的windows系統下將.h5模型轉換為Tensorflow的.pb模型。.pb文件包含了計算圖,可以從中得到所有operators的細節,也包括tensors和Variables定義,因此只能從中恢復計算圖。
我們首先讀取載入FD-CNN.h5模型文件,識別模型網絡中的張量數據的類型/格式、運算單元的類型和參數、計算圖的結構和命名規范,以及它們之間的其他關聯信息。然后將得到的模型結構和模型參數信息翻譯成Tensorflow框架支持的代碼格式。在Tensorflow框架下保存模型,即可得到FD-CNN.pb模型文件。
將.pb模型利用模型轉換工具轉換為.tmfile,命令格式為:
[Usage]:./install/tool/convert_model_to_tm[-h][-f file_format][-p proto_file][-m model_file][-o output_tmfile]
convert_model_to_tm是tengine提供的模型轉換工具,其中,-h代表help選項,-f指定模型框架類型,此處指定tensorflow,-m指定源模型路徑,-o指定轉換后的Tengine模型路徑。
EAIDK-310上自帶的操作系統為Fedora28,在系統上進行的模型遷移和部署操作都是基于Tengine框架的,因此首先要利用下載工具下載tengine源碼,安裝依賴包,并編譯源碼。
Tengine框架支持Caffe、TensorFlow等模型文件,可以在此開源框架下進行模型的測試工作。Tengine核心API流程如圖5所示,首先利用init_tengine函數初始化Tengine,此函數僅調用一次,然后創建Tengine計算圖,在運行前分配所需資源,接著運行Tengine圖推理,推理完成之后使用兩次postrun_graph函數停止運行圖并釋放所占資源,最后銷毀創建的計算圖。

圖5 Tengine核心流程
本文用于動態氣體混合物的快速成分識別的數據是TGM數據集[15],此數據集在風洞中獲得,擁有兩個獨立氣源,其中一個氣源釋放乙烯氣體,另外一個氣源釋放一氧化碳(CO)或者甲烷氣體,不同濃度的氣體隨著湍流自然混合,由8個化學電阻性氣體傳感器收集。因此完整的數據集由重復6次的30種氣體組合組成,因此一共進行了180次測量,得到了180個樣本,每次測量時間是300s。數據集中有甲烷(Met)、乙烯(Eth)、一氧化碳(CO)、乙烯-一氧化碳(Eth-CO)、乙烯-甲烷(Eth-Met)五種類別的樣本,同時每類樣本中混合氣體的濃度并不相同,對數據進行動態時間規整(Dynamic Time Warping,DTW)預處理,以及滑動窗口再取樣,以增加樣本數量,減小樣本尺寸,使每個樣本的維數為(2970,8),預處理后得到的樣本集如表2。

表2 預處理后的數據集
由于數據集種各個類別的數量不同,使用分層抽樣劃分訓練集和測試集,其中,訓練集占90%,測試集占10%,此次分層抽樣得到訓練集中3 672個樣本,測試集中408個樣本。訓練集用于FD-CNN模型的訓練,測試集用于計算機端以及嵌入式端模型的測試。
對混合氣體進行回歸預測時,實驗樣本基于UCI數據集[16],該數據集由不同濃度的甲烷、乙烯、空氣以及其混合物在16個傳感器(TGS2600、TGS2602、TGS2610、TGS2620(每種類型有4個單元))的陣列下的響應組成,持續測量的時間為10 486 s。對數據進行歸一化以及主成分分析后,發現前4個主成分的累計貢獻率達到99.69%,因此前4個主成分足以代表的特征信息。
本文選取15 499行單一氣體甲烷的數據進行實驗,預測其濃度。經過特征提取后,數據大小變為15 499×4。對降維后的數據按照1∶1的比例劃分訓練集和測試集,其中訓練集用于模型的訓練,測試集用于測試PC端訓練模型的準確率以及模型部署在嵌入式端之后的效果。測試集中一共包含7750個測試樣本(每個樣本代表1 s的數據)。
對動態氣體進行成分識別時,將提出的FD-CNN模型與1D-CNN,Improved LeNet-5,GasNet進行比較。由于本次實驗樣本中有5中類別,因此我們需要使用多分類的評價指標來衡量他的分類性能,針對多分類模型的評價,可以將多分類問題轉換為二分類問題,這樣可以得到模型預測的準確率,Precision,Recall,F1-score,AUC等。除此之外,我們還可以利用直接定義的多分類指標Kappa系數以及海明距離等,如表3所示。此外,我們還比較了模型的訓練時間,模型預測樣本的時間,以及不同模型的慘呼量來衡量模型的效率,如表4所示。實驗的所有模型使用的訓練和測試數據相同。

表4 不同模型的效率比較
從表3中可以看出,GasNet的準確率、Precision、Recall和F1-score在四個模型中都是最好的,本文提出的模型FD-CNN在準確率和Precision上略差于GasNet,但AUC比GasNet較好,除1D-DCNN外,其余三個模型的AUC均在0.99以上,相差不大。KAPPA系數和海明距離是常用的多分類評價指標,KAPPA系數在實際應用中一般取值[0,1],系數的值越高,代表模型實現的分類準確度越高,四個模型中GasNet的kappa系數最高,其次是FD-CNN和Improved LeNet5,1D-DCNN最小。海明距離衡量預測標簽與真實標簽之間的距離,取值在也在[0.1]之間,其值越接近0,證明預測標簽與真實標簽之間距離越小,預測越準確,四個模型中,也是GasNet的海明距離值最小,其次是FD-CNN。所以,但從分類性能來看,GasNet的分類性能略優于FD-CNN,但是兩者差距不大,兩者的分類性能明顯優于Improved LeNet5和1D-DCNN模型。

表3 不同模型的分類性能
如果從模型訓練的效率來看,表4可以明顯看出GasNet的訓練參數最多,PC端訓練模型的消耗時間也明顯最長,其消耗時間是FD-CNN的4倍左右,模型預測所需要的時間更是FD-CNN的16倍,這是因為GasNet的模型結構比FD-CNN復雜的多,除去輸入層和輸出層,他有12次卷積歸一化組合,共26層,這也是他的分類性能較好的原因。而FD-CNN用6層結構可以與GasNet模型達到相似的分類性能,是由于選取的網絡層均具有代表意義,可以以最少的層數達到最好的分類效果。與Improved LeNet5相比,FD-CNN的參數量雖然更多,但是模型訓練所需要的時間以及預測時間比Improved LeNet5少,且其分類性能也明顯優于Improved LeNet5。對于1D-DCNN,他的參數量與FD-CNN類似,但是預測時間是FD-CNN的6倍。
除了模型的分類性能與效率,本模型是為了快速檢測設計的,因此對于輸入數據的長度也有要求,FD-CNN和ID-DCNN只需要輸入10 s的數據便可得到分類結果,Improved LeNet5需要輸入180s的數據,而分類性能最好的GasNet則需要300 s的數據才能得到分類結果。
綜上所述,本文提出的FD-CNN分類性能與復雜的GasNet相似,但結構比GasNet簡單的多,消耗時間是GasNet的1/16,其分類性能又明顯優于效率相似的Improved LeNet5,各項指標均比Improved LeNet好,因此FD-CNN可以在網絡層數最少且訓練時間相對較短的情況下可以實現出色的測試準確率,在快速檢測場景中,可以達到較高的準確率與效率。
對動態氣體進行濃度預測時,利用FD-CNN模型對7 750個測試樣本進行預測,并將預測結果與基于粒子群優化的SVR方法作比較,以均方根誤差(RMSE),均方誤差(MSE),平均絕對誤差(MAE)以及R2為評價指標,評判模型擬合度的好壞,結果如表5。

表5 PC端濃度預測評價指標結果
由表5可以看出PSO+SVR的RMSE、MSE、MAE值均較小,但R2的值較大,證明PSO+SVR單純在計算機端的回歸預測效果好于FD-CNN,但是由于EAIDK-310的限制,sklearn安裝包無法在EAIDK-310上安裝,導致PSO+SVR模型無法部署在嵌入式端,并且發現使用FD-CNN的模型于PSO+SVR的R2只相差0.02,差距較小,也可以較好的進行回歸預測,在測試集中選取140個樣本點畫出利用FD-CNN預測得到的預測濃度以及實際濃度的曲線圖如圖6。可以看到實際濃度與預測濃度曲線基本重合,圖7是預測誤差曲線圖,可以看到,隨機選取的140個樣本中,預測誤差最大為8×10-6,大部分誤差在4×10-6以下,圍繞2×10-6波動。

圖6 計算機端FD-CNN濃度預測結果

圖7 FD-CNN濃度預測誤差
將FD-CNN部署在EAIDK-310上,調用其模型運行應用程序對測試集進行測試,測試集中共有408個測試樣本,每個樣本中包含10 s的數據,表6中展示了隨機挑選的10個樣本的識別結果,識別完成后模型輸出預測的最高概率及其對應類別,可以看到這10個樣本全部識別正確,預測為此類別的概率全部為1.000 0(輸出保留四位小數),識別效果較好,同時每個樣本的消耗時間在13 ms以內,識別速度很快,效率較高。

表6 嵌入式端FD-CNN成分識別結果
修改模型中的最后一層全連接層以及激活函數,對甲烷氣體的濃度進行預測,調用模型執行應用程序后,得到對7 750個測試樣本的濃度預測結果。表7中列出了隨機挑選的10個樣本的預測結果以及進行濃度預測所消耗的時間。

表7 嵌入式端FD-CNN濃度預測結果
可以看出10個樣本的預測誤差均在6×10-6以下,其中有5個樣本預測誤差在1×10-6以下,發現預測準確度很高,預測誤差較小,10個樣本的消耗時間均在1 ms以下,可以知道預測速度很快,效率較高。
本文提出一種基于嵌入式CNN的氣體分析方法FD-CNN,進行了氣體分析模型在嵌入式端的移植部署,將計算機端訓練好的FD-CNN模型通過格式轉換、模型調用等步驟部署到EADIK-310上,在嵌入式端測試模型的有效性。實驗結果證明,提出模型可以實現快速檢測條件下的氣體識別,識別準確率和效率均高于其他模型,在濃度預測方面,與PSO+SVR的預測效果近似相同,R2達到了0.994,與PSO+SVR僅僅相差0.02,識別準確率較高。經FD-CNN部署在嵌入式端后,發現成分識別和濃度預測的準確率都比較高,隨機抽取的10個樣本,在嵌入式端全部識別正確,且預測的濃度誤差也保持在6×10-6以內,成分識別消耗時間保持在12 ms~13 ms之間,濃度預測的消耗時間在1 ms以下,計算效率很高。此次測試證明了在EAIDK-310上可以以高效率、高準確率實現空氣質量分析。