顏建軍,徐 姿,郭 睿,燕海霞,王憶勤**
(1. 華東理工大學機械與動力工程學院 上海 200237;2. 上海中醫藥大學交叉科學研究院 上海 201203;3. 上海中醫藥大學四診信息綜合實驗室 上海 201203)
中醫通過“望、聞、問、切”以獲得體征和癥狀等相關信息,經過綜合分析歸納后,提取病機,從而進行相應的論治。舌診作為一種中醫診斷方法,主要通過觀察舌苔、舌質等的舌像特征來了解人體生理病理的變化,在中醫診斷中具有重要的應用價值。舌診存在的問題是主觀性較強,無法精確量化,結果難以記錄,使其發展受到了限制。因此,運用機器視覺技術進行舌圖像的分析處理,實現中醫舌診客觀化和定量化,是現代中醫舌診發展的重要工作。其中舌圖像分割是中醫舌診客觀化的基礎,舌體分割準確程度會直接影響舌診系統中舌色苔色識別以及形態分析診斷[1][2]。
當前舌圖像分割方法主要包括閾值分割算法、主動輪廓模型及圖分割算法等。劉關松等[3]提出基于閾值分割的舌體分割方法;Zhai X 等[4]提出基于雙Snake的舌像分割方法;Pang B、Zhang H 和Fu Z 等提出主動輪廓模型與雙橢圓形可變模板等檢測器結合法[5][6][7];吳佳等[8]提出分水嶺變換與主動輪廓模型組合法;Yan Z 等[9]采用基于圖分割的GrabCut 算法進行舌圖像分割。這些方法在一定程度上改進了舌圖像分割結果,但都存在不足:基于閾值分割方法對采集舌像的光照要求較高且分割輪廓不太精確;利用主動輪廓模型的分割方法容易受到嘴唇干擾而存在分割誤差;采用GrabCut算法進行舌圖像分割,計算量大且速度較慢。
在舌圖像分割過程中,當舌體周圍的嘴唇或皮膚顏色較接近舌體時,會導致分割的難度增大,所以容易造成分割效率低、準確度不高的結果,對后續的舌圖像分析產生較大影響。但是現有的舌圖像分割方法均不能很好地解決這一問題,因此,舌圖像的準確分割仍然是舌診客觀化中的一個難點,這在一定程度上影響了舌診客觀化的進程。
近年來,越來越多的學者著手進行基于像素的圖像分割研究。對舌圖像分割而言,像素特征的提取雖然容易實現,但很難表達舌體的位置信息,且當舌體與背景之間顏色相近、邊界模糊時,兩者的像素特征可能會重合。故僅提取舌像的像素特征較難全面地表達舌體信息,還需要進一步提取圖像的深層語義信息,得到更完整的特征以實現舌圖像的精確分割。而基于深度學習的圖像分割方法能夠通過模擬人腦的階層式結構進行信息傳遞,實現從像素級原始數據到抽象語義特征的轉換,在醫學圖像處理等領域取得了較好效果[10][11]。特別是在Faster R-CNN 的基礎上提出的Mask R-CNN 目標實例分割框架[12],能夠解決以往網絡不能被很好優化的退化問題,可以進行有效目標探測、準確分類和高質量分割,得到的準確率遠高于HyperColumns、FCIS和SIS等經典實例分割方法[13-15]。
本研究提出基于Mask R-CNN 的舌圖像分割方法,在較大樣本舌圖像標注的基礎上,建立舌圖像分割的深度學習模型,并對分割效果進行評估和分析。
近年來,實例分割已經逐漸發展成為一項支持各種基于內容的多媒體應用不可或缺的關鍵技術[16]。目前,深度學習的發展尤為突出,已經在圖像識別領域的應用取得了較好的成果。和傳統的方法相比,深度學習有以下三大優點:①在計算機視覺領域識別率最高;②充分利用大數據的優勢進行特征的自動學習;③可最大程度發揮特征表示和分類器聯合優化的性能。深度學習在實例分割上的應用逐漸成為一個研究熱點,特別是基于Faster R-CNN 模型改進的Mask R-CNN 實例分割網絡模型在圖像分割領域取得了不錯的效果。因此,本研究采用Mask R-CNN 實例分割網絡模型進行舌圖像的分割。
Mask R-CNN 在Faster R-CNN 的基礎上主要進行三點改進:①在邊界框識別分支上添加一個用于預測目標掩碼的并行分支;②為每個類別分別進行二元掩碼的預測;③提出簡潔非量化層RoIAlign,該層不但可以保留大致的空間位置,還能將掩碼精確度相對提高10%-50%。因此,Mask R-CNN可以在更嚴格的評價指標下得到更好的結果,具有框架簡潔靈活、訓練和分割速度較快以及分割精確度較高的優點。
Mask R-CNN 采用RoIAlign 層替換了Faster RCNN 中原有的RoIPool 層這一策略是其一大亮點。RoIPool 層基于的原理是從每個感興趣區域(Region of Interest,RoI)中提取小的特征圖(如7 × 77 × 7),基于其選擇的特征圖區域,會與原圖中的區域有輕微出入。相對應具體的做法是先對浮點數RoI 進行量化,再提取分塊的直方圖,最后進行最大池化(Max pooling)操作。Max pooling 會先將整個圖像不重疊地分割成若干個同樣大小的小塊(pooling size),然后每個小塊內只取最大的數字,再舍棄其他節點后,最終保持原有的平面結構得出輸出結果。由此可見,RoIPool層是基于stride 間隔來取整從原圖RoI 得到特征圖RoI,這會使得在把特征圖RoI 映射回原圖RoI 時,出現stride間隔造成的誤差,導致原圖RoI和提取特征RoI間的不重合,該不重合性在max pooling 后特征圖的RoI 與原RoI 間的空間不對齊時更加明顯。這一點對于精確的像素級masks 預測和分割具有較大的負影響,因此需要像素級的空間對齊。
RoIAlign 能夠去除RoIPool 引入的不重合性,準確地對齊輸入的提取特征,以此來避免RoI 邊界或bins進行量化的發生,如采用x/16x/16 來替代rounding(x/16)rounding(x/16)[四舍五入處理];根據每個RoI bin的四個采樣點,采用雙線性插入來計算輸入特征的精確值,并采用取最大值或平均值來組合結果。假設點(x,y)(x,y),取其周圍最近的四個采樣點,在Y方向進行兩次插值,再在X方向進行兩次插值,以得到新的插值。這種處理方式完全不會影響RoI的空間布局。假設一個128×128 的圖像,25×25 的特征圖,其原始圖像的每一個像素與特征圖上的25/128 個像素對應。想要得到與原始圖像左上角15×15位置對應的特征區域,就要在特征圖上需要選擇15×25/128 ≈2.93 個像素。對于這種情形,RoIPool 會舍去零頭選擇兩個像素,從而導致排列問題。但是RoIAlign避免使用去掉小數點后取整的方式,而是使用雙線性插值直接準確地獲得2.93像素位置的信息,避免了排列錯誤。
因此,RoIAlign 既確保mask 分支的每一網絡層均可保持m×mm×m 的object 空間布局,而不采用會導致空間信息損失的壓扁拉伸成向量表示形式,又保證RoI 特征圖的對齊性,從而不影響pixel-to-pixel 操作,以保留per-pixel空間對應關系。
Mask R-CNN 是 基 于Python 3,Keras 以 及TensorFlow 平臺實現的,是以ResNeXt101 神經網絡作主結構、特征金字塔網絡(FPN)作輔結構的ResNeXt-101-FPN 特征提取網絡。用于實例分割的Mask RCNN框架,如圖1所示。
基于Mask R-CNN 的舌圖像分割包括舌體輪廓標注、模型訓練、舌圖像分割及分割結果評估這四個主要步驟,具體如圖2所示。

