鄧 棋,雷印杰,田 鋒
(四川大學 電子信息學院,成都 610065)
肺炎(Pneumonia)[1]作為一種危害人類健康的常見疾病,在0~5歲嬰幼兒以及65歲以上老年人的呼吸道疾病中尤為常見,且致死率逐年升高。根據世界衛生組織(World Health Organization,WHO)的統計,僅在2015年,因肺炎導致的兒童死亡人數就達到了92萬人,占全世界五歲以下兒童死亡人數的16%[2]。在中國2000—2010年5歲以下兒童死亡原因中,肺炎排在第2位[3]。我國每年約有250萬例肺炎發生,12萬5千人因肺炎死亡,在各種致死病因中占第5位[4],而由于老人年身體素質和免疫系統能力下降,在我國患有肺炎的人群中,老年人所占的比例就達到了70%[5]。
在傳統肺炎診斷過程中,肺炎影像的判斷主要依靠有經驗的醫生,但由于人工經驗的差別準確率得不到保證[6]。隨著計算機與數字圖像處理技術的發展,計算機輔助診斷系統(Computer-Aided Diagnosis, CAD)[7]逐漸被引入臨床,并為放射科醫生判斷CT圖像提供參考意見。針對肺炎影像的自動識別問題,中外學者們提出了許多不同的方法。岳路等[8]利用決策樹算法對200例小兒肺炎進行分類,取得了準確率80%的成績。決策樹(Decision Tree)[9]是一種經典的機器學習分類方法,通過樹形結構完成類型劃分。決策樹算法的優點是算法簡單易于理解,可處理多種不同類型的分類問題,但是當數據量過大,容易產生過擬合問題,同時,在面對復雜數據時分類效果不是太好。Jun等[10]利用支持向量機(Support Vector Machine, SVM)算法[11]對間質性肺炎與非特異性肺炎進行分類,與放射科醫生分類結果進行比較,準確率相差在5%~6%。邵欣蔚[12]也利用SVM算法對兒童社區獲得性肺炎(Community Acquired Pneumonia, CAP)進行分類,在早期診斷問題上取得了準確率90%的良好效果。SVM算法作為一種優秀的機器學習方法,利用高維映射解決了許多線性不可分問題,在圖像、文本信息分類等方面取得了十分良好的效果,但當數據量過大時常常導致模型計算量過大、效率降低,魯棒性與準確率得不到保證。近年來,隨著人工智能和大數據應用的發展,計算機輔助診斷技術越來越多地被應用到臨床。隨著深度學習(Deep Learning)[13]這一概念的興起,一大批以卷積神經網絡(Convolutional Neural Network, CNN)[14]為代表的深度學習方法開始出現。劉長征等[15]利用一個7層的卷積神經網絡對400例肺炎患者的CT影像進行分類,識別準確率比SVM算法提高了5.7%。由于卷積神經網絡“自主”學習的特性,避免了機器學習中人工提取圖像特征的局限性,大幅度提高了識別準確率。為進一步提高卷積神經網絡的識別準確率,通常的做法是增大數據集、增加神經網絡層數。Rajpurkar等[16]提出一種121層的卷積神經網絡,在總量為112 120張帶標記的肺部X光圖像數據集ChestX-ray14上進行訓練,在檢測14種不同肺部疾病過程中,有11種取得了與放射科醫生相似或更優的表現。
雖然通過增加網絡層數獲得了更加優異的分類效果,但是相應網絡參數數量比淺層網絡增加了幾十甚至幾百倍,內存占用也由幾十兆提升至幾百甚至上千兆,對系統資源的占用比淺層網絡提高了很多。深度神經網絡對系統性能較高的要求,給客戶端部署造成了很大的阻礙,而采用淺層網絡的訓練結果往往不能夠達到實際應用的要求。
針對以上的問題,本文提出一種基于知識蒸餾(Knowledge Distillation)方法[17]優化的卷積神經網絡,在減少系統資源占用的同時提高網絡對于肺炎識別的能力。根據肺部CT圖像特點,選擇AlexNet與InceptionV3模型。AlexNet模型在ILSVRC2012競賽中獲得冠軍,在Top- 5錯誤率上取得了15.3%的成績;InceptionV3模型則在ILSVRC2014將Top- 5錯誤率降到了4.2%。兩者相比,前者網絡深度為8層,而后者為159層。在訓練時采用遷移學習(Transfer Learning)方法避免因訓練集過小引起的過擬合問題,將InceptionV3預訓練模型作為Teacher Module,AlexNet模型作為Student Module,將前者的輸出作為后者訓練的監督信息,使訓練完成后的AlexNet模型具有與InceptionV3模型相近的識別能力,同時減少對圖像處理器(Graphics Processing Unit, GPU)的占用。
深度學習相比傳統的簡單學習,其區別就在于前者可以通過一種多層的非線性結構“自主”學習,來表征數據的特征,而后者大多數需要人工提取特征信息,且因人工提取的特征往往不能很好地表征事物的本質,故學習效果難以提高。相比于簡單學習常用的決策樹、SVM等方法,深度學習通過多層網絡結構分層學習數據的特征,再單獨對每一層的分類信息進行微調,可以以簡單結構完成對復雜樣本的描述。卷積神經網絡是深度學習在圖像處理領域的成功應用,作為一種具有深度結構的前饋型神經網絡,一般由卷積層、池化層、全連接層與輸出層組成。相比于傳統的人工神經網絡,兩者主要的區別就在于前者通過卷積核以及權值共享大幅度降低了參數數量與訓練難度。再結合大量數據的訓練,使卷積神經網絡突破了傳統網絡的限制,在圖像處理領域取得了很大的進展。
針對任務特點,本文首先比較了幾種目前較為流行的深度學習網絡架構,如AlexNet[18]、VGG16[19]、ResNet18[20]、ResNet34[20]、InceptionV3[21]。它們在錯誤率、參數數量、網絡深度等性能指標的比較如表1所示。

