孫旭豪,傅中添,嚴玲,周作建
(南京中醫藥大學人工智能與信息技術學院,江蘇 南京 210023)
望診是中醫診斷最常用的方法之一,而目診在其中占有十分重要的地位。所謂目診,即通過有目的性的觀察患者眼睛各部位的神色、形態等的變化,來了解人體的健康狀況,推斷病機。傳統的目診法通過醫生肉眼觀察眼象,易受光線、角度等環境因素影響,使得目診結果易產生偏差;且醫生的診斷主要是基于其醫療實踐經驗的積累,往往會受到主觀因素的影響,沒有有效的量化手段,缺乏客觀評價依據。不同地域、流派的中醫師對于辨證均具有各自獨到的見解,即使是對同一種癥狀也往往會出現不同的診斷結果,這給包括目診在內的中醫臨床診斷、科學研究等工作帶來許多不便[1]。
近幾年,對中醫客觀化的需求愈發凸顯。通過對患者癥狀以及中醫辨證模型的量化,達到用數學方法模擬中醫診斷過程的目的,類似的思路目前已廣泛應用于以舌診為代表的望診客觀化研究中。闞紅星等通過色差校正、K均值聚類等算法分離出舌圖像中的舌質區域與舌苔區域,提取顏色、裂紋等特征值,并使用隨機森林構建舌圖像的2型糖尿病識別模型[2]。許家佗等對207名大學生的面部圖像在RGB、HIS、L*a*b*等顏色空間中進行顏色特征分析,得出了健康與亞健康人群在局部面色上具有顯著差異的結論[3]。
然而,目前針對中醫辨證客觀化的研究還處于薄弱階段,國內尚無基于目診辨證客觀化的研究。針對這種情況,本文提出了一種通過open-cv將圖像切割并增強后輸入基于EfficientNet[4]構建的卷積神經網絡提取陰虛證特征并進行分類,完成針對陰虛證的眼象識別。
Retinex算法常用于消除圖像色彩偏差,強化圖像特征。Retinex由retina(視網膜)以及cortex(皮層)兩個單詞組成,意為人類肉眼所感知到的顏色是外界不同波長的光線被視網膜接受后經由大腦皮層的處理產生的,因此物體的顏色是由物體反射不同波長光線的能力而不是反射光強度所決定的,不會受到外界光線的波長及強度的影響。因此Retinex算法可以對光照不均衡的圖像進行自適應的增強,對圖像特征進行全方位的強化。
由于原始圖像中不僅記錄了眼象數據,還包含有眼象儀支架以及眼睛周圍部分等無關圖像數據(如圖1),會對模型的特征提取造成干擾。因此本文應用了一種針對眼象的圖像定位方法。

圖1 原始圖像
2.1.1 白平衡處理
在大多數情況下由于不同色溫的光源影響,導致圖像的色調會隨之出現一定程度的偏差。人類的肉眼可以自動調節這種偏差,使得圖像更接近其原本的色調。而圖像白平衡(White Balance)算法則模擬了該過程。本文所用白平衡算法將圖像轉到L*a*b色彩空間,再將每個像素的a、b色值根據整幅圖像a、b色值的均值進行調整。L*a*b色彩空間基于肉眼對顏色的感知建立,擁有比RGB、CMYK更為廣闊的色域,能夠表示人眼所能感知到的所有顏色。具體公式如下:
(1)
(2)
其中Ix,y,l、Ix,y,a、Ix,y,b分別為圖片第x行第y列像素的明度、a色值以及b色值(如圖2)。

圖2 白平衡處理后的圖像
2.1.2 輪廓檢測
將糾正偏差后的圖像轉到HSV色彩空間后采用OTSU閾值二值化處理,根據灰度將圖像分為背景和目標,再進行輪廓檢測(如圖3)。