圖1 Mask R-CNN目標實例分割框架
1.1.1 舌體輪廓標注
由于深度學習需要用到大量標注樣本進行訓練,因此,需要先利用標注工具對樣本的舌體輪廓標注。
本研究使用標注工具labelme 進行舌圖像樣本標注,該工具基于多邊形框對目標物體進行標注。標注時利用標注點和標注點之間的最短路徑,得到能夠較好貼合舌體輪廓的多邊形,獲得標注結果如圖3所示。
1.1.2 舌圖像分割模型的訓練
舌圖像分割的網絡模型訓練在tensorflow 環境下使用Mask R-CNN目標實例分割框架進行的。
Mask R-CNN 整個網絡結構為Faster R-CNN +FCN+ROIAlign,不僅在Faster R-CNN 的基礎上增加FCN 產生對應的Mask 分支,而且提出采用ROIAlign策略替換ROI Pooling。Faster R-CNN 可以既快又準地完成目標檢測;FCN 能夠精準地進行語義分割;ROIAlign則解決了Faster R-CNN中存在的ROI Pooling像素偏差問題。除此之外,主網絡ResNeXt-101 網絡很好地解決了傳統網絡構架中隨著網絡層數增加準確率先上升后飽和最后下降的問題。這些都有益于提高舌圖像分割的分割速度和準確率。
訓練的主要參數有TRAIN_ROIS_PER_IMAGE、STEPS_PER_EPOCH 和VALIDATION_STEPS。其中,參數TRAIN_ROIS_PER_IMAGE 代表每張樣本建議的ROI 數量,并將其作為后續分類和掩膜網絡的輸入,一般目標占整體比例越大,該值的取值就越大;STEPS_PER_EPOCH 為keras 中 的fit_generator 函數中的參數,fit_generator 函數的作用是在訓練集太大時可自動生成batch,該參數表示每輪迭代次數,因為tensorboard 會自動更新并在每個epoch 結束時保存更新,所以進行該參數設置時不需要考慮訓練集大小。同時又由于驗證集也在epoch 最后記錄,比較花時間,因此該參數不能設置太小,以免花費大量時間進行驗證;VALIDATION_STEPS 也是fit_generator 中的參數,表示驗證的步數,但此參數越大驗證就越精確,而訓練速度越慢。因此,本研究將TRAIN_ROIS_PER_IMAGE、STEPS_PER_EPOCH 和VALIDATION_STEPS分別設置為300、5000和5。

