陳宇峰,陳建文,侯佳儀
(1.蘭州大學(xué) 數(shù)學(xué)與統(tǒng)計(jì)學(xué)院,蘭州 甘肅 730107;2.蘭州大學(xué) 外國(guó)語(yǔ)學(xué)院,蘭州 甘肅 730107)
2020年的新冠肺炎疫情讓大眾對(duì)于病毒性肺炎有了更加深刻的認(rèn)識(shí),放射學(xué)影像(Radiography)數(shù)據(jù)的分析是對(duì)于病毒性肺炎的重要診療手段,通過(guò)使人體內(nèi)部結(jié)構(gòu)和器官形成影像,了解人體解剖與生理功能狀況以及病理變化,以達(dá)到診斷的目的。根據(jù)《流行性感冒診療方案(2018年版)》:“并發(fā)肺炎者影像學(xué)檢查可見(jiàn)肺內(nèi)斑片狀、磨玻璃影、多葉段滲出性病灶;進(jìn)展迅速者,可發(fā)展為雙肺彌漫的滲出性病變或?qū)嵶?,個(gè)別病例可見(jiàn)胸腔積液”。因?yàn)橥ㄟ^(guò)放射學(xué)影像(Radiography),可以對(duì)于患者的診療做出初步判斷。
同時(shí),在機(jī)器學(xué)習(xí)中,深度學(xué)習(xí)屬于其研究中一個(gè)相對(duì)較新的方向,得益于計(jì)算機(jī)的發(fā)展和運(yùn)算速度的提升,深度學(xué)習(xí)在今年來(lái)也成為了研究人員廣泛使用的工具之一[2]。其主要目的是構(gòu)建一系列多層的學(xué)習(xí)模型,通過(guò)對(duì)數(shù)據(jù)集數(shù)據(jù)進(jìn)行訓(xùn)練,提取有效的特征信息,對(duì)一些未知信息進(jìn)行有效預(yù)測(cè),提高預(yù)測(cè)的準(zhǔn)確率。作為最受歡迎且發(fā)展最快的深度學(xué)習(xí)框架之一,Keras支持GPU和CPU,此框架優(yōu)點(diǎn)在于代碼簡(jiǎn)潔,在搭建新的網(wǎng)絡(luò)架構(gòu)時(shí)能夠極大地提高效率,同時(shí)支持TensorFlow等作為后端。
卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks,CNN)也叫convnet,它是計(jì)算機(jī)視覺(jué)應(yīng)用幾乎都在使用的一種深度學(xué)習(xí)模型[2],卷積神經(jīng)網(wǎng)絡(luò)有局部連接,權(quán)重共享和等變表示三個(gè)結(jié)構(gòu)上的特點(diǎn)。因此這些特性使得卷積神經(jīng)網(wǎng)絡(luò)具有一定程度上的平移、縮放和旋轉(zhuǎn)不變性[3]。在面對(duì)深度學(xué)習(xí)對(duì)圖像進(jìn)行分類(lèi)的問(wèn)題以及訓(xùn)練數(shù)據(jù)集較小的情況下,卷積神經(jīng)網(wǎng)絡(luò)能夠發(fā)揮出較好的效果,卷積神經(jīng)網(wǎng)絡(luò)的工作原理大致分為三個(gè)部分:卷積層、池化層、全連接層[4-5]。如圖1示。
圖1 卷積神經(jīng)網(wǎng)絡(luò)示意圖
CHEST X-RAY DATABASE是一個(gè)圖像數(shù)據(jù)集,是用于研究病毒性肺炎的放射學(xué)影像識(shí)別。共有1341個(gè)正常圖像和1345個(gè)病毒性肺炎圖像。圖片均取自胸部X線圖像(肺炎)數(shù)據(jù)庫(kù)。所有的圖像都是便攜式網(wǎng)絡(luò)圖形(PNG)文件格式,分辨率為1024×1024像素,因此可以容易地轉(zhuǎn)換為卷積神經(jīng)網(wǎng)絡(luò)(CNN)通常需要的224×224像素。本次CHEST X-RAY DATABASE中共有2686張黑白放射影像圖片,每張大小均為1024×1024,其中2000張圖像用于訓(xùn)練,686張圖像用于測(cè)試,所有圖片的內(nèi)容標(biāo)簽分為兩類(lèi)類(lèi)(分別為正常圖像及病毒性肺炎陽(yáng)性圖像),每一張圖片都擁有唯一的獨(dú)立標(biāo)簽,兩種標(biāo)簽的圖像數(shù)量接近1:1(1341:1345)。
本次模型采用的是卷積神經(jīng)網(wǎng)絡(luò)(CNN),使用固定尺寸的小卷積核( 3×3),一共有五層卷積層,每一層卷積層搭配一層池化層,以2的冪次遞增卷積核數(shù)量。其中卷積核為128的卷積層有兩層;卷積核為32、64、256的卷積層均只有一層,隨后將結(jié)果輸入到Flatten層。并采用Dropout的正則化方法,防止模型過(guò)擬合,最后利用激活函數(shù)sigmoid輸出結(jié)果。
2.3.1 圖像數(shù)據(jù)的預(yù)處理
圖像預(yù)處理主要分為兩個(gè)個(gè)階段,首先將數(shù)據(jù)集(CHEST X-RAY DATABASE)的所有圖像打亂并隨機(jī)選擇以用于模型的訓(xùn)練和測(cè)試;其次將用于訓(xùn)練的圖像進(jìn)行數(shù)據(jù)增強(qiáng),主要包括水平翻轉(zhuǎn),小角度旋轉(zhuǎn)、縮放,和加入高斯噪聲(方差0.5)。最后再導(dǎo)出預(yù)處理后的訓(xùn)練圖像用于下一階段的模型訓(xùn)練。
2.3.2 利用Keras 建立模型
在window10環(huán)境下,利用Pycharm進(jìn)行編程,首先導(dǎo)入Keras的相關(guān)模塊以及其他相關(guān)庫(kù),以TensorFlow作為后端,基于Keras構(gòu)造上述模型。使用summary()查看的模型的完整結(jié)構(gòu)如圖2所示。
圖2 卷積神經(jīng)網(wǎng)絡(luò)模型結(jié)構(gòu)圖
此模型共計(jì)五段卷積網(wǎng)絡(luò),每一段卷積網(wǎng)絡(luò)由一層卷積層和一層池化層構(gòu)成。五層卷積層的步長(zhǎng)均為 1×1;卷積核分別為32、64、128、128、256。每層卷積網(wǎng)絡(luò)后均為一個(gè)2×2的最大池化層。通過(guò)五段卷積網(wǎng)絡(luò)后,將結(jié)果輸入Flatten層。Flatten層能夠使多維的輸入一維化,在Flatten層之后采用Dropout的正則化方法,提升模型的泛化能力并防止模型過(guò)擬合,隨后進(jìn)入一層帶有‘relu’激活的全連接層(Dense),之后直接進(jìn)入2分類(lèi)的sigmoid Classifier。
2.3.3 實(shí)驗(yàn)結(jié)果與分析
本模型采用的編程語(yǔ)言為Python,深度學(xué)習(xí)框架為Keras,將上文提及的深度學(xué)習(xí)模型對(duì)數(shù)據(jù)集(CHEST X-RAY DATABASE)的圖片預(yù)處理后進(jìn)行特征提取與訓(xùn)練,因訓(xùn)練數(shù)據(jù)較少,故通過(guò)選用不同的Steps Per Epoch值對(duì)模型訓(xùn)練結(jié)果進(jìn)行比較。
首先選用Steps Per Epoch=20對(duì)模型進(jìn)行訓(xùn)練,經(jīng)過(guò)100步的迭代,將訓(xùn)練好的模型對(duì)數(shù)據(jù)集(CHEST X-RAY DATABASE)訓(xùn)練集進(jìn)行測(cè)試,所能達(dá)到的最高準(zhǔn)確率為96.00%,在第62步達(dá)到。模型在測(cè)試集上所能達(dá)到的最高準(zhǔn)確率為97.00%,在第43步達(dá)到。此處出現(xiàn)測(cè)試集正確率最大值高于訓(xùn)練集正確率最大值的原因,可能在于:使用的比例為0.5的Droput層以及用于訓(xùn)練的數(shù)據(jù)量過(guò)少(總共只有2686組可用數(shù)據(jù))。在數(shù)據(jù)集(CHEST X-RAY DATABASE)上的模型訓(xùn)練過(guò)程準(zhǔn)確率和損失率數(shù)據(jù)在可視化后,得到準(zhǔn)確率和損失率變化曲線,如圖3所示。
圖3 模型訓(xùn)練損失和準(zhǔn)確率變化曲線(Steps Per Epoch=20)
根據(jù)圖3的損失率變化曲線,可以觀察到模型在測(cè)試集上的準(zhǔn)確率以及損失波動(dòng)過(guò)大,在Epoch=40開(kāi)始過(guò)擬合。通過(guò)模型訓(xùn)練過(guò)程相關(guān)圖表以及訓(xùn)練數(shù)據(jù),基于數(shù)據(jù)集(CHEST X-RAY DATABASE)數(shù)據(jù)量過(guò)小等限制條件,我們大概可以得出Steps Per Epoch為20的模型準(zhǔn)確度應(yīng)該在80%-95%之間。而模型在訓(xùn)練及驗(yàn)證時(shí)準(zhǔn)確率與損失波動(dòng)過(guò)大的原因可能在于所有選取的Steps Per Epoch參數(shù)過(guò)小。當(dāng)把模型的Steps Per Epoch改為30時(shí),在數(shù)據(jù)集(CHEST X-RAY DATABASE)上的模型訓(xùn)練過(guò)程準(zhǔn)確率和損失率數(shù)據(jù)在可視化后,得到準(zhǔn)確率和損失率變化曲線,如圖4所示。
圖4 模型訓(xùn)練損失和準(zhǔn)確率變化曲線(Steps Per Epoch =30)
相較于Steps Per Epoch =20的情況下,當(dāng)Steps Per Epoch e值為30時(shí),模型在測(cè)試集上的實(shí)驗(yàn)穩(wěn)定性有所提升。經(jīng)過(guò)100步的迭代,此模型在訓(xùn)練集上所能達(dá)到的最高準(zhǔn)確率為 97.00%,在第50步達(dá)到。模型在測(cè)試集上所能達(dá)到的最高準(zhǔn)確率為98.00%,在第65步達(dá)到,通過(guò)訓(xùn)練過(guò)程的相關(guān)數(shù)據(jù),我們大概可以得出Steps Per Epoch為30的模型準(zhǔn)確度應(yīng)該在90%-95%之間。
最后將Steps Per Epoch分別設(shè)置為40和50、60。得到模型的訓(xùn)練損失和準(zhǔn)確率變化曲線圖5、圖6和圖7
圖5 模型訓(xùn)練損失和準(zhǔn)確率變化曲線(Steps Per Epoch =40)
圖6 模型訓(xùn)練損失和準(zhǔn)確率變化曲線(Steps Per Epoch =50)
圖7 模型訓(xùn)練損失和準(zhǔn)確率變化曲線(Steps Per Epoch =60)
通過(guò)對(duì)比不同的Steps Per Epoch參數(shù)條件下模型訓(xùn)練過(guò)程的準(zhǔn)確率,我們可以得到當(dāng)Steps Per Epoch=60時(shí),模型在數(shù)據(jù)集(CHEST X-RAY DATABASE)上的最高的識(shí)別準(zhǔn)確率為99%,在模型第92代迭代上取得。
2.3.4 對(duì)比不同Steps Per Epoch 選擇下的模型訓(xùn)練過(guò)程
不同的Steps Per Epoch下的損失率、準(zhǔn)確率、穩(wěn)定性的差異見(jiàn)表1。因數(shù)據(jù)較少,波動(dòng)過(guò)大,故表1中的Accuracy數(shù)據(jù)采用平均值。通過(guò)對(duì)比觀察,結(jié)合圖3-圖7以及表1,我們可以得到以下幾條關(guān)于Steps Per Epoch對(duì)訓(xùn)練模型影響的結(jié)論: 在訓(xùn)練數(shù)據(jù)較少的情況下,在一定范圍內(nèi),Steps Per Epoch值越大,模型的整體的準(zhǔn)確率以及損失波動(dòng)越趨于穩(wěn)定;Steps Per Epoch值越大,模型訓(xùn)練時(shí)的收斂速度呈現(xiàn)出加快趨勢(shì);Steps Per Epoch越大,模型在數(shù)據(jù)集上的最高準(zhǔn)確率呈現(xiàn)出上升趨勢(shì)。
表1 多種Steps Per Epoch 對(duì)比結(jié)果
本文介紹了一種利用有限訓(xùn)練數(shù)據(jù)訓(xùn)練、應(yīng)用于識(shí)別病毒性肺炎放射學(xué)影像的深度學(xué)習(xí)模型,基于深度學(xué)習(xí)框架Keras,利用CHEST X-RAY DATABASE數(shù)據(jù)集進(jìn)行訓(xùn)練與測(cè)試,利用數(shù)據(jù)的可視化對(duì)比不同Steps Per Epoch條件下的模型訓(xùn)練過(guò)程,實(shí)驗(yàn)得出CHEST X-RAY DATABASE數(shù)據(jù)集識(shí)別正確率最高可以達(dá)到99%。模型精準(zhǔn)度最高能夠穩(wěn)定在90%-95%之間。雖然訓(xùn)練數(shù)據(jù)過(guò)少導(dǎo)致了訓(xùn)練準(zhǔn)確率的不穩(wěn)定,但通過(guò)訓(xùn)練過(guò)程中的相關(guān)記錄數(shù)據(jù)可以得出此模型仍具有一定的實(shí)用價(jià)值,能夠有效地通過(guò)人體放射學(xué)影響判斷出患者是否感染病毒性肺炎,為醫(yī)療工作者提供有效地參考建議。為解決少量訓(xùn)練數(shù)據(jù)情況下的放射學(xué)圖像識(shí)別問(wèn)題提供了不錯(cuò)的思路。