張一鵬,羅啟甜,吳夢麟
(南京工業(yè)大學 計算機科學與技術學院,江蘇 南京 211816)
中藥飲片是中藥材按中醫(yī)藥理論,經(jīng)過加工炮制后,可直接用于中醫(yī)臨床的中藥。中藥飲片種類繁多,且由于炮制方式和產(chǎn)地不同造成的外形差異較大,都給中藥飲片鑒別帶來了不小的挑戰(zhàn)。傳統(tǒng)的人工鑒別方法通過觀察形、色、氣、味等,依靠經(jīng)驗知識進行鑒別[1],這樣的方法需要有較強的專業(yè)知識,鑒別結(jié)果受主觀性影響較大,且檢測效率較低。
隨著計算機技術的發(fā)展,基于計算機視覺的中藥自動識別技術的優(yōu)勢愈發(fā)明顯。相較于傳統(tǒng)的人工鑒定手段,自動識別技術能夠更好地提取中藥飲片圖像的特征,加強鑒別的客觀性;且自動識別技術的效率更高,可以實現(xiàn)高效的大批次檢測。
在中藥飲片鑒別的自動識別領域,早期的圖像處理方法通過從中藥飲片的形狀、紋理、顏色中提取出人工設計的底層圖像特征,然后結(jié)合淺層機器學習分類器對中藥飲片進行分類。如陶歐[2]提出采用灰度共生矩陣研究中藥材的紋理特征;胡繼禮[3]利用顏色矩、灰度共生矩陣以及Hu不變矩提取中藥的視覺特征,最后利用SVM分類器進行分類。這類方法有一定效果但提取的淺層不具有高層語義的特征信息,很容易受檢測環(huán)境影響,實際應用時可靠性較差[4]。
近年來伴隨著深度學習的興起,圖像自動識別技術有了巨大突破,同時也推動了中醫(yī)藥識別技術的發(fā)展[5]。李玲[6]基于電子鼻的三七及其偽品,采用了堆疊棧式自編碼網(wǎng)絡和深度信念網(wǎng)絡兩種網(wǎng)絡結(jié)構(gòu),探究了深度學習方法在電子鼻數(shù)據(jù)上的適用性;Tan等人[7]利用深度卷積神經(jīng)網(wǎng)絡提出了一種高效、準確的薔薇科山楂屬植物鑒別方法。深度學習卷積神經(jīng)網(wǎng)絡依靠強大的特征提取優(yōu)勢已經(jīng)應用于中藥鑒別領域。但這些方法對圖像的細節(jié)特征關注度不強,且模型的泛化性不強,與實際應用仍有差距。
為解決普通模型泛化性不強、不利于實際應用的問題,該文提出了一種基于元輔助任務學習的方法,該方法在傳統(tǒng)的單任務分類模型上加入了輔助任務,通過共享不同任務之間的參數(shù)達到提升模型泛化性的目的;此外該方法還利用元學習的思想,在輔助任務學習的基礎上新增了一個標簽生成網(wǎng)絡,從而達到自動生成輔助任務標簽的目的;最后該方法使用Swin-Transformer作為模型的骨干網(wǎng)絡,目的是利用Transformer的全局感知能力更好地捕獲圖片的空間信息,進一步提升模型的精確度與泛化性。
主要貢獻有:(1)將輔助任務學習的方法引入中藥飲片識別當中,達到了提升藥材分類精度的目的;(2)將元學習思想引入中藥飲片識別當中,達到了可以自生成輔助任務標簽的目的,從而減少了人工定義輔助任務時需要做的大量標注工作;(3)將Transformer結(jié)構(gòu)引入中藥飲片識別當中,利用Transformer的全局感知能力更好地捕獲圖片的空間信息,達到了進一步提升了藥材分類精度的目的。
多任務學習的目的是通過同時訓練若干個相關的任務進而實現(xiàn)不同任務之間的共享特征表示,提升各個任務的表現(xiàn)。一般來說有多個目標函數(shù)的損失同時進行學習的都屬于多任務學習的范疇。由于從相關任務中提取到的先驗知識是相互依賴的,所以由這些先驗知識共同編碼構(gòu)成的共享特征表示可以提升每個獨立任務的表現(xiàn)。Yi等人[8]提出了一種聯(lián)合訓練人臉確認損失和人臉分類損失的多任務人臉識別網(wǎng)絡;Zhang等人[9]提出了將SoftmaxLoss和TripletLoss結(jié)合在一種網(wǎng)絡中進行多任務訓練的方法,并將此方法用于細粒度車輛分類中,取得了不錯的效果。相較于普通的單任務學習,多任務學習框架在提升模型的泛化性、防止訓練過程陷入局部最優(yōu)、提升模型學習速率、防止過擬合等方面都有比較好的效果。
中藥飲片由于產(chǎn)地與鍛造方式的不同,普通單任務模型會有泛化性不足、跨批次精度下降的問題,而多任務學習框架為解決該問題提供了可行的思路。
與多任務學習為提升各個任務的表現(xiàn)不同,輔助任務學習將若干個相關任務分成了主任務與輔助任務兩大類,其中輔助任務的作用是為主任務提供更多的先驗知識進而提升主任務的表現(xiàn)。Shubham等人[10]為了提升會話語音識別的性能,將中低級的音素識別作為輔助任務;He等人[11]為了解決圖片中是否包含文字區(qū)域的問題,其在傳統(tǒng)CNN基礎上加入了對圖片進行字符分類和用BinaryMask表示字符位置兩個輔助任務。
該文利用輔助任務學習的方法,將中藥飲片分類作為主任務,中藥飲片的形狀和顏色分類作為兩個輔助任務,通過硬參數(shù)共享[12]的方式對三個任務進行聯(lián)合訓練。經(jīng)過實驗證明,在同一骨干網(wǎng)絡下,加入了輔助任務學習的模型要明顯優(yōu)于普通的單任務模型。
在后續(xù)的工作中,該文利用元學習框架設計了標簽生成網(wǎng)絡,實現(xiàn)了自動為模型選擇最適宜標簽的功能,在提升模型泛化性的同時還能夠減少人工標注的工作量。
元學習又稱作學會學習,與傳統(tǒng)深度學習中對提取特征進行學習不同的是,元學習的目的是對算法本身進行歸納學習。在早期,元學習的探索主要集中在如何對神經(jīng)網(wǎng)絡模型進行自動學習更新[13-15];而近幾年的方法主要聚焦于基于LSTM[16]或者合成梯度[17-18]的深度神經(jīng)網(wǎng)絡模型。此外,元學習也可以被用來尋找最優(yōu)的超參數(shù),并可以在小樣本學習中學習出一個更好的初始化參數(shù)。
該文提出的標簽生成網(wǎng)絡就是基于元學習方法,元學習階段的目的在于生成有用的輔助任務標簽,而這些輔助任務標簽會被用于多任務學習階段。
Transformer最早應用于自然語言處理領域并且取得了巨大成功,研究者嘗試將Transformer引入計算機視覺任務中。Dosovitskiy等[19]提出了一個基于Transformer的圖像處理模型,將圖像劃分為多個圖像塊并編碼形成序列向量,解決了Transformer應用在圖像領域的輸入問題,并在圖像分類領域的基準數(shù)據(jù)集上取得了優(yōu)于卷積神經(jīng)網(wǎng)絡的效果。Liu等[20]提出的Swin-Transformer利用空間維度的移位窗口來對全局和邊界的特征進行建模,增強了模型對局部和全局特征的提取能力。該文將Transformer結(jié)構(gòu)引入中藥飲片識別的問題當中,將Swin-Transformer作為模型的主干網(wǎng)絡進行特征提取,利用Swin-Transformer特有的全局感知能力更好地捕獲圖片的空間信息。
通過引入Swin-Transformer結(jié)構(gòu)可以進一步提升模型的泛化能力,進而提升藥材的分類精度。
該文提出的用于中藥飲片分類的基于元輔助任務學習的模型結(jié)構(gòu)如圖1所示。該模型主要由多任務學習階段和元學習標簽生成階段兩部分構(gòu)成,兩階段的網(wǎng)絡均采用了Swin-Transformer作為骨干網(wǎng)絡。
圖1 基于元輔助任務學習中藥識別方法的模型結(jié)構(gòu)
多任務學習階段與元學習標簽生成階段同時訓練構(gòu)成一個epoch,每個epoch有兩個步驟:第一步是多任務學習階段使用藥品的主任務標簽(即真實標簽)與來自標簽生成階段的輔助任務標簽進行訓練;第二步是根據(jù)第一步得出結(jié)果更新元學習標簽生成階段的參數(shù)。
在多任務學習階段,作為主任務的中藥飲片分類任務與其他輔助任務所使用的預測損失函數(shù)都是focal loss[21]。中藥飲片由于其產(chǎn)地和珍稀程度導致樣本的分本不均衡,呈現(xiàn)出長尾分布的狀態(tài),而focal loss損失函數(shù)比較適用于數(shù)據(jù)樣本不均衡的場景,相較于其他損失函數(shù)更適用于中藥飲片的數(shù)據(jù)集。focal loss損失函數(shù)定義如下:
(1)
將定義好的focal loss應用到作為主任務的中藥飲片分類任務與所有的輔助任務上,定義多任務學習階段為函數(shù)fθ1(x),其中θ1為中藥飲片分類多任務學習階段需要進行學習更新的參數(shù),x代表輸入,多任務學習階段的損失函數(shù)定義如下:
在元學習中藥飲片識別輔助標簽生成階段,標簽生成網(wǎng)絡的參數(shù)θ2由多任務學習階段的結(jié)果進行更新;θ2更新之后又可以為多任務網(wǎng)絡選擇最適合的中藥飲片識別輔助標簽,進而使得多任務學習網(wǎng)絡有更好的表現(xiàn)。在這個過程中,利用多任務學習階段的結(jié)果進行標簽生成網(wǎng)絡參數(shù)的更新,可以被認為是元學習的一種形式。
將元學習標簽生成階段的損失函數(shù)定義如下:
(3)
(4)
式中,α代表多任務學習階段的學習率。
此外,在參數(shù)θ2更新過程中加入了熵損失函數(shù)H(yaux1+yaux2)作為一個正則項[24]。加入該正則項可以避免標簽生成網(wǎng)絡每次都產(chǎn)生相同標簽的現(xiàn)象,進而使得標簽生成網(wǎng)絡能夠生成更復雜且有用的中藥飲片識別輔助標簽。最終將式(3)和熵損失函數(shù)應用到元學習標簽生成階段,參數(shù)θ2的更新過程如下:
(5)
實驗部分使用Python語言完成了訓練數(shù)據(jù)的預處理、PyTorch框架的使用和實驗結(jié)果數(shù)據(jù)的整理,同時使用PyTorch框架完成了訓練數(shù)據(jù)的加載、模型的結(jié)構(gòu)實現(xiàn)和模型的訓練,具體的硬件環(huán)境配置如下:CPU使用Intel(R)Xeon(R)E5-2630 v3,GPU使用NVIDIA GeForce GTX 1080 Ti,內(nèi)存大小為32 GB,操作系統(tǒng)為Windows 10。
目前中藥飲片識別領域還沒有公開的大型數(shù)據(jù)集可用,并且網(wǎng)上可搜尋的圖片往往背景復雜,帶來的噪聲對結(jié)果影響較大。本實驗所使用的數(shù)據(jù)集是由專業(yè)的高清設備拍攝,如圖2所示,拍攝的背景進行了統(tǒng)一,進而保證了噪聲影響的最小化。實驗所用藥材采樣于中藥飲片交易中心,保證了藥材的質(zhì)量與種類,并且為了測試模型的泛化性,共計采樣了兩批次、數(shù)十種藥材進行實驗。將采樣后的圖片進行了歸類,每張圖都人工配以標簽(種類、顏色、形狀),該過程的目的是為了將人工定義輔助標簽與自動生成標簽進行實驗比較。最終用于本次實驗的數(shù)據(jù)集共有兩個批次、三十六種藥材、六千五百余張圖片。
圖2 部分數(shù)據(jù)集的展示
實驗將第一批次的數(shù)據(jù)集,按照8∶2的比例劃分成訓練集與驗證集,將第二批次的數(shù)據(jù)集均用作測試集,最終的精度測試結(jié)果均來自測試集上,這樣的劃分可以保證最大程度上對模型的泛化性進行評估。為保證數(shù)據(jù)的統(tǒng)一,所有的圖像統(tǒng)一到224×224大小的尺寸,然后采用隨機水平翻轉(zhuǎn)并進行歸一化處理。實驗中采用自適應矩估計(Adaptive moment estimation,Adam)優(yōu)化算法,訓練迭代總次數(shù)為100,初始學習率設置為0.000 1,每迭代25個epoch將學習率下降為原來的1/2。
為了定量評估文中方法且適應中藥飲片數(shù)據(jù)集存在樣本分布不均衡的情況,實驗采用了針對每一類別的精確率(Pre)、召回率(Recall)、F-score作為具體藥材的評價指標,計算公式分別為:
(6)
(7)
(8)
其中,TP代表真陽性,指一類藥材正確分類的樣本數(shù);FP代表假陽性,指錯將其他類藥材錯分為一類藥材的樣本數(shù);FN代表假陰性,指錯將一類藥材分成其他類的樣本數(shù)。
最終的實驗結(jié)果取同一批次中各類藥材的精確率與召回率的平均值作為評價標準,即:
(9)
(10)
(11)
3.3.1 卷積神經(jīng)網(wǎng)絡的對比
為了同Swin-Transformer進行對比,實驗首先對幾種卷積神經(jīng)網(wǎng)絡進行了測試,使用單任務學習網(wǎng)絡,實驗結(jié)果如表1所示。
表1 卷積神經(jīng)網(wǎng)絡的對比
可以看出,在卷積神經(jīng)網(wǎng)絡的對比中,ResNet-34網(wǎng)絡在精確率與召回率方面的表現(xiàn)都更好一些,因此選取了ResNet34作為與Swin-Transformer進行對比的卷積神經(jīng)網(wǎng)絡。
3.3.2 卷積神經(jīng)網(wǎng)絡與Swin-Transformer的對比
實驗部分主要是將Swin-Transformer(SwinT)與ResNet-34進行對比,使用人工標注屬性數(shù)據(jù)集,實驗結(jié)果如表2所示,其中M-SwinT、M-ResNet34代表對應的網(wǎng)絡應用于多任務學習框架上,PAvg、RAvg、F-score的計算方式與公式(6)~公式(8)相同。
表2 卷積神經(jīng)網(wǎng)絡與Swin-Transformer的對比
從表2可以看出,Swin-Transformer在單任務與多任務框架下相較于ResNet-34,其實驗的指標都更好,也就意味著以Swin-Transformer為骨干網(wǎng)絡的模型有更好的表現(xiàn)。
同時在這一小節(jié)的實驗中,可以看出在同一骨干網(wǎng)絡下單任務與多任務框架的表現(xiàn)差異,從表中可以看出,多任務框架的模型相較于單任務模型有著更好的表現(xiàn)。
3.3.3 消融實驗
本實驗部分為消融實驗,目的是在主干網(wǎng)絡的基礎之上進行逐步擴展,同時進行實驗證明每一步的擴展是否能在先前基礎上使得模型性能有所提升,最終確定最優(yōu)模型框架。實驗結(jié)果如表3所示。
表3 消融實驗
(1)該部分實驗采用Swin-Transformer(SwinT)作為骨干網(wǎng)絡,得出的PAvg、RAvg、F-score結(jié)果作為該部分基準。
(2)在數(shù)據(jù)處理方面增加了數(shù)據(jù)增強處理步驟(Data Augmentation),該部分利用翻轉(zhuǎn)、旋轉(zhuǎn)、平移、亮度增強的方法對原始數(shù)據(jù)進行擴充增強,實驗結(jié)果表明數(shù)據(jù)增強能夠提升模型的性能。
(3)在先前基礎上加入了多任務學習框架(Multi Task),與3.3.2中已經(jīng)應用了多任務學習框架的M-SwinT結(jié)果相比,該部分的數(shù)據(jù)已做了數(shù)據(jù)增強,實驗結(jié)果表明多任務學習能夠提升模型的性能。
(4)加入了元學習標簽生成網(wǎng)絡(Meta-Generation),該部分的實驗數(shù)據(jù)不再需要人工額外標注屬性,實驗結(jié)果表明元學習標簽生成網(wǎng)絡在節(jié)省人工標注成本的同時能夠提升模型的性能。
從消融實驗的結(jié)果可以看出,每一部分的融入都使得實驗結(jié)果有所提升,最終得到的包含SwinT+Data Augmentation+Multi Task+Meta Generation的模型框架達到了實驗的最佳性能。
為解決普通深度學習模型泛化性不強、不利于實際應用的問題,提出了一種基于元輔助任務學習的方法。該方法在傳統(tǒng)的單任務分類模型上加入了多任務學習網(wǎng)絡、元學習標簽生成網(wǎng)絡,同時使用了相較于卷積神經(jīng)網(wǎng)絡有更好表現(xiàn)的Swin-Transformer作為模型的骨干網(wǎng)絡。實驗結(jié)果表明,該方法能夠有效地提升深度學習模型在中藥飲片識別中的精確度與泛化性,有利于將深度學習模型應用到實際的中藥飲片識別當中,同時也為中藥自動識別提供了更寬闊的思路。