圖2 基于Mask R-CNN模型的舌圖像分割方法步驟

圖3 labelme標注工具標注結果
此外,實驗采用的GPU 顯卡為NVIDIA Tesla V100,CPU 為Intel Core i7-8700K @3.70GHz 六核,內存大小32GB。
1.1.3 舌圖像分割的評估指標
為了檢驗基于Mask R-CNN 的方法進行舌圖像分割的效果,本研究將中醫專家評估和定量指標評估結合起來,進行圖像分割結果評估,這樣能夠更加全面地反映舌圖像分割的結果。用于定量評估的四個指標分別是均像素準確度(Mean Pixel Accuracy,MPA)、平均準確度(Mean Accuracy,MA)、均交并比(Mean Intersection over Union,MIoU)、頻權交并比(Mean Frequency Weighted Intersection over Union,MFWIoU),
其定義如下:

其中,Ai 為像素準確預測的像素點;Pn 為圖像像素總數得到的準確率;i為像素點的個數;Bi 為每個類別被正確分類像素數目的比例;i 為所有類別Dp - Ap,Ap 為某類別被正確分類像素數目;Cp 為某類別真實的像素總數;Dp 為某類別預測像素總數;IU = Cp + Dp - Ap;Cp 為某類別真實的像素總數;Dp為某類別預測像素總數;Ap為某類別被正確分類像素數目;Ei為圖像像素總數。
本研究舌圖像樣本由上海中醫藥大學四診信息綜合實驗室提供,共計2870 張,其中1870 張作為訓練樣本,1000 張作為測試樣本。舌圖像中大多數區域為舌體,還有嘴唇、牙齒、部分面頰以及少量背景。
將標注的舌圖像樣本輸入到Mask R-CNN 中進行訓練,建立舌圖像分割模型,并利用測試樣本進行舌體分割及結果評估。舌圖像分割測試結果,如圖4所示。
由圖4 可以看出,Mask R-CNN 舌圖像分割模型得到的舌體輪廓較為清晰準確,能較好地處理舌體周圍嘴唇以及皮膚的干擾,分割結果得到了中醫認可。
為了進一步驗證該模型能夠較好地解決舌體周圍嘴唇以及皮膚對舌圖像分割的干擾問題,本研究針對整個舌圖像樣本,分別進行了靠近嘴唇的舌體部分同舌體附近的嘴唇部分及同舌體周邊的皮膚部分的色差計算統計,并對舌圖像進行了邊緣檢測,分析驗證模型的魯棒性。

