黃英來,溫 馨,任洪娥,王佳琪
東北林業大學 信息與計算機工程學院,哈爾濱150040
隨著經濟和文明的發展,人們對民族樂器表現出越來越濃厚的興趣,古箏面板市場也隨之擴大。由于當前對古箏面板品質分級方法主要依賴樂器師個人經驗,并根據QB/T1207.3—2011《箏》這一標準觀察木材紋理和掂、敲、聽等方式來進行主觀判斷,這種方法需要較長判斷時間且結果易受人為因素影響;誤判率較高,難以滿足日益興起的市場需求。
深度卷積神經網絡(Deep Convolutional Neural Network,DCNN)[1]自2012 年后相繼出現,并在計算機視覺與圖像處理[2-3]領域上取得了超越人類專家的識別結果,然而訓練好一個DCNN需要數百萬個參數且離不開大量的標記樣本,需要耗費大量訓練開銷和時間。針對很多領域[4-5]缺乏有效的標注數據這個實際問題,遷移學習給出了很好的解決方法,其通過放寬訓練數據和測試數據必須為獨立同分布的假設,將知識從源域遷移到目標域[6-11]。
目前在深度學習和遷移學習熱潮下對木材的識別方法都是針對不同樹種展開的,缺乏對同一樹種不同品質板材之間進行分類的研究。本文通過分析以往對不同樹種間研究的方法,來探索一種應用于古箏面板品質分級方法。Loke 等人[12]提出一種轉換卷積神經網絡(Convolutional Neural Network,CNN)輸入層來直接捕獲紋理屬性和關系像素屬性的新方法,在27 種木材分類中識別精度達到了93.94%,但該方法需要海量數據且受限于CNN 網絡層數,層數過深時網絡易過擬合。Ravindran 等人[13]基于預訓練VGG16 模型實現了對10種熱帶楝科木材分類識別,識別精度達到了87.4%~97.5%。王莉影等人[14]利用預訓練的Inception v3 模型實現了對針葉林和闊葉林遙感圖像的分類,識別精度超過了97%。以上兩種方法使用的是遷移學習中預訓練模型,其很好解決了深度學習中所需海量數據和計算開銷過大問題,但在源域和目標域出現一定的差距,目標域之間差距又較小的時候,預訓練模型學習的多是源域和目標域間相似特征,難以充分提取到針對目標域中深層特征,模型提升精度有限。張錫英等人[15]通過融合空間映射網絡(Spatial Transform Network,STN)和DenseNet解決了網絡對輸入數據敏感問題,從而提升了識別精度,在184種復雜背景下樹木葉片上識別精度達到了90.43%。但由于DenseNet采用的密集連接機制使其實際占用內存較大,導致運行時間較長。
以往為了讓模型提取更多特征,一種常用方式是在其后端堆疊卷積層增加深度來提取深層特征,這樣做也帶來了相應弊端。首先層數過深容易造成參數量冗余和過擬合現象發生,然后只是卷積層堆疊特征提取效率較低而且容易丟失前層特征,最后隨深度增加ReLU進入負區間導致梯度為0,從而權重無法更新,風險也隨之變大。為了高效地提取到板材圖像間深層特征,本文設計了一種深度殘差網絡模型,其創新性主要有以下兩點:其一,在預訓練模型后端新增深層特征提取部分。該部分融合了殘差連接和深度可分離卷積,在增強特征重利用同時,有利于高效提取到圖像深層特征。其二,為保證神經元學習能力,使用LeakyReLU[16]函數代替傳統的ReLU 激活函數,避免了過多神經元死亡的問題,增強了網絡魯棒性。最后將殘差連接和深度可分離卷積融合單元塊的輸出向量送入全連接層用于圖像分類。實驗表明,本文使用的深度殘差網絡模型對比其他方法不僅識別精度更高,計算開銷更小,運行時間也較短,為古箏面板市場實現準確高效品質分級提供了可能。
殘差連接是一種常見的類圖網絡結構,殘差連接解決了深度學習模型面臨的表示瓶頸和梯度消失難題。其一方面將前面的輸出張量與后面的輸出張量相加,將較早的信息重新注入下游數據流中,從而減少了有效信息在處理過程中流失;其另一方面引入一個純線性的信息攜帶軌道,與主要的層堆疊方向平行,有助于跨越任意深度層來傳播梯度。殘差連接公式如式(1)所示:

2016年,何愷明等人[17]在深層網絡中引入殘差連接并命名為殘差網絡(ResNet)。殘差網絡將式(1)原本帶權值殘差項代替為恒等映射。如果深層網絡后面那些層是恒等映射,那么模型就可以退化為一個淺層網絡。在殘差單元中,通過“短連接”的方式,直接把輸入x 傳到輸出作為初始結果,輸出結果為H(x)=F(x)+x ,當F(x)=0 時,那么H(x)=x,也就是上面所提到的恒等映射。于是ResNet相當于將學習目標由學習一個完整的輸出改為目標值H(x)和x 的差值,也就是所謂的殘差F(x):=H(x)-x,此時網絡擬合殘差會更容易。殘差單元結構圖1所示。

圖1 殘差單元
ResNet-50 是ResNet 系列性能最優網絡結構之一,其包含50層需要訓練網絡層數,通過使用類似圖1殘差單元,實現了在增加網絡深度同時提升識別精度,解決了梯度消失的問題。
深度可分離卷積是一種執行卷積更高效的方式,簡單來說,其將標準卷積分解成深度卷積和逐點卷積,深度卷積對應著每一個輸入特征圖的通道,1×1逐點卷積負責將深度卷積提取的特征進行融合。如圖2所示。

圖2 深度可分離卷積
普通卷積計算過程如下所示:

其中,W 為卷積核,y 為輸入特征圖,i、j 為輸入特征圖分辨率,k、l 為輸出特征圖分辨率,m 為通道個數。深度卷積計算過程如下所示(?表示對應元素相乘):

逐點卷積計算過程如下所示:

深度可分離卷積計算方式如下所示:

深度可分離卷積對輸入的每個通道先分別空間卷積,然后再通過逐點卷積將輸出通道混合。這相當于將空間特征學習和通道特征學習分開,這樣做所需參數要少很多,計算量也更小,因此可以得到更小更快的模型。
不同樹種間的細胞與組織的形態及排列特征差別很大,所涉及的識別特征也較多。而本文研究是在同一樹種不同品質板材之間進行分級,板材圖像間相似性較高,這對模型特征提取能力提出了更高要求,僅使用主流預訓練模型可以解決數據匱乏和網絡開銷過大問題,但難以充分提取到圖像間深層特征,導致模型分類效果不佳。為了高效提取出不同品質板材圖像中深層特征,利用預訓練模型提取特征作為殘差,并與后端新增網絡相連,預訓練模型可快速提取到源域和目標域間相似特征,同時作為殘差連接一部分輸入后端新增網絡實現特征重利用。后端新增網絡由于其權重和參數都是在板材圖像上訓練的,結合殘差連接更有利于提取到目標域中有效特征,為提升模型性能,采用深度可分離卷積代替普通卷積來減少訓練參數和降低計算復雜度,采用LeakyReLU函數代替ReLU函數提升模型魯棒性。
基于上述思想將殘差連接和深度可分離卷積融合起來,并將其命為殘差-深度可分離卷積模塊,在該模塊中包含2 個3×3 深度可分離卷積層(SeparableConv 3×3)、1個1×1卷積層(Conv 1×1)、3個批處理化層(BN)[18]、1個LeakyReLU層、1個最大池化層(ΜaxPooling2D)、1個信息疊加層(Add),如圖3所示。
在圖3殘差-深度可分離卷積模塊中,首先使用2個3×3深度可分離卷積從ResNet-50提取特征向量中進一步提取圖像深層特征,并在卷積層和深度可分離卷積層后使用了批標準化(Batch Normalization,BN)來加速模型收斂,BN層實現如下所示:


圖3 殘差-深度可分離卷積模塊圖
其中,xi為BN層輸入數據,yi為BN層輸出數據,γ 和β 都是訓練參數。
在兩個深度可分離卷積層中間使用LeakyReLU 函數來代替傳統ReLU激活函數,LeakyReLU函數數學表達式如式(10)所示:

其中,ε 是一個很小的常數,可保留一些負軸的值。這種特殊的ReLU,當神經元不激活時仍會有一個小梯度的非零值輸出,解決了ReLU函數進入負區間后神經元不學習的問題,從而避免了可能出現的神經元“死亡”現象。然后使用的最大池化(ΜaxPooling2D)在降低參數量的同時能更好保留圖像紋理信息,有利于紋理豐富的板材圖像分類。最后將“短連接”中1×1 卷積的原始向量線性下采樣為與最大池化向量同樣形狀的向量,并與最大池化的向量相加實現殘差-深度可分離卷積模塊。
深度殘差網絡模型整體結構如圖4所示。

圖4 深度殘差網絡模型結構圖
首先使用權重在ImageNet經過預訓練的ResNet-50模型來提取圖像初步特征,然后為更好利用上層網絡有效特征和提取出圖像深層特征,本文設計了一種殘差-深度可分離卷積模塊。它融合了殘差連接和深度可分離卷積的優點。殘差連接這種結構一方面可以將上層網絡ResNet-50 提取的特征信息重新注入到下游數據中,從而解決了網絡某一層太小導致的部分有效信息無法塞入進而永久性丟失的問題,增強了特征的重利用;另一方面殘差連接引入的線性信息攜帶軌道可以緩解深度模型在反向傳播中梯度消失的問題,而深度可分離卷積通過分別學習空間特征和通道特征實現了更高效的執行卷積方式,可進一步學習并提取圖像深層特征。此外,由于ReLU 函數在訓練時一旦輸入值為負,則輸出始終為0,其一階導數也始終為0,導致神經元無法學習。在本實驗中為盡可能讓梯度流經整個網絡,確保神經元一直保持學習能力,使用LeakyReLU 函數代替傳統ReLU 函數。LeakyReLU 函數輸出對負值輸入有很小的坡度,保證導數總是不為0,從而解決了ReLU函數進入負區間后神經元參數無法更新的問題,增強了模型在訓練過程中的魯棒性。
模型的參數表如表1 所示(其中RS_block 表示殘差-深度可分離卷積模塊)。

表1 網絡模型參數表
從表1 中最后3 行可以看到,雖然該深度殘差網絡模型總體參數約2 391萬,但其中ResNet-50固定參數約2 358萬,這一部分是不需要再次訓練的參數,而模型實際需要從頭開始訓練的參數只有約32 萬,不到總體參數的1.4%。
由于深度可分離卷積在降低模型參數量和計算量過程分析相似,本文以降低計算量(時間復雜度)為例進行分析。假設一個標準卷積層的輸入特征圖大小為M×H×W ,其中M 是輸入特征圖通道數,H 和W 是輸入特征圖的高和寬;輸出特征圖大小為N×H'×W',其中N 是輸出特征圖通道數,H'和W'是輸出特征圖的高和寬,卷積核大小為K×K ,卷積步長和補邊為1。
標準卷積其計算復雜度如式(11)所示:

逐深度卷積計算復雜度如式(12)所示,逐點卷積計算復雜度如式(13)所示:

深度可分離卷積計算復雜度如式(14)所示,同普通卷積比如式(15)所示:

由以上公式可以看出,對于每一卷積層,深度可分離卷積層與普通卷積層相比可明顯降低計算量,因此,當深度可分離卷積核K 的大小為3時,其參數量和計算量是標準卷積的1/9。
本次實驗在Ubuntu系統下使用Κeras深度學習框架和Tensorflow后端作為開發環境,采用Jupyter Notebook編程軟件和Python3.6 開發語言。本文實驗結果中的acc 曲線、loss 曲線均是由TensorBoard 可視化數據繪制而成,以此來分析實驗結果的實際情況。
實驗數據來自東北林業大學木材樣本館,其采用古箏業內面板用材的品質分級標準,分為高級品、中級品、普及品共3 類泡桐木材,經奧林巴斯DP72 顯微鏡影像系統觀察泡桐木材表面采集成像,共2 000 張圖像。圖像屬性為10倍放大率、4 140×3 096像素、水平和垂直分辨率為72 dpi。該數據集按6∶2∶2的比例劃分為3個集合:訓練集、驗證集、測試集。其中訓練集為1 200 張圖像,驗證集和測試集分別是400 張圖像。實驗對3 種不同品質泡桐板材圖像進行識別,如圖5所示。

