王 劍樊 敏
(1.山西醫(yī)科大學(xué)汾陽(yáng)學(xué)院 汾陽(yáng) 032200)(2.西北工業(yè)大學(xué)計(jì)算機(jī)學(xué)院 西安 710129)
氣胸是常見(jiàn)的胸部疾病之一,如果不及時(shí)治療,可能會(huì)危及生命[1]。氣胸的發(fā)生有多種原因,如胸部受傷或其它一些肺部疾病,最常見(jiàn)的癥狀包括胸部突然劇痛或呼吸急促。由氣胸造成的肺部影像區(qū)域往往大小不一,而由此導(dǎo)致肺塌陷的大小又是治療氣胸的關(guān)鍵因素。然而,由于胸腔的復(fù)雜重疊結(jié)構(gòu),以及氣胸的位置和大小因患者而異,診斷該疾病是一項(xiàng)極具挑戰(zhàn)性的任務(wù)[2]。胸部X射線(CXR)是肺部疾病診斷的首選技術(shù)手段,然而,由于全世界放射科醫(yī)生的數(shù)量較少,一名放射科醫(yī)生每年必須分析數(shù)千張X光片[2],極容易造成診斷結(jié)果的偏差。不僅如此,醫(yī)療資源分布不均衡,也給醫(yī)療服務(wù)帶來(lái)了巨大的困擾。因此,利用人工智能手段,分析和處理醫(yī)學(xué)圖像數(shù)據(jù),為醫(yī)生分析X射線照片提供參考意見(jiàn),對(duì)于減輕放射科醫(yī)生的負(fù)擔(dān),平衡醫(yī)療資源,具有極其重要的意義。
隨著深度學(xué)習(xí)技術(shù)的不斷發(fā)展,尤其以卷積神經(jīng)網(wǎng)絡(luò)為代表的一系列模型在醫(yī)學(xué)圖像分類(lèi)[3]和檢測(cè)[4]領(lǐng)域取得了不錯(cuò)的成果。但是,這些研究大都使用的是NIH胸部X光數(shù)據(jù)集,以及未公開(kāi)的數(shù)據(jù)集,很少有人使用CheXpert和Mick-CXR-JPG數(shù)據(jù)集。其次以卷積網(wǎng)絡(luò)為主的框架,雖然具有一定的空間感知,但是受胸片噪聲干擾,以及氣胸位置大小等不一的影響,最終使得模型的泛化能力不強(qiáng),很難推廣到臨床應(yīng)用當(dāng)中。
為更全面地提取胸片的特征信息,提高氣胸診斷的準(zhǔn)確率,本文提出基于卷積神經(jīng)網(wǎng)絡(luò)(CNN)和Visual Transformer(VIT)的混合模型(CNN-VIT)來(lái)幫助診斷氣胸疾病。將VIT模型的MLP模塊進(jìn)行改進(jìn),使其能夠達(dá)到更好的分類(lèi)效果,并將其與卷積網(wǎng)絡(luò)相結(jié)合,同時(shí)提高全局特征與局部特征的提取效率。經(jīng)實(shí)驗(yàn)比對(duì),本文所提出的方法具有更高的準(zhǔn)確率。
由于現(xiàn)有的氣胸實(shí)驗(yàn)大都使用的是NIH公開(kāi)的ChestX-ray14胸部數(shù)據(jù)集[5],很少有人使用CheXpert[6]和MIMIC-CXR-JPG[7]數(shù)據(jù)集,因此這些數(shù)據(jù)集需要被進(jìn)一步的探索和使用,以便用于氣胸任務(wù)的檢測(cè)。
ChestX-ray14數(shù)據(jù)集中的氣胸類(lèi)數(shù)據(jù)集可以直接使用,而CheXpert數(shù)據(jù)集和MIMIC-CXR-JPG數(shù)據(jù)集中的氣胸類(lèi)數(shù)據(jù)集需要完成一定的數(shù)據(jù)清洗工作才可以使用,主要原因是兩種數(shù)據(jù)集中含有側(cè)體位胸片,但是側(cè)體位胸片一般是用來(lái)做輔助分析的,而不直接用于疾病診斷。因此我們?cè)谧鰵庑胤诸?lèi)時(shí),需要剔除側(cè)體位胸片。為此本文設(shè)計(jì)了一個(gè)基于AlexNet網(wǎng)絡(luò)的正位側(cè)位分類(lèi)器。整個(gè)網(wǎng)絡(luò)共計(jì)八層,包括五個(gè)卷積層和三個(gè)全連接層,全連接層神經(jīng)元個(gè)數(shù)分別為4096、4096、2。在卷積之后加入BN歸一化層,同時(shí)將激活函數(shù)由ReLU替換為GELU函數(shù),通過(guò)實(shí)驗(yàn)表明BN層能夠加快模型的收斂速度,GELU激活函數(shù)在準(zhǔn)確率方面優(yōu)于其它激活函數(shù)。
在分類(lèi)之前首先需要人工進(jìn)行標(biāo)注,由于側(cè)體位和正體位的特征比較明顯,如在側(cè)體位的圖像中直方圖分布要明顯的偏向低灰度值部分,因此分類(lèi)任務(wù)比較簡(jiǎn)單,使用小批量的數(shù)據(jù)集即可達(dá)到較為滿意的分類(lèi)結(jié)果。經(jīng)過(guò)篩選和標(biāo)注的數(shù)據(jù)集如表1所示。
表1 正位與側(cè)位分類(lèi)數(shù)據(jù)集
訓(xùn)練過(guò)程使用Pytorch框架提供的AlexNet網(wǎng)絡(luò)的預(yù)訓(xùn)練模型,SGD作為優(yōu)化器,學(xué)習(xí)率設(shè)置為0.001,dropout設(shè)置為0.5,訓(xùn)練好的結(jié)果如圖1所示,驗(yàn)證集準(zhǔn)確率達(dá)到了0.9848。
圖1 損失及準(zhǔn)確率曲線
CheXpert數(shù)據(jù)集中的氣胸?cái)?shù)據(jù)經(jīng)過(guò)正側(cè)位分類(lèi)器后,不僅能剔除側(cè)體位圖片,同時(shí)還是能剔除一些質(zhì)量比較差的胸片,如圖2所示。
圖2 分類(lèi)器剔除的照片
綜上所述,為了使模型能夠在更大的數(shù)據(jù)集上進(jìn)行訓(xùn)練,得到更好的泛化能力,我們從以上的三個(gè)公開(kāi)數(shù)據(jù)完成了氣胸?cái)?shù)據(jù)集的收集,具體的經(jīng)過(guò)清洗后,氣胸?cái)?shù)據(jù)集達(dá)到了29161張,非氣胸?cái)?shù)據(jù)集(包括正常樣例)達(dá)到了470284張,該數(shù)據(jù)集簡(jiǎn)稱(chēng)CCM-CXR數(shù)據(jù)集。后期模型的訓(xùn)練將從該數(shù)據(jù)集內(nèi)進(jìn)行抽樣選擇。作為二分類(lèi)任務(wù),數(shù)據(jù)存在著嚴(yán)重的不平衡,因此在實(shí)驗(yàn)時(shí)我們采用了上采樣、數(shù)據(jù)增強(qiáng)以及下采樣等方法以獲得新的平衡數(shù)據(jù)集。
EfficientNet模型[8~9]是Google公司于2019年提出的一種分類(lèi)模型。本文使用的是EfficientNet-B0模型,該模型使用強(qiáng)化學(xué)習(xí)算法實(shí)現(xiàn)MnasNet模型生成基線模型EfficientNet-B0,然后使用復(fù)合縮放的方法,在EfficientNet-B0模型預(yù)先設(shè)定的內(nèi)存和計(jì)算量的范圍內(nèi),同時(shí)對(duì)模型的深度、寬度、圖片尺寸的三個(gè)維度進(jìn)行搜索改變,最終輸出EfficientNet模型。原始的Efficient模型設(shè)計(jì)輸出1000個(gè)分類(lèi),本文對(duì)模型進(jìn)行改進(jìn),重新設(shè)計(jì)了分類(lèi)層,并將其最終輸出類(lèi)別改為兩個(gè)類(lèi)別。具體的網(wǎng)絡(luò)結(jié)構(gòu)如圖3所示。
圖3 改進(jìn)的EfficientNet-B0網(wǎng)絡(luò)結(jié)構(gòu)
Vision Transformer(VIT)[10]是基于Transformer網(wǎng)絡(luò)的,Transformer網(wǎng)絡(luò)[11]在NLP領(lǐng)域已經(jīng)取得了非常成功的案例。Vision Transformer中只保留了編碼器部分,其主要結(jié)構(gòu)如圖4所示。其中,Muti-Head Attention模塊是基于Self-Attention模塊的,多頭注意力模塊的作用是使網(wǎng)絡(luò)能夠提取更豐富的特征信息。具體公式如下所示:
圖4 編碼器結(jié)構(gòu)
式(1)中Q表示查詢(xún)向量,K表示被查詢(xún)的向量,會(huì)與每個(gè)Q匹配,V表示特征信息,W表示權(quán)重矩陣。
VIT整體模型架構(gòu)如圖5所示。首先通過(guò)Linear embedding層將圖像劃分為多個(gè)塊,然后將其展平,在嵌入位置編碼和類(lèi)編碼,經(jīng)過(guò)Transformer Encoder層輸出后,輸入到MLP Head模塊中,該模塊由全連接層和激活函數(shù)組成,主要用于特征分類(lèi),使用的激活函數(shù)為GELU,具體公式如下所示:
圖5 VIT模型框架
由于本文執(zhí)行的是二分類(lèi)任務(wù),因此將最終輸出改為二分類(lèi)。
本文提出的方法通過(guò)區(qū)分X胸片來(lái)診斷氣胸和非氣胸??傮w流程如圖6所示。數(shù)據(jù)首先經(jīng)過(guò)預(yù)處理,然后使用遷移學(xué)習(xí)分別訓(xùn)練Efficient-B0和VIT兩個(gè)模型,最后將兩個(gè)模型的結(jié)果進(jìn)行加權(quán)求和,得到最終的分類(lèi)結(jié)果。
圖6 混合模型框架
混合模型可以在一定程度上提高模型的準(zhǔn)確率[12]。VIT-CNN模型集成了兩種不同的特征提取方法,以提取圖像的特征,通過(guò)實(shí)驗(yàn)最終將VIT模型的輸出結(jié)果乘以系數(shù)0.7,EfficientNet-B0模型的輸出結(jié)果乘以0.3,將兩個(gè)結(jié)果進(jìn)行相加,可以得到更好的預(yù)測(cè)結(jié)果。
本文選用的VIT模型為VIT-L/16,諸多實(shí)驗(yàn)表明,Transformer網(wǎng)絡(luò)在遷移學(xué)習(xí)下模型性能會(huì)更好,因此我們選用帶有ImageNet數(shù)據(jù)集預(yù)訓(xùn)練權(quán)重的模型,該模型由23個(gè)自編碼模塊堆疊組成,為了使模型能夠更好地完成氣胸分類(lèi)任務(wù),我們刪除了原有的MLP模塊,并自定義了如圖7所示的MLP模塊。
圖7 自定義MLP模塊
首先將Transformer模塊的輸出進(jìn)行展平,然后通過(guò)兩組由歸一化操作和全連接層組成的模塊,最后完成分類(lèi)。使用BN層可以防止模型過(guò)渡擬合,并且使模型收斂加快。第一個(gè)全連接層由120個(gè)神經(jīng)元組成,并使用GELU激活函數(shù),GELU的非線性變化是一種符合預(yù)期的隨機(jī)正則變換方式,該函數(shù)可以為T(mén)ransformer網(wǎng)絡(luò)模型的性能帶來(lái)提升,如GPT-2[13~14]、BERT[15~16]模型。
本文選取的數(shù)據(jù)集來(lái)自ChestX-ray14,CheXpert和MIMIC-CXR-JPG三個(gè)胸部開(kāi)源數(shù)據(jù)集,總計(jì)收集499445張數(shù)據(jù)集,其中氣胸?cái)?shù)據(jù)集為29161張作為正樣本,470284張非氣胸?cái)?shù)據(jù)集作為負(fù)樣本,負(fù)樣本中包括正常樣本和非氣胸的其它疾病樣本,這樣有助于數(shù)據(jù)的多樣性,增強(qiáng)網(wǎng)絡(luò)的泛化能力。從收集的數(shù)據(jù)來(lái)看,正負(fù)樣本的比例為0.06:1,數(shù)據(jù)集存在嚴(yán)重的不均衡問(wèn)題,數(shù)據(jù)集不均衡會(huì)影響網(wǎng)絡(luò)的訓(xùn)練效果,以及網(wǎng)絡(luò)的評(píng)估結(jié)果。針對(duì)以上問(wèn)題,本文使用了上采樣、實(shí)時(shí)數(shù)據(jù)擴(kuò)增、下采樣相結(jié)合的方法,完成了數(shù)據(jù)的劃分。
對(duì)于正樣本數(shù)據(jù)集采用了上采樣和實(shí)時(shí)數(shù)據(jù)擴(kuò)增的方法,首先使用上采樣方法將正樣本數(shù)據(jù)復(fù)制兩份,達(dá)到擴(kuò)增數(shù)據(jù)集的目的,然而單純的復(fù)制并不能保證數(shù)據(jù)的多樣性,因此利用實(shí)時(shí)數(shù)據(jù)擴(kuò)增方法增強(qiáng)數(shù)據(jù)的多樣性,包括隨機(jī)裁剪、左右上下翻轉(zhuǎn)、隨機(jī)旋轉(zhuǎn)、90°旋轉(zhuǎn)等方法。對(duì)于負(fù)樣本數(shù)據(jù),利用下采樣方法,隨機(jī)抽取58322張圖像,使最終的正負(fù)樣本比例達(dá)到1∶1。具體的數(shù)據(jù)劃分情況如表2所示,90%的數(shù)據(jù)集為訓(xùn)練集,5%的數(shù)據(jù)集為驗(yàn)證集,5%的數(shù)據(jù)集為測(cè)試集。最后將劃分好的數(shù)據(jù)集的大小統(tǒng)一調(diào)整為224×224像素。對(duì)于后期實(shí)驗(yàn)中的部分網(wǎng)絡(luò)如inception-V3網(wǎng)絡(luò),則調(diào)整為299×299像素。
表2 氣胸分類(lèi)數(shù)據(jù)集劃分
本文所用的實(shí)驗(yàn)硬件環(huán)境是由一個(gè)5核Intel(R)Xeon(R)Silver 4210R CPU,兩個(gè)24G顯存的NVIDIA RTX3090顯卡和128G內(nèi)存所組成。該模型使用上述硬件,并采用python3.8虛擬環(huán)境及Pytorch框架完成了所有的實(shí)驗(yàn)測(cè)試項(xiàng)目。在訓(xùn)練時(shí),我們采用交叉熵?fù)p失函數(shù),以及NovoGrad優(yōu)化器[17],它是一種自適應(yīng)隨機(jī)梯度下降方法,利用逐層歸一化方法使優(yōu)化器對(duì)學(xué)習(xí)率和權(quán)重的初始化更具魯棒性。通過(guò)實(shí)驗(yàn)表明,它與SGD優(yōu)化器具有同等或者更好的性能,與Adam優(yōu)化器相比,它在內(nèi)存使用上減少了一半,并且更穩(wěn)定,雖然模型的訓(xùn)練時(shí)間減少了,而性能卻沒(méi)有下降。我們將學(xué)習(xí)率設(shè)置為0.001,批量大小設(shè)置為32,模型均訓(xùn)練30個(gè)epoch,在訓(xùn)練EfficientNet-B0和Vision Transformer時(shí)均使用預(yù)訓(xùn)練的ImageNet權(quán)重作為初始化權(quán)重。
為了驗(yàn)證所提方法的有效性,按照4.2節(jié)所述的實(shí)驗(yàn)方法,EfficientNet-B0模型、VIT模型以及集成模型CNN-VIT模型在訓(xùn)練集上的損失變化與驗(yàn)證集上得準(zhǔn)確率變化如圖8所示。集成模型在測(cè)試集上的準(zhǔn)確率與精確率如表3所示,AUC值如圖9所示。
圖8 模型訓(xùn)練曲線
表3 三種模型在測(cè)試集上的準(zhǔn)確率、精確率及AUC值
圖9 集成模型測(cè)試集AUC值
從圖8中可以看出改進(jìn)的VIT模型準(zhǔn)確率要高于EfficientNet模型,由于使用了遷移學(xué)習(xí)初始化權(quán)重,因此模型在訓(xùn)練集上的開(kāi)始損失即是一個(gè)比較小的初始值。在驗(yàn)證集上的開(kāi)始準(zhǔn)確率也是比較高的一個(gè)初始值,這有助于模型的快速收斂。從表3可以看出改進(jìn)的VIT模型在測(cè)試集上的準(zhǔn)確率比EfficientNet模型的準(zhǔn)確率高3.6%,精確率高1.4。這表明改進(jìn)的VIT模型要優(yōu)于EfficientNet模型。集成到CNN-VIT模型后,準(zhǔn)確率達(dá)到了99.00%,精確率達(dá)到了99.24%,AUC值達(dá)到了0.99,性能得到了進(jìn)一步的提升。
為了更好地說(shuō)明本文所提方法的分類(lèi)能力,圖10為模型進(jìn)行預(yù)測(cè)分類(lèi)時(shí)的混淆矩陣。從混淆矩陣中可以看出,改進(jìn)的VIT模型識(shí)別能力比較均衡,對(duì)于氣胸與非氣胸的識(shí)別精度相同。Efficient-Net模型在識(shí)別氣胸和非氣胸能力上存在差異,并且識(shí)別氣胸的能力更強(qiáng)。CNN-VIT集成模型,對(duì)非氣胸的識(shí)別精度與改進(jìn)的VIT模型相同,但是對(duì)氣胸的識(shí)別能力更強(qiáng),這使得集成模型在臨床診斷中可以更好地檢測(cè)氣胸任務(wù),是符合實(shí)際應(yīng)用的。
圖10 分類(lèi)混淆矩陣
1)改進(jìn)VIT模型實(shí)驗(yàn)
為了驗(yàn)證改進(jìn)的VIT中每個(gè)模塊的有效性,在CCM-CXR數(shù)據(jù)集上進(jìn)行了消融實(shí)驗(yàn),如表4所示。從表4的實(shí)驗(yàn)1可以看出,當(dāng)使用BN+1個(gè)全連接層+ReLU激活函數(shù)時(shí),測(cè)試集的準(zhǔn)確率下降了2.35%。實(shí)驗(yàn)2可以看出,當(dāng)減少了BN層時(shí),測(cè)試集準(zhǔn)確率下降到了95.37%。實(shí)驗(yàn)3可以看出,當(dāng)把激活函數(shù)替換為GeLU函數(shù)時(shí),準(zhǔn)確率相比于實(shí)驗(yàn)2有所提高,達(dá)到了96.59%。實(shí)驗(yàn)3可以看出,當(dāng)把激活函數(shù)替換為GeLU函數(shù)時(shí),準(zhǔn)確率相比于實(shí)驗(yàn)2有所提高,達(dá)到了96.59%。從實(shí)驗(yàn)4可以看出,當(dāng)使用BN+1個(gè)全連接層+GeLU激活函數(shù)時(shí),測(cè)試集準(zhǔn)確率又有了進(jìn)一步的提高,準(zhǔn)確率達(dá)到了97.21%,當(dāng)使用兩個(gè)BN+1個(gè)全連接層+GeLU激活函數(shù)模塊堆疊時(shí),準(zhǔn)確率達(dá)到了98.81%,而去掉BN層時(shí),準(zhǔn)確率下降了1.7%。當(dāng)我們繼續(xù)增加堆疊的層數(shù)時(shí),模型在測(cè)試集上的準(zhǔn)確率開(kāi)始下降,這表明模型出現(xiàn)了過(guò)渡擬合的情形,因此我們最終決定使用兩個(gè)模塊堆疊的MLP結(jié)構(gòu)。
表4 改進(jìn)VIT-L/16模型消融實(shí)驗(yàn)(二分類(lèi)任務(wù))
2)數(shù)據(jù)預(yù)處理實(shí)驗(yàn)
本文的數(shù)據(jù)集CCM-CXR,來(lái)源于三個(gè)開(kāi)源的胸部數(shù)據(jù)集,為了加快模型的收斂速度,提高模型的準(zhǔn)確率,讓模型更好地符合臨床輔助診斷的實(shí)際需求,本文對(duì)數(shù)據(jù)集進(jìn)行了數(shù)據(jù)清洗,具體的方法如第2節(jié)所述。在實(shí)際診斷中,當(dāng)醫(yī)生遇到側(cè)位胸片以及質(zhì)量較差的胸片時(shí),醫(yī)生都會(huì)使用軟件進(jìn)行相應(yīng)的窗位調(diào)節(jié),以便更好地識(shí)別氣胸。因此本文首先通過(guò)網(wǎng)絡(luò)清洗,剔除一些臟數(shù)據(jù)以及質(zhì)量較差的數(shù)據(jù),從表5中也可以看出,利用清洗過(guò)的數(shù)據(jù)集對(duì)模型進(jìn)行訓(xùn)練,其準(zhǔn)確率的提升是顯著的,提高了3.84%,由此我們可以看到模型的改進(jìn)固然重要,但是相比于前期的數(shù)據(jù)預(yù)處理也很重要,高質(zhì)量的數(shù)據(jù)集可以加快模型的收斂,提高模型的準(zhǔn)確率,增強(qiáng)模型的泛化能力。
表5 基于改進(jìn)模型VIT-L/16的數(shù)據(jù)預(yù)處理消融實(shí)驗(yàn)
為了進(jìn)一步證明本文所提方法的有效性,本文將該模型與一些經(jīng)典的分類(lèi)模型進(jìn)行了比較,在實(shí)驗(yàn)中為了保證實(shí)驗(yàn)條件的一致性,除個(gè)別網(wǎng)絡(luò)如Inception-V3需要調(diào)整圖像為299×299外,其余數(shù)據(jù)預(yù)處理方法均相同。具體表現(xiàn)如表6所示。從表中可以看出Inception-V3網(wǎng)絡(luò)的準(zhǔn)確率較高,其可能的原因是Inception-V3網(wǎng)絡(luò)的圖像輸入分辨率高于其它模型輸入圖像的分辨率。整體來(lái)看本文所提方法的準(zhǔn)確率高于其它模型,表現(xiàn)最佳,可以更好地幫助診斷氣胸疾病。
表6 與其它模型的比較
針對(duì)目前卷積網(wǎng)絡(luò)在醫(yī)學(xué)分類(lèi)任務(wù)中其有限的局部感受野限制它們獲取全局信息的能力,本文提出了基于CNN和Transformer的混合深度學(xué)習(xí)框架,解決了傳統(tǒng)CNN忽略圖像內(nèi)部長(zhǎng)距離依賴(lài)關(guān)系,無(wú)法準(zhǔn)確描述醫(yī)學(xué)圖像全局特征信息的問(wèn)題。同時(shí)為了提高模型的泛化能力,依托三個(gè)開(kāi)源的胸部數(shù)據(jù)集收集了包含50萬(wàn)張胸片的數(shù)據(jù)集,從而提高了氣胸分類(lèi)任務(wù)的準(zhǔn)確率。將所提出的模型與其它模型進(jìn)行比較,實(shí)驗(yàn)結(jié)果表明所提模型能夠更好地識(shí)別氣胸任務(wù),為臨床氣胸診斷提供了更加可靠的方法。但本文仍然存在一定的局限性,在實(shí)際的臨床診斷中,胸片作為診斷胸部疾病的方法,主要包括肺結(jié)節(jié)、肺炎、肺水腫、肺不張、新冠肺炎等,后續(xù)的工作將考慮胸部圖像的多分類(lèi)任務(wù),目前胸部圖像的多分類(lèi)任務(wù)的準(zhǔn)確率為90%,尚不能達(dá)到臨床診斷的實(shí)際需求,因此下一階段將利用深度學(xué)習(xí)混合框架進(jìn)一步研究多分類(lèi)任務(wù),提高胸片圖像分類(lèi)的準(zhǔn)確率,為臨床的診斷提供更加可靠的方法。