張曉宇,強 彥,Zia Ur Rehman
(太原理工大學 信息與計算機學院,山西 晉中 030600)
計算機斷層掃描(computed tomography,CT)技術是一種有效的檢測肺結節存在的工具。隨著CT技術的發展,對肺部病變的位置、形態等特征的觀察非常直觀,可以更容易識別。然而,對每位患者進行薄層掃描會產生數百張圖像,放射科醫生必須對每張圖像進行分析,從而導致漏診率和假陽性率的增加。為了減輕放射科醫師的閱讀負擔,提高肺結節檢測的準確性,提出一種計算機輔助檢測(computer-aided detection,CADe)技術,自動檢測醫學圖像中可疑病灶,幫助醫師進行診斷,提高了診斷的客觀性。
然而肺結節檢測屬于單目標檢測,且目標結節通常較小,目前基于深度學習的檢測方法主要針對通用圖像,對于肺結節的檢測準確度有待提高。并且現有的檢測方法大多是在生成候選結節時插入池化層進行候選框尺度統一,然后再進行特征提取,最后分類,二階段方法在保證準確度的同時降低了速度。本文提出的端到端的檢測框架用于肺結節的檢測,在提高檢測精度的同時提高了檢測速度。
傳統的機器學習方法通過圖像預處理、肺實質或肺結節分割、特征提取、結節分類等實現對肺結節的檢測,處理過程復雜且耗時長,近年來深度學習方法在目標識別領域取得了良好的效果。在醫學圖像目標檢測領域應用深度學習方法也有很多研究,Dou Q等[1]利用兩個區域建議網絡和一個反卷積網絡快速提取候選結節,并設計了基于2D-CNN的增強結構用于假陽性減少。針對醫學數據集中難易樣本失衡問題,提出了一種三維卷積網絡框架用于從低劑量CT掃描中自動檢測結節。Jacobs C等[2]提出了一種CT圖像中結節的計算機輔助檢測系統。他們定義了128個維度的特性來提高分類性能。除了以前使用的強度、形狀和紋理特性之外,還引入了一組新的上下文特性。Krishnamurthy S等[3]使用k-means聚類技術的直方圖,自動找到種子點,將分割應用于所有可能的候選結節,并計算有效的形狀特征和紋理特征(2D和3D),以減少假陽性。最后,利用基于人工神經網絡的分類器進行分類。Setio等[4]提出了一種基于多視圖卷積網絡的肺結節計算機輔助檢測系統,該系統利用訓練數據自動學習特征。將3個候選檢測器組合得到的候選結節輸入網絡,再用專用的融合方法對輸出進行組合,得到最終的分類結果。Ding和Liao等[5,6]使用faster R-CNN生成候選結節,然后使用3D全卷積網絡去除假陽性結節。
以上方法都是二階段方法,首先對結節進行候選框定位以后再進行分類,本文提出的端到端的檢測模型將檢測和分類融合到一個框架中,避免了網絡的重復訓練,并且本文用于特征提取的卷積網絡將特定級別的特征融合在一起,既可以實現特征復用又可以得到具有豐富語義的特征。
端到端的肺結節自動檢測框架如圖1所示。首先對肺部CT圖像進行預處理操作,再用處理后圖片提取候選結節。在提取候選結節階段,使用殘差網絡與密集連接網絡相結合的網絡進行特征提取,然后將提取特征的網絡嵌入類U-Net[7]網絡中進行候選框的提取,得到3個不同尺度的候選框,利用一層卷積層將分成9個區域的特征圖映射到對應的位置敏感特征圖上,對9個特征圖進行池化操作生成對應的位置敏感池化層,然后對池化后的特征圖進行投票操作,按得分將候選框分為結節與非結節。

圖1 網絡整體結構
整個CT圖像預處理過程如圖2所示。首先將所有原始數據轉換成Hounsfield unit(Hu),這是這是描述放射性密度的標準定量尺度(如圖2(a)所示)。

