錢寶鑫,肖志勇,宋 威
江南大學 人工智能與計算機學院,江蘇 無錫 214122
據統計,目前中國肺癌的發病率正以每年26.9%的速度增長,到2025年,僅中國每年死于肺癌的人數就將接近100萬,肺部疾病已對居民的生命健康構成巨大威脅[1]。研究表明,肺部疾病越早發現并及時接受治療可以有效降低肺癌患者的死亡率。CT成像技術是醫學影像技術中檢查肺部疾病的有效影像學手段,從肺部CT圖像中提取肺實質可以幫助醫生診斷和評估肺部疾病。當前,將醫學圖像處理技術應用于肺部疾病輔助診斷,對于實現醫生更快、更準確地檢測患者肺部疾病具有重要意義。
醫學圖像分割是指對醫學圖像中的器官和病灶(如腫瘤)進行提取。醫學圖像分割的本質就是按照灰度、紋理等圖像特征,根據同一區域特征的相似性和鄰域特征的不同將感興趣區域分割出來,從而為臨床醫學提供可靠的信息。然而,由于肺部CT圖像組織結構復雜,主要包括肺實質和肺實質以外的空氣、支氣管、水、骨骼、檢查床等部分,導致肺部CT圖像噪聲強,因而從CT圖像中提取肺實質成為肺部疾病診斷研究的重要步驟。
傳統的醫學圖像分割方法主要分為以下三種[2]。(1)手動分割方法,這種方法是由專家手動分割,主觀性強、容易出錯、耗時且不適合大規模的研究。(2)半自動分割方法,由于不同類型的CT圖像或不同的數據集具有不同的特征和參數閾值,很難對其進行統一推廣。(3)傳統的自動分割方法主要分為以下幾種:①基于閾值的分割[3],該方法設置閾值間隔,創建二進制分區,此方法速度較快,但沒有考慮到圖像像素點的空間分布,容易對噪聲敏感,該方法對于灰度差異較小的圖像分割效果不好。②基于區域的分割[4],此類方法快速且在細微的衰減變化下分割效果很好,但是它們存在一些缺陷,對有病理的邊界分割效果較差。③基于聚類的分割[5],該方法將圖像中灰度值差異較小的像素點聚合在一起分為同一類,通過聚類將圖像劃分為不同的區域,但是由于聚類算法對初始點的賦值比較敏感,分割結果會根據初始化的不同有差異。
如今,深度學習和卷積神經網絡技術廣泛應用于圖像處理,并且在醫學圖像分割領域取得了很大的進展。Berkeley 團隊[6]提出全卷積網絡(fully con-volutional networks,FCN)方法用于圖像語義分割,將圖像級別的分類擴展到像素級別的分類,將卷積層代替分類網絡框架中的全連接層,取得了良好分割的效果,成為深度學習在語義分割應用中的開山之作。Ronneberger等人[7]提出的U-Net網絡,利用編碼器與解碼器之間的級聯操作將圖像高層信息與淺層信息融合,有效地避免了高層語義信息的丟失,在醫學圖像分割方面取得了良好的效果。Milletari等人[8]提出的V-Net 是基于體素的全卷積神經網絡在三維醫學圖像上的分割應用,在編碼的部分采用殘差網絡框架,在保證不斷加深網絡深度的同時,減少梯度消失或者梯度爆炸帶來的風險。Zhao 等人[9]提出的金字塔場景解析網絡(pyramid scene parsing network,PSPNet)是在FCN 算法的基礎上通過特征融合引入更多的上下文信息,通過聚合不同區域的上下文信息,從而提高獲取全局信息的能力。
在上述討論的基礎上,提出了一種新的基于編/解碼模式的肺分割算法。受U-Net網絡框架的啟發,編碼模塊采用一個結合多尺度輸入的殘差網絡為基礎層,很好地解決了深度神經網絡的退化問題,通過給四個級聯分支注入多尺度的圖像來捕獲更廣泛和更深層次的語義特征。在編碼和解碼模塊之間,采用一個由空洞卷積驅動的空間金字塔池化代替傳統U-Net網絡的池化層,通過使用不同膨脹系數的空洞卷積,從編碼模塊提取目標多尺度特征。最后是解碼模塊,在保留級聯操作的同時,利用注意力機制的控制單元加強有效信息的權重,從而提高分割精度。

