劉加峰 高子嘯 段元民 李海云 石宏理
中藥飲片是中藥材經(jīng)過切片、曬制、烘焙等過程加工而成,其中絕大多數(shù)來自草本植物,它們在顏色、形狀等天然屬性上具有相似的特點,再經(jīng)過加工后更使得它們原本的顏色、形狀等特異性差異減弱,以至于對它們進行識別和分類時易出錯,而這又直接關(guān)系到中藥治療疾病的效果,因此中藥飲片的識別與分類是一項繁重又極其重要的工作[1]。
目前,中藥材鑒別的傳統(tǒng)方法多是基于臨床藥劑師的經(jīng)驗進行人工鑒別,有著諸多缺點,比如速度慢、準確率不高等,無法實現(xiàn)自動化操作。研究組將近些年來新興的人工智能神經(jīng)網(wǎng)絡(luò)與深度學習應(yīng)用于中藥材鑒別,在有多種飲片復(fù)雜場景下,能快速準確地智能識別,提高了該技術(shù)在中藥領(lǐng)域的實用性[2-3]。
如圖1所示,目標識別系統(tǒng)從輸入圖像開始,使用窗格掃描,進行特征選擇和提取,之后經(jīng)過分類器進行分類,得出最后的分類結(jié)果輸出。在獲得訓練樣本之前,所有圖片都被歸一化處理為固定分辨率的圖片輸入至網(wǎng)絡(luò)中,然后對其進行特征選擇和提取。在訓練時,將真實框與先驗框配對,與之匹配的邊界值將會預(yù)測對應(yīng)的真實框,從而達到預(yù)測目標的任務(wù)[4-5]。
圖1 目標識別系統(tǒng)圖Figure 1 Target recognition system diagram
其中訓練樣本包括正樣本和負樣本,所謂的正樣本指包含感興趣的目標類別的樣本(比如枸杞,甘草等),負樣本指其他不包含目標的任意圖片(如背景等)。在訓練樣本的過程中,通過平衡正負樣本來達到選擇和提取特征的目的,以此來提前訓練好分類器,正負樣本的比例設(shè)定為1∶3左右。
本文采用深度學習-卷積神經(jīng)網(wǎng)絡(luò)中的SSD(single-shot multibox detector)模型,設(shè)計了一個針對中藥飲片的定位分類識別軟件,能夠識別輸入圖片中的多類藥材,并框選出其在圖片中的位置,可廣泛應(yīng)用于中藥飲片的分揀。
識別過程分為兩步。(1)圖像中物體檢測定位,即用手動標注出所有感興趣的目標并定位其位置,從而得到真實框。(2)目標識別分類,對于手動框出的目標可自動判斷出它屬于何種中藥材。
SSD模型是一種one-stage目標檢測模型,含有多層卷積層,每層卷積層都會分別輸出一次特征映射(feature map),這些特征映射具有不同的大小,會分別獨自經(jīng)過不同長寬比的檢驗框的檢驗,獲得一定的位置數(shù)據(jù)與置信度,最后進行多層次融合,通過非極大值抑制(non maximum suppression,NMS)得出最后的目標檢測結(jié)果。這樣做的好處是足夠快捷而且適用于不同大小的感興趣目標的定位。
SSD的網(wǎng)絡(luò)結(jié)構(gòu),使用VGG16作為前置網(wǎng)絡(luò),將原本的VGG預(yù)訓練網(wǎng)絡(luò)的全連接層去掉,加上后續(xù)的卷積網(wǎng)絡(luò),在每一層卷積后都輸出一遍特征映射,在最后,將每一層卷積輸出的帶有預(yù)測定位和置信度的特征映射融合,進行檢測定位[6-7]。
設(shè)定需要單像素圖片先驗框數(shù)量為n(n一般取值3),如果圖片規(guī)格是m×p,則生成的先驗框數(shù)量是n×m×p個,SSD網(wǎng)絡(luò)通過對每個先驗框進行定位回歸,并在之后通過NMS得到最終的檢測結(jié)果。
SSD模型的先驗框與真實框的匹配遵循以下原則。(1)圖2中的真實框一定比先驗框少很多,所以應(yīng)先找與真實框交互比(intersection over union,IoU)最大的先驗框,先把每個真實框都匹配上一個先驗框。(2)匹配以后,對于剩下的許多未匹配的先驗框,找出其中與附近真實框IoU值大于一定閾值的先驗框,把這些先驗框也與對應(yīng)的真實框進行匹配,這樣就有多個先驗框與同一個真實框進行了配對。如果某個先驗框與多個真實框匹配,則先驗框只會和IoU最大的真實框進行配對。
圖2 SSD匹配策略示意圖Figure 2 SSD matching strategy diagram
第2個原則優(yōu)先于第1個原則,因為如果出現(xiàn)真實框與之對應(yīng)的先驗框最大IoU也小于閾值,但是這個小于閾值的先驗框還與另外一個真實框相匹配了,則第1個原則不生效,這是因為一定要保證每個真實框有一個與之匹配的先驗框。
考慮到藥材存在形式的多樣性,在樣本量很小的數(shù)據(jù)集中,很難將草本形式與烘干焙烤之后的同種藥材歸為一類,在這里本實驗只針對中藥飲片形式的藥材進行分類,構(gòu)建數(shù)據(jù)集,尋找材料進行拍攝,一張圖片包含3種中藥材(枸杞、甘草、陳皮),這之后同樣使用標注工具手動進行標注。目前沒有大規(guī)模公開的中藥飲片的數(shù)據(jù)庫或部分機構(gòu)的數(shù)據(jù)庫內(nèi)容量太少,無法找到足以支撐深度學習網(wǎng)絡(luò)要求的數(shù)據(jù)量的已有數(shù)據(jù)集,在本實驗中數(shù)據(jù)集全為自己構(gòu)建,共采集了超過1 000張相關(guān)藥材的圖片,隨后把圖片按比例6∶2∶2分割為訓練集、驗證集、測試集。
使用labeling標注圖像,見圖3。
圖3 標注過程Figure 3 Labeling process
要求真實框的標注一定要大小合適,邊緣緊湊,要一個個的分類并框出所有的目標物體,打上標簽,而且標注框不能靠近圖片的邊沿。
初步考慮為VGG-16卷積識別網(wǎng)絡(luò),采用了多層卷積層與池化層的組合,進行了隨機光影變換的數(shù)據(jù)增強步驟,添加了dropout層以及數(shù)千次的循環(huán),在訓練集上進行訓練,在測試集上進行測試,平均識別率可以高于80%。
本文使用的2個數(shù)據(jù)集,訓練集測試集驗證集都不是足夠多的情況下,應(yīng)采用預(yù)訓練網(wǎng)絡(luò)來構(gòu)造模型。因此,對于本次實踐這種樣本數(shù)量不充分的模型來說,采用VGG16預(yù)訓練網(wǎng)絡(luò)模型進行訓練[8-11]。
選擇在Google云盤上的Colab上進行訓練。硬件加速器選擇GPU,然后掛載Google Drive云端硬盤??截恎ithub代碼到所需的文件夾下,修改相關(guān)參數(shù)并上傳VGG16預(yù)訓練權(quán)重文件,開始訓練。開始loss為28左右,訓練直至loss接近1,停止。
上述過程結(jié)束后,將數(shù)據(jù)集讀入系統(tǒng)模型得到識別框,使用驗證集進行驗證,獲得各藥材的識別準確度,見圖4。
圖4 中藥飲片識別驗證結(jié)果Figure 4 Verification result of identification of Chinese herb slices
使用測試集測試,得到陳皮、甘草、枸杞的識別率分別為75.87%、90.79%、89.74%,總的平均識別率為86.80%。在前述運行環(huán)境下一次處理10張圖片總共耗時小于0.05 s。測試時只需要讀入圖片就能出結(jié)果,無需考慮分辨率。
本文采用SSD目標識別算法,通過對模型的訓練、測試、驗證工作,對于采集的包含多種類的中藥飲片圖像完成了檢測分類,達到了很高的識別準確率,而且識別速度快,操作方便。
但是在研究中也發(fā)現(xiàn)了一些問題,為以后能夠?qū)嶋H應(yīng)用于生產(chǎn)作業(yè)中,需要有對于一些實際應(yīng)用的考量。(1)若想要提高識別率,則提供的訓練集一定要大量、精確;(2)對于不規(guī)則物體的判斷,例如陳皮,一面白色一面黃色,訓練集中這兩面都要有而且數(shù)量要大,訓練集需要包含要識別物體的所有形態(tài)的信息;(3)數(shù)據(jù)擴增技術(shù)很重要,對于均值平均精度(mean average precision,mAP)的提升很大;(4)使用不同長寬比的先驗框可以得到更好的識別率;(5)采用多尺度的特征圖用于檢測也是至關(guān)重要的,即,提高卷積層數(shù)。