表1 各模型性能對比 Tab. 1 Performance comparison of different models
可以看出,在評價識別準確率指標的參數Top- 1錯誤率上,InceptionV3模型比其他模型具有較大的優勢。其錯誤率比AlexNet模型減小了近1/2,比其他模型也有不同程度的下降。作為Google在2014年開發的GoogLeNet[22]模型基礎上改進的版本,InceptionV3由5個卷積層、3個池化層、1個全連接層以及11個Inception模塊組成。由表1可以看出,雖然InceptionV3模型的網絡深度約為AlexNet模型的20倍,但得益于其Factorization操作,其參數數量比后者少了3 850萬。在教師模型的選擇上,主要考慮的參數為模型的識別準確率,因此本文選擇InceptionV3模型作為教師模型。
在學生模型的選擇上,主要考慮模型的參數數量與計算量,參數數量對于內存要求影響較大,計算量則對GPU運算能力要求有較大影響。AlexNet作為上表中層數最淺的網絡,是由加拿大多倫多大學教授Hinton等[18]在2012年提出的深度神經網絡模型,通過5層卷積層與3層全連接層構成。在計算量方面,AlexNet僅有InceptionV3模型的1/7,VGG16模型的1/21。雖然參數數量指標上沒有特別的優勢,考慮到實際應用場景中用戶端GPU運算能力普遍較弱的情況,本文選用AlexNet模型作為學生模型。
在醫學影像分類領域,隨著深度學習的崛起,許多層數更深、結構更加復雜的卷積神經網絡開始在這一領域得到應用。如Rajpurkar等[16]提出的121層神經網絡,Kermany等[23]提出的159層神經網絡。一般來說,層數越多結構越復雜的神經網絡,往往需要消耗更多的系統資源。知識蒸餾是由多倫多大學教授Hinton等[17]在2015年提出的一種知識遷移的技術,常用于網絡模型壓縮。本文考慮實際應用中用戶端計算機性能的限制,將知識蒸餾方法引入到醫學影像分類領域,在壓縮模型的同時提高模型的分類性能。
本文選用兩個大小不同的模型,將結構復雜、層數更深的InceptionV3模型作為教師模型(Teacher Module),結構簡單、層數更淺的AlexNet模型作為學生模型(Student Module),兩種模型的網絡結構參數如表2、表3所示。表2中編號為8~18層網絡結構為InceptionV3模型特有的Inception模塊,每一個模塊由多個層數不同的卷積層構成,所以有多個尺寸不同的卷積核存在。在表2、表3中的“—”符號表示該網絡層中沒有此參數。首先,單獨訓練教師模型,取得較為理想的結果后固化其訓練參數;其次,訓練學生模型,在訓練過程中將教師模型的輸出除以參數T,再經過softmax變換后作為參數,傳遞給學生模型,起到提高后者的泛化與識別能力的作用。

