王一帆,龍彬
(四川大學計算機學院,成都 610065)
早產兒視網膜病變,又稱ROP,是一種易發于早產兒和低體重兒的增生性血管疾病,目前,隨著醫療護理水平的上升,早產兒的存活率隨之上升,與之相應地早產兒視網膜病變的發病率也隨之提升,ROP 逐漸成為了新生兒的流行病癥。
ROP 的成因主要在于早產兒由于其孕周較短,過早接觸外界環境,其眼底視網膜血管還未發育完全,其未血管化的視網膜發生纖維血管瘤增生、收縮,并進一步引起牽拉性視網膜脫離和失明。
目前ROP 已經成為了早產兒致盲的主要病癥,據統計,在全球范圍內,大約有50,000 名嬰兒由于ROP致盲[3]。但目前ROP 篩查工作面臨著以下挑戰:①ROP 診斷較為以來眼科醫生的主觀診斷,由于缺乏精確的量化標準,導致不同眼科醫生的診斷具有較高的不一致性[1,2];②眼科醫生存在疲勞等因素導致ROP漏診和誤診;③醫療資源不平衡,導致落后地區的新生兒無法得到充分的診治。
近年來,隨著深度學習不斷取得令人驚訝的成就,從AlphaGo 擊敗世界頂尖圍棋高手到微軟語音識別超越人類水平,深度學習的概念逐漸從學術界走向普羅大眾的眼前。深度學習在多個領域均表現出極高的適應性,并很快做出了重大的進展。在醫學圖像處理領域,研究者們也嘗試使用深度學習的方法對醫學圖像進行處理,并取得了一些成果。
本文的主要工作是提出一種基于深度學習的算法進行自動化的ROP 篩查,并在此基礎上構建基于B/S架構的面向醫生的ROP 智能篩查系統,展現了使用深度學習技術進行ROP 篩查的巨大潛力。
(1)卷積神經網絡
卷積神經網絡(Convolutional Neural Networks,CNN)是一類包含卷積計算且具有深度結構的前饋神經網絡(Feedforward Neural Networks),是深度學習(Deep Learning)的代表算法之一。
卷積神經網絡最早由LeCun 等人[4]提出用于進行手寫體數字識別任務,作者提出的LeNet-5 網絡在0到9 的10 個手寫體數字識別任務上達到了99%的準確率,展現了CNN 在圖像處理上強大的能力。
卷積神經網絡的兩個基礎操作為卷積和池化。卷積操作主要目的是對輸入數據的特征進行提取,卷積層是CNN 的核心,在圖像識別里我們提到的卷積是二維卷積,即離散二維濾波器(也稱作卷積核)與二維圖像做卷積操作,簡單的講是二維濾波器滑動到二維圖像上所有位置,并在每個位置上與該像素點及其領域像素點做內積。卷積操作被廣泛應用與圖像處理領域,不同卷積核可以提取不同的特征,例如邊沿、線性、角等特征。在深層卷積神經網絡中,通過卷積操作可以提取出圖像低級到復雜的特征。
池化操作主要目的是在盡量不丟失信息的條件下對數據進行降維。并且能夠在一定程度上控制過擬合。通常在卷積層的后面會加上一個池化層。池化包括最大池化、平均池化等。其中最大池化是用不重疊的矩形框將輸入層分成不同的區域,對于每個矩形框的數取最大值作為輸出層。
(2)Inception 網絡
在原始的CNN 網絡中,隨著網絡層數的增多,參數量增大,通常能得到更好的效果。然而,隨之而來的是問題是:①更深的網絡需要更多的數據進行訓練,網絡容易造成過擬合現象;②網絡的參數量增大,導致計算內存增加,不利于實際的應用。Inception 模塊通過增加網絡的寬度,增強了網絡對不同尺度的適應性。圖1 展示了Inception-v1[5]模塊的初始結構。

圖1 Inception模塊的初始結構
Inception 模塊通過使用不同尺度的卷積核將1×1、3×3、5×5 的卷積核和 3×3 的最大池化,堆疊在一起,一方面增加了網絡的寬度,另一方面增加了網絡對尺度的適應性。在 3×3 和 5×5 的卷積核之前增加 1×1 的卷積核可以降低網絡的參數量,在Inception-v1 的基礎上,Google 的研究者們又相繼提出了Inception-v2、Inception-v3[6,7]的網絡結構,持續改進了 Inception 的內部結構。改進部分如下:①加入了Batch Norm 層,使每一層輸出的數據分布符合高斯分布為N(0,1);②把5×5卷積核分解為串行的兩個3×3 的卷積核,既降低了參數量,也提升了運算速度;③使用分解的思想,把n×n的卷積核分解為1×n 和n×1 的卷積核,這樣做可以降低參數量,使得網絡深度進一步增加,增強網絡的非線性。
(1)數據收集
本文收集了2668 例帶標簽的病例,其中每一例中帶有4 到12 張不等的早產兒眼底圖片,圖2 展示了一例病例,從圖中可以看出每一例病例中包含的圖片是從不同角度拍攝,在診斷時需要綜合多張圖片得出最終的診斷結論。表1 展示了本文使用的訓練集、驗證集和測試集劃分。