圖2 CT圖像預處理步驟
(1)掩模提取:目的是將肺組織與其它類結節組織區分開。對于每個切片用高斯濾波器對二維圖像進行濾波,然后用-600作為閾值進行二值化(如圖2(b)所示)。去除二維連通區域小于30 mm 2或離心率大于0.99(對應于某些高亮度徑向成像噪聲)的部分。然后計算得到的二元三維矩陣中所有的三維連通分量,保留未接觸到矩陣角點且體積在0.68 L-7.5 L之間的分量。此步驟之后CT圖轉換成為二值圖(如圖2(c)所示)。
(2)凸包和膨脹:有一些結節在肺的外邊緣,經過前面的處理使得這些結節不包含在掩膜里。迭代腐蝕掩膜,直到掩膜分成兩部分,然后膨脹回原來的大小(如圖2(d)所示)。分別對左右肺執行凸包操作使掩膜包含所有結節(如圖2(e)所示),對生成的掩膜向外擴張10個像素(如圖2(f)所示)得到完整的掩膜。
(3)灰度標準化:為準備深度網絡的數據,將圖像從Hu變換到UINT8。原始數據矩陣截斷到[-1200,600]之間,然后線性變換到[0,255]。然后再與前面得到的掩膜相乘。掩膜之外的像素灰度設為170(如圖2(g)所示)。膨脹10個像素區域的灰度值大于210的也替換成170。然后對圖像進行相同尺度的裁剪(如圖2(h)所示)。
本文的CT圖像預處理步驟很好排除了一些不相關的干擾組織,為接下來的結節檢測奠定了基礎。
此部分為本文重點部分,提出了一個多尺度檢測網絡,首先在特征提取部分運用了雙路徑網絡進行特征提取,保證特征復用的同時盡可能發現更多的新特征,然后用U-net作為骨干模型結合3D RPN輸出層作為檢測網絡,利用U-net網絡捕獲結節的多尺度信息,RPN可以直接生成候選框。
本文模型中的肺結節候選區域提取包括兩個部分,第一部分是圖像特征提取;第二部分是檢測網絡進行多尺度候選框提取。雙路徑特征提取網絡包含在N-NET檢測網絡中,最終輸出多個尺度的候選框。
2.2.1 雙路徑網絡提取特征
一般的目標檢測中,對輸入圖像進行特征提取時用殘差網絡(ResNet)或密集連接網絡(DenseNet),ResNet可以促進特征重復使用,減少特征冗余;而DenseNet可以探索新的特征,但存在冗余問題。本文在特征提取時運用殘差網絡和密集連接網絡相結合的深度雙路徑網絡(deep dual path network,DPN),它繼承了上面兩個網絡的優點,可以對特征進行再利用、再開發。DPN也有參數利用率高、計算復雜度低、內存消耗少、易于優化的優點。
雙路徑網絡將特征映射分成兩部分,一部分F(x)[d:]用于殘差學習,即從第d個特征圖開始到最后做對應值相加(elementwise),另一部分F(x)[:d]用于密集連接,即特征圖從1到d做對應值的合并(concat),d是一個超參數用來決定利用新特征的數量,本文設定d=8,雙路徑連接可以用如下公式表示
y=G(x[:d],F(x)[:d],F(x)[d:]+x[d:])
(1)
式中:y是雙路徑連接的特征映射,G是用ReLU作為激活函數,F是卷積層函數,x是雙路徑連接塊的輸入,雙路徑連接將功能重用的殘差網絡和利用新功能的密集連接結合到一個結構中。雙路徑連接如圖3所示。

圖3 雙路徑網絡
2.2.2 N-NET檢測網絡
該網絡是基于U-net的3D版RPN(region proposal network)模型。網絡類U-net編碼解碼器結構組成,如圖4所示。

圖4 網絡類U-net編碼解碼器結構
輸入:考慮到GPU容量,網絡采用96×96×96×1(Height×Length×Width×Channel)的輸入大小,隨機選擇兩類patches。其中70%是patches包含至少一個結節,30%是不含結節的(為保證負樣本的收斂)。其中,patch超出圖像部分用灰度值為170填充。為了避免過擬合問題,數據采用數據增強方法。
編碼結構:以兩層卷積核為3×3×3的卷積(channel為24)開始,且padding為1,因此輸入為96×96×96×24的特征圖;其后為4個雙路徑塊,其中每個雙路徑塊由2個雙路徑單元組成(如圖3所示),在編碼結構中使用8個雙路徑連接,卷積核大小均為3×3×3,尺寸縮減為1/16。
解碼結構:接下來是分辨率放大階段,連續兩個階段都是反卷積后與低層特征串聯,卷積核大小為2,步長為2。最后,由卷積核均為1×1×1且channel為64和15的兩層卷積層將數據大小轉換為24×24×24×3×5,其中3表示anchor個數,每個像素點有3個錨點,分別采用3種尺寸,設置的3個滑動窗口尺寸是[5,10,20],5表示回歸量,每個位置預測x,y,h,d,o分別是結節的三維坐標以及直徑,概率。對于o采用sigmoid激活函數,其中
(2)
2.2.3 損失函數

