?

基于深度卷積神經網絡的舌體胖瘦精細分類

2020-02-01 15:23溫坤哲韋玉科
現代計算機 2020年34期
關鍵詞:步長卷積尺寸

溫坤哲,韋玉科

(廣東工業大學計算機學院,廣州510006)

0 引言

舌診是中醫診斷中不可或缺的一部分,醫生通過對舌體的觀察,對患者的病情進行鑒別。舌體圖片一直在計算機舌診系統中扮演著重要的角色,其體現的舌體胖瘦客觀反映了身體的狀態。

許家佗等人[1]提出了通過對舌體的正面與側面進行圖像采集及對其長度、寬度、厚度測量,并利用結果參數與舌體表面積的比值關系建立不同的參數計算方法,最后通過對大量測試樣本的測試分析,建立最好的參數計算方法進行舌體胖瘦分類。衛保國等人[2]提出了通過研究曲線擬合參數與曲線形狀胖瘦的關系,結合舌體的長寬比,求得舌體的胖瘦指數,從而實現了對舌體胖瘦的自動定量分析,最后并給出結合中醫診療習慣,得出合理的舌體胖瘦的描述。張康等人[3]提出利用計算機技術對舌診圖像進行自動分割,然后對分割后的舌體進行補貼曲線擬合函數的擬合,從而分析舌體胖瘦。張康等人[4]還提出了利用計算機技術將在臉部區域提取舌體圖像,將雙峰高斯函數作為擬合函數用以擬合舌體邊緣曲線,用BP神經網絡對舌圖像進行舌體正常、舌體瘦小、舌體胖大的分類。

目前,基于舌體圖片對舌體胖瘦分類的研究正大力發展,其成果十分顯著,但是以上研究工作主要是針對舌體正常、舌體瘦小、舌體胖大三者之間的分類展開的,并未考慮舌體胖大有齒印這一特殊類別。盡管對比傳統舌體識別,本文僅增加了對舌體胖大有齒印的分類,但從中醫學臨床意義上,能為舌診過程提供更精確的依據,使醫生能更準確甄別患者的病情,提高舌診的準確率,實現精準醫療?;贒enseNet[6]和基于DenseNet修改的模型[7]的研究,本文搭建了一種能勝任舌體胖瘦精細分類任務的深度卷積神經網絡模型,其能對舌體圖片進行舌體正常、舌體胖大、舌體胖大有齒印、舌體瘦小的分類,進一步實現計算機舌診系統的完善。

1 本文模型

1.1 K Block

本節提出了新的模塊K Block。K Block分為多個cell子層,cell1層處理輸入層數據,輸入數據先后經BN(Batch Normalization[8])層,relu層,尺寸為1×1、步長為1的卷積層,和BN層,relu層,尺寸為3×3、步長為1的卷積層后得到結果,之后將輸入層數據與cell1層的結果作連接后作為輸出;cell2層將cell1層的輸出作為輸入,先后經過BN層,relu層,尺寸為1×1、步長為1的卷積層,和BN層、relu層,尺寸為3×3、步長為1的卷積層后得到結果,之后將cell1層的輸出與結果作連接后作為輸出;cell3層將cell2層的輸出作為輸入,先后經過BN層,relu層,尺寸為1×1、步長為1的卷積層,和BN層,relu層,尺寸為5×5、步長為1的卷積層后得到結果,之后將cell2層的輸出與結果作連接后作為輸出,并以cell3層的輸出作為模塊輸出。

在K Block的每層中,第1個卷積層的尺寸為1×1,步長為1,使用該類卷積層可以在提取的特征映射圖大小不變的情況下對其輸出通道進行增大,從而對輸入特征進行升維,起增大輸入特征維度的作用;在cell1層、cell2層中,第2個卷積層的尺寸為3×3,步長為1,該類卷積層在各個cell層中第1個卷積層的基礎上擴大了感受野,提取圖中較大的物體的特征和感受野內特征之間的關聯性,使提取的特征更豐富;cell3層第2個卷積層的尺寸為5×5,步長為1,該類卷積層進一步擴大了感受野,在cell1層、cell2層的提取的特征的基礎上提取圖中更大的物體的特征和感受野內特征之間的關聯性,并可進一步提取更高級的特征,對無噪的圖片能取得較高的分類精度。

