王 劍樊 敏
(1.山西醫科大學汾陽學院 汾陽 032200)(2.西北工業大學計算機學院 西安 710129)
氣胸是常見的胸部疾病之一,如果不及時治療,可能會危及生命[1]。氣胸的發生有多種原因,如胸部受傷或其它一些肺部疾病,最常見的癥狀包括胸部突然劇痛或呼吸急促。由氣胸造成的肺部影像區域往往大小不一,而由此導致肺塌陷的大小又是治療氣胸的關鍵因素。然而,由于胸腔的復雜重疊結構,以及氣胸的位置和大小因患者而異,診斷該疾病是一項極具挑戰性的任務[2]。胸部X射線(CXR)是肺部疾病診斷的首選技術手段,然而,由于全世界放射科醫生的數量較少,一名放射科醫生每年必須分析數千張X光片[2],極容易造成診斷結果的偏差。不僅如此,醫療資源分布不均衡,也給醫療服務帶來了巨大的困擾。因此,利用人工智能手段,分析和處理醫學圖像數據,為醫生分析X射線照片提供參考意見,對于減輕放射科醫生的負擔,平衡醫療資源,具有極其重要的意義。
隨著深度學習技術的不斷發展,尤其以卷積神經網絡為代表的一系列模型在醫學圖像分類[3]和檢測[4]領域取得了不錯的成果。但是,這些研究大都使用的是NIH胸部X光數據集,以及未公開的數據集,很少有人使用CheXpert和Mick-CXR-JPG數據集。其次以卷積網絡為主的框架,雖然具有一定的空間感知,但是受胸片噪聲干擾,以及氣胸位置大小等不一的影響,最終使得模型的泛化能力不強,很難推廣到臨床應用當中。
為更全面地提取胸片的特征信息,提高氣胸診斷的準確率,本文提出基于卷積神經網絡(CNN)和Visual Transformer(VIT)的混合模型(CNN-VIT)來幫助診斷氣胸疾病。將VIT模型的MLP模塊進行改進,使其能夠達到更好的分類效果,并將其與卷積網絡相結合,同時提高全局特征與局部特征的提取效率。經實驗比對,本文所提出的方法具有更高的準確率。
由于現有的氣胸實驗大都使用的是NIH公開的ChestX-ray14胸部數據集[5],很少有人使用CheXpert[6]和MIMIC-CXR-JPG[7]數據集,因此這些數據集需要被進一步的探索和使用,以便用于氣胸任務的檢測。
ChestX-ray14數據集中的氣胸類數據集可以直接使用,而CheXpert數據集和MIMIC-CXR-JPG數據集中的氣胸類數據集需要完成一定的數據清洗工作才可以使用,主要原因是兩種數據集中含有側體位胸片,但是側體位胸片一般是用來做輔助分析的,而不直接用于疾病診斷。因此我們在做氣胸分類時,需要剔除側體位胸片。為此本文設計了一個基于AlexNet網絡的正位側位分類器。整個網絡共計八層,包括五個卷積層和三個全連接層,全連接層神經元個數分別為4096、4096、2。在卷積之后加入BN歸一化層,同時將激活函數由ReLU替換為GELU函數,通過實驗表明BN層能夠加快模型的收斂速度,GELU激活函數在準確率方面優于其它激活函數。
在分類之前首先需要人工進行標注,由于側體位和正體位的特征比較明顯,如在側體位的圖像中直方圖分布要明顯的偏向低灰度值部分,因此分類任務比較簡單,使用小批量的數據集即可達到較為滿意的分類結果。經過篩選和標注的數據集如表1所示。

表1 正位與側位分類數據集
訓練過程使用Pytorch框架提供的AlexNet網絡的預訓練模型,SGD作為優化器,學習率設置為0.001,dropout設置為0.5,訓練好的結果如圖1所示,驗證集準確率達到了0.9848。