(3)
分類損失Lcls用交叉熵損失函數表示,公式如下
(4)
在網絡訓練過程中,每個候選框都是一個訓練樣本,i是一個批量數據中一個候選框的索引,pi表示當前候選框i是結節的預測概率。回歸損失Lreg用穩定的SmoothL1表示,公式如下
(5)
(6)
ti表示結節位置的預測相對坐標,定義為
(7)

(8)
式中:(x*,y*,z*,d*)是在原始數據集中真實的結節坐標和直徑。根據實驗效果λ設為0.5。
經過前兩個步驟圖像預處理和結節檢測之后需要對結節候選框進行回歸微調以及分類輸出是否為結節,本文將圖像預處理和結節識別嵌入基于區域的卷積神經網絡R-FCN中,它是一個端到端的檢測框架,在提高檢測精度的同時避免了網絡的重復訓練,縮短了檢測時間。
在N-NET檢測網絡的最后一層卷積層除了生成候選框外,還在特征圖上使用K×K×K×2個通道的卷積層生成位置敏感得分圖,表示將候選框平均劃分成K×K×K個區域,2表示分類的類別,即結節與非結節,那么每一類都有K×K×K個得分,每個小區域根據位置映射到對應的位置敏感得分圖上,然后將映射后的位置敏感得分圖輸入位置敏感池化層,對每個類別的每一個小區域進行平均池化操作,主要目的是將不同大小的ROI對應的特征圖映射成相同維度的特征,然后對每個類別的特征圖得分相加,就得到了這個候選框的總得分,位置敏感池化層的公式為
(9)
式中:Θ為網絡可學習的參數,(x0,y0,h0)為候選框左上角坐標,r(i,j,k|Θ)表示每個子區域的池化響應,zi,j,k表示子區域對應的位置敏感得分圖,n表示每個子區域的像素個數。
同理,采用相似的方法對候選框進行回歸,在K×K×K×2的卷積層后加一個K×K×K×4的卷積層,經過同樣的方式池化后得到一個四維向量分別表示一個候選框的坐標和長寬。
最后用Softmax函數實行投票機制,計算其為結節的概率,完成分類任務。由于整個網絡參數共享,所以對整個網絡進行端到端的訓練速度較快。R-FCN結構如圖5所示。

圖5 R-FCN結構
本文提出的方法在肺部圖像數據庫聯盟LIDC-IDRI數據集[8]以及山西某合作醫院的數據集上進行評估,LIDC-IDRI數據集是目前世界上最大的肺癌公共數據集,目前共有1018例病例,在本文中排除了厚層掃描(切片厚度>2.5 mm)[9,10],得到了888次CT掃描,選定的CT圖像包含≥3 mm的結節并至少由3名醫生聯合標記,最終獲得1186個結節。山西某合作醫院包括258位肺部疾病患者,共計1765例,本文將LIDC數據集中800例病人的肺部圖像作為訓練集,剩余的88例與合作醫院的數據平均分開,分別作為驗證集和測試集。本文提出的方法在caffe框架下進行訓練,處理器為Intel(R)Core(TM)i3_7100CPU@3.90 GHz*4。
本文針對數據集中含結節數據數量少防止過擬合采用了數據增強方式,通過對圖像進行裁剪、翻轉、旋轉等操作來增加數據集,裁剪比例在0.75到1.25之間,學習率的合適設定防止陷入局部最優,本文將學習率初始化為0.3,每3000次迭代衰減5%,訓練過程中使用隨機梯度下降法優化網絡。本文方法使用caffe深度學習框架實現。
本文通過計算檢測靈敏性來評估檢測性能,靈敏性是指所有的肺結節得到正確檢測的概率,靈敏性=真陽性/(真陽性+假陰性),當檢測結果與醫師標注的結節相同時表明結節被檢測出來。在降低假陽性階段,通過對原始預測概率設置不同的閾值,進行FROC(free-response recei-ver operating characteristic)分析,FROC的縱坐標為敏感性,橫坐標為每個CT掃描中平均假陽性的個數。其計算7個預定義的假陽性率(1/8,1/4,1/2,1,2,4和8)下的平均敏感性,可以用來比較不同CAD系統的性能,它的值越高表明系統性能越優。
3.4.1 N-NET用于結節檢測
我們評估了本文提出的自動檢測模型在LIDC-IDRI數據集上的檢測性能。為驗證所提出的深度三維雙路徑網絡的檢測性能,我們使用深度殘差網絡作為對比。如圖6所示,深度殘差網絡的編碼部分是由二維的18層殘差網絡(Res 18)[11]擴展成的18層深度三維殘差網絡,此外,3D Res18 N-NET包含5.4M可訓練參數,而3D DPN26 N-NET使用1.4M可訓練參數,僅為3D Res18 N-NET的0.25倍。