圖2 病例展示

表1 數據集劃分
在輸入到神經網絡之前,本文使用預處理方法對輸入數據進行預處理。首先,對圖片進行色彩歸一化,公式如式(1)所示。

其中,mean( R )、mean( G )、mean( B )分別對應當前圖片 R 通道,G 通道和 B 通道的平均像素值,r*、g*、b*對應整個數據集 R 通道、G 通道和 B 通道的平均像素值,這是一個超參數,預先可以計算出來的。通過色彩歸一化,對圖像的像素進行微調,加速模型的訓練,其次,嘗試數據增廣方法,本文采用的數據增廣方式包括平移、剪切、旋轉、縮放和翻轉。通過使用圖像增廣的方法,增加數據集中圖像的多樣性,增強模型的泛化能力。
(2)實驗方法
本文設計的網絡模型如圖3 所示。輸入圖像的大小為 320×240×3,圖像為 RGB 色彩模式,所以是 3 通道。特征提取器使用Inception-v2 的網絡結構,輸出1024 個大小為 10×8 的特征圖(Feature map),對于多張圖片(圖片1,…,圖片m),我們使用相同結構的特征提取器,且它們的權值參數是共享的。然后,我們對來自于不同圖片的特征圖進行融合,我們嘗試使用了取max 和取 mean 的方式。

圖3 網絡結構圖
取max 的方式為在特征提取器的最后一層,輸入的m 張圖片獲得了對應的m 組特征圖,假設每組特征圖的大小為(w,h,c),則對應這個三維矩陣,對同一個位置上的m 個值取最大值,最后組合為一個大小為(w,h,c)的特征圖,然后輸入到網絡中進行分類。取mean 與取max 的不同之處在于對同一個位置的m 個值不是取最大值,而是取平均值。
在融合的特征輸入到分類網絡中后,使用全局平均池化在10×8 大小的特征圖上進行求平均,輸出為1×1×1024 的特征圖。使用flatten 操作展開,形成1024個神經元。我們使用一個簡單的全連接網絡對經過特征提取和融合的特征向量完成分類,考慮到1024 直接輸出二分類結果,網絡輸入的參數遠遠大于輸出參數不能直接連接,同時為了保證參數量在一個適合的范圍內,本文在它們中間設置了一個64 個神經元的隱層。在輸出層后接入一個Softmax 層,把輸出值歸一化到0 到1 之間,作為對應類別的預測概率。在訓練時,我們使用交叉熵為損失函數。
(3)實驗結果
本文使用多個網絡作為特征提取器在數據集上進行訓練,得到的各模型的準確率如表2 所示。

表2 各模型在數據集上的準確率
從表中,Incption-v2 作為特征提取器,取max 作為特征融合方式獲得了最高的準確率,同時,Inception-v2相比其他模型,無論使用哪種特征融合方式均能夠獲得最高的準確率,說明Inception-v2 具有較強的對早產兒眼底圖片進行ROP 篩查的能力。其次,實驗結果表明取max 的特征融合方式相對于取mean 的方式,其具有較好的提取典型特征的能力,原因可能是在特征融合時,由于病灶特征并不是十分明顯,如果使用取mean 的操作,特征可能會被抵消,而使用取max 的操作可以達到銳化特征的作用。
本文在提出基于深度學習的ROP 智能診斷算法的基礎上,設計并構建了基于B/S 架構的ROP 智能篩查系統,系統實現了上傳病例,智能診斷以及生成診斷報告等一系列的功能。簡單介紹下系統的主要模塊。
系統的核心模塊為診斷模塊,對輸入的病例進行診斷并返回診斷結果,診斷結果包括圖片的成像質量,是否患有ROP,及其對應的可能性;系統的上傳模塊,提供用戶登錄,并接受用戶上傳的病例并存儲到數據庫中;系統的修正模塊,用戶對于自己上傳的病例可以給出自己的診斷結果,系統所使用的模型可以獲得用戶的診斷結果用于模型參數的微調,通過不斷更新模型的參數,來提高模型診斷的準確性,增強其泛化能力;系統的打印模塊,用戶可以打印病例對應的診斷報告,同時該模塊提供用戶對診斷報告修改的權限,用戶可以選擇自己的診斷結果或診斷模塊智能診斷的結果打印到診斷報告上,供患者參考。
圖4 展示了用戶上傳并進行診斷的流程。

圖4
本文針對目前ROP 篩查工作遇到的困境,提出了一種基于深度學習的ROP 自動篩查算法,算法使用基于CNN 的Inception 網絡作為特征提取器,經過特征融合后輸入到分類網絡中得到最終的分類結果,以此來判斷輸入病例是否具有ROP。并通過實驗驗證該方法具有較高的準確率。在此算法的基礎上,本文設計并構建了面向醫生的ROP 智能篩查系統,以幫助醫生開展ROP 篩查工作為目的,具有較大的現實意義。