苗 語 豐振航 楊華民 蔣振剛 師為禮
(長春理工大學計算機科學技術(shù)學院 吉林 長春 130022)
目前,肺癌是發(fā)病率和死亡率最高的癌癥之一[1]。由于環(huán)境的日益惡化和吸煙人數(shù)的逐年增加,肺癌患者的數(shù)量不斷增長。文獻[1]的研究表明,如果能及時發(fā)現(xiàn)和治療肺癌,那么肺癌患者的5年存活率將提高50%左右。肺癌早期一般表現(xiàn)為結(jié)節(jié),為了防止錯過最佳治療時間,需要提前進行肺結(jié)節(jié)檢測,而肺結(jié)節(jié)分割是肺結(jié)節(jié)檢測中最重要的步驟。
低劑量胸部電子計算機斷層掃描(CT)是目前在肺癌檢查中最常用的方法,但僅靠醫(yī)生進行人工檢測,不僅工作量很大,而且會因假陽性等問題而容易出錯,因此對肺部CT等醫(yī)學圖片的檢測和分割是非常熱門的研究方向[2]。目前,對醫(yī)學圖片進行分割的傳統(tǒng)方法很多,其中比較經(jīng)典的有支持向量機[3]、閾值分割法[4]、區(qū)域增長法[5]、聚類問題[6]等。John等[7]使用多閾值法提取候選結(jié)節(jié),但其他組織的灰度值與肺結(jié)節(jié)的灰度值范圍重疊,提取的候選結(jié)節(jié)含有肺結(jié)節(jié)小區(qū)域,不利于假陽性的去除。Boroczky等[8]將提取了疑似肺結(jié)節(jié)的23個特征送入SVM分類器進行訓練。但SVM需要人工提取結(jié)節(jié)特征,算法的準確率很大程度取決于提取方法的選擇。
傳統(tǒng)肺結(jié)節(jié)檢測方法過程復雜,結(jié)果依賴于各個階段的運行效果,并且不能實現(xiàn)端到端的檢測。近年來,深度學習的迅猛發(fā)展給肺結(jié)節(jié)分割帶來了新的可能。卷積神經(jīng)網(wǎng)絡(luò)是一種以端到端的形式識別特征的網(wǎng)絡(luò),與傳統(tǒng)的機器學習方法相比,其優(yōu)勢在于特征提取不需要人工參與,各層的特征提取都是在通用的學習過程中進行。Ronneberger等[9]提出了U-Net網(wǎng)絡(luò)結(jié)構(gòu),極大地促進了對醫(yī)學圖像分割的研究,并且有了一定應(yīng)用。隨后,利用深度網(wǎng)絡(luò)分割肺結(jié)節(jié)成為當前醫(yī)學圖像處理領(lǐng)域的研究熱點。Hwang等[10]提出了一種多階段訓練策略,以更少的模型參數(shù)實現(xiàn)了更先進的分割性能。但該模型在訓練集和測試集的分布發(fā)生變化時,分割結(jié)果可能不穩(wěn)定。Setio等[11]提出了一種基于多視角卷積網(wǎng)絡(luò)的檢測算法,它對不同類型的肺結(jié)節(jié)設(shè)計了不同的檢測器,通過融合檢測器生成的不同候選區(qū)域得到候選結(jié)節(jié),提高了檢測的靈敏度。但該模型需要區(qū)分不同類型的肺結(jié)節(jié),對數(shù)據(jù)集要求較高,且模型所需參數(shù)較多,在實際應(yīng)用中實時性較差。
本文提出了一種改進的U-Net網(wǎng)絡(luò),應(yīng)用于肺結(jié)節(jié)檢測的候選結(jié)節(jié)分割部分。首先在網(wǎng)絡(luò)解碼器部分加入了密度連接模塊,增強了特征的復用率。然后,將U-Net網(wǎng)絡(luò)與卷積條件隨機場(ConvCRF)端到端結(jié)合,使分割結(jié)果更好地體現(xiàn)了肺結(jié)節(jié)的邊緣特征。最后,為了緩解了正負樣本的不平衡問題,進一步提高分割的準確度,改進了基于focal loss的損失函數(shù)。
肺結(jié)節(jié)分割是肺結(jié)節(jié)檢測系統(tǒng)的重要步驟之一,目的是在CT圖像的檢測任務(wù)中提取肺結(jié)節(jié),并保證高敏感度和準確度。本研究采用改進的U-Net分割模型作為結(jié)節(jié)的分割方法,此模型在基本框架U-Net網(wǎng)絡(luò)的基礎(chǔ)上,為防止出現(xiàn)過擬合的趨勢,在網(wǎng)絡(luò)的編碼部分添加了Batch-Normalization模塊,用Leaky-ReLU代替了ReLU激活函數(shù),使用了dropout策略。其次,為提高結(jié)節(jié)的檢出率和增強結(jié)節(jié)的邊緣特征,對U-Net模型做了以下幾點改進。
DenseNet[12]的特點是可以將圖像特征進行多次重復利用。它以前饋的方式將前面層所獲得的特征圖映射到其他傳遞的后續(xù)層,這種緊湊的結(jié)構(gòu)可以在相同的網(wǎng)絡(luò)深度下,保證了各層之間的信息流最大、較輕梯度消失的問題,并對過擬合現(xiàn)象有一定抑制作用。圖1為DenseNet的示意圖,主要由Dense Block和Transition layers組成。
圖1 密集連接網(wǎng)絡(luò)
由圖可知,Dense Block的第l層是將前面所有層x0,…,xl-1的特征圖作為輸入,可由式(1)表示。
xl=Hl([x0,x1,…,xl-1])
(1)
式中:Hl(·)表示卷積等非線性轉(zhuǎn)化操作。由此可知,擁有k層網(wǎng)絡(luò)的Dense Block模塊中有k×(k+1)/2個連接。
本文根據(jù)DenseNet結(jié)構(gòu)特點,在傳統(tǒng)U-Net網(wǎng)絡(luò)解碼一側(cè)將淺層特征與深層特征互連。由于淺層特征圖與深層特征圖的面積各不相同,本文通過不同個數(shù)的轉(zhuǎn)置卷積將淺層特征進行上采樣以適應(yīng)不同尺寸的深層特征圖,結(jié)構(gòu)見圖2。
圖2 密集連接與U-Net結(jié)合
由于卷積神經(jīng)網(wǎng)絡(luò)沒有充分考慮空間上下文信息,也沒有考慮到因缺少平滑項而使圖像邊緣模糊的問題,所以分割的肺結(jié)節(jié)邊緣比較粗糙,需要對結(jié)果進一步處理。全連接條件隨機場把分割任務(wù)看作是已知觀測值求取標記值的問題,通過求解最大后驗概率來確定分割結(jié)果,它既考慮了空間信息,也能夠一定程度上解決邊緣模糊和噪聲等問題,它的能量函數(shù)為:
(2)
式(2)包含一階和二階勢函數(shù)兩部分。一階勢函數(shù)用于衡量當像素點i的顏色值為yi時,該像素點屬于類別標簽xi的概率,本文將U-Net網(wǎng)絡(luò)學習得到的肺結(jié)節(jié)概率圖定義為隨機場模型的一階勢函數(shù)。二階勢函數(shù)定義了一系列特征向量的高斯核函數(shù),計算公式為:
(3)
式中:u(xi,xj)表示兩個標簽之間的一個兼容性度量。它考慮了相鄰像素的相互作用。肺結(jié)節(jié)分割的目的就是求得最小化能量函數(shù)。
但由于全連接條件隨機場訓練速度慢、模型內(nèi)的參數(shù)學習困難等問題,其已經(jīng)不能滿足研究的需求。而卷積條件隨機場(ConvCRF)[13]以條件獨立性的假設(shè)補充全連接條件隨機場。假設(shè)兩個像素i、j的曼哈頓距離為d(i,j)>k,則它們的標簽分布是有條件獨立的,從而可以進行高效的GPU計算和完整的特征學習,將信息傳遞步驟配置為帶截斷高斯核的卷積。
一個形狀為[b,c,h,w]的輸入圖像P,其中b、c、h、w分別表示批大小、類別數(shù)量、輸入高度和寬度。對于由特征向量f1,f2,…,fd定義的高斯核函數(shù)g,圖像的核矩陣為:
(4)
式中:θi是可學習的參數(shù)。對于一組高斯核g1,g2,…,gs,我們定義經(jīng)合并的核矩陣K為:
(5)
所有s個核的組合信息傳遞的結(jié)果Q如下:
P[b,c,x+dx,y+dy]
(6)
這種信息傳遞操作類似于卷積神經(jīng)網(wǎng)絡(luò)中標準的二維卷積,可以將大部分推斷重新表達為可以在GPU上實現(xiàn)的卷積操作。通過反向傳播訓練卷積條件隨機場的所有參數(shù),與全連接隨機場相比速度得到很大提升。
在肺結(jié)節(jié)分割中,CT圖像中肺結(jié)節(jié)所占的比例會遠遠小于肺部其他區(qū)域。在傳統(tǒng)的樣本分類中,將肺結(jié)節(jié)和肺部其他區(qū)域分為正樣本和負樣本兩類。由于負樣本過多,會造成它的loss太大,容易把正樣本的loss遮蓋從而不利于整個目標函數(shù)的收斂。
圖像分割的一種常見的評價指標是Dice系數(shù),其物理含義為兩個樣本之間的重疊程度的度量。度量范圍從0到1,Dice系數(shù)為1表示完全重疊。其計算公式為:
(7)
式中:|A∩B|表示集合A、B之間的共同元素;|A|、|B|表示A、B中的元素的個數(shù)。為了計算預測的分割圖,Dice系數(shù)被改為soft dice loss,計算公式如下:
(8)
式中:pi為sigmoid激活后的輸出值,取值介于0和1之間;gi為真實值,取值為0或1。
Dice損失對類不平衡問題會有比較好的效果,但是其在誤差反向傳播過程中梯度會產(chǎn)生大幅震蕩,所以在訓練過程中不穩(wěn)定。而focal loss[14]是在交叉熵損失函數(shù)基礎(chǔ)上進行的修改,不僅穩(wěn)定性好,還加大了前景和背景的過渡區(qū)等hard negative的損失值,計算公式如下:
(9)
式中:r是為減少易分類樣本的損失,使得更關(guān)注于困難的、錯分的樣本;α用來平衡正負樣本本身的比例不均。
本文結(jié)合focal loss和Dice損失的特點,提出了一種改進的focal loss損失,計算公式如下所示:
Lens=-logLDice+αLfl
(10)
式中:對數(shù)函數(shù)和α的目的是平衡兩種損失函數(shù)的結(jié)果大小。
LUNA16數(shù)據(jù)集來源于LIDC/IDRI數(shù)據(jù)集,它從LIDC/IDRI數(shù)據(jù)集中抽取層間度大于2.5 mm的CT圖像,一共獲得了888幅CT圖片,共包含1 186個肺結(jié)節(jié)。每幅圖像包含了4名有經(jīng)驗的放射科專家在LIDC/IDRI數(shù)據(jù)庫上兩階段的標注注釋[15]。圖3所示為數(shù)據(jù)庫中不同尺寸的肺結(jié)節(jié)圖像。
圖3 不同尺寸的肺結(jié)節(jié)圖像
由于CT原始圖片肺實質(zhì)部分并不突出,為突出肺實質(zhì),需要對圖像做直方圖均衡化處理;隨后因肺實質(zhì)灰度值與周邊組織差距較大,對圖像進行二值化處理,初步分出肺實質(zhì);其次使用膨脹和腐蝕兩種數(shù)學形態(tài)學方法消除肺實質(zhì)內(nèi)部噪聲和平滑肺實質(zhì)邊緣;最后通過肺實質(zhì)掩模提取ROI區(qū)域。圖4為數(shù)據(jù)處理流程。圖5為各個階段處理后的圖像。
圖4 預處理流程
(a) 原始圖片 (b) 直方圖均衡化 (c) 二值化
(d) 膨脹腐蝕 (e) 生成掩模 (f) ROI區(qū)域圖5 各階段圖像
為了驗證模型的準確性,將數(shù)據(jù)集分成10份,運用10折交叉驗證法,輪流將其中9份作為訓練數(shù)據(jù),1份作為測試數(shù)據(jù),進行實驗。每次實驗都會得出相應(yīng)的準確率(或差錯率)。10次結(jié)果的準確率(或差錯率)的平均值作為對算法精度的估計。模型反向傳播采用的方法是隨機梯度下降法,學習率為0.000 1,每迭代一次衰減0.005,總共運行50個epoch,批量大小為2。圖6所示為模型在訓練過程中的測試準確率曲線,經(jīng)過50個epoch后準確率總體趨于穩(wěn)定。所用模型在GPU上使用Python的TensorFlow深度學習庫實現(xiàn)。
圖6 改進的U-Net網(wǎng)絡(luò)的準確率曲線
為了求取式(9)改進的損失函數(shù)中參數(shù)α的最優(yōu)取值,本文進行了4個模型的5組對比實驗,α分別設(shè)置為0.1、025、0.4、0.6、0.75,這5組實驗分別用Dice系數(shù)進行比較,得出結(jié)果如表1所示。通過評價指標可看出,參數(shù)α在0.25至0.4之間模型表現(xiàn)最佳。
表1 不同參數(shù)下模型的Dice系數(shù)測試結(jié)果
為了驗證在最優(yōu)取值下,改進的focal loss損失函數(shù)比傳統(tǒng)的交叉熵損失函數(shù)更具有優(yōu)勢,本文分析了它們的Dice系數(shù)和敏感度,結(jié)果如表2所示。
表2 不同損失函數(shù)結(jié)果比較
圖7展示了本文算法不同改進步驟的肺結(jié)節(jié)分割效果圖,其中:(a)為肺部CT圖片;(b)為提取的肺實質(zhì)灰度圖;(c)為數(shù)據(jù)集中醫(yī)師標注的肺結(jié)節(jié)位置分布圖;(d)為利用標準的U-Net模型進行的肺結(jié)節(jié)分割圖;(e)為利用U-Net網(wǎng)絡(luò)和密集連接網(wǎng)絡(luò)相結(jié)合的算法進行的肺結(jié)節(jié)分割圖;(f)算法是在E算法的基礎(chǔ)上運用了改進的focal loss損失函數(shù);(g)是利用本文算法進行的肺結(jié)節(jié)分割圖。圖7(d)與圖7(g)在圖上可知,(d)與本文算法相比,因為運用的特征相對較少,所以分割的肺結(jié)節(jié)相對較暗,干擾因素較為嚴重;而圖7(e)因為正負樣本比例不平衡,導致有較為嚴重的假陽性肺結(jié)節(jié);圖7(f)雖然比前兩列效果好,但分割結(jié)果較粗,而本文算法分割出的肺結(jié)節(jié)含有較多的邊緣信息,更貼近CT圖像中的肺結(jié)節(jié)形狀。綜上所述,隨著對傳統(tǒng)算法的改進,得到的肺結(jié)節(jié)圖像更明顯、假陽性更少、邊緣特征更顯著等特點。進一步說明了本文算法在保持較高精度與靈敏度的情況下,能分割出較好的肺結(jié)節(jié)結(jié)果,具有一定的臨床價值。
圖7 本文算法逐步改進的分割對比圖
為了系統(tǒng)的分析本文算法分割結(jié)果的性能,采用ROC曲線作為衡量標準。如圖8所示,(a)為傳統(tǒng)U-Net網(wǎng)絡(luò)肺結(jié)節(jié)分割結(jié)果的ROC曲線,(b)為本文算法的ROC曲線。由ROC曲線可知,本文算法總體性能較高,假陽性低,真陽性高,可以更好地分割出肺結(jié)節(jié)。
(a) 傳統(tǒng)U-Net的ROC曲線
(b) 本文算法的ROC曲線圖8 不同算法的ROC曲線對比圖
最后,為了評估肺結(jié)節(jié)分割的性能,將本文算法與肺結(jié)節(jié)分割階段相同研究工作的其他算法在LUNA16數(shù)據(jù)集下進行評估對比。主要分為以下三個指標:(1) 準確性;(2) 敏感性;(3) 每個CT掃描件中檢測出的候選結(jié)節(jié)個數(shù)。性能突出的模型應(yīng)在較低的候選結(jié)節(jié)個數(shù)下有較高的敏感性。敏感性(S)和準確性(A)的計算公式如下:
(11)
(12)
式中:TP是真正類;TN是真負類;FN是假負類;FP是假正類。對比結(jié)果如表3所示。
表3 不同算法的分割性能對比
從表3可知,在使用相同數(shù)據(jù)集的情況下,本文算法在準確度的指標下優(yōu)于其他算法。相比于文獻[18]的算法,本文算法雖然速度較慢,但通過密集連接等方法的特征重利用,改善了特征漏檢的缺陷,識別準確率提高了7%左右;而卷積神經(jīng)網(wǎng)絡(luò)+VGG模型雖然網(wǎng)絡(luò)深度深于本算法,但缺少網(wǎng)絡(luò)結(jié)構(gòu)的trick,所以準確率也略微低于本算法。在敏感度方面,雖然本文算法的敏感度略低于Ding等的算法,但在每個CT掃描件檢測的候選結(jié)節(jié)的數(shù)量低于該算法。在每個CT掃描件檢測的候選結(jié)節(jié)的數(shù)量方面,U-Net雖然低于本文算法,但本文算法有較高的敏感度和準確度,對下一階段結(jié)節(jié)分類和整個肺結(jié)節(jié)檢測系統(tǒng)的性能提升都更有優(yōu)勢。
使用本文提出的肺結(jié)節(jié)分割算法,其表現(xiàn)性能在LUNA16數(shù)據(jù)集上得到驗證。本文算法是在U-Net網(wǎng)絡(luò)的基礎(chǔ)上做了改進和優(yōu)化。首先,結(jié)合傳統(tǒng)的U-Net和DenseNet的優(yōu)點,獲得了高敏感度的檢測結(jié)果,原因是DenseNet結(jié)構(gòu)本身的特征再利用的性質(zhì),使得它比傳統(tǒng)的U-Net學習到更高效的特征;其次,相比于傳統(tǒng)的全連接條件隨機場,本文模型所用的卷積條件隨機場不僅增強了肺結(jié)節(jié)的邊緣特征,提高了肺結(jié)節(jié)特征的保留度,還更有利于與卷積神經(jīng)網(wǎng)絡(luò)的端到端的結(jié)合,極大地促進了模型的運行速度,保證了模型的實時性。最后,與傳統(tǒng)的交叉熵損失函數(shù)比,本文改進的focal loss損失函數(shù)不僅保留了交叉熵函數(shù)的穩(wěn)定性,還解決了類不平衡的問題,提高了肺結(jié)節(jié)識別的準確性。
實驗中還對Dropout和batch size兩個參數(shù)進行多次調(diào)整,對改進的模型進行優(yōu)化。Dropout的作用是防止網(wǎng)絡(luò)出現(xiàn)過擬合現(xiàn)象,它通過隨機將網(wǎng)絡(luò)隱含層某一部分節(jié)點重置為0,使每一批訓練樣本進入不同的網(wǎng)絡(luò)結(jié)構(gòu)的方法來增加網(wǎng)絡(luò)的泛化能力。本文在改進的網(wǎng)絡(luò)結(jié)構(gòu)上,多次調(diào)整Dropout的比例,尋找最優(yōu)Dropout值。表4為不同Dropout比例所求得的準確率趨勢,可以看出,當Dropout取值為0.6時,準確率最高。
表4 Dropout對訓練精度的影響
batch size的選擇決定了訓練過程中梯度下降的方向。取值過大不僅對GPU的顯存是一個考驗,還容易使梯度無法修正,而過小則使梯度難以收斂。因此選擇合適的batch size值對訓練的準確率至關(guān)重要。本文在同樣的模型下,使Dropout的值固定為0.6,多次改變batch size的大小,由于GPU對2的冪次的batch size可以發(fā)揮更佳的性能,所以batch size分別取16、32、64、128來找出最優(yōu)的值。表5是不同batch size值所求得的準確率趨勢。由表5可知,最佳的batch size值為32。
表5 batch size對訓練精度的影響
本研究雖然得到了較好的結(jié)果,但也有其局限性。首先,數(shù)據(jù)集中的肺結(jié)節(jié)標簽是以中心坐標為圓心,一定大小為半徑的類圓形,雖然能準確地定位肺結(jié)節(jié)的位置,但對于肺結(jié)節(jié)的邊緣特征表現(xiàn)的比較粗糙,對深度學習造成一定影響。其次,在復雜情況下,直接通過卷積網(wǎng)絡(luò)定位小結(jié)節(jié)效果不理想。最后,本文算法只用到了結(jié)節(jié)的二維信息,而三維的上下文信息能為網(wǎng)絡(luò)的自主學習提供空間維度的信息,對肺結(jié)節(jié)的準確識別十分重要。在以后的研究中將通過與醫(yī)院影像科洽談合作,獲得不同類型的肺結(jié)節(jié)數(shù)據(jù)集和更能精確體現(xiàn)邊緣特征的肺結(jié)節(jié)標簽;通過粗糙集設(shè)計出一種適應(yīng)更小尺度輸入的卷積網(wǎng)絡(luò)結(jié)構(gòu)來進一步識別小結(jié)節(jié);最后在分割階段加入三維的圖像信息。通過這些方法,可能一定程度上對敏感度和準確度的提高具有積極意義。
肺結(jié)節(jié)分割對醫(yī)生的輔助診斷意義重大。本文針對傳統(tǒng)肺結(jié)節(jié)分割算法中分割敏感度和準確度低的問題提出了基于改進的U-Net網(wǎng)絡(luò)的肺結(jié)節(jié)分割算法。實驗結(jié)果表明,在相同的步長下,在肺結(jié)節(jié)分割上是有效的,并取得不錯的分割效果。但本文算法也存在一定的局限性,需要在以后的研究中進行改進。由于肺結(jié)節(jié)種類較多和判斷標準復雜多樣,本文數(shù)據(jù)集并不能充分體現(xiàn)肺結(jié)節(jié)的多樣性,因此還沒有應(yīng)用在臨床上進行肺結(jié)節(jié)檢測任務(wù)。隨著技術(shù)的進步,計算機輔助診斷系統(tǒng)(CAD)將在肺結(jié)節(jié)檢測中發(fā)揮重要作用。