圖3 輪廓檢測結果
由于所得圖像中虹膜部位顏色普遍偏深,反映到RGB色彩空間中表現為虹膜部位R、G、B三通道色值均趨于0,不利于后續的特征提取。
Retinex理論認為物體的顏色是由物體對不同波長光線(即顏色)的反射能力而不是由反射光決定的,即:
S(x,y)=R(x,y)*L(x,y)
(3)
其中S(x,y)為反射光線,L(x,y)為環境光,而R(x,y)就是攜帶著物體信息的反射分量。
本文使用基于Retinex理論的MSRCP算法[6],即多尺度且帶有色彩保護的Retinex,公式如下,其中I為圖像中任一像素,σ1、σ2、σ3為高斯模糊的3種尺度,s1、s2表示像素的兩種剪切尺度,其效果可以顯著增強圖像特征(如圖4)。

(4)

圖4 MSRCP處理效果
神經網絡對特征的學習需要大量經過人工標記的訓練以及測試樣本,如用于人臉識別的LFW數據集中包含了超過5 000人的總計13 000張面部圖片,而用于視覺對象識別的ImageNet數據集更是擁有1 000個類別的超過120萬張高分辨率圖片,數據集的收集和標注是一個龐大的工程。在大多數情況下,數據集的規模是無法滿足深度神經網絡的訓練要求的,因而會出現過擬合(Overfitting)的現象,即神經網絡學習到了在訓練數據中完全沒有意義的特征,導致模型在訓練集上的表現遠遠超過在測試集上的表現,網絡模型不具有魯棒性。本文使用多種數據增強方法擴大數據集,在抗過擬合的同時可以增強模型在各種數據采集環境下的抗干擾能力。
3.1.1 仿射
仿射變換是指對一個向量進行一定的平移運動以及線性變換,在保留向量原有特征的前提下轉化為另一個向量的過程。對圖像中任意像素點的變換可表示為:
(5)
仿射變換根據變換矩陣的不同可分解為平移、縮放、旋轉、錯切等基本變換手段,可以在不破壞圖像原有特征的情況下將圖像的觀測角度從正面變為側面,從而降低識別模型對觀測角度的敏感度。本文將輸入圖像沿順時針或逆時針隨機旋轉0°~20°,水平及垂直旋轉,橫向及縱向隨機縮放0.8~1.2倍,將數據集擴充了1 024倍。
3.1.2 高斯噪聲
本文使用高斯擾動對圖像的紅色(R)、綠色(G)、藍色(B)通道分別加上一個均值為0、標準差為16的高斯噪聲,模擬在不同光線環境下的觀測。擾動效果如圖(2)。此種方法可以降低模型對光線以及圖像質量的敏感度。

圖5 高斯擾動結果
在訓練模型之前需要對原始數據進行預先處理,消除無關信息,強化有用信息,使模型能夠更容易地學習到圖像特征。
3.2.1 圖像縮放
由于在預處理階段已經將圖像進行分割處理,所得圖像長寬不一致,不利于模型的訓練以及數據遷移,需要將圖片統一縮放為300×300的尺寸。定義Z為縮放矩陣,M為原矩陣,則:
Zx,y=(1-u)×(1-v)×Mi,j
+(1-u)×v×Mi,j+1
+u×(1-v)×Mi+1,j
+u×v×Mi+1,j+1
(6)
其中:
i+u=300(i∈N)
j+v=300(j∈N)
(7)
3.2.2 白化
圖像中像素與像素之間的相關性和兩者之間的距離呈正相關,同一片區域內的像素通常擁有相似的信息,用作訓練數據是冗余的,而圖像白化(Whitening)可以降低數據之間的相關性,使數據所包含的特征更加集中,增加特征提取網絡的訓練速度[7]。
(8)
其中Xrotate為原數據在主成分軸上的投影。
本文采用EfficientNet卷積神經網絡作為特征提取模型。該模型在ImageNet數據集上獲得了84.4%的Top-1精度和97.1%的Top-5精度,超越了此前表現最好的GPipe,并且參數量減少了8.4倍,速度快了6.1倍(如表1)。

