張 楊,辛國江,王 鑫,朱 磊
(湖南中醫藥大學 信息與工程學院,湖南 長沙 410208)
舌診對于中醫的望診來說是一項必不可少的步驟,通過觀察舌象診斷人體病理變化[1]。傳統舌象分析是依靠中醫醫生的判斷分析,但是由于光照、環境、濕度等自然環境因素影響,極易造成診斷人員的視覺疲勞[2],從而導致誤診延誤患者病情。正確客觀的舌診可以幫助醫生更好地分析病人的身體狀況,從而更快確定患者病情。同時智能舌診分析是舌診客觀化的重要部分,舌診智能提取是舌診智能化的關鍵。
國內眾多學者使用傳統機器學習的方式,如張新峰等[3]使用粒子群優化算法對SVM模型參數進行優化,對舌象測試樣本具有很好的分類效果。顏建軍等[4]使用隨機森林模型對建立的齒痕舌特征向量進行分類,進而完成齒痕舌的分類。王奕然等[5]使用Adaboost算法對舌象進行初次分類,然后結合級聯框架的方式完成舌色的分類任務。以上傳統機器學習方法雖然能夠較好地分類提取舌象,但還是存在一定不足:算法的穩定性難以達到日常中醫望診的需求,需要人為輔助;算法的時間復雜度較高;檢測過程受自然環境影響較大,抗干擾能力較弱。
近年來,隨著卷積神經網絡的流行,深度學習在圖像領域得到快速發展[6]。國內外學者將深度學習方法應用到舌象檢測與分割領域。目前主流的目標檢測算法主要分為雙階段檢測算法和端到端檢測算法。雙階段檢測算法主要包含:R-CNN(Region-CNN)[7],SPP-Net[8],Fast R-CNN等。基于端到端的檢測算法包含YOLO系列算法 和SSD算法。Tang等[9]在一階段引入級聯卷積神經網絡檢測舌象區域,在二階段將舌象區域發送到分別以ResNet-50和VGG-16為主干的細粒度分類網絡完成舌象識別。劉夢等[10]通過遷移學習對500例舌象進行分類研究,圖像識別結果顯示,Faster R-CNN算法不受舌象中病例位置的影響,對舌象分類效果具有很強的適應性。劉佳麗等[11]首先在YOLOv3網絡上添加密集連接,使網絡融合底層特征信息,然后結合通道減枝,縮減模型大小,最后完成裂紋舌的分類。雙階段檢測算法精度較高,但對候選框修正分類,需要消耗大量的時間。與其相比,端到端的網絡無需產生大量的候選框,可以預測出邊界框,無需占用大量的內存空間,同時能保證一定的精度,適合移動端的部署。
針對內存空間和精度問題,該文采用YOLOv5[12-14]檢測算法。該算法具有更快的檢測速度,更小的參數量,更適合移動端的部署。
YOLOv5的網絡架構包括:輸入端、主干網絡、頸部模塊和輸出端。
主干網絡包含Focus模塊、C3模塊和空間金字塔池化模塊(SPP)。其中Focus主要是對特征圖進行分片的操作,相當于做池化操作,可以降低運算的次數,提高舌象檢測的速度。C3模塊控制 YOLOv5模型的寬度與深度,形成不同參數量的模型。SPP模塊可以提升舌象特征圖的感受野。
頸部模塊包含特征金字塔(FPN)模塊和路徑聚合網絡(PAN)模塊。特征金字塔模塊自頂向下將高層的信息與底層的信息進行融合增強對小目標的檢測能力。路徑聚合網絡模塊自底向上將底層的信息與高層的信息進行融合,增強多個尺度的定位信息。
輸出端包括CIOU損失函數和非極大值抑制(NMS)。CIOU損失函數綜合考慮了檢測框與真實框的重疊面積,預測框之間長寬比,檢測框與真實框中心點之間的歐氏距離。非極大值抑制作用是篩選YOLOv5檢測出的眾多框,剔除冗余預測框,篩選出符合舌象的高質量檢測框。
YOLOv5s網絡結構如圖1所示。

圖1 YOLOv5s網絡結構
由于自然環境存在光照弱、有遮擋等復雜場景,針對YOLOv5s模型在自然環境下存在誤檢、漏檢的問題,該文提出ReLu激活函數解決模型在識別舌象過程中存在指數運算和網絡過擬合等問題,Ghost輕量化模塊減少卷積次數,使模型規模減小,SimAm注意力機制解決模型特征融合能力差的問題,在YOLOv5s舌象檢測網絡的基礎上實現上述改進,提出了適應復雜自然環境的YOLO-RGS舌象檢測網絡。
YOLO-RGS結構如圖2所示。