圖1 損失及準確率曲線
CheXpert數據集中的氣胸數據經過正側位分類器后,不僅能剔除側體位圖片,同時還是能剔除一些質量比較差的胸片,如圖2所示。

圖2 分類器剔除的照片
綜上所述,為了使模型能夠在更大的數據集上進行訓練,得到更好的泛化能力,我們從以上的三個公開數據完成了氣胸數據集的收集,具體的經過清洗后,氣胸數據集達到了29161張,非氣胸數據集(包括正常樣例)達到了470284張,該數據集簡稱CCM-CXR數據集。后期模型的訓練將從該數據集內進行抽樣選擇。作為二分類任務,數據存在著嚴重的不平衡,因此在實驗時我們采用了上采樣、數據增強以及下采樣等方法以獲得新的平衡數據集。
EfficientNet模型[8~9]是Google公司于2019年提出的一種分類模型。本文使用的是EfficientNet-B0模型,該模型使用強化學習算法實現MnasNet模型生成基線模型EfficientNet-B0,然后使用復合縮放的方法,在EfficientNet-B0模型預先設定的內存和計算量的范圍內,同時對模型的深度、寬度、圖片尺寸的三個維度進行搜索改變,最終輸出EfficientNet模型。原始的Efficient模型設計輸出1000個分類,本文對模型進行改進,重新設計了分類層,并將其最終輸出類別改為兩個類別。具體的網絡結構如圖3所示。

圖3 改進的EfficientNet-B0網絡結構
Vision Transformer(VIT)[10]是基于Transformer網絡的,Transformer網絡[11]在NLP領域已經取得了非常成功的案例。Vision Transformer中只保留了編碼器部分,其主要結構如圖4所示。其中,Muti-Head Attention模塊是基于Self-Attention模塊的,多頭注意力模塊的作用是使網絡能夠提取更豐富的特征信息。具體公式如下所示:

圖4 編碼器結構

式(1)中Q表示查詢向量,K表示被查詢的向量,會與每個Q匹配,V表示特征信息,W表示權重矩陣。
VIT整體模型架構如圖5所示。首先通過Linear embedding層將圖像劃分為多個塊,然后將其展平,在嵌入位置編碼和類編碼,經過Transformer Encoder層輸出后,輸入到MLP Head模塊中,該模塊由全連接層和激活函數組成,主要用于特征分類,使用的激活函數為GELU,具體公式如下所示:

圖5 VIT模型框架

由于本文執行的是二分類任務,因此將最終輸出改為二分類。
本文提出的方法通過區分X胸片來診斷氣胸和非氣胸。總體流程如圖6所示。數據首先經過預處理,然后使用遷移學習分別訓練Efficient-B0和VIT兩個模型,最后將兩個模型的結果進行加權求和,得到最終的分類結果。

圖6 混合模型框架
混合模型可以在一定程度上提高模型的準確率[12]。VIT-CNN模型集成了兩種不同的特征提取方法,以提取圖像的特征,通過實驗最終將VIT模型的輸出結果乘以系數0.7,EfficientNet-B0模型的輸出結果乘以0.3,將兩個結果進行相加,可以得到更好的預測結果。
本文選用的VIT模型為VIT-L/16,諸多實驗表明,Transformer網絡在遷移學習下模型性能會更好,因此我們選用帶有ImageNet數據集預訓練權重的模型,該模型由23個自編碼模塊堆疊組成,為了使模型能夠更好地完成氣胸分類任務,我們刪除了原有的MLP模塊,并自定義了如圖7所示的MLP模塊。