表1 模型性能對比
3.3.1 模型尺寸的選擇
EfficientNet模型重新思考了在原有網絡結構基礎上進一步增加模型精度的方法:增加網絡的深度、寬度以及分辨率。單獨增加其中任意一項都會提高網絡的精度,但是這一項參數的不斷增加又會導致參數增長的精度回報率降低,于是在模型最大參數量不變的情況下找出深度、寬度、分辨率的最優組合就變成了如下的優化問題:

(9)
EfficientNet根據不同尺寸的圖像構建了8個模型,本文根據眼象圖片的尺寸選擇EfficientNet-B3。
3.3.2 基線模型
EfficientNet模型縮放的高效性嚴重依賴于其基線模型,因此基線模型的選擇是構建EfficientNet的重要一環。Mingxing Tan等人并沒有使用MobileNets等現有的高性能模型,而是通過網絡結構搜索[14-16]自動構建了基線模型EfficientNet-B0,令后續的模型縮放能夠將精度最大化。
傳統卷積神經網絡在獲得圖像Feather Map后會接全連接層,而全連接層的參數量會占據整個模型參數量的90%以上,大大降低了模型訓練速度,而且過度密集的參數會使過擬合更易發生。因此本文將EfficientNet輸出的Feather Map后接全局平均池化層,取矩陣中每一層特征映射的平均值組成一維向量,相當于將全連接層中的展開卷積層以及對特征映射分類的過程合二為一,通過這種手段適當降低模型的擬合能力,以提高模型泛化能力,削弱過擬合現象;剔除了全連接層黑箱的特征,直接賦予了每個通道實際意義。值得一提的是,全局平均池化忽略了每一層特征映射的大小,從而賦予了網絡可以接受任意大小圖像輸入的能力。
為了能加快模型的學習速度,本實驗使用遷移學習,將已經在ImageNet數據集上訓練好的EfficientNet參數作為特征提取模型的初始參數,從而繼承模型從ImageNet數據集上學習到的特征提取能力,再在此基礎上進行微調(fine tune)。ImageNet數據集的1 000個分類涵蓋了幾乎所有常見物品,且數據量十分龐大,可以賦予模型極強的特征提取能力以及泛化能力。該方法不僅可以節省大量的訓練時間和計算資源,更可以一定程度上削弱過擬合現象,使模型擁有比隨機初始化參數更好的表現[13]。
特征提取模型共有3個超參數(Hyper-parameters),分別為學習率、批尺寸以及amsgrad(是否使用Adam[17]算法的AMSGrad[18]變種)。AMSGrad算法針對Adam算法收斂性證明的缺陷,對Adam的更新規則作出了一些改進,在某些應用場景下擁有超過Adam算法的收斂速度。本文采用正交實驗法對這3個超參數進行考量,建立3因素2水平正交實驗因素表(見表2),使用眼象數據集對不同超參數組合下模型的綜合性能進行評估。對于每組參數迭代20次,以驗證準確率作為性能指標確定最佳超參數組合。

表2 正交因素水平
本文根據表2的正交因素水平設計了8組實驗(如表3),第3組超參數取得了最佳性能。因此采用學習率為1e-3,批尺寸為128,Amsgrad優化器的方案(迭代過程如圖6)。

圖6 損失值優化過程

表3 超參數正交實驗結果
本文使用Python的深度學習庫Keras構建陰虛證眼象識別模型,通過EfficientNet模型遷移學習,設置學習率1e-3,批尺寸128,采用Amsgrad優化器及交叉熵損失函數,模擬中醫目診對眼象圖片的陰虛證特征提取以及分類。使用驗證數據集對該模型的陰虛證候識別準確度進行驗證,得到了90.01%的準確率。
本研究首次嘗試使用圖像識別技術以及EfficientNet,對目圖像進行特征提取以及證候識別,并取得了較好的結果。這表明通過深度學習實現中醫辨證客觀化的技術路線是可行的,填補了目前在目診以及辨證客觀化研究領域的不足。
目前通過深度學習實現中醫辨證客觀化的研究尚處于初級階段,下一步的研究目標將不僅限于目診的客觀化,而是舌診、目診、面診的綜合客觀化研究,同時擴充數據集,進一步提高模型精度。