圖5 樣本圖像
為了增強模型的泛化性,減少模型過擬合,采用數據增強對圖像進行處理。數據增強是從當前的訓練樣本中生成更多的訓練數據,其通過生成多種隨機變換的圖像來增加樣本,使得模型在訓練時有利于觀察到數據分布的所有內容,從而具有更好的泛化性。采用的數據增強變換方式及參數如表2所示。

圖6 數據增強生成的圖像

表2 數據增強方式及參數
值得注意的是,表2中所用的方法是隨機改變訓練樣本方式,且每輪數據增強時對每張圖像都執行這7種方式疊加組合。這種隨機改變訓練樣本組合方式的好處是可以降低模型對某些屬性的依賴,從而提高模型的泛化能力。例如,可以對圖像進行不同方式的旋轉、平移和翻轉等組合方式,使感興趣的物體出現在不同位置,從而減輕模型對物體出現位置的依賴性。使用數據增強生成圖像如圖6所示。
因為數據增強目的是為了增加樣本數量,提升模型在訓練過程中表現來防止過擬合,所以一般只對訓練集中樣本進行數據增強。驗證集和測試集中數據是用于預測的,因此未進行數據增強。通過采用表2中數據增強方式循環4 輪來將訓練集中樣本擴充4 倍,經數據增強,訓練樣本數為6 000,數據集樣本總數為6 800。
超參數是在構建深度學習模型時架構層面的參數,它不同于經反向傳播訓練學習的參數(權重),需要人為手工設定初始值,如每層網絡應該包含多少個單元或過濾器,優化器選為SGD、RΜSprop還是Adam,batch_size批尺寸設置的大小等。
為找出模型最佳性能的超參數,需根據模型在驗證集上表現來進行超參數選擇,為節省計算開銷和運行時間,可將回調函數作用于模型,具體是將ΜodelCheckpoint與EarlyStopping 這兩種Κeras 內置的回調函數相結合,一方面用EarlyStopping監控模型的驗證精度,如果其在一定輪次內不再改善就中斷訓練,另一方面用Μodel-Checkpoint在每輪過后保存當前最優權重,從而能在訓練結束后保存最佳模型。使用上面兩種回調函數后可以在模型剛開始過擬合的時候就停止訓練,從而避免用更多輪次重新訓練模型,這有利于更快尋找到最優超參數。超參數優化過程如圖7所示。

圖7 超參數優化過程
經超參數優化后實驗過程設置了25 個迭代周期,在RS_block1中每層網絡包含128個單元,RS_block2中每層網絡包含256個單元,batch_size設為16,損失函數為多元交叉熵函數,優化器采用Adam 優化,學習率設為較小的2E-5。Adam 優化器能較好地處理噪聲樣本,其利用梯度的一階矩估計和二階矩估計動態調整每個參數的學習率,隨著梯度變得稀疏,Adam比RΜSprop效果會好。
之前將數據集劃分為3個集合,除了劃分訓練集和驗證集外,多劃分了一個測試集。原因在于在訓練和開發模型時總避免不了反復調節模型配置,在調節的過程中需要使用模型在驗證集上的性能作為反饋信號,當每次根據驗證集上性能來調節模型時,都會有部分驗證數據信息泄露到模型中,如果一直基于此過程來調節模型配置,很快會導致模型在驗證數據上過擬合。最終模型只是在驗證集上表現良好,而人們真正需要的是模型在前所未見的數據上性能表現優異。
本文使用的深度殘差網絡模型在訓練集和驗證集上的準確率和損失函數變化分別如圖8和圖9所示。
從圖8和圖9中可以看出,模型在前15輪便基本收斂,收斂速度很快,同時驗證精度很高。接下來在測試集上進行最后一次實驗,使用測試精度來衡量模型最終的識別能力。

圖8 模型準確率變化圖

圖9 模型損失函數變化圖
因為采集的三種等級泡桐板材樣本數量接近,所以將識別精度acc 作為主要評價指標,如式(16)所示,其中true 為模型正確分類樣本數,all 為總樣本數目。

