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