圖4 Mask R-CNN舌圖像分割模型結果
LAB 空間是基于人的視覺系統對顏色的感覺來設計的,能較為貼切地反映人眼視覺系統對顏色的感知,所以此處采用LAB 顏色空間來計算舌體同周圍嘴唇及皮膚的色差。在該空間中存在L、A、B 三個通道,其中L 表示明度,A 表示紅綠色差,B 表示藍黃色差。兩個顏色之間的相似程度,即色差,其計算公式如下:

其中,ΔE 表示色差,ΔL/Δa/Δb 分別表示兩個顏色之間在不同分量的差值。
使用上述LAB 顏色空間色差計算方法,針對有關靠近嘴唇的舌體部分同舌體附近的嘴唇部分,本研究的舌圖像樣本得到的色差范圍是0 - 337.29。其中,圖4(a)的兩張舌圖像樣本的兩部分色差值分別為0和1.41,由圖4(b)的舌體分割結果圖可以直觀地看出:當舌體部分的顏色同周圍嘴唇顏色極為接近甚至相同時,該舌體分割模型還是能夠較好地將目標舌體分割出來,不受周圍相似顏色嘴唇的干擾。同樣地,針對有關靠近皮膚的舌體部分同靠近舌體的皮膚部分,本研究的舌圖像樣本得到的色差范圍是0-306.88。其中,圖4(a)的兩張舌圖像樣本的兩部分色差值分別為3.32 和1.41,由圖4(b)的舌體分割結果圖可以直觀地看出:當舌體區域的顏色同周圍皮膚顏色比較接近時,該舌體分割模型依舊能夠較好地將目標舌體分割出來,不受周圍相似顏色皮膚的影響。