圖2 YOLO-RGS結構
ReLu激活函數的函數圖像與SiLU激活函數的函數圖像如圖3所示,x表示神經網絡的特征輸入。ReLu激活函數中當神經網絡輸入是負值時,神經元將會被滅活,使舌象檢測網絡具有稀疏性特征。當舌象檢測網絡具有稀疏性特征時,可以更好挖掘自然狀態下的舌象特征,擬合訓練模型網絡。

圖3 ReLu激活函數和SiLU激活函數
由于部分舌象圖像是在自然環境中選取的,圖像中對于舌象的檢測主要區分舌象與背景。ReLu激活函數將神經元輸入是負值時,把神經元滅活,降低復雜自然環境對舌象檢測的影響,同時去除SiLU激活函數中的指數運算,達到減少運算量的目的。該文將YOLOv5s的CBS結構的SiLU激活函數替換為ReLu激活函數,替換后的CBR結構如圖4所示。

圖4 CBR結構
ReLu激活函數的公式為:
ReLu(x)=max{0,x}
日本提出裝配式結構的理念是在20世紀60年代。在裝配式發展的基礎上推出部件化、構件化、工業化的生產方式。中高層住宅生產體系可高效率生產,其內部住宅結構可變。在推動產業結構和規模化的調整過程中,建筑結構形式經歷了四個過程,分別是多樣化、標準化、工業化、信息化。
(1)
SiLU激活函數的公式為:
(2)
Ghost[15]結構如圖5所示。圖6中GhostConv模塊為改進的Ghost模塊。Ghost模塊步驟:首先,使用標準Conv操作生成眾多冗余的特征圖;然后,對生成的冗余特征圖采用線性變化得到另外部分卷積特征圖;最后,將生成的冗余特征圖與線性變化的特征圖拼接得到Output的輸出。Ghost模塊通過線性變化生成的部分特征圖,減少大量卷積操作。

圖6 改進的BottleNeck結構
舌象檢測網絡進行卷積操作時會產生大量計算,經過卷積操作后得到眾多的冗余特征圖,同時舌象檢測網絡應用于移動端的設備,存在內存限制、存儲空間和算力限制等問題。針對這一類問題,該文將對YOLOv5s網絡進行輕量化處理,利用改進的BottleNeck模塊替換原有的BottleNeck。GhostConv模塊通過線性變化生成的部分卷積特征圖代替原有卷積生成的部分冗余特征圖,減小模型的大小,以達到移動端設備對存儲空間的要求。改進的BottleNeck結構如圖6所示。
SimAm注意力機制不同于通道注意力只關注于通道特征,也不同于空間注意力機制關注于不同位置特征,它是一種3-D注意力機制。SimAm注意力機制是基于神經科學理論,利用具有更多信息的神經元與其相鄰神經元相比更加重要的特性,通過定義線性可分性的能量函數在保證運算高效的同時對每個神經元進行重要度評估。SimAm結構如圖7所示。

圖7 SimAm結構
由于舌象檢測網絡受到小目標的遮擋與弧形相似物體干擾等問題干擾,該文在舌象檢測網絡中添加SimAm[16]注意力機制,通過對舌象特征權重進行全面高效的評估,多維度融合舌象信息,進而強化舌象的目標信息,弱化自然背景信息,實現對舌象的關注。
實驗環境使用Pytorch搭建,操作系統為Windows10,GPU型號為NVIDIA GeForce RTX 3080,運行內存為10 GB,編程語言為Python,編譯器為Pycharm,CUDA為11.0。參數設置如表1所示。

表1 參數設置

圖8 舌象數據集
評價指標采用查準率(Precision)、查全率(Recall)、平均精度均值(mean Average Precision,mAP)。
查準率:將預測正樣本真實情況是正樣本的比例。查準率如式3所示:
(3)
查全率:將預測正樣本真實情況是正樣本,占全部真實情況是正樣本的比例。查全率如式4所示:
(4)
平均精度:繪圖將計算的舌象Recall為橫軸,計算的舌象Precision為縱軸圍成的面積是平均精度(AP)。平均精度如式5所示:
(5)
平均精度均值:YOLOv5在所有類別的平均精度的均值,其中,N表示被檢測目標的類別數,AP為單類別目標的平均精度。平均精度均值如式6所示:
(6)
3.4.1 與其它方法對比
YOLOv7算法模型參數量達到了72.1 MB,遠高于YOLOv5s模型的參數量,由于模型參數量越小部署越容易,所以選擇YOLOv5s為改進的基準算法。YOLO-RGS在自然狀態下舌象的檢測,與目前常用的目標檢測的算法進行了對比實驗,算法是Faster R-CNN[17],SSD[18],YOLOv4-tiny[19-23],YOLOv5s[24-26]和YOLOv5m[27],以上算法的對比實驗均在IOU=0.5下完成,如表2所示。