圖6 殘差網絡結構
FROC在LIDC-IDRI上的表現如圖7所示。計算平均每次掃描4個假陽性的平均敏感性,3D Res18 N-NET的敏感度為83.4%,而3D DPN26 N-NET的敏感度為84.2%,對所有結節的總召回率,3D Res18 N-NET的敏感度為94.6%,3D DPN26 N-NET的敏感度為95.8%,說明融合3D DPN特征提取的網絡具有更好的檢測適應能力,因為其特征圖包含的結節信息更多。

圖7 平均每個掃描的假陽性率
3.4.2 端到端檢測框架
對于本文使用的R-FCN端到端的檢測框架,我們用4個指標敏感度、準確率、假陽性率和特異度來評估檢測性能,并且與Faster R-CNN+DPN[12]模型做了比較,兩者使用相同的損失函數與數據集。
表1列出了兩種不同模型下4個指標的測試結果。Faster R-CNN+DPN與本文的R-FCN模型對單張CT圖像測試的時間為0.38 s和0.29 s。在敏感度、準確率、假陽性率和特異度上R-FCN模型均略高于Faster R-CNN+DPN,且檢測結果相比,R-FCN的候選框更接近結節中心,對結節的定位更加準確,且由于R-FCN的卷積層共享,檢測速度更快。圖8顯示了兩種模型的檢測結果,第一行代表本文方法的檢測結果,第二行代表Faster R-CNN的檢測結果,可以看出本文的方法在檢測結節時可以更加準確框出結節中心位置。

表1 兩種模型檢測肺結節結果/%

圖8 兩種模型檢測結果對比
3.4.3 不同CAD系統性能對比
為更好地說明本文所提出的方法的性能,表2對比了不同CAD系統性能,并與前人使用LIDC-IDRI數據集進行驗證的一些工作進行了比較。Jiang等[13]的網絡結構需要一些類似非實質分割等的預處理步驟。Golan等[15]利用深度卷積神經網絡從輸入數據中提取有價值的體積特征,實現CT圖像中結節的檢測。Setio和Dou等[1,4]分別使用多視圖CNN和多層上下文CNN進行假陽性還原,得到了較好的結果。本文方法在提取特征以及提高檢測速度方面做了改進,取得了良好的效果。其它基于圖像特征描述的結節檢測方案,如LBP、GLCM、SIFT等,適用于小范圍的肺結節,但缺乏泛化能力。與其它研究相比,本文在沒有任何分割或額外的假陽性減少程序的情況下,獲得了良好的檢測性能。平均每次掃描4張圖像靈敏度達到了90.5%。

表2 不同CAD系統檢測性能對比
本文針對現有的檢測方法檢測時間長,結節檢出率不高的問題,提出了一種基于雙路徑網絡的肺癌自動診斷方法。設計了一種三維CNN來檢測結節,并使用端到端的框架來對檢測到的結節進行分類,并將它們結合在一起。對于肺結節的檢測方法,將三維CNN應用于三維目標檢測與分類面臨著兩個難題。首先,隨著模型規模的增長,模型占用的內存越來越大,因此運行速度也越來越快批量大小和模型深度都是有限的。我們設計了一個較淺的網絡,使用圖像補丁代替整個圖像作為輸入;三維CNN的參數數量明顯大于具有相似結構的二維CNN,因此模型對訓練數據有過度擬合的傾向。使用數據增強來緩解這個問題。其次,檢測和分類分別設計兩個網絡,模型復雜且參數訓練費時,因此本文使用端到端的網絡來解決此問題,卷積層共享提高了檢測速度。本文提出的檢測方法在精度和速度都有一定的提升。