表2 教師模型網絡參數 Tab. 2 Network parameters of teacher module

表3 學生模型網絡參數 Tab. 3 Network parameters of student module
如圖1所示,先將教師模型InceptionV3的訓練結果用溫度參數T“軟化”,再經過softmax變換得到軟化后的概率分布—軟目標(soft target),計算公式如下:
(1)
其中:qi為教師模型給出的每一類的可能性;zi為教師模型最后一層的神經元;T為調節參數;在軟目標中包含了許多未標記但對于分類十分有用的信息,因此通過提取教師模型中的軟目標可以大幅度提高學生網絡的識別能力。

圖1 知識蒸餾網絡結構Fig. 1 Network structure of knowledge distillation
訓練過程中,調節參數T的大小對訓練結果有較大的影響,一般設置為大于0的整數。此處選擇1、10、20、30、40、50作為實驗參數,比較Student Module在參數T不同大小下的訓練結果,如表4。可以看出,參數設為1時,實驗取得的準確率、特異性以及靈敏度等性能指標均優于其他選項,故之后的訓練過程中,設置調節參數T的大小為1。

表4 不同參數T的實驗結果 Tab. 4 Experimental results with different parameter T
在訓練學生模型AlexNet時除了正常訓練結果——硬目標(hard target)外,同樣地采用上面的方法得到一個soft target。在計算損失函數時將兩者結合,計算公式如下:
L=Lsoft
(2)
其中:L為訓練學生模型最終使用的loss,Lsoft是使用溫度參數T軟化后的loss。在實驗中,采用Lsoft作為最終訓練學生模型的loss。
訓練卷積神經網絡分類肺炎圖像時常常會有過擬合問題,本文中為提高訓練效果,降低過擬合現象發生的幾率,決定采用遷移學習[24]的方法,讓卷積模型由ImageNet數據集訓練過后,保留訓練參數并刪除原來的全連接層,在新建的全連接層上隨機初始化參數并訓練。實驗結果表明,采用遷移學習方法能夠有效地防止過擬合問題。
本文采用教師模型“教”學生模型的方法,讓學生模型學習教師模型的訓練參數,讓小網絡有了大網絡的識別能力,起到了模型壓縮的作用,訓練整體流程如下。
輸入:實驗所用的數據集D。
輸出:教師模型與學生模型的預測結果。
1)將實驗所用的數據集D中所有圖片合并,按一定的比例隨機分為訓練集DTR、測試集DTE與驗證集DVE。
2)將訓練集DTR、測試集DTE與驗證集DVE中的圖片采用拉伸縮放的形式,縮放至適應教師模型InceptionV3與學生模型AlexNet的大小。
3)使用訓練集DTR訓練教師模型InceptionV3,使用驗證集DVE與測試集DTE實時測量InceptionV3的分類性能并更新其參數。
4)將訓練好的教師模型參數固化,獲得其輸出Z。
5)使用訓練集DTR訓練學生模型,在訓練過程中將Z作為監督信息用于loss計算,使用驗證集DVE實時測量AlexNet的分類性能并更新其參數。
6)將訓練好的AlexNet模型參數固化,利用測試集DTE獲得相應的預測結果。
實驗在一臺桌面級高性能GPU工作站上進行,運行系統為Linux,操作平臺為ubuntu 16.04。工作站配備一顆Intel Xeon E5- 1650 v4六核心處理器,主頻為3.6 GHz,內存32 GB,GPU為Nvidia Geforce GTX 1080Ti,顯存11 GB。實驗使用的深度學習框架為PyTorch,運行平臺為JetBrains公司提供的Python語言開發工具Pycharm。PyTorch是由Facebook公司的研發團隊開發的一款針對深度學習與深度神經網絡編程的工具包,使用PyTorch構建神經網絡,用戶可以方便地調用相關的函數工具包,而不需要自己編寫所有的實現算法,從而節省了大量時間,提高了學習效率。
實驗采用的數據來自廣州市婦女兒童醫學中心,由醫學中心患者常規臨床檢測時拍攝的醫學影像組成,并由美國加州大學圣地亞哥分校研究員Daniel Kermany等在2018年發布于開源數據庫Mendeley。該數據集中包含了總量為5 856張的人體胸部X光照片,圖像格式為JPEG,數據分布情況如表5所示。