各種方法運行時間和測試精度對比的實驗結果如表3所示。其中SVΜ表示SVΜ分類器結合人工特征提取的機器學習方法,CNN是Loke等人[12]提出轉換CNN輸入層的方法,參數和設置保持不變。VGG16、Inception v3分別對應Ravindran 等人[13]和王莉影等人[14]使用的預訓練模型,ResNet-50[17]是未增加深層特征提取部分的預訓練模型,ST-DenseNet 代表張錫英等人[15]融合STN 和DenseNet的模型,模型層數等設置保持不變。

表3 實驗結果對比
根據表3 中實驗結果可發現,以SVΜ 為代表的機器學習方法運行耗時很短,但該方法識別精度較低且依賴人工經驗提取特征,人工提取特征往往會耗費大量人力物力。Loke等人[12]提出的轉換CNN輸入層的方法雖可直接捕獲圖片紋理屬性和關系像素屬性來提升木材識別精度,但CNN 在數據不足和網絡過深時表現并不好,容易過擬合。Ravindran 等人[13]和王莉影等人[14]用VGG16 和Inception v3 預訓練模型進一步提升了識別精度,其中Inception v3 通過卷積分解在實現多尺度特征提取同時還減少了計算量和計算時間。ResNet-50[17]作為殘差網絡模型代表,在ImageNet上經過預訓練后,由于其參數不必重新訓練,運行時間很快,可快速提取到大量特征,但由于未增加深層特征提取部分,識別精度僅達到87.7%。總的來說,預訓練模型經過在ImageNet充分訓練后避免了因數據不足引起的過擬合,在小樣本數據集上一定程度提升了識別精度,然而其在源域和目標域出現一定差距時,模型學習到參數并非都是和當前問題密切相關的,難以充分提取到圖像深層特征,導致其識別精度提升有限。張錫英等人[15]使用ST-DenseNet 先對輸入圖片進行不變性歸一化處理,提升了網絡魯棒性,然后采用DenseNet 中密集連接機制加強特征傳遞和重利用,有利于提升識別精度,但密集連接這一機制會占用大量內存,導致模型運行時間過長。
本文設計的深度殘差網絡模型在參數量和計算量上,由于采用預訓練模型和深度可分離卷積,在保證網絡深度的同時有效控制網絡參數量,降低了模型訓練對設備的要求,根據式(15)可知深度可分離卷積時間復雜度約為O(9M×H'×W'+M×N×H'×W'),相較普通卷積由式(16)可知其在時間復雜度上降低了近一個數量級,這有效減少了模型的運行時間。在模型魯棒性和泛化性上,使用數據增強來增加訓練樣本,從而降低了模型過擬合風險,同時使用LeakyReLU函數解決了ReLU函數進入負區間后神經元死亡帶來的權重不更新的問題,增強了模型魯棒性。在模型特征提取性能上,設計的殘差-深度可分離卷積模塊可以有效作為信息蒸餾管道,ResNet-50提取特征向量作為殘差,同時特征向量繼續向下輸入訓練實現進一步特征提取,有利于將無關信息過濾掉,從而放大、細化和回收與圖像類別相關的有用信息,使模型獲得更好的分類效果。
為提升古箏面板品質分級識別精度,本文構建了一種適用其品質分級的深度殘差網絡模型。將泡桐圖像數據集劃分后,為保證深度學習模型訓練需要的充足數據,一方面采用隨機旋轉、隨機平移等數據增強技術來擴充訓練樣本,另一方面基于遷移學習將ImageNet 上經過預訓練的ResNet-50模型遷移到該問題上。然后在預訓練模型ResNet-50后設計了一種融合了殘差連接和深度可分離卷積的新結構,不僅能夠充分利用模型中前層網絡有效特征,增強特征重利用,還能高效提取到圖像深層特征。為提升模型魯棒性,使用LeakyReLU 函數替代ReLU 函數。最后在泡桐圖像數據集上與其他方法對比,該模型具有識別精度高、計算開銷小、魯棒性高、運行時間較短等優點,說明將該方法應用于古箏面板泡桐用材品質分級是可行的。今后還可以完善該方法并部署到移動端,為古箏市場實現木材品質自動化分級尋找一種科學高效的方法。