圖7 自定義MLP模塊
首先將Transformer模塊的輸出進行展平,然后通過兩組由歸一化操作和全連接層組成的模塊,最后完成分類。使用BN層可以防止模型過渡擬合,并且使模型收斂加快。第一個全連接層由120個神經元組成,并使用GELU激活函數,GELU的非線性變化是一種符合預期的隨機正則變換方式,該函數可以為Transformer網絡模型的性能帶來提升,如GPT-2[13~14]、BERT[15~16]模型。
本文選取的數據集來自ChestX-ray14,CheXpert和MIMIC-CXR-JPG三個胸部開源數據集,總計收集499445張數據集,其中氣胸數據集為29161張作為正樣本,470284張非氣胸數據集作為負樣本,負樣本中包括正常樣本和非氣胸的其它疾病樣本,這樣有助于數據的多樣性,增強網絡的泛化能力。從收集的數據來看,正負樣本的比例為0.06:1,數據集存在嚴重的不均衡問題,數據集不均衡會影響網絡的訓練效果,以及網絡的評估結果。針對以上問題,本文使用了上采樣、實時數據擴增、下采樣相結合的方法,完成了數據的劃分。
對于正樣本數據集采用了上采樣和實時數據擴增的方法,首先使用上采樣方法將正樣本數據復制兩份,達到擴增數據集的目的,然而單純的復制并不能保證數據的多樣性,因此利用實時數據擴增方法增強數據的多樣性,包括隨機裁剪、左右上下翻轉、隨機旋轉、90°旋轉等方法。對于負樣本數據,利用下采樣方法,隨機抽取58322張圖像,使最終的正負樣本比例達到1∶1。具體的數據劃分情況如表2所示,90%的數據集為訓練集,5%的數據集為驗證集,5%的數據集為測試集。最后將劃分好的數據集的大小統一調整為224×224像素。對于后期實驗中的部分網絡如inception-V3網絡,則調整為299×299像素。

表2 氣胸分類數據集劃分
本文所用的實驗硬件環境是由一個5核Intel(R)Xeon(R)Silver 4210R CPU,兩個24G顯存的NVIDIA RTX3090顯卡和128G內存所組成。該模型使用上述硬件,并采用python3.8虛擬環境及Pytorch框架完成了所有的實驗測試項目。在訓練時,我們采用交叉熵損失函數,以及NovoGrad優化器[17],它是一種自適應隨機梯度下降方法,利用逐層歸一化方法使優化器對學習率和權重的初始化更具魯棒性。通過實驗表明,它與SGD優化器具有同等或者更好的性能,與Adam優化器相比,它在內存使用上減少了一半,并且更穩定,雖然模型的訓練時間減少了,而性能卻沒有下降。我們將學習率設置為0.001,批量大小設置為32,模型均訓練30個epoch,在訓練EfficientNet-B0和Vision Transformer時均使用預訓練的ImageNet權重作為初始化權重。
為了驗證所提方法的有效性,按照4.2節所述的實驗方法,EfficientNet-B0模型、VIT模型以及集成模型CNN-VIT模型在訓練集上的損失變化與驗證集上得準確率變化如圖8所示。集成模型在測試集上的準確率與精確率如表3所示,AUC值如圖9所示。

圖8 模型訓練曲線

表3 三種模型在測試集上的準確率、精確率及AUC值

圖9 集成模型測試集AUC值
從圖8中可以看出改進的VIT模型準確率要高于EfficientNet模型,由于使用了遷移學習初始化權重,因此模型在訓練集上的開始損失即是一個比較小的初始值。在驗證集上的開始準確率也是比較高的一個初始值,這有助于模型的快速收斂。從表3可以看出改進的VIT模型在測試集上的準確率比EfficientNet模型的準確率高3.6%,精確率高1.4。這表明改進的VIT模型要優于EfficientNet模型。集成到CNN-VIT模型后,準確率達到了99.00%,精確率達到了99.24%,AUC值達到了0.99,性能得到了進一步的提升。
為了更好地說明本文所提方法的分類能力,圖10為模型進行預測分類時的混淆矩陣。從混淆矩陣中可以看出,改進的VIT模型識別能力比較均衡,對于氣胸與非氣胸的識別精度相同。Efficient-Net模型在識別氣胸和非氣胸能力上存在差異,并且識別氣胸的能力更強。CNN-VIT集成模型,對非氣胸的識別精度與改進的VIT模型相同,但是對氣胸的識別能力更強,這使得集成模型在臨床診斷中可以更好地檢測氣胸任務,是符合實際應用的。


