曾錚,傅惠南,朱小輝
(廣東工業(yè)大學(xué)機(jī)電工程學(xué)院,廣州510006)
木材種類識別是木材加工和打擊木材走私中必不可少的技術(shù)環(huán)節(jié)。實現(xiàn)木材種類識別的自動化,對木材行業(yè)提高生產(chǎn)效率和節(jié)約人力資源具有重要意義。
木材的特征非常多,因此識別方法也多種多樣。在傳統(tǒng)的人力識別中,專業(yè)人員可能需要通過觸感、顏色、紋理、微觀結(jié)構(gòu)、氣味和敲擊聲等特征中的幾項來綜合判斷種類。在木材種類自動化識別領(lǐng)域,有一些研究是基于顯微圖像展開的[1-2],也有學(xué)者是基于X 射線圖像[3]和近紅外光譜圖[4]展開研究,都取得了不錯的識別準(zhǔn)確率,但是會有如下缺點:設(shè)備經(jīng)濟(jì)成本高,操作復(fù)雜,特別是在獲取顯微切片時會損壞木材。
很多學(xué)者是基于宏觀圖像展開研究的。Shuaiqi 等人提出用尺度不變特征變換(SIFT)對木材橫截面提取特征以進(jìn)行圖像識別[5];Barmpoutis 等人提出一種新的多維紋理分析方法,對12 種木材的橫截面、徑切面和弦切面進(jìn)行分析識別[6];更多的研究是以灰度共生矩陣(GLCM)為基礎(chǔ)方法,GLCM 是一種用于提取紋理模式特征的方法,GLCM 與其他方法相結(jié)合,在木材種類識別領(lǐng)域取得了不錯的效果[7-10]。但是上述文獻(xiàn)的方法都是屬于手工提取特征,一般只針對具體的樹種大類,泛化能力及魯棒性較差。近些年來,深度學(xué)習(xí)在圖像識別領(lǐng)域取得了突破性的進(jìn)展。深度學(xué)習(xí)是屬于自動提取特征的技術(shù),省時省力,在種類被更換時,仍能保持良好的性能。Hafemann 等人提出一種深度卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),在宏觀圖像和微觀圖像上都取得了不錯的效果[11]。但該神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)簡單,識別準(zhǔn)確率不高。
為了更高效實現(xiàn)木材圖像種類識別,并應(yīng)用在計算量、存儲量有限的實時設(shè)備上,同時保證分類的效率與精度,一種有效的解決方案是構(gòu)建一種針對木材種類識別任務(wù)的輕量化卷積神經(jīng)網(wǎng)絡(luò)。本文大幅改造經(jīng)典輕量化模型MobileNetV2[12],得到適合木材種類分類任務(wù)的模型,提高了識別準(zhǔn)確率,并大幅降低了網(wǎng)絡(luò)的參數(shù)量和計算量。
MobileNetV2 是一種主要應(yīng)用在移動端的輕量級卷積神經(jīng)網(wǎng)絡(luò),是由MobileNetV1[13]上發(fā)展而來,比Mo?bileNetV1 更加高效。MobileNetV2 依然使用Mobile?NetV1 中的深度可分離卷積。深度可分離卷積極大地減小了模型的參數(shù)量和計算量,但是它也存在局限,表現(xiàn)為深度卷積部分本身沒有改變通道的能力,導(dǎo)致只能在低維度上工作,效果不會很好,MobileNetV2 克服了這一局限,設(shè)計了反向殘差塊。
深度可分離卷積將標(biāo)準(zhǔn)卷積分為一個逐深度卷積(Depthwise Convolution)和一個逐點卷積(Pointwise Convolution)。逐深度卷積,即對每個輸入通道用單通道卷積核進(jìn)行卷積運(yùn)算。逐點卷積,即1×1卷積,負(fù)責(zé)通過計算輸入通道間的線性組合來生成新的特征。過程如圖1和圖2 所示。
圖1 標(biāo)準(zhǔn)卷積[14]
圖2 深度可分離卷積[14]
為了高效發(fā)揮深度可分離卷積的作用,MobileNetV2創(chuàng)新性地使用了反向殘差塊(Inverted residual block)。深度分離卷積存在一個局限,即沒有改變輸入通道的能力。在深度分離卷積之前添加一層1×1卷積,而1×1卷積的通道數(shù)是可以任意指定的,因此解除了深度分離卷積對輸入通道的限制。有人在實際使用深度可分離卷積的時候,發(fā)現(xiàn)一個問題:訓(xùn)練出來的卷積核有不少是空的。為了改善此問題,在深度分離卷積的逐點卷積部分后不采用非線性激活,而是采用了Lin?ear 激活。為了使得網(wǎng)絡(luò)在較深的時候依舊可以進(jìn)行訓(xùn)練,MobileNetV2 借鑒 ResNet 的殘差結(jié)構(gòu),引入shortcut 連接。但是,MobileNetV2 的殘差塊與ResNet有區(qū)別,ResNet 是先降維、卷積、再升維,而Mobile?NetV2 則是先升維、卷積、再降維,因此,MobileNetV2的殘差塊被稱為反向殘差塊。但是,MobileNetV2 并沒有為全部深度可分離卷積添加shortcut 連接,只在步長為1 的深度可分離卷積添加shortcut 連接,如圖3所示。
圖3 反向殘差塊
MobileNetV2 的網(wǎng)絡(luò)結(jié)構(gòu)參數(shù)如表1所示,第一層為標(biāo)準(zhǔn)卷積層,通道擴(kuò)張系數(shù)是指反向殘差塊中輸入通道升維的倍數(shù)。
表1 MobileNetV2 網(wǎng)絡(luò)結(jié)構(gòu)參數(shù)
為了在低算力、低存儲容量的設(shè)備上高效實現(xiàn)木材種類識別,本文參考MobileNetV2,為木材種類識別任務(wù)定制輕量化模型。
MobileNetV2 借鑒了 ResNet 殘差塊的 shortcut 連接,shortcut 連接使殘差塊至少有恒等映射的能力。但是,若殘差塊在模型中僅表現(xiàn)出恒等映射的能力,該殘差塊在模型中就顯得多余,造成了參數(shù)量和計算量上的浪費(fèi)。因此,本文的反向殘差塊不采用shortcut 連接,杜絕反向殘差塊僅表現(xiàn)出恒等映射能力的可能。MobileNetV2 的反向殘差塊的通道擴(kuò)張系數(shù)幾乎都是6,為了減少反向殘差塊的計算量,本文降低通道擴(kuò)張系數(shù),將該值設(shè)為3。本文的反向殘差塊的結(jié)構(gòu)如圖4所示。
圖4 本文提出模型的反向殘差塊
本文以 MobileNetV2 為基礎(chǔ),將 MobileNetV2 里10 個具有shortcut 連接的反向殘差塊去除,大大減少了模型的參數(shù)量和計算量。剩余的反向殘差塊的通道擴(kuò)張系數(shù)適度降低,形成圖4 所示的反向殘差塊。此外,還調(diào)整了通道數(shù)和步長,最后一層卷積替換為線性層,不采用Dropout,最終形成了一種新的模型,其網(wǎng)絡(luò)結(jié)構(gòu)參數(shù)如表2 所示。
表2 本文模型網(wǎng)絡(luò)結(jié)構(gòu)參數(shù)
為了提高網(wǎng)絡(luò)的泛化性能,本文模型訓(xùn)練時將采用標(biāo)簽平滑[15]策略。本文模型的最后一層的輸出需要經(jīng)過Softmax 函數(shù)轉(zhuǎn)換為概率。對于模型最后一層的輸出x,由Softmax 函數(shù)計算得到類別為k的概率為
其中m是類別總數(shù)目,x是m維向量,xi是當(dāng)前樣本對應(yīng)類別i的值。
本文模型的損失函數(shù)為交叉熵?fù)p失函數(shù),即:
其中,yk是真實標(biāo)簽,為one-hot 向量形式,其值非0 即1,計算loss時如果是1,loss中該項的log(p(k))就得到保留;如果是0,該項的log(p(k))就徹底拋棄。one-hot 向量形式的真實標(biāo)簽使得模型過于關(guān)注增大預(yù)測正確標(biāo)簽的概率,而不關(guān)注減少預(yù)測錯誤標(biāo)簽的概率,最后導(dǎo)致的結(jié)果是模型在訓(xùn)練集上的擬合效果非常良好,而在測試集的表現(xiàn)不好,即過擬合。為了迫使模型往增大正確分類概率并且同時減小錯誤分類概率的方向前進(jìn),本文將對真實標(biāo)簽進(jìn)行平滑處理,平滑公式表示如下:
其中y'為真實標(biāo)簽平滑操作后的樣本標(biāo)簽,?為平滑因子,在本文實驗中?取值0.072。
為了方便讀者驗證算法,本文采用公開數(shù)據(jù)集——Barmpoutis 的木材種類數(shù)據(jù)集[16]。此數(shù)據(jù)集是使用二千四百萬像素的Nikon D3300 數(shù)碼相機(jī)對12 種木材距離15-20 cm 拍攝的,均為木材的橫截面、徑切面和弦切面圖片,共有8544 張。在本實驗中,數(shù)據(jù)集被劃分為訓(xùn)練集(5023 張)、驗證集(685 張)和測試集(2836 張)。此數(shù)據(jù)集樣本如圖5 所示。
由于樣本數(shù)量有限,而深度學(xué)習(xí)需要大量樣本來進(jìn)行訓(xùn)練才能達(dá)到較好的性能,為了提高模型在測試集上的適應(yīng)性,需要對訓(xùn)練集樣本進(jìn)行擴(kuò)充。本實驗對訓(xùn)練集樣本進(jìn)行線上擴(kuò)充,擴(kuò)充具體操作為:在0~90°內(nèi)隨機(jī)角度旋轉(zhuǎn)圖片、隨機(jī)水平翻轉(zhuǎn)圖片、隨機(jī)垂直翻轉(zhuǎn)圖片、在0.4~1.0 倍內(nèi)隨機(jī)裁剪圖片和圖片在0.875~1.126 倍內(nèi)隨機(jī)倍數(shù)亮度改變。
為驗證本文提出的模型在木材種類識別領(lǐng)域的先進(jìn)性,本文做了一些典型的深度學(xué)習(xí)模型識別木材種類的對比實驗,包括 VGG16、ResNet18、MobileNetV2 和ShuffleNetV2 等。其中 MobileNetV2 和 ShuffleNetV2 是經(jīng)典的輕量化卷積神經(jīng)網(wǎng)絡(luò)。
圖5 木材種類數(shù)據(jù)集樣本
本實驗使用的計算機(jī)配置為Intel Xeon E3-1505M v6 處理器,NVIDIA Quadro M2200M 顯卡,內(nèi)存為8G,顯存為4G。該實驗采用PyTorch 深度學(xué)習(xí)框架、Ubuntu 18.04 LTS 正式版64 位操作系統(tǒng)和Python 3.7 編程語言。深度學(xué)習(xí)模型的訓(xùn)練采用隨機(jī)梯度下降優(yōu)化器,學(xué)習(xí)率以余弦方式衰減,動量因子為0.9,批量大小設(shè)定為32,分類器采用Softmax,損失函數(shù)為交叉熵?fù)p失函數(shù),迭代次數(shù)均為2000 次。VGG16 的初始學(xué)習(xí)率為0.001,其余模型的初始學(xué)習(xí)率為0.089。
此外,本文還加入了傳統(tǒng)機(jī)器學(xué)習(xí)方法在本文數(shù)據(jù)集上的識別實驗,目前在本數(shù)據(jù)集上識別效果最好的傳統(tǒng)機(jī)器學(xué)習(xí)算法是Barmpoutis 等的多維紋理分析法[6]。在未使用標(biāo)簽平滑時,實驗結(jié)果如表3 所示。
在未使用標(biāo)簽平滑策略訓(xùn)練的情況下,相比于ResNet18、MobileNetV2 和 ShuffleNetV2,本文提出的模型損失了一點識別率,但它的參數(shù)量僅為0.89M,計算量僅為107M,比其他模型都少很多。參數(shù)量少意味著模型占用的存儲空間少,所以本文提出的模型具有占用存儲空間少的優(yōu)點。本文提出的模型的測試時間與ShuffleNetV2 相當(dāng),僅為4.36 秒,在上述所有深度學(xué)習(xí)模型中處于最優(yōu)水平。
表3 不同方法木材種類識別性能對比
在使用標(biāo)簽平滑訓(xùn)練時,平滑因子值為0.072,實驗結(jié)果見表4。
表4 不同模型木材種類識別性能對比
在使用標(biāo)簽平滑策略訓(xùn)練的情況下,本文提出的模型的識別準(zhǔn)確率高達(dá)99.22%,比未使用標(biāo)簽平滑時高出了0.5%以上,也是本文實驗中最高的識別準(zhǔn)確率。
為了在硬件資源受限的設(shè)備上實現(xiàn)通過木材切面圖像自動識別木材種類,本文改進(jìn)MobileNetV2 以得到一種新的輕量化卷積神經(jīng)網(wǎng)絡(luò)。MobileNetV2 反向殘差塊的shortcut 連接可能導(dǎo)致該反向殘差塊在模型中僅表現(xiàn)出恒等映射的能力,造成參數(shù)量和計算量上的浪費(fèi)。為了杜絕反向殘差塊表現(xiàn)出恒等映射的可能,本文在MobileNetV2 的基礎(chǔ)上去除10 個具有shortcut連接的反向殘差塊,大大降低了參數(shù)量和計算量。為了進(jìn)一步提高網(wǎng)絡(luò)的計算效率,將剩余反向殘差塊的通道擴(kuò)張系數(shù)降低。然后調(diào)整網(wǎng)絡(luò)結(jié)構(gòu)的通道數(shù)和卷積的步長,得到了新的輕量化卷積神經(jīng)網(wǎng)絡(luò)。為了提高此網(wǎng)絡(luò)的泛化性能,訓(xùn)練時采用標(biāo)簽平滑策略。本文提出的輕量化卷積神經(jīng)網(wǎng)絡(luò)識別率達(dá)到99%以上,參數(shù)量和計算量卻不到MobileNetV2 的一半,占用存儲空間少,計算效率高。在將來的工作中,考慮通過縮減網(wǎng)絡(luò)的通道數(shù)以得到更高的效率。