Fig.1 Flow diagram of experiment圖1 實驗流程圖
本文的實驗流程圖如圖1 所示。首先對圖像進行預處理,接著將訓練樣本送入模型中訓練,得到最優分割模型;再將測試樣本送到已經訓練好的模型中測試,得出分割結果。本文提出的編/解碼模式的肺分割算法,輸入的是肺CT 掃描切片,輸出的是一個二值化圖像,模型通過識別每個像素是前景還是背景來預測顯示肺的位置,以真實標簽為金標準對測試結果進行評估,來判斷本文算法的性能。
對于神經網絡來說,網絡層數越深,所能學到的東西越多,但在某些情況下,網絡層數越深反而會降低準確率,很容易出現梯度消失和梯度爆炸。殘差網絡(residual network,ResNet)[10]可以很好地緩解這一問題。普通卷積每兩層增加一個捷徑,構成一個殘差塊(residual block),多個殘差塊連接在一起構成一個殘差網絡,殘差塊如圖2所示。

Fig.2 Residual block圖2 殘差塊
圖2 中,x表示輸入,F(x)表示殘差塊在第二層激活函數之前的輸出,即F(x)=W2σ(W1x),其中W1和W2分別表示第一層和第二層的權重,σ表示ReLU激活函數[11]。最后殘差塊的結構公式可定義如下:

將單元輸入x與單元輸出F(x)相加,然后利用ReLU激活函數輸出。在前向傳播時,輸入數據可以從任意低層傳向高層,由于包含一個恒等映射(iden-tity mapping),一定程度上可以解決網絡退化問題。
在卷積神經網絡中,卷積核的尺寸越大,感受野也就越大,提取到的圖像特征也就越多,但是一味地增加卷積核的尺寸會使模型參數增多,這樣不利于模型的訓練。空洞卷積(atrous convolution)[12]能夠在不犧牲特征空間分辨率的同時擴大特征感受野。普通二維的卷積和空洞卷積的對比如圖3所示。

Fig.3 2D ordinary convolution and atrous convolution圖3 二維普通卷積和空洞卷積
空洞卷積與普通卷積相比,就是在普通卷積核中加入膨脹系數,對原圖像以膨脹系數(dilation rate)減1進行間隔采樣。對于一個膨脹系數為d,原始卷積核大小為K的空洞卷積,空洞卷積實際大小K′的公式定義如下:

使用空洞卷積之后的卷積核尺寸變大,感受野也隨之增大。空洞卷積不僅使感受野增大,獲取了圖像更多的特征信息,同時也不會造成模型參數增多,因此空洞卷積成為時下卷積神經網絡中非常流行的卷積。
本文提出一種編/解碼模式的肺分割算法,此網絡結構主要包括三部分:編碼模塊、空洞空間金字塔池化(atrous spatial pyramid pooling,ASPP)和解碼模塊。網絡結構如圖4所示。
編碼部分:醫學圖像中的器官切片尺度有著明顯的差異,為解決多尺度下的目標分割問題,獲得圖像的多尺度信息,在編碼模塊中,本文連續使用4 個平均池化(average pooling)對輸入圖像進行池化操作形成形似金字塔的多尺度圖像,在卷積深度增加時,利用級聯操作向4 個級聯分支分別注入多尺度的圖像。編碼模塊包括4組卷積和4次下采樣操作,與之對應的解碼部分也包括4 組卷積和4 次上采樣操作。為了在捕獲深層次語義信息的同時解決深度神經網絡的退化問題,受V-Net 網絡框架的啟發,編碼模塊每一層采用殘差塊為基礎層,每一個殘差塊都包含兩個3×3卷積操作,同時在每一層的卷積后面都加上批歸一化層(batch normalization,BN)[13],每層殘差塊包含兩組(3×3 conv+BN+ReLU)網絡結構和一次跳躍連接,通過最大池化將特征映射輸出到下一層,與此同時,金字塔第二張圖像與上一層輸出特征映射級聯,送入到第二個殘差塊。每個深度都具有多尺度特征,因此多尺度圖像可以集全局和局部的上下文信息,進一步增強不同深度語義信息的融合,以更好地利用U-Net的結構。
空洞空間金字塔池化:為獲得輸入特征映射的上下文多尺度信息,采用不同膨脹系數的空洞卷積獲取多尺度特征映射,此時特征映射的大小發生了變化,為解決輸入圖片大小不一致造成的問題,采用空間金字塔池化(spatial pyramid pooling,SPP)[14]拼接形成特征映射。空洞空間金字塔池化(ASPP)[15]將SPP和深度可分離卷積[16]結合起來,采用深度可分離卷積將輸入圖像的通道與空間信息分開處理。本文采用ASPP 替代傳統U-Net 網絡編碼的最后一層操作,ASPP網絡結構如圖5所示。
本文中,ASPP 要對上一層特征映射進行5 次卷積操作:第一次卷積,采用256 個普通的1×1 卷積核卷積特征映射,同時加入BN操作。為了在不增加參數規模的前提下,獲得多尺度的特征映射。第二次到第四次卷積操作時使用深度可分離卷積。每一個深度可分離卷積網絡結構形式可表示為Depthconv(3×3)+BN+Pointconv(1×1)+BN+ReLU。為了增加感受野,其中Depthconv采用膨脹系數分別是6,12,18的3×3 空洞卷積;Pointconv 采用的是普通的1×1 卷積,此操作不僅可以有效減少模型參數,同時也會加速模型收斂。不同采樣率的ASPP 能有效地捕捉多尺度信息,但是隨著采樣率的增加,濾波器的有效權重逐漸變小,這時的3×3卷積核已經無法捕獲整個圖像上下文信息,而是退化為一個簡單的1×1卷積核。為了克服這一問題,在進行第五次卷積操作時,需要先將原圖大小降低為原來的1/16(此處16 為輸出步長),接著進行一個全局均值池化,將特征映射送入輸出通道數為256的1×1卷積核,再進行BN操作,最后利用雙線性插值(bilinear upsampling)對低維特征映射進行上采樣到原始大小。