表5 數據集成分分布 Tab. 5 Component distribution of datasets
胸部X光照片作為肺炎診斷的重要依據,照片的質量對于診斷結果的影響很大,因此,數據集中的照片首先由有經驗的醫生初步篩選,得到質量較為穩定的圖像后,再由相關專家進行人工標記。數據集中的X光照片分為訓練集與測試集,訓練集的人工標記由兩位肺部疾病專家完成。為避免因人工標記造成的誤差,保證檢測效果,測試集的標記由另一位專家完成。測試集與訓練集X光照片的數量比例為約為1∶10,同時為滿足InceptionV3與AlexNet模型的輸入要求,采用拉伸縮放的方式,將X光照片的大小分別調整為299×299和224×224像素尺寸,如圖2所示。

圖2 胸部X光圖像示例Fig. 2 Examples of chest X-ray images
在實驗過程中,訓練InceptionV3模型采用遷移學習的方式,將全連接層的參數隨機初始化后開始訓練。將學習率設置為5×10-3,并設置衰減率為0.9,每隔7個epoch衰減一次。分類函數使用softmax函數,損失函數則使用交叉熵函數(Cross Entropy Loss),優化方法采用隨機梯度下降(Stochastic Gradient Descent,SGD)算法。雖然常用的優化方法為Adam,但它也有收斂過快難以達到最優解的問題。在本實驗中經過比較發現,采用SGD能夠取得更優的結果。在AlexNet模型訓練過程中,將學習率設置為2×10-4,衰減率設為0.9,采用與InceptionV3模型相同的遷移學習方法。損失函數使用交叉熵函數,分類函數使用softmax,優化方法同樣采用隨機梯度下降算法。
對于醫學影像分類,評價其性能的指標一般有三個,分別為準確率(Accuracy,Acc)、特異性(Specificity)與靈敏度(Sensitivity)。準確率即預測患者是否患有肺炎與實際結果之比,體現模型的預測能力;特異性又被稱為正陽率(True Positive Rate,TPR),即將正常患者預測為正常的概率,正陽率越高則誤診的概率越低;靈敏度又被稱為正陰率(True Negative Rate,TNR),即將肺炎患者預測為患有肺炎的概率,正陰率越高則漏診的概率越低。
計算準確率(Acc)、特異性(TPR)與靈敏度(TNR)的公式如下:
Acc=(TP+TN)/(TP+TN+FN+TN)
(3)
TPR=TP/(TP+FN)
(4)
TNR=TN/(FP+TN)
(5)
其中:TP、TN、FP、FN分別代表正陽性、正陰性、假陽性與假陰性。同時,為了全面衡量優化前后的AlexNet以及InceptionV3模型的性能,采用的指標還有顯存占用量、GPU使用率及訓練時間。
針對分類任務特點,實驗首先比較了幾種較為流行的深度學習模型對本文所用數據集的識別準確率及損失。其中,損失為交叉熵函數的輸出,主要體現預測值與真實值的概率分布情況。在訓練過程中損失常常作為訓練結果的參考,通常在0.02及以下時說明分類器已經取得了較好的訓練效果。選取的模型有AlexNet、VGG16[19]、ResNet18[20]、ResNet34[20]、InceptionV3,在同一訓練集與測試集下,它們的分類性能如表6所示。