本節的K Block以cell3層的輸出作為模塊輸出,由于cell3層的輸出為cell2層的輸出和cell3層的處理結果作向量連接之后的結果,該做法保留了模塊的高級圖像特征,使某些特征不會因表現不佳被誤丟棄,模型也不會保存太多冗余特征而影響訓練效率,該方法可以讓模型取得較高的分類精度。

Dense Block作為DenseNet-121結構中的重要組成部分,第2層以輸入層和第1層的輸出連接之后作為輸入,第3層以輸入層、第1層的輸出和第2層的輸出連接之后作為輸入……第i層以輸入層和第1層的輸出……第i-1層的輸出連接之后作為輸入。Dense Block采用殘差連接,加快收斂,并防止梯度彌散。而在K Block中除cell1層外每個celli層均以第i-1層的輸出數據作為輸入,改進了Dense Block中以前面所有層的輸出作為輸入數據的做法,只保留所需要的輸入數據,該做法減小了模型的輸入大小,提高了模型的訓練效率。

1.2 K-CNN

圖1 K-CNN結構

注:圖中的K代表K Block,并在圖中省略了模型的所有BN層和relu層。

由于每次經過K Block的處理之后輸出的維度過大,K-CNN在K Block之后分別添加了尺寸為1×1、步長為1的卷積層和尺寸為2×2、步長為2的最大池化層,實現特征的降維,減少模型的計算量,提高模型的收斂效率。

基于K Block搭建的K-CNN的結構如表1和圖1所示,包括:輸入層,尺寸為3×3、步長為2的卷積層,尺寸為3×3、步長為2的平均池化層和relu層,K Block,BN層,尺寸為1×1、步長為1的卷積層,尺寸為2×2、步長為2的最大池化層,K Block,BN層,尺寸為1×1、步長為1的卷積層,尺寸為2×2、步長為2的最大池化層,K Block,尺寸為7×7、步長為7的平均池化層,由128個神經元組成的全連接層和relu層,由4個神經元和relu層組成的softmax分類層。同時,該模型的損失函數為交叉熵與L2正則化相加,該函數如式(1)所示。

其中,p(x)表示標簽值,q(x)表示預測值。λ表示L2范數的系數,參考文獻[7]中L2正則化項系數的取值,在本節中L2正則化項系數取值為0.0001。

表1 K-CNN結構

2 實驗

2.1 實驗環境

本文的實驗環境如下:處理器型號為Intel i7-7700HQ,主頻2.8GHz,內存16G,計算機采用Windows 10,64位系統,TensorFlow采用1.4版本,Python采用3.6版本。訓練過程中采用梯度下降算法作為模型訓練算法。學習率為0.001,在訓練過程中會發生減少。在訓練過程中,各模型對舌體圖片進行10個批次,每個批次600輪,共6000輪的訓練,并進行1000輪測試。

2.2 實驗分析

在實驗數據方面,為了保證實驗的客觀性和準確性,本文所采用的數據圖片均從廣州中醫藥大學第一附屬醫院拍攝,均被縮放為224×224的JPG格式彩色圖片。本文選取了拍攝質量較高的128張各類舌體圖片作為實驗的樣本數據,每類圖片32張,每張圖片來自每位患者。圖2為實驗數據圖片,(a)為舌體正常圖片,(b)為舌體胖大圖片,(c)為舌體胖大有齒印圖片,(d)為舌體瘦小圖片。

圖2 實驗數據圖片。

本文首先對數據集以3:1劃分訓練集和測試集,由于訓練樣本和測試樣本不足,本文在不影響實際舌診臨床結果的前提下,分別對訓練樣本和測試樣本進行圖片旋轉等多種數據增強方式擴大樣本的數據集,樣本數量達到3456張,其中訓練集為2592張圖片,每類均648張;測試集為864張圖片,每類均216張。由于本文只在理論上進行模型的可能性分析,本文只在測試集上進行驗證,在訓練過程中通過打亂訓練集圖片順序的方式提高模型魯棒性。

為了加快預測模型的收斂速度,并減少卷積神經網絡在訓練過程中梯度消失和梯度爆炸等不良現象的發生,在各個深度卷積神經網絡模型對輸入圖像進行特征提取之前,加入BN層對輸入層數據進行預處理。

表2 各模型作四折交叉驗證的總體分類準確率