圖10 分類混淆矩陣
1)改進VIT模型實驗
為了驗證改進的VIT中每個模塊的有效性,在CCM-CXR數據集上進行了消融實驗,如表4所示。從表4的實驗1可以看出,當使用BN+1個全連接層+ReLU激活函數時,測試集的準確率下降了2.35%。實驗2可以看出,當減少了BN層時,測試集準確率下降到了95.37%。實驗3可以看出,當把激活函數替換為GeLU函數時,準確率相比于實驗2有所提高,達到了96.59%。實驗3可以看出,當把激活函數替換為GeLU函數時,準確率相比于實驗2有所提高,達到了96.59%。從實驗4可以看出,當使用BN+1個全連接層+GeLU激活函數時,測試集準確率又有了進一步的提高,準確率達到了97.21%,當使用兩個BN+1個全連接層+GeLU激活函數模塊堆疊時,準確率達到了98.81%,而去掉BN層時,準確率下降了1.7%。當我們繼續增加堆疊的層數時,模型在測試集上的準確率開始下降,這表明模型出現了過渡擬合的情形,因此我們最終決定使用兩個模塊堆疊的MLP結構。

表4 改進VIT-L/16模型消融實驗(二分類任務)
2)數據預處理實驗
本文的數據集CCM-CXR,來源于三個開源的胸部數據集,為了加快模型的收斂速度,提高模型的準確率,讓模型更好地符合臨床輔助診斷的實際需求,本文對數據集進行了數據清洗,具體的方法如第2節所述。在實際診斷中,當醫生遇到側位胸片以及質量較差的胸片時,醫生都會使用軟件進行相應的窗位調節,以便更好地識別氣胸。因此本文首先通過網絡清洗,剔除一些臟數據以及質量較差的數據,從表5中也可以看出,利用清洗過的數據集對模型進行訓練,其準確率的提升是顯著的,提高了3.84%,由此我們可以看到模型的改進固然重要,但是相比于前期的數據預處理也很重要,高質量的數據集可以加快模型的收斂,提高模型的準確率,增強模型的泛化能力。

表5 基于改進模型VIT-L/16的數據預處理消融實驗
為了進一步證明本文所提方法的有效性,本文將該模型與一些經典的分類模型進行了比較,在實驗中為了保證實驗條件的一致性,除個別網絡如Inception-V3需要調整圖像為299×299外,其余數據預處理方法均相同。具體表現如表6所示。從表中可以看出Inception-V3網絡的準確率較高,其可能的原因是Inception-V3網絡的圖像輸入分辨率高于其它模型輸入圖像的分辨率。整體來看本文所提方法的準確率高于其它模型,表現最佳,可以更好地幫助診斷氣胸疾病。

表6 與其它模型的比較
針對目前卷積網絡在醫學分類任務中其有限的局部感受野限制它們獲取全局信息的能力,本文提出了基于CNN和Transformer的混合深度學習框架,解決了傳統CNN忽略圖像內部長距離依賴關系,無法準確描述醫學圖像全局特征信息的問題。同時為了提高模型的泛化能力,依托三個開源的胸部數據集收集了包含50萬張胸片的數據集,從而提高了氣胸分類任務的準確率。將所提出的模型與其它模型進行比較,實驗結果表明所提模型能夠更好地識別氣胸任務,為臨床氣胸診斷提供了更加可靠的方法。但本文仍然存在一定的局限性,在實際的臨床診斷中,胸片作為診斷胸部疾病的方法,主要包括肺結節、肺炎、肺水腫、肺不張、新冠肺炎等,后續的工作將考慮胸部圖像的多分類任務,目前胸部圖像的多分類任務的準確率為90%,尚不能達到臨床診斷的實際需求,因此下一階段將利用深度學習混合框架進一步研究多分類任務,提高胸片圖像分類的準確率,為臨床的診斷提供更加可靠的方法。