張勇,楊鵬,王亮,李飛
(1.深部煤礦采動(dòng)響應(yīng)與災(zāi)害防控國家重點(diǎn)實(shí)驗(yàn)室,安徽 淮南,232001;2.安徽理工大學(xué) 電氣與信息工程學(xué)院,安徽 淮南,232001;3.安徽理工大學(xué) 機(jī)械工程學(xué)院,安徽 淮南,232001)
在煤炭開采過程中,原煤中煤矸石的含量占15%~20%[1],這嚴(yán)重影響煤的品質(zhì)和使用效率,因此,有必要將煤和矸石進(jìn)行分離處理。傳統(tǒng)的煤矸石分離方法主要有篩網(wǎng)跳汰法、重介質(zhì)法和浮選法等[2],這些方法會(huì)帶來粉塵污染、水污染和土地污染等問題,給環(huán)境和人類健康帶來極大危害。
目前,比較常見的方法有利用雙能X射線透射法和γ射線透射法分離煤和矸石[3],這些方法存在電離輻射,并且輻射源需要專用的高壓電源,不適合煤礦井下使用,因此,在應(yīng)用上受到了一定的限制。利用灰度壓縮擴(kuò)階共生矩陣的煤和煤矸石圖像識別方法[4],對煤和矸石0~255級灰度圖像進(jìn)行特征提取,并依據(jù)特征參數(shù)進(jìn)行分類識別,但這種方法的穩(wěn)定性有待提高。利用激光三維掃描測量體積與動(dòng)態(tài)稱重相結(jié)合[5],通過煤與矸石密度差實(shí)現(xiàn)煤矸的分離,但該方法誤差較大。
近年來,機(jī)器視覺成為物品識別和分類的研究熱點(diǎn),如利用機(jī)器視覺和支持向量機(jī)對煤矸石進(jìn)行分類[6],有效地提高了識別的準(zhǔn)確率和穩(wěn)定性,基于VGG16網(wǎng)絡(luò)和遷移學(xué)習(xí)的思想搭建煤和矸石的識別模型[7],準(zhǔn)確率達(dá)到82.5%,再在LeNet-5網(wǎng)絡(luò)的基礎(chǔ)上進(jìn)行優(yōu)化[8],對選煤廠采集的煤和矸石圖片進(jìn)行分離,準(zhǔn)確率可達(dá)到95.88%。
本文以實(shí)驗(yàn)室狀態(tài)下采集的煤和矸石圖像數(shù)據(jù)集[9],搭建各種經(jīng)典卷積神經(jīng)網(wǎng)絡(luò)模型(包括LeNet-5,AlexNet,VGGNet16,VGGNet19,GoogleNet,ResNet50和ResNet101),分別對采集的數(shù)據(jù)集進(jìn)行訓(xùn)練,并建立以訓(xùn)練參數(shù)(train params)、浮點(diǎn)運(yùn)算數(shù)FLOPs和評估損失函數(shù)3個(gè)參數(shù)作為評價(jià)指標(biāo)的綜合評價(jià)函數(shù),從中選取更加適合于煤矸分選的經(jīng)典卷積神經(jīng)網(wǎng)絡(luò)模型。
現(xiàn)階段,基于機(jī)器視覺的目標(biāo)分類是建立在統(tǒng)計(jì)學(xué)習(xí)的基礎(chǔ)之上,即通過對采集的大量圖像數(shù)據(jù)進(jìn)行訓(xùn)練,從中學(xué)習(xí)提取特征,實(shí)現(xiàn)對未知類別新樣本的分類識別,但這需采集大量的圖片數(shù)據(jù)。在煤矸分選領(lǐng)域,實(shí)際生產(chǎn)狀態(tài)下對煤和矸石圖像大量采集較為困難。本文通過在實(shí)驗(yàn)室搭建簡易的實(shí)驗(yàn)裝置,對煤和矸石的圖像數(shù)據(jù)進(jìn)行采集,搭建的采集裝置見圖1。采集設(shè)備主要包括帶式輸送機(jī)、設(shè)備架體、LED光源、遮光帶、高速攝像頭、RK3399開發(fā)板和顯示器等,采集的圖樣見圖2。
圖1 圖像采集裝置
共采集了1 000張的煤和矸石圖片(煤和矸石各500張),煤樣圖片見圖2(a),矸石圖片見圖2(b)。其中煤和矸石各350張用來訓(xùn)練模型,各50張用來驗(yàn)證模型性能,各100張用于測試訓(xùn)練后的模型性能,同時(shí),在圖像預(yù)處理的過程中采用數(shù)據(jù)增強(qiáng)技術(shù),擴(kuò)充數(shù)據(jù)集。
圖2 采集的煤和矸石圖片
一個(gè)完整的卷積神經(jīng)網(wǎng)絡(luò)(CNN)一般包含卷積層、池化層、全連接層和激活函數(shù)等結(jié)構(gòu),其中,卷積層用來進(jìn)行特征提取,池化層用于降低維數(shù),全連接層用于結(jié)果預(yù)測,而激活函數(shù)能夠使神經(jīng)網(wǎng)絡(luò)能夠擬合出各種復(fù)雜的函數(shù)。
卷積神經(jīng)網(wǎng)絡(luò)中的核心即為卷積運(yùn)算,其相當(dāng)于圖像處理中的“濾波器運(yùn)算”,用于提取輸入圖像的特征,對于輸入尺寸為W×W的圖像,經(jīng)過一個(gè)F×F大小的卷積核,步長為S的卷積層操作,輸出N為
(1)
式中:P為邊界填充大小。
池化層的作用是將卷積操作得到的特征圖(feature map)進(jìn)行降維,得到1個(gè)分辨率很大的局部特征放大圖,對周圍的像素點(diǎn)(特征值)近似看待,并將平面內(nèi)某一位置及其相鄰位置的特征值進(jìn)行統(tǒng)計(jì),匯總后的結(jié)果作為這一位置在該平面的值。常用的2種池化操作為最大值池化(max pooling)和平均值池化(average pooling)。相對于Max池化是從目標(biāo)區(qū)域中取出最大值,Average池化則是計(jì)算目標(biāo)區(qū)域的平均值,經(jīng)過池化層的輸出O為
(2)
激活函數(shù)是在多層神經(jīng)網(wǎng)絡(luò)中,上層節(jié)點(diǎn)的輸出和下層節(jié)點(diǎn)的輸入之間的一個(gè)函數(shù)關(guān)系,最原始的感知機(jī)未使用激活函數(shù),該情況下每一層節(jié)點(diǎn)的輸入都是上層輸出的線性函數(shù),即無論神經(jīng)網(wǎng)絡(luò)有多少層,輸出都是輸入的線性組合,與無隱藏層效果相當(dāng),而非線性激活函數(shù)的引入能夠使深層神經(jīng)網(wǎng)絡(luò)的表達(dá)能力更加強(qiáng)大,不再是輸入的線性組合,而是幾乎可以逼近任意函數(shù),常用的激活函數(shù)有sigmoid函數(shù)、tanh和relu系列函數(shù)。
(3)
(4)
(5)
全連接層的作用是將網(wǎng)絡(luò)學(xué)習(xí)到的特征映射到樣本的標(biāo)記空間中,將卷積輸出的二維特征圖轉(zhuǎn)化成1個(gè)一維的向量,輸出分類結(jié)果,經(jīng)過全連接層后的輸出為
Q1=f(w11×O1+w12×O2+…+w1n×On+b1)
(6)
式中:f為激活函數(shù);w11,w12,…,w1n為各連接神經(jīng)元的權(quán)重;b1為當(dāng)前連接層的偏差。
在卷積神經(jīng)網(wǎng)絡(luò)發(fā)展的歷程中經(jīng)歷了很多創(chuàng)新,誕生了很多性能優(yōu)異的網(wǎng)絡(luò)模型,經(jīng)典的卷積神經(jīng)網(wǎng)絡(luò)模型主要有LeNet-5,AlexNet,VGGNet,GoogleNet和ResNet?;旧鲜怯缮鲜鼍矸e層、池化層、全連接層和激活函數(shù)通過級聯(lián)組成,部分經(jīng)典網(wǎng)絡(luò)定義了一些新的層級,各經(jīng)典網(wǎng)絡(luò)模型的層級結(jié)構(gòu)對比見表1。
表1 各經(jīng)典網(wǎng)絡(luò)模型的層級結(jié)構(gòu)
表1中,LeNet-5由2個(gè)卷積層和3個(gè)全連接層組成,并采用tanh函數(shù)進(jìn)行激活[10];AlexNet共有8層,包括5個(gè)卷積層和3個(gè)全連接層[11]。通過在第2~5卷積層之間大量使用3×3和5×5的卷積核,提升了模型的特征提取能力,在第1和2卷積層中加有LRN(局部響應(yīng)歸一化)層來對局部神經(jīng)元的活動(dòng)創(chuàng)建競爭機(jī)制,增強(qiáng)模型的泛化能力,并且使用Dropout隨機(jī)忽略一部分神經(jīng)元避免過擬合。VGGNet通過反復(fù)堆疊3×3的小型卷積核和2×2的最大池化層來加深網(wǎng)絡(luò)結(jié)構(gòu)[12],提升特征提取能力,同時(shí)使用1×1卷積層在輸入輸出通道不變的情況下,進(jìn)行線性變換,其中VGGNet16共有16層,包括13個(gè)卷積層和3個(gè)全連接層。池化均采用最大值池化,激活函數(shù)采用Relu函數(shù),并且使用Dropout隨機(jī)忽略一部分神經(jīng)元避免過擬合。而VGGNet19網(wǎng)絡(luò)則是在VGGNet16網(wǎng)絡(luò)的基礎(chǔ)之上,增加了3個(gè)卷積層。GoogleNet的主要?jiǎng)?chuàng)新點(diǎn)[13]是提出了Inception結(jié)構(gòu)[14]對卷積核進(jìn)行改進(jìn),即將原來的線性卷積層變?yōu)槎鄬痈兄矸e層,增強(qiáng)卷積核的特征提取能力,同時(shí),使用全局平均池化層取代最后全連接層,減小過擬合。其中,GoogleNet采用的Inception-V1共有8層,包括3個(gè)卷積層、3個(gè)Inception層和2個(gè)全連接層。ResNet通過在網(wǎng)絡(luò)中添加大量的BN(批歸一化)層和shortcut(短接)[15],使其在網(wǎng)絡(luò)層數(shù)增加的情況下,仍保持較少的參數(shù)量,加速神經(jīng)網(wǎng)絡(luò)的訓(xùn)練,其中構(gòu)建的ResNet50和ResNet101網(wǎng)絡(luò)層級分別為50和101層[16]。
在對采集的數(shù)據(jù)進(jìn)行訓(xùn)練之前,需要先對圖像進(jìn)行預(yù)處理。預(yù)處理的過程包括設(shè)置數(shù)據(jù)集圖片的寬度和高度并對采集的圖片數(shù)據(jù)進(jìn)行歸一化處理,使采集圖像在RGB通道上0~255的整數(shù)轉(zhuǎn)化為0~1之間的數(shù)。文中將網(wǎng)絡(luò)的輸入圖像統(tǒng)一設(shè)置為224×224×3,其中,224×224為輸入圖像的高×寬,3為網(wǎng)絡(luò)的通道數(shù),歸一化值設(shè)置為1/255。
小樣本數(shù)據(jù)集在采用深度卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練時(shí),容易陷入過擬合,文中采用數(shù)據(jù)增強(qiáng)技術(shù)對數(shù)據(jù)集進(jìn)行擴(kuò)張,采用的方法包括圖像隨機(jī)翻轉(zhuǎn)、隨機(jī)水平和垂直偏移、隨機(jī)水平翻轉(zhuǎn)、隨機(jī)剪切和隨機(jī)放大。數(shù)據(jù)增強(qiáng)技術(shù)使用的參數(shù)見表2,數(shù)據(jù)增強(qiáng)后的部分圖像見圖3。
表2 數(shù)據(jù)增強(qiáng)參數(shù)表
圖3 數(shù)據(jù)增強(qiáng)圖片
對于1.3節(jié)闡述的經(jīng)典CNN模型,在谷歌深度學(xué)習(xí)框架Tensorflow 2.0中搭建,對1.1節(jié)采集的煤和矸石圖像進(jìn)行訓(xùn)練。訓(xùn)練的過程中的各經(jīng)典網(wǎng)絡(luò)的準(zhǔn)確率曲線見圖4。
圖4為各經(jīng)典網(wǎng)絡(luò)訓(xùn)練準(zhǔn)確率曲線,訓(xùn)練輪數(shù)均為50,其中,ResNet 101網(wǎng)絡(luò)的訓(xùn)練準(zhǔn)確率為100%,AlexNet,VGGNet16和ResNet50的訓(xùn)練準(zhǔn)確率均在90%以上,而LeNet-5,VGGNet19和GoogleNet的訓(xùn)練準(zhǔn)確率只有50%~60%,訓(xùn)練效果較差。
圖4 經(jīng)典網(wǎng)絡(luò)訓(xùn)練曲線
在訓(xùn)練過程中,采用驗(yàn)證集對訓(xùn)練的模型進(jìn)行實(shí)時(shí)驗(yàn)證,其中,AlexNet訓(xùn)練集和驗(yàn)證集的損失函數(shù)曲線見圖5。
圖5 訓(xùn)練集和驗(yàn)證集損失函數(shù)曲線
圖5所示為AlexNet損失函數(shù)曲線,其中,訓(xùn)練集損失函數(shù)曲線(training loss)和驗(yàn)證集損失函數(shù)曲線(validation loss)均已收斂,并且之間的泛化誤差(generalization gap)較小,屬于完美擬合狀態(tài),而在實(shí)際訓(xùn)練過程中,AlexNet,ResNet50,VGGNet16和ResNet101均呈完美擬合狀態(tài),LeNet-5,VGGNet19和GoogleNet均呈欠擬合狀態(tài)。
對于上述訓(xùn)練后的經(jīng)典卷積神經(jīng)網(wǎng)絡(luò)模型用測試集數(shù)據(jù)進(jìn)行預(yù)測分析,其中,測試集共200張圖片,煤和矸石各100張。在處理過程中,需要先對測試集的圖片進(jìn)行預(yù)處理,將圖片轉(zhuǎn)換成為224×224像素的數(shù)據(jù),并進(jìn)行歸一化處理。預(yù)測結(jié)果見表3和圖6。
表3 訓(xùn)練和預(yù)測準(zhǔn)確率
表3所示為使用訓(xùn)練好的經(jīng)典卷積神經(jīng)網(wǎng)絡(luò)對測試集的200張新的煤和矸石圖像的預(yù)測結(jié)果,其中,AlexNet,VGGNet16,ResNet50和ResNet101的預(yù)測準(zhǔn)確率均為100%,而LeNet-5,VGGNet19和GoogleNet的預(yù)測準(zhǔn)確率只有50%。圖6中,圖6(a)所示為預(yù)測正確的結(jié)果;圖6(b)所示為預(yù)測錯(cuò)誤的結(jié)果。
圖6 煤和矸石的實(shí)際預(yù)測結(jié)果
1)訓(xùn)練參數(shù)量。在深度學(xué)習(xí)中,要想使網(wǎng)絡(luò)從輸入數(shù)據(jù)中學(xué)習(xí)到良好特征,一般而言,就需要搭建較復(fù)雜的網(wǎng)絡(luò),也就是包含更多、更復(fù)雜的層,即隱藏在數(shù)據(jù)中的特征層越高,網(wǎng)絡(luò)就越復(fù)雜,帶來的訓(xùn)練參數(shù)就越多。一個(gè)網(wǎng)絡(luò)的訓(xùn)練參數(shù)主要由卷積層和全連接層產(chǎn)生,對于某個(gè)卷積層或全連接層,其參數(shù)量分別為
Pc=(Kh×Kw×Cin)×Cout+Cout
(7)
Pf=Nin×Nout+Nout
(8)
式(7)中:Kh和Kw為輸入圖像數(shù)據(jù)的高度和寬度;Cin和Cout分別為輸入和輸出的通道數(shù)。式(8)中:Nin和Nout分別為全連接層輸入和輸出的節(jié)點(diǎn)數(shù)。
2)浮點(diǎn)運(yùn)算次數(shù)FLOPs。浮點(diǎn)運(yùn)算次數(shù)(floating point operations,FLOPs)可以理解為計(jì)算量,用來表征模型的復(fù)雜度[17]。對于一個(gè)卷積神經(jīng)網(wǎng)絡(luò)模型來說,其浮點(diǎn)運(yùn)算次數(shù)主要體現(xiàn)在卷積層和全連接層,但是在卷積層中,每個(gè)特征圖(Feature map)上的每個(gè)點(diǎn)的權(quán)值是共享的,這使得卷積在獲得特征不變性的情況下,可以大幅減少參數(shù)數(shù)量,所以,在計(jì)算其浮點(diǎn)運(yùn)算次數(shù)時(shí)需要在訓(xùn)練參數(shù)的基礎(chǔ)上再乘以特征圖的尺寸,而對于全連接層,由于其不存在權(quán)值共享,所以,浮點(diǎn)運(yùn)算次數(shù)與訓(xùn)練參數(shù)相等。
Fc=[(Kh×Kw×Cin)×Cout+Cout]×(H×W)
(9)
Ff=Pf=Nin×Nout+Nout
(10)
式中:H和W分別為特征圖的高度和寬度。
3)評估損失函數(shù)。損失函數(shù)是決定網(wǎng)絡(luò)質(zhì)量的一個(gè)重要指標(biāo),用于描述模型的預(yù)測值與真實(shí)值之間的差距,常見的損失函數(shù)有均值平方差(MSE)和交叉熵(crossentropy)2種,其中,均值平方差是指參數(shù)估計(jì)值和參數(shù)真實(shí)值之差平方的期望值,而交叉熵刻畫了2個(gè)概率分布之間的距離。文中訓(xùn)練的模型主要用于煤和矸石的識別分類,并且數(shù)據(jù)編碼方式為數(shù)字編碼,所以,評估損失函數(shù)選擇更適合于分類問題中的交叉熵中的稀疏交叉熵?fù)p失函數(shù)(sparse categorical crossentropy),網(wǎng)絡(luò)損失函數(shù)計(jì)算公式如下:
(11)
式中:n為預(yù)測樣本的個(gè)數(shù);Y和Ypred分別為樣本真實(shí)概率和預(yù)測概率。
對于經(jīng)典卷積神經(jīng)網(wǎng)絡(luò)而言,衡量模型性能的指標(biāo)有很多,而其中訓(xùn)練參數(shù)量、浮點(diǎn)運(yùn)算次數(shù)和評估損失函數(shù)最具有代表性。模型的訓(xùn)練參數(shù)量和浮點(diǎn)運(yùn)算次數(shù)分別描述模型的空間復(fù)雜度和時(shí)間復(fù)雜度,模型的訓(xùn)練參數(shù)越多,訓(xùn)練模型所需的數(shù)據(jù)量就越大,訓(xùn)練越困難,同時(shí)對硬件的要求也越高。模型的浮點(diǎn)運(yùn)算次數(shù)越大,相應(yīng)的模型復(fù)雜度就越高,訓(xùn)練和預(yù)測所花費(fèi)的時(shí)間也就越長。而模型的評估損失函數(shù)所代表的是模型在用數(shù)據(jù)集訓(xùn)練模型時(shí)的精度,損失函數(shù)越小,模型的精度越高。
通過程序計(jì)算得出模型的訓(xùn)練參數(shù)量、浮點(diǎn)運(yùn)算次和評估損失函數(shù),見表4。表中模型的訓(xùn)練參數(shù)量和模型的浮點(diǎn)運(yùn)算次數(shù)值排序從大至小均為ResNet101,ResNet50,VGGNet19,VGGNet16,AlexNet,GoogleNet和LeNet-5。模型的評估損失函數(shù)值從小至大排序?yàn)镽esNet101,ResNet50,AlexNet,VGGNet16,GoogleNet,VGGNet19和LeNet-5。
表4 模型評價(jià)指標(biāo)值
對于煤矸分選實(shí)際應(yīng)用來說,訓(xùn)練參數(shù)量值越小,對處理單元的要求越低。浮點(diǎn)運(yùn)算次數(shù)越小,模型的效率越高,運(yùn)算速度越快。模型評價(jià)損失函數(shù)越小,模型訓(xùn)練的準(zhǔn)確率越高。其中,浮點(diǎn)運(yùn)算次數(shù)和訓(xùn)練參數(shù)量成正比,取其中一個(gè)量作為評價(jià)標(biāo)準(zhǔn)即可。為了平衡運(yùn)算需求和準(zhǔn)確率,對訓(xùn)練參數(shù)量/浮點(diǎn)運(yùn)算次數(shù)和模型評價(jià)損失函數(shù)進(jìn)行加權(quán),建立模型綜合評價(jià)函數(shù)E,對煤矸分選經(jīng)典卷積神經(jīng)網(wǎng)絡(luò)模型進(jìn)行評價(jià),其中權(quán)重均為0.5。
(12)
式中:P和F分別為訓(xùn)練參數(shù)量和浮點(diǎn)運(yùn)算次數(shù);C為評價(jià)損失函數(shù)。各個(gè)經(jīng)典網(wǎng)絡(luò)的綜合評價(jià)函數(shù)值見表5。
表5 網(wǎng)絡(luò)綜合評價(jià)函數(shù)值
表5中,AlexNet網(wǎng)絡(luò)的綜合評價(jià)函數(shù)值最小,在其滿足準(zhǔn)確率的條件下,盡量降低運(yùn)算需求,是最適合于煤矸分選的經(jīng)典卷積神經(jīng)網(wǎng)絡(luò)模型。
1)基于深度卷積神經(jīng)網(wǎng)絡(luò)建立了煤矸識別模型,對比分析了多個(gè)經(jīng)典卷積神經(jīng)網(wǎng)絡(luò)模型的訓(xùn)練和測試情況。結(jié)果表明,經(jīng)典卷積神經(jīng)網(wǎng)絡(luò)中的LeNet-5,VGGNet19和GoogleNet模型復(fù)雜度不夠,對采集的數(shù)據(jù)進(jìn)行訓(xùn)練時(shí),出現(xiàn)欠擬合,并且訓(xùn)練和測試準(zhǔn)確率較低,為50%~60%,而AlexNet,ResNet50,VGGNet16和ResNet101模型訓(xùn)練結(jié)果均呈完美擬合狀態(tài),準(zhǔn)確率均達(dá)到90%以上。
2)基于各經(jīng)典卷積神經(jīng)網(wǎng)絡(luò)模型,選擇以訓(xùn)練參數(shù)量、浮點(diǎn)運(yùn)算次數(shù)和評估損失函數(shù)3個(gè)參數(shù)為代表的模型評價(jià)指標(biāo)。其中,訓(xùn)練參數(shù)量和浮點(diǎn)運(yùn)算次數(shù)指標(biāo)分別代表模型的空間復(fù)雜度和時(shí)間復(fù)雜度,評估損失函數(shù)代表模型使用數(shù)據(jù)集訓(xùn)練模型時(shí)測量值和真實(shí)值之間的差距。經(jīng)典卷積神經(jīng)網(wǎng)絡(luò)中,LeNet-5的空間復(fù)雜度和時(shí)間復(fù)雜度最小,ResNet101的評估損失函數(shù)最小。通過構(gòu)造經(jīng)典網(wǎng)絡(luò)綜合評價(jià)函數(shù),計(jì)算得出最適合于煤矸分選的經(jīng)典網(wǎng)絡(luò)為AlexNet。