Fig.4 Structure of network圖4 網絡結構

Fig.5 Structure of ASPP network圖5 ASPP網絡結構
為了獲取特征映射之間的相關性,最后將提取到的5 個多尺度特征映射進行拼接;為了減少通道數,將拼接好的特征映射送入通道數為512的1×1卷積核,再進行BN 操作,將得到的特征映射送入到解碼模塊中。

Fig.6 Attention mechanism module圖6 注意力機制模塊
解碼部分:神經網絡在處理大量的輸入信息時,模型會變得復雜,利用注意力機制(attention mecha-nism)[17]選擇一些關鍵的信息加大權值分配,以此提高神經網絡對目標區域的關注。在傳統的U-Net 網絡中,特征融合部分使用的是級聯操作,淺層特征的位置信息比較多,但是學到的特征沒有深層的高級,因此為獲得包含目標區域的有意義輸出,本文將注意力機制應用到處理肺部圖像分割的算法中,采用注意力機制的解碼模式。注意力機制模塊如圖6所示。
圖6中,g為解碼部分矩陣,xl為編碼部分矩陣,Wg為門控信號,Wx為注意門。
首先上采樣上一層的特征映射gi(Fg×Hg×Wg×Dg)進行1×1×1 卷積核運算得到下采樣同層的特征映射進行1×1×1 卷積核運算得到。將g上采樣的結果拼接到上文信息xl上,使用ReLU 作為激活函數,經過1×1×1 卷積核運算得到如下公式:

其中,b代表偏置項;ψ代表1×1×1卷積核;σ1代表激活函數ReLU。
最后利用Sigmoid激活函數,經過上采樣得到注意力系數,注意力系數公式定義如下:

其中,σ2代表Sigmoid 激活函數,注意力系數α(取值范圍0~1)不斷將權重分配到目標區域,此時xl與注意力系數相乘,相乘結果會讓不相關的區域的值變小,目標區域的值變大,從而提高分割精度。
本文分割模型是基于編/解碼模式的肺分割網絡,需要訓練模型來預測每個像素是前景還是背景,這是一個像素級二分類問題。分類問題中最常見的損失函數是二分類交叉熵損失函數(binary cross en-tropy,BCE)。BCE損失函數定義如下:

其中,gic∈{0,1}代表真實值(ground truth),pic∈{0,1}代表預測值(predicted value)。當gic與pic相等時,loss為0,否則loss為一個正數,概率相差越大,loss值就越大。
本文使用TL(Tversky loss)損失函數[18]來代替二分類交叉熵損失函數。相較于BCE、Tversky 相似度指數,它允許靈活地平衡假陰性和假陽性。Tversky loss損失函數定義如下:

其中,pic表示預測像素i屬于病變c類的概率;表示預測像素i屬于非病變類的概率;gic表示真實像素i屬于病變c類的概率;表示真實像素i屬于非病變類的概率。參數α和β分別控制假陰性和假陽性的比重,可以通過調參分給目標區域更多的權重以改善樣本不平衡的情況,提高召回率。在下一章中,還將比較、分析使用二分類交叉熵損失函數和Tversky loss損失函數對模型的影響。
本文的數據集來自LUNA16 數據集(http://aca-demictorrents.com/collection/luna-lung-nodule-analysis-16---isbi-2016-challenge/)。LUNA16 數據集是最大公用肺結節數據集LIDC-IDRI的子集,LIDC-IDRI包括1 018個低劑量的肺部CT影像,LIDC-IDRI刪除了切片厚度大于3 mm和肺結節小于3 mm的CT影像,剩下的樣本構成了LUNA16 數據集。LUNA16 包括888 個低劑量肺部CT 影像(mhd 格式)數據,每個影像包含一系列胸腔的多個軸向切片。本文選取其中89 名患者,每個病人大約有100~750 張切片,最終形成13 465 張圖像數據集,獲得的圖像分辨率為512×512,其中70%的樣本用于訓練集,30%用于測試集。
本文的實驗平臺為Keras,實驗的硬件環境為NVIDIA GTX1080Ti 單個GPU,Intel Corei7 處理器,軟件環境為Keras2.2.4。使用he_normal 方法對權重進行初始化,采用Tversky loss作為損失函數,學習率設置為1E-4,采用Adam 優化器更新參數,訓練與測試的batchsize取4。
評價指標旨在衡量所提方案的性能,本文采用最常用的醫學圖像分割評價指標對算法性能進行評估,包括敏感性(sensitivity,SE)、相似性系數(dice similarity coefficient,DSC)、準確性(accuracy,ACC)和Jaccard指數(Jac)。各項評價指標定義如下:

其中,TP(true positive)表示真陽性,它表示人工分割和算法分割公共區域的像素個數;FP(false positive)表示假陽性,它表示在算法分割區域內,在人工分割區域外的像素個數;TN(true negative)表示真陰性,它表示人工分割和算法分割外部公共區域的像素個數;FN(false negative)表示假陰性,它表示人工分割區域內,在算法分割區域外的像素個數。
4.4.1 樣本預處理對實驗結果的影響
本文選用LUNA16 數據集的樣本,在進行三維切片后,需要先把不含目標區域的切片去除,由于原始CT 圖像存在噪聲,因此在CT 圖像輸入網絡前需要進行增強操作,以便加強前景與背景的區分度,對于標簽圖,需要將其二值化。處理之后的CT圖像和標簽圖像如圖7所示。

Fig.7 Image comparison before and after preprocessing圖7 預處理前后圖像對比
處理之后的圖像較原始圖像前景更加突出,干擾信息顯著減少,二值化的切片也去除了包含支氣管的像素,減少了無效區域的輸入。預處理前后結果對比如表1所示。

Table 1 Comparison of segmentation results between preprocessed and unpreprocessed表1 預處理與未預處理的分割結果比較 %
從實驗的結果來看,預處理的分割精度明顯高于未經過預處理的分割精度。因此,在訓練模型時首先要對樣本進行合理的預處理。本文中預處理刪除了不包含目標區域的圖片,屬于背景像素的數量顯著減少,在一定程度上可以平衡正負樣本,提高實驗精度。
4.4.2 不同loss對實驗結果的影響
由于此次實驗選取的樣本體積相差較大,因此在做器官切片時,存在大量包含小目標的切片,單張圖像中目標像素占比較小,這樣會導致正負樣本數據不平衡,使網絡訓練較為困難。二分類交叉熵損失函數的一個局限性是它對假陽性(FP)和假陰性(FN)檢測的權重相等,因此交叉熵損失函數不是最優的。為了證明使用Tversky loss作為損失函數能夠有效提升分割性能,本文在最優網絡框架中分別使用Tversky loss和二分類交叉熵損失函數進行對比實驗。此處,假陰性檢測的權重需要高于假陽性,因此Tversky loss 中參數相對應的設置α=0.7,β=0.3。使用不同的損失函數對分割結果的影響如表2所示。

Table 2 Comparison of segmentation results between different loss functions表2 不同損失函數的分割結果比較 %
從實驗的結果來看,由于使用了Tversky loss 重新為假陰性和假陽性分配了權重,使目標區域的權值大于非目標區域的權值,此操作對敏感性指標(Se)產生了重要的影響,其他的評價指標也都高于使用二分類交叉熵損失函數的分割結果,說明采取Tversky loss作為損失函數的算法,可在不犧牲其他精度的情況下,有效提高敏感性指標,即召回率。
4.4.3 消融實驗
為了說明本文多種改進策略可以有效提高算法的分割性能,本文做了3組對比實驗來說明多尺度的圖像輸入、ASPP 和Attention 機制可以在不同程度上提高算法的分割性能。多種改進策略的分割算法比較如表3所示。

Table 3 Comparison of segmentation algorithms of several improved strategies表3 多種改進策略的分割算法比較 %
由表3 可以看出,加入ASPP 和Attention 機制的模型分割效果明顯優于未加的模型,本文將ASPP運用到圖像分割網絡,能夠有效減少連續下采樣帶來的信息損失,進一步強化分割效果。利用帶有注意力機制的級聯操作將高分辨率的局部特性與低分辨率的全局特性相結合,對產生的特征映射根據深層特征映射進行修正,從編碼器中獲取一些上文信息,加強目標區域的輸出,從而提高了分割性能。
采用多尺度的圖像輸入的模型雖然比不上ASPP和Attention機制對分割效果做出的貢獻,但是與下文提及的算法相比,在一定程度上也強化了分割效果。
4.4.4 與其他算法的比較
為更好地驗證本文算法的性能,本文將提出的分割算法與傳統的主動輪廓模型[19]和經典算法U-Net、V-Net進行比較,一些其他分割方法[20-22]也被納入到比較中。不同分割算法的比較如表4所示。
從以上結果可以看出,本文算法在Dsc、Acc、Se和Jac的評估結果分別達到99.56%、99.33%、99.48%和98.74%,均優于其他方法。這說明本文提出的分割模型有利于肺分割。為了更直觀地說明本文算法的準確性,本文隨機選取了5 個樣本A、B、C、D、E 在不同模型上的分割結果,如圖8所示。

Table 4 Comparison of different segmentation algorithms表4 不同分割算法的比較 %
樣本A 中原始CT 圖像肺實質部分有些不清晰,無論是V-Net 還是Attn_U-Net,在像素模糊的部分分割效果都不是很好,本文算法的分割結果對比了圖8中標簽圖像,不存在過分割的問題。

Fig.8 Segmentation results of different algorithms圖8 不同算法的分割結果圖
對于樣本B 的分割,U-Net 和V-Net 在此樣本的邊緣處可以看到明顯的斑點,如圖8紅色虛線框選中部分所示;Attn_U-Net 對于此樣本的邊界,分割不夠圓滑,說明了加入ASPP的分割算法能夠有效減少連續下采樣帶來的信息損失,進一步強化分割效果。
對于樣本C 的分割,相比較本文提出的算法,U-Net 存在欠分割,V-Net 存在過分割的情況,如圖8 紅色虛線框選中部分所示,分割出的肺實質部分不夠連續,存在一些空洞。
對于樣本D的分割,傳統的U-Net算法分割效果很差,未有效區分支氣管和肺實質的像素,V-Net 分割效果要優于U-Net,說明加入了跳躍連接的分割模型在一定程度上可解決網絡退化問題,對比加了注意力機制的Attn_U-Net 算法,可知注意力機制能有效增強模型分割效果,更加關注目標區域的輸出。
樣本E 中,由于左右肺距離比較接近,此樣本是最難分割的,相比較本文提出的算法,其他算法分割都出現左右肺粘連現象,如圖8綠色虛線框選中部分所示,而本文提出的算法能夠有效解決粘連問題,分割出左右肺,更加體現了本文算法的分割性能。
為說明本文方法可以在不同的肺部圖像上進行很好的分割,在Kaggle Data Science Bowl 2017(DSB2017)數據集上進行了實驗(https://www.kaggle.com/c/data-science-bowl-2017)。DSB2017 是Lung Nodule Analysis在2017 年舉行的比賽。比賽所提供的數據集由534個二維樣本和各自的標簽圖像組成,用于肺分割。本文與采用同樣數據集的CE-Net 方法[23]進行了比較,由于樣本數量較少,本文進行了數據增強處理,實驗結果如表5所示。

Table 5 Comparison of segmentation results between different methods表5 不同方法的分割結果比較 %
從分割的結果來看,本文算法在DSB2017 數據集上也取得了比較好的分割效果,更加說明本文算法性能好,泛化能力強,可以推廣到分割不同的醫學圖像任務中。
本文提出了一種編/解碼模式的肺分割算法。一方面在編碼模塊采用多尺度融合的編碼方式,提高了模型對不同尺度特征的適應能力;另一方面采用ASPP,充分提取了上下文多尺度信息,最后通過注意力機制的級聯網絡結構,加強目標區域信息的捕捉,有效避免了在特征解碼上冗余信息的獲取。實驗結果表明,本文方法能有效分割肺實質區域,與其他方法相比分割效果更好。除此以外,本文方法泛化性較強,可廣泛應用到不同的醫學圖像分割任務中。從肺部CT圖像中完整地分割出肺實質,對后續的肺結節檢測提供了良好的研究基礎,下一階段的任務是根據這項工作的結果進行肺結節的檢測。