王勇
(合肥云診信息技術(shù)有限公司 安徽省合肥市 230088)
傳統(tǒng)的方法容易受光照、拍攝角度等因素的影響;同時(shí),由于舌面苔質(zhì)分布的特點(diǎn),往往需要借助于微小的局部差異才能區(qū)分不同的類別,而常規(guī)的分類網(wǎng)絡(luò)對這種細(xì)微差異響應(yīng)不敏感。因此,本文提出了一種基于顏色聚類的三重注意力分類網(wǎng)絡(luò)識別苔色的方法,本方法有以下幾個(gè)貢獻(xiàn)點(diǎn):
(1)提出基于HSV 顏色空間的苔、質(zhì)分離方法;
(2)引入通道依賴的注意力機(jī)制;
(3)正負(fù)樣本對抗學(xué)習(xí)自動關(guān)注圖像細(xì)節(jié);
(4)端到端的訓(xùn)練實(shí)現(xiàn)苔色識別和準(zhǔn)確定位苔的分布。
王愛民等取舌面16*16 像素的小塊,判斷小塊的舌色或苔色類別;張衡翔等提出把HSV 顏色空間中極坐標(biāo)系下的H、S 分量轉(zhuǎn)化為直角坐標(biāo)系的X、Y 分量,以此作為顏色特征將舌面分割成若干個(gè)矩形小塊后使用BP 神經(jīng)網(wǎng)絡(luò)進(jìn)行分類;李曉宇等提出了一種DAG 和決策樹結(jié)合的方法對舌色苔色進(jìn)行識別;卓力等提出利用滑動窗將舌圖像劃分為若干個(gè)圖像子塊后對其進(jìn)行人工標(biāo)注并借助卷積神經(jīng)網(wǎng)絡(luò)完成分類。
針對現(xiàn)有的研究方法,本文設(shè)計(jì)出一種基于聚類方法的三重注意力網(wǎng)絡(luò)。其特點(diǎn)是每次輸入三張樣本圖片,這三張樣本圖片分別是原圖和利用聚類算法將原圖生成的舌苔子圖及舌質(zhì)子圖。本文主要研究的是苔色分類,所以標(biāo)定原圖與舌苔子圖為正樣本,而舌質(zhì)子圖為負(fù)樣本;通過正、負(fù)樣本相互促進(jìn)的學(xué)習(xí)方式不僅可以量化苔色類型還可以確定苔的分布情況。
2.1.1 HSV 顏色空間
HSV 是根據(jù)顏色的直觀特性由A.R.SMITH 在1978年創(chuàng)建的一種顏色空間。色調(diào)H:用角度度量,取值范圍為0°~360°,從紅色開始按逆時(shí)針方向計(jì)算;飽和度S:表示顏色接近光譜色的程度,其中光譜色所占的比例愈大,顏色接近光譜色的程度就愈高,飽和度也就愈高,取值范圍為0%~100%;明度V:表示顏色明亮的程度,對于光源色,明度值與發(fā)光體的光亮度有關(guān),對于物體色,此值和物體的透射比或反射比有關(guān),取值范圍為0%(黑)到100%(白)。
HSV 更加面向于用戶,是一種比較直觀的顏色模型,所以本文選擇基于HSV 顏色空間處理舌象圖片。
2.1.2 基于HSV 顏色空間的聚類
本文利用Mask-R CNN 網(wǎng)絡(luò)算法分割出舌體;然后將舌象從RGB 空間轉(zhuǎn)換到HSV 空間,利用高斯濾波對色度直方圖進(jìn)行平滑處理。在HSV 顏色空間下遍歷保存舌象圖片中所有像素點(diǎn)數(shù)值,作為無監(jiān)督聚類算法的訓(xùn)練集。本文基于K-means++聚類算法完成舌苔、舌質(zhì)的分離,如表1 所示。
經(jīng)過實(shí)驗(yàn)驗(yàn)證,K-means++的聚類超參數(shù)K 最合適取為15,即一張舌象聚類生成15 個(gè)子圖(圖1)。
表1
表2
圖1:舌象圖片及其產(chǎn)生的子圖
表3
表4
表5
繼續(xù)利用直方圖相似度合并算法將聚類后生成的子圖合并形成舌苔子圖和舌質(zhì)子圖,算法描述(表2)和實(shí)驗(yàn)結(jié)果(圖2)。
2.2.1 注意力機(jī)制
注意力機(jī)制本質(zhì)則是為了模仿人類觀察物品的方式。通常來說,人們在看一張圖片的時(shí)候,除了從整體把握一幅圖片之外,也會更加關(guān)注圖片的某個(gè)局部信息。因此,注意力機(jī)制其實(shí)包含兩個(gè)部分:
表6:準(zhǔn)確度對比(%)
圖2
圖3
圖4
(1)注意力機(jī)制需要決定整幅圖片中哪個(gè)部分需要更加關(guān)注;
(2)從關(guān)鍵的部分進(jìn)行特征提取,得到重要的信息。
2.2.2 基于通道依賴的注意力模塊SE-block
SE-block 包括Squeeze(壓縮)和Excitation(激活)兩部分,此模塊是希望顯示地建模特征通道之間的相互依賴關(guān)系;具體來說,就是通過學(xué)習(xí)的方式來自動獲取到每個(gè)特征通道的重要程度,然后依據(jù)這個(gè)重要程度去提升有用的特征并抑制當(dāng)前任務(wù)用處不大的特征。結(jié)構(gòu)圖如圖3,詳細(xì)解釋見表3。
2.3.1 骨干網(wǎng)絡(luò)模塊
圖像分類首先需要利用卷積層和池化層對圖像中的特征進(jìn)行提取,本文使用的骨干網(wǎng)絡(luò)基于ResNet-50,用448*448 大小的圖片代替通常所使用的229*229,并在其中嵌入注意力機(jī)制Squeeze-Excitation(SE) block 模塊。SE-block 的目的是改善網(wǎng)絡(luò)的表達(dá)能力,能夠讓網(wǎng)絡(luò)模型對特征進(jìn)行校準(zhǔn)的機(jī)制,使網(wǎng)絡(luò)從全局信息出發(fā)有選擇性的放大有價(jià)值的特征通道并且抑制無用的特征通道。
圖5
圖6
圖7
2.3.2 標(biāo)簽預(yù)測
網(wǎng)絡(luò)在訓(xùn)練時(shí)需要輸入兩個(gè)正例圖片、一個(gè)負(fù)例圖片共三張樣本圖片,這三張圖片來源于同一張舌象圖片。如一張淡紅舌白苔可以分解為圖4 的(a),(b),(c)。
三張樣本圖均需經(jīng)過骨干網(wǎng)絡(luò)提取特征,最后通過全局平均池化轉(zhuǎn)換為3*1*1*2048,其中1*1*2048 是特征圖的大小,3 則是樣本數(shù);因?yàn)楸疚慕韬濼riplet Net 的樣本輸入方式,即同時(shí)輸入三張樣本。下面將3*1*1*2048 轉(zhuǎn)換為預(yù)測的標(biāo)簽。
苔色在本文中共分為白苔、淡黃、黃、灰黑這4 類標(biāo)簽,圖4中的(a)、(b)均為白苔,而圖4 中的(c)則代表的是非白苔,之所以稱為非白苔,即表示不關(guān)心它屬于其他哪個(gè)類別,只要確定不是白苔即可。為實(shí)現(xiàn)端到端的訓(xùn)練,本文對原圖的類別標(biāo)簽保持不變但對苔、質(zhì)子圖的類別標(biāo)簽進(jìn)行擴(kuò)展。例如苔色類別標(biāo)簽為“白苔”、“淡黃”、“黃”、“灰黑”,擴(kuò)展后新的標(biāo)簽則變?yōu)椋骸鞍滋Α?、“淡黃”、“黃”、“灰黑”、“非白苔”、“非淡黃”、“非黃苔”、“非灰黑苔”共8 類,如果類別標(biāo)簽編號從0 開始,則圖4 中的(a)、(b)均表示白苔即標(biāo)簽為:0,圖4 中(c)表示非白苔即標(biāo)簽為:4。
經(jīng)過類別標(biāo)簽的擴(kuò)展后,上述特征3*1*1*2048 通過全連接后類別標(biāo)簽的one-hot 編碼則為:原圖[1,0,0,0]、舌苔子圖[1,0,0,0,0,0,0,0]、舌質(zhì)子圖[0,0,0,0,1,0,0,0],分別對應(yīng)著兩張白苔樣本和一張非白苔樣本。
2.3.2 標(biāo)簽預(yù)測
結(jié)合前文對網(wǎng)絡(luò)骨干結(jié)構(gòu)和標(biāo)簽擴(kuò)展的介紹,這里給出整個(gè)網(wǎng)絡(luò)結(jié)構(gòu)圖(圖5)及模塊的實(shí)現(xiàn)細(xì)節(jié)(表4)。
2.4.1 數(shù)據(jù)增強(qiáng)
訓(xùn)練階段,使用裁剪和翻轉(zhuǎn)、亮度、飽和度、旋轉(zhuǎn)操作來擴(kuò)充數(shù)據(jù)。首先縮放原始圖像,使其短邊為512 像素;然后,隨機(jī)裁剪成448*448 大小的訓(xùn)練樣本。
2.4.2 損失函數(shù)
本文的損失函數(shù)主要包括三部分,兩個(gè)分類損失分別為Lcls1、Lcls2以及Lreg回歸損失,總損失函數(shù)則為:
(1)分類損失:本文中原圖使用原始類別標(biāo)簽對應(yīng)分類損失Lcls1,而舌苔和舌質(zhì)子圖使用擴(kuò)展類別標(biāo)簽對應(yīng)損失Lcls2。分類損失Lcls1、Lcls2統(tǒng)稱為Lcls使用的交叉熵?fù)p失函數(shù)公式如下:
其中,m 表示樣本數(shù),n 表示的是分類的類別數(shù),p(xij)表示的是真實(shí)標(biāo)簽,q(xij)是預(yù)測標(biāo)簽;交叉熵能夠衡量同一個(gè)隨機(jī)變量中的兩個(gè)不同概率分布的差異程度,可以表示真實(shí)標(biāo)簽與預(yù)測標(biāo)簽之間的差異。
(2)回歸損失:本文將舌象圖片進(jìn)行苔、質(zhì)分離后產(chǎn)生一張舌苔子圖和一張舌質(zhì)子圖,苔色分類時(shí)原圖與舌苔子圖的標(biāo)簽是一致的,同時(shí)舌苔子圖預(yù)測出正確類別的概率應(yīng)該高于原圖,這才符合本文一開始將舌象圖片進(jìn)行苔質(zhì)分離而讓網(wǎng)絡(luò)更注重細(xì)節(jié)的初衷,本文設(shè)計(jì)的回歸損失函數(shù)公式如下:
其中,m表示樣本數(shù),p子圖(xi)表示舌苔子圖預(yù)測的概率,p原圖(xi)表示原圖預(yù)測的概率,margin 在實(shí)驗(yàn)中一般取0.05,起到軟間隔的作用。
2.4.3 訓(xùn)練介紹
實(shí)驗(yàn)的操作系統(tǒng)為Ubuntu 18.04,GPU 顯卡型號為 Nvidia GeForce GTX 2080 Ti(11GB),使用PyTorch 1.4.0 深度學(xué)習(xí)框架,Python 版本為3.6。訓(xùn)練時(shí)batchsize 為32,訓(xùn)練200 個(gè)epoch,使用ImageNet 預(yù)訓(xùn)練模型初始化網(wǎng)絡(luò)權(quán)重參數(shù) ,同時(shí)采用SGD 隨機(jī)梯度下降算法,momentum 動量為0.9,權(quán)重衰減參數(shù)設(shè)為1e-5;本文學(xué)習(xí)率采用Warm-up 策略,初始學(xué)習(xí)率設(shè)為0.01,每訓(xùn)練20個(gè)epoch 后下調(diào)學(xué)習(xí)率,下調(diào)系數(shù)因子為0.9。
本文實(shí)驗(yàn)中使用舌象采集儀共采集5000 張舌象圖片,并經(jīng)過安徽中醫(yī)藥大學(xué)的教授對舌象圖片進(jìn)行篩選和評審。最終得到有效舌象數(shù)據(jù)共4860 張,其中白苔1425 張、淡黃苔1563 張、黃苔970 張、灰黑苔830 張。最終訓(xùn)練集4088 張,驗(yàn)證集300 張,測試集400 張。
分類問題上,通常用分類準(zhǔn)確度來評估網(wǎng)絡(luò)模型的好壞,根據(jù)分類器在測試數(shù)據(jù)集上的預(yù)測或正確或不正確可以分為四種情況,也稱為混淆矩陣,如表5。
模型的準(zhǔn)確度計(jì)算方法如下:
3.3.1 檢測精度
為了評估本文方法的有效性,將本文提出的自監(jiān)督分類網(wǎng)絡(luò)與目前較流行的傳統(tǒng)分類網(wǎng)絡(luò)Vgg16、InceptionV3、InceptionV4、ResNet50、ResNet101、EfficientNet、DCL 等進(jìn)行比較。各網(wǎng)絡(luò)訓(xùn)練得到的Accuracy(表6)和訓(xùn)練損失曲線(圖6)。
3.3.2 結(jié)果比較
我們展出普通分類網(wǎng)絡(luò)與本文提出的三重注意力網(wǎng)絡(luò)在舌苔分布定位上的差異(圖7)。
本文中,我們提出一種基于顏色聚類的三重注意力分類網(wǎng)絡(luò)識別苔色的方法,這種方法不僅可以量化苔色類型,同時(shí)可以在不需要額外人工標(biāo)注的前提下準(zhǔn)確定位舌苔的分布位置,更符合中醫(yī)舌診的要求。通過實(shí)驗(yàn)發(fā)現(xiàn)我們的方法更容易收斂且具有更高的準(zhǔn)確率,同時(shí)我們的方法也適用于舌色識別。