表2 常用檢測網絡對比
YOLO-RGS與兩階段的Faster R-CNN檢測算法相比在查全率上低5.3百分點,但是在查準率和平均精度均值上遠遠優于Faster R-CNN。YOLO-RGS與SSD檢測算法相比在查全率上低2.1百分點,其它各指標均優于SSD模型。YOLO-RGS在查準率、查全率、平均精度均值和Speed上均遠遠高于YOLOv4-tiny和YOLOv5m的模型指標。YOLO-RGS 98.2百分點的查準率、91.8百分點的查全率和96.6百分點的平均精度均值均遠勝于YOLOv5s 94.8百分點的查準率、87.4百分點的查全率和93.6百分點的平均精度均值,但在檢測速度上略低于97幀/s的YOLOv5s。從表2中可以看出YOLO-RGS算法與其他對比算法在查準率、查全率以及平均精度均值等方面,具有較明顯的優勢。
在實際應用上物體的檢測速度應當至少達到30幀/s,識別速度越高,檢測物體的速度越快,在實際應用中實時檢測效果越好。常用檢測網絡的識別速度只有YOLO系列算法達到30幀/s的檢測速度。文中的檢測速度達到了86幀/s,雖然略低于YOLOv5s的97幀/s,但遠遠高于實際應用的檢測速度。
在舌象檢測設備的部署上,模型參數量越小,在舌象檢測設備上部署越容易。文中改進模型參數量為7.8 MB,相比兩階段的Faster R-CNN和端到端的SSD有大幅度縮減。YOLO-RGS算法網絡模型參數量減小到YOLOv5s模型的55百分點,更適合移動端的部署且改進的算法在自然狀態下舌象檢測精度更高。
3.4.2 消融實驗
消融對比實驗的目的是為驗證添加各個模塊對網絡的優化作用,實驗結果如表3所示。YOLO-R表示ReLu激活函數替換原有激活函數SiLU;YOLO-RG表示在YOLO-R的基礎上把BottleNeck替換為輕量化的Ghost-BottleNeck;YOLO-RGS表示在YOLO-RG的基礎上添加SimAm注意力機制。從表3中的數據可以看出:引入ReLu激活函數替換激活函數SiLU后,在識別速度和參數量不變的情況下,YOLO-R相比于YOLOv5s mAP提升了2.3百分點,說明ReLu激活函數可以更好地擬合舌象檢測網絡,大幅提高舌象檢測的精度;引入輕量化模型Ghost,代替YOLO-R網絡的BottleNeck,雖然mAP有所降低,但是參數量大幅下降,同時檢測速度由97幀/s下降到88幀/s,是由于DWConv卷積對流水線CPU適用,在專用GPU下沒有效率,導致檢測幀數下降;引入SimAm注意力機制的舌象檢測網絡,在不增加參數量的情況下,相比于YOLO-RG 的mAP提升了1.2百分點。YOLO-RGS模型相較于YOLOv5s模型雖然檢測速度有所下降,但是網絡的精度獲得較大提升,并且網絡的復雜度降低,更加適合移動端的部署。

表3 消融實驗
3.4.3 可視化分析
為了體現YOLO-RGS算法的性能,將以下3種算法進行定性分析。從實驗中隨機抽取圖像,在同一測試環境下,3種檢測網絡的檢測結果示例如圖9所示。
由Image1所示,Image1舌診儀下采集,YOLOv5s,YOLO-RGS和YOLOv5m都對舌象的檢測效果較好;Image2和Image3中存在遮擋物體和弧形形狀物體,且干擾物體與舌象正面弧形相似,YOLOv5s均不能對存在干擾物體的舌象做出較好檢測,YOLOv5m對干擾物體做出部分檢測,但YOLO-RGS均可以較好檢測;Image4中存在弧形形狀干擾并且圖中背景顏色相似,YOLOv5s和YOLO-RGS均能做出檢測,但YOLOv5m存在誤檢;Image5中存在灰度背景,可以模擬昏暗環境下舌象采集,導致YOLOv5s和YOLOv5m存在漏檢;Image6中存在舌象不完全吐露,3種算法均有較好檢測效果;Image7中對于多舌象檢測,均有較好檢測效果。對于存在相似物體遮擋的、多舌象以及小目標舌象,YOLO-RGS均能做出檢測,不但檢測精度高,還能適應復雜的自然環境變化,具有很強的魯棒性。
在自然環境中獲取舌象時受到自然光線強度和物體形態的影響,導致模型存在精度低和計算量大等問題。該文將Ghost輕量化和YOLOv5結合運用在自然環境舌象檢測場景,通過施加SimAm注意力機制來加強舌象信息的融合,并調整激活函數為ReLu來提升檢測舌象的精度。實驗結果表明,YOLO-RGS算法在自然環境舌象檢測中具有一定的實時性和可靠性,能夠判斷采集圖像是否存在舌象,為后續舌象采集工作提供實際應用參考。