表6 各模型識別準確率 Tab. 6 Recognition accuracy of each model
經過比較后發現,具有inception結構的InceptionV3模型在肺炎CT圖像分類上表現更加優異。故本文選取了InceptionV3模型作為優化方法中的Teacher Module,同時選取網絡結構更加簡單的AlexNet作為Student Module。在訓練過程中,比較兩者對于系統資源的占用情況,如表7所示。可以看出,與前者相比,AlexNet模型無論在顯存占用、GPU使用率還是訓練時間上都更加具有優勢。

表7 AlexNet與InceptionV3模型系統資源占用情況 Tab. 7 Occupation of system resources of AlexNet and Inception V3 models
訓練結束后,比較由本文方法優化后的AlexNet(以下稱AlexNet_S)與優化前的AlexNet模型對肺炎CT圖像分類性能的差異,同時使用InceptionV3模型(表8中稱為Teacher Module)作為參考標準。可以看出,優化后的模型對肺炎的識別準確率有了明顯的提高,在衡量模型性能的參數特異性與靈敏度上也有一定的提升。
如表8所示,AlexNet_S模型與InceptionV3模型相比,前者作為Student Module,比后者節省了近一半的顯存,使其能夠更加靈活地部署在擁有不同大小顯存的計算機上;同時,GPU使用率下降了51個百分點,使Student Module能夠應用于GPU計算能力較弱的計算機上,讓神經網絡的可移植性大幅度提高。

表8 優化前后AlexNet模型性能對比 單位:% Tab. 8 Performance comparison of AlexNet model before and after optimization unit:%
在衡量模型性能的指標方面,如表8所示,AlexNet_S模型比未優化的AlexNet模型在衡量模型分類能力的指標準確率上,前者比后者提高了4.1個百分點,比InceptionV3模型提高了2.39個百分點。在肺炎診斷的過程中,及時發現及時治療對于患者最為有利,而靈敏度越高,模型對于肺炎判別的漏診率越低。AlexNet_S模型比AlexNet模型的靈敏度提高了1.97個百分點,且與InceptionV3模型在靈敏度參數上性能相同。特異性作為衡量模型正確識別正常患者能力的重要指標,特異性越高,模型對于肺炎判別的誤診率越低。在特異性這一指標上,AlexNet_S模型比AlexNet模型提高了7.45個百分點,比InceptionV3提高了6.41個百分點。
綜合實驗結果,可以看出通過知識蒸餾的方法能夠有效增強學生模型的識別能力,提高其分類性能。學生模型在特異性指標上比原有模型大幅度提高,在識別準確率以及靈敏度指標上達到甚至超過教師模型。
針對醫學影像分類特點,本文提出了一種使用卷積神經網絡實現肺炎CT圖像分類的方法。利用兩種結構、深度不同的神經網絡模型AlexNet與InceptionV3,使用知識蒸餾方法得到優化后的模型AlexNet_S,在分類性能上接近甚至超過InceptionV3模型的同時,大幅度降低了模型對系統資源的需求。在今后的工作中,進一步提高教師模型的性能,同時減少學生模型對系統資源的需求可以作為未來研究的方向。