圖5 GrabCut算法和Mask R-CNN分割結果對比
以上LAB 顏色空間色差計算,主要考慮感興趣區域同鄰近背景區域之間的區域色差接近的情況。但是在舌圖像樣本中,有關感興趣區域和鄰近背景區域的分割還會涉及到舌體區域邊緣問題。在圖像處理中使用較多的一個特征就是圖像的邊緣,即灰度值變化劇烈的地方。而邊緣檢測就是對一張圖像的輸入到輸出邊緣信息的整個處理過程。由于邊緣檢測中的Sobel 算子具有平滑處理降低噪聲的特性,故本研究采用該算子進行邊緣檢測。該算子先對輸入圖像的像素做卷積,即求像素的梯度值;然后,對生成的新像素灰度值做閾值運算,以此來確定邊緣信息。由于鄰域的像素對當前像素產生的影響不是等價的,距離不同的像素具有不同的卷積核,對算子結果產生的影響也不同。一般來說,距離越遠,產生的影響越小。
當舌體區域的顏色同周圍嘴唇或皮膚的顏色較為接近,如果舌體的邊緣較為明顯,舌體的分割效果較好且易于實現;當舌體區域的顏色同周圍嘴唇或皮膚的顏色相差較大時,即使舌體區域的邊緣不太明顯甚至幾乎沒有,也可以較容易得到較好的舌體分割結果。但是當舌體區域與周圍嘴唇或皮膚的顏色較為接近,并且舌體區域的邊緣不太明顯時,舌體分割就較難進行。但是本研究建立的舌圖像分割模型能夠較好地處理這種情況,得到較為滿意的分割結果。此外,還與基于GrabCut 的舌圖像分割方法進行了結果對比,舌圖像分割結果如圖5所示。
由圖5可以看出,當嘴唇顏色同舌體較為接近,且舌體邊緣很少甚至幾乎沒有時,利用GrabCut 算法不能夠完全避免嘴唇甚至牙齒的影響,得到包含牙齒和周圍嘴唇部分的舌體分割結果,致使分割效果不佳;而Mask R-CNN 能夠有效地去除嘴唇及牙齒的影響,較好地從原始舌圖像中分割出準確的舌體,獲得較為滿意的分割結果。當皮膚與舌體顏色相近,且舌體下半部分邊緣不明顯時,利用GrabCut 算法無法很好地區分出舌體和同舌體顏色較為接近的皮膚,導致分割得到的舌體下半部分誤將鄰近的部分皮膚分割在內;而Mask R-CNN 能夠較好地減小皮膚與舌體顏色接近帶來的不利影響,獲得較為準確的舌體輪廓。
綜上所述,Mask R-CNN 能夠有效地解決舌體周圍的嘴唇和皮膚顏色較接近舌體時導致舌體分割輪廓不準確的問題,獲得較好的分割結果。
為了更加精確地度量Mask R-CNN 的分割結果,根據公式(1)-(4),本研究對舌圖像分割結果進行四個評估指標的計算,其結果如表1所示。
由表1可以看出,不同舌色、苔色舌圖像分割的均像素準確度MPA 均達到92.7%以上,平均為93.03%,其中黃苔舌圖像最高,為93.87%;平均準確度MA 均達到93.1%以上,平均為93.44%,其中白苔舌圖像最高,為93.59%;均交并比MIoU 均達到84.6%以上,平均為86.69%,其中黃苔舌圖像最高,為87.66%;頻權交并比MFWIoU 均達到85.8%以上,平均為87.16%,其中黃苔舌圖像最高,為87.74%。綜合來看,黃苔舌圖像的MPA、MIoU 及MFWIoU 三項評估指標最高,而紅舌和絳舌的MPA、MA 兩個評估指標均達到93%以上。因此,采用本文的舌圖像分割方法得到的三類苔色、五類舌色的舌圖像分割結果,將會給一些疾病診斷提供一定的舌診客觀化基礎。
此外,基于Mask R-CNN 的舌圖像分割方法在分割時平均每張處理時間大約0.21 秒,分割速度較快。這說明了該方法在舌圖像分割上具有準確率高、速度快的優勢。在Mask R-CNN 整個網絡結構中,Faster R-CNN 作為經典的目標檢測算法,利用一個神經網絡將特征提取網絡、生成ROI、ROI 的分類和ROI 回歸這4 個模塊結合起來,進行一個端到端網絡的訓練,實現了既快又準地完成目標檢測的功能;FCN 能夠生成精準的像素級掩膜,從而獲得高分割準確率;ROIAlign策略解決了ROI Pooling 中所存在的像素偏差問題,克服了以往網絡的退化難題。相比弱監督學習使用圖像級別或物體級別的標注作為數據集,Mask R-CNN作為有監督的目標實例分割框架使用像素級別的標注數據集,能夠從含有完善標注信息的數據集中學習規律,進行分割模型建立,最后得到較好的分割效果。
因此,基于Mask R-CNN 的舌圖像分割方法不僅分割速度較快,而且在很大程度上減少了嘴唇或皮膚等對舌體分割結果的影響,能夠得到了較好的舌體分割效果,證明Mask R-CNN 目標實例分割框架在舌圖像分割中具有較高的實用價值。
舌診是中醫望診的重要內容之一,通過對舌苔、舌質的觀察,從而了解病變所在,據以辨證論治。中醫學認為“舌為心之候,苔乃胃之明徵”“有諸內者必形于外”。舌圖像分割是舌診客觀化的重要基礎,其分割的準確性直接影響到后續舌診分析的結果。

表1 舌圖像的定量指標評估結果
為了克服已有舌圖像分割算法效率較低、準確率不高的缺點,本研究提出應用Mask R-CNN 進行舌圖像的分割。先利用標注工具labelme 進行舌圖像的樣本標注,再基于Mask R-CNN 建立了舌圖像分割模型。對1000 張不同舌色和苔色舌圖像進行了自動分割和結果評估,四個定量評估指標均像素準確度、平均準確度、均交并比、頻權交并比均高于84.6%,達到了較好的舌圖像分割效果,并與GrabCut 算法進行了比較,體現了其良好的不受周圍嘴唇及皮膚干擾的特性。因此,基于Mask R-CNN 的舌圖像分割方法速度快、準確率高,為舌圖像分割研究提供了有益的參考,在舌診客觀化方面具有較好的實際應用價值。
目前,深度學習已經成為計算機視覺任務處理的研究熱點,在舌圖像處理領域也取得了較為滿意的結果。但是深度學習在該領域的應用仍然存在一些挑戰和限制,如高質量標注訓練樣本的不足,深度學習模型的可解釋性等。然而,目前存在的挑戰也為深度學習在機器視覺領域的應用提供了良好的機會和廣闊的研究空間。隨著深度學習算法的不斷完善、計算能力的提高和大樣本舌圖像的采集,深度學習在舌圖像處理領域的應用前景將會更加廣闊。