為了驗證模型K-CNN的分類性能,本章設置了兩個對比模型K-CNN(a)、K-CNN(b)。它們只改變K Block內部cell層第2個卷積層尺寸,K-CNN(a)的K Block的cell1層、cell2層、cell3層的第2個卷積層的尺寸分別為1×1、3×3、3×3,K-CNN(b)的K Block的cell1層、cell2層、cell3層的第2個卷積層的尺寸分別為3×3、3×3、3×3。

表3 各模型作四折交叉驗證的各類平均分類精確率

由于本文數據集太少,沒有設置驗證集,但為了能更充分地利用數據集來有效地驗證網絡模型的性能,本文分別構建了四組K-CNN(a)、K-CNN(b)、AlexNet[9]、VGG16[10]、K-CNN模型,將數據集以四折交叉驗證的需求分為訓練集和測試集,分別對四組模型分別進行訓練和測試,并將四組K-CNN(a)、K-CNN(b)、AlexNet、VGG16、K-CNN模型的各項測試指標取平均作為相應模型的最終指標結果,以此實現了對K-CNN(a)、K-CNN(b)、AlexNet、VGG16、K-CNN的四折交叉驗證。其測試后的總體分類準確率如表2所示,在表2中,序號①表示以第1份數據作為測試集,其他作為訓練集,序號②表示以第2份數據作為測試集,其他作為訓練集,序號③表示以第3份數據作為測試集,其他作為訓練集,序號④表示以第4份數據作為測試集,其他作為訓練集。K-CNN四折交叉驗證平均總體分類準確率(accuracy)為32.45%,較K-CNN(a)、K-CNN(b)、AlexNet和VGG16分別提高了1.53%、0.61%、7.56%和7.36%。表3為各模型作四折交叉驗證的各類平均分類精確率,表4為各模型作四折交叉驗證的各類平均召回率,表5為各模型作四折交叉驗證的各類平均F1分數。

表4 各模型作四折交叉驗證的各類平均召回率

表5 各模型作四折交叉驗證的各類平均F1分數

相較于K-CNN(a)、K-CNN(b),K-CNN的K Block采用了變化適宜的cell層的結構對舌體特征進行提取,即K-CNN的cell1層和cell2層均先后采用尺寸為1×1、步長為1的卷積層進行特征升維和尺寸為3×3、步長為1的卷積層進行特征提取,cell3層采用尺寸為5×5的卷積層進行特征提取。K-CNN(a)主要采用了兩個尺寸為1×1的卷積層組成cell1層,這導致了K-CNN(a)提取了冗余無效的特征,影響了K-CNN(a)的分類精度;K-CNN(b)的cell1層、cell2層、cell3層均采用了尺寸為1×1、尺寸3×3的卷積層,較K-CNN使用了更加固定的卷積層,這導致了前者提取的特征不如后者豐富,在圖片無噪聲干擾的情況下,分類準確率不如后者。

相較于AlexNet、VGG16等經典模型,K-CNN的K Block采用了以cell3層的輸出即cell2層的輸出和cell3層的處理結果作為模塊輸出,該做法保留了適量的模塊的高級特征,不會因某些高級特征在訓練時表現不佳被誤丟棄,也不會因保存太多特征導致特征冗余,影響模型的訓練效率。

3 結語

對舌體圖片進行舌體胖瘦分類一直是計算機舌診系統的重要研究課題,本文提出了一種新的深度卷積神經網絡模型,成功地將舌體圖片分類為舌體正常、舌體胖大、舌體胖大有齒印、舌體瘦小等四類,通過實驗,與AlexNet等經典的卷積神經網絡相比,說明本文提出的模型是能夠勝任對舌體圖片進行舌體胖瘦精細分類任務的。綜上,基于深度卷積神經網絡的舌體胖瘦精細分類具有較大的研究價值和豐富的應用前景,并存在巨大的發展空間。

猜你喜歡
步長卷積尺寸
基于全卷積神經網絡的豬背膘厚快速準確測定
CIIE Shows Positive Energy of Chinese Economy
一種基于卷積神經網絡的地磁基準圖構建方法
基于3D-Winograd的快速卷積算法設計及FPGA實現
一種并行不對稱空洞卷積模塊①
董事長發開脫聲明,無助消除步長困境
步長制藥50億元商譽肥了誰?
起底步長制藥
步長制藥
——中國制藥企業十佳品牌
佳石選賞
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合