黃冬云,王 欣,秦 斌
(湖南工業(yè)大學 軌道交通學院,湖南 株洲 412007)
肺癌被稱為當今世界上最常見、最致命的惡性腫瘤之一[1],因大多數(shù)患者被確診為肺癌時已經是中期到晚期,此時癌細胞惡化或已經發(fā)生轉移,導致患者因治療不及時而出現(xiàn)較高的病死率。肺結節(jié)是肺部病變的重要癥狀,因此若能準確及時診斷出早期肺結節(jié)可以大大提高患者的治愈率[2]。計算機斷層掃描(computed tomography,CT)篩查是目前肺癌早期臨床篩查中最為有效的方法[3]。由于肺器官內部結構復雜,肺結節(jié)的大小、形狀和位置千變萬化,僅依靠肉眼識別難度較大,因此需要一個計算機輔助診斷(computer aided diagnosis,CAD)系統(tǒng)協(xié)助醫(yī)生進行診斷。
傳統(tǒng)的肺結節(jié)檢測方法通常采用復雜的圖像處理算法,其結節(jié)檢測的準確性主要依賴人為設計的特征提取方法,若特征選取不好,容易丟失一些重要的結節(jié)信息,從而影響肺結節(jié)檢測的準確性[4-6]。
近年來,針對醫(yī)學圖像中肺結節(jié)的自動檢測與分類,科研工作者們提出了多種方法,主要為基于卷積神經網(wǎng)絡(convolutional neural networks,CNN)的深度學習方法[7-11]。Shi H.等[12]采用2D CNN 肺結節(jié)兩階段檢測框架,在LUNA16 數(shù)據(jù)集上進行結節(jié)檢測,得出其平均靈敏度為82.62%,但是該方法對直徑小于3 mm 的小結節(jié)檢測效果較差。Wen C.R.等[13]采用嵌入注意模塊的3D 卷積神經網(wǎng)絡,并重新定義邊界框回歸,增強了收斂能力,獲得了85.40%的靈敏度,且假陽性偏高。Liao F.Z.等[14]采用改進的3D U-Net 網(wǎng)絡檢測肺結節(jié),并用Leaky Noisy-OR Gate 模型評估被檢測結節(jié)的癌變概率,兩者結合可提高結節(jié)檢測精度。A.Sreekumar 等[15]采用基于C3D 網(wǎng)絡架構的3D CNN 模型檢測肺結節(jié),獲得了86.00%的檢測靈敏度。Xie H.T.等[16]采用2D Faster R-CNN 網(wǎng)絡檢測候選結節(jié),其靈敏度為86.42%,再使用2D CNN 網(wǎng)絡減少假陽性,但其準確性仍有提升空間。A.Pezeshk 等[17]采用3D CNN網(wǎng)絡檢測肺結節(jié),其候選結節(jié)檢測靈敏度達91%,相比2D CNN 肺結節(jié)檢測網(wǎng)絡,檢測性能顯著提升。目前基于卷積神經網(wǎng)絡的肺結節(jié)自動檢測方法取得了較為滿意的結果,但還是存在假陽性高的問題,需進一步提升模型檢測性能,降低結果中的假陽性。
上述研究中設計的肺結節(jié)檢測系統(tǒng)有兩個基本任務:1)結節(jié)候選檢測;2)減少假陽性。且都是運用2D 或3D 卷積神經網(wǎng)絡實現(xiàn)肺結節(jié)自動檢測。由于肺部CT 圖像是3D 的,運用2D 神經網(wǎng)絡會忽視結節(jié)的空間信息,影響結節(jié)檢測精度,3D 卷積神經網(wǎng)絡考慮肺部CT 圖像三維特征,能有效提取肺結節(jié)空間信息,故采用3D 網(wǎng)絡的結節(jié)檢測效果更優(yōu)。
此外,肺部CT 圖像數(shù)據(jù)集雖然較大,但是樣本卻很少,正負樣本存在嚴重失衡問題,導致復雜的網(wǎng)絡模型過擬合,造成結節(jié)檢測的假陽性偏高。因此,針對肺結節(jié)自動檢測中存在的精度低、假陽性高等問題,提出了一種基于3D 卷積神經網(wǎng)絡的肺結節(jié)兩階段檢測方法。實驗結果表明,該方法能有效提高肺結節(jié)檢測敏感度,降低假陽性數(shù)量。
基于3D 卷積神經網(wǎng)絡兩階段肺結節(jié)檢測方法如下:第一階段,使用融合殘差結構3D V-Net 網(wǎng)絡定位結節(jié)位置,檢測出所有候選結節(jié);第二階段,使用融合殘差結構的3D VGG(visual geometry group)網(wǎng)絡進行良惡性結節(jié)分類,進一步提高檢測準確率,降低假陽性。肺結節(jié)兩階段檢測的總體框架如圖1 所示。
圖1 肺結節(jié)兩階段檢測總體框架Fig.1 Overall framework for two-stage detection of pulmonary nodules
本文采用的3D V-Net 候選結節(jié)檢測網(wǎng)絡主要分為下采樣和上采樣兩部分。其中,下采樣部分經過連續(xù)的三維卷積層和池化層提取高階語義特征;上采樣部分經過連續(xù)的三維反卷積操作將高階語義特征進行放大,并將放大后的高階特征與相應下采樣過程的高階特征進行拼接。加入殘差跳轉連接的3D V-Net網(wǎng)絡,可在充分利用空間信息下提高肺結節(jié)檢測的敏感度和準確度,3D V-Net 候選肺結節(jié)檢測網(wǎng)絡結構如圖2 所示。
圖2 3D V-Net 候選肺結節(jié)檢測網(wǎng)絡結構圖Fig.2 3D V-Net detection network structure of pulmonary nodule candidates
3D V-Net 的輸入和輸出都是96×96×16 的肺部CT 圖像,包括4 個下采樣層和4 個上采樣層,每個下采樣層進行2 次3×3×3 卷積操作和1 次2×2×2最大池化操作,每個上采樣層進行1 次3×3×3 反卷積操作和3 次3×3×3 卷積操作。反卷積操作后,在對應層級間進行拼接,且相鄰兩層間設計了殘差跳轉連接,最后采用1×1×1 的卷積核連接最終輸出。
上采樣過程中,每層采用2 個3×3×3 的卷積核;下采樣過程中,每層采用3 個3×3×3 的卷積核。雖然采用大卷積核比小卷積核更能捕捉到肺部CT 圖片的全局特征,但采用2 個3×3×3 的小卷積核可以實現(xiàn)與1 個5×5×5 的卷積核同樣的感受野,采用3個3×3×3 的小卷積核可以實現(xiàn)與1 個7×7×7 的卷積核同樣的感受野??梢姡【矸e核不僅增加了卷積塊的深度,提高肺結節(jié)檢測性能,還能減少參數(shù)量,提升運算速率。
2.1.1 殘差結構
通常設計更深層次的CNN 網(wǎng)絡可以提高肺結節(jié)檢測的準確性,但對于傳統(tǒng)的卷積神經網(wǎng)絡來說,隨著網(wǎng)絡深度加深,容易造成梯度消失問題。殘差結構通過在網(wǎng)絡中增加跨層連接,可以保留先前網(wǎng)絡層的一定比例輸出,實現(xiàn)圖像特征重用,是緩解深度網(wǎng)絡梯度消失問題的一種有效方法,同時融合殘差跨層連接還可以加速超深神經網(wǎng)絡的訓練過程。
殘差網(wǎng)絡由若干殘差塊組成,殘差塊主要包括直接映射部分和殘差部分。當神經網(wǎng)絡輸入為x,學習到的特征輸出為H(x)時,其學習到的殘差為F(x)=H(x)-x,在網(wǎng)絡中增添直接映射通道,將原先學習到的特征轉變成F(x)+x,構成殘差塊[18],基礎殘差塊見圖3a。本文的殘差塊含2 個3×3×3 的卷積操作,且在ReLU 函數(shù)激活前進行了批量歸一化(batch normalization,BN)處理,其結構見圖3b。
圖3 殘差塊構成示意圖Fig.3 Schematic diagram of residual block composition
由圖3 可知,本文設計的殘差塊通過BN 處理,將數(shù)據(jù)強制集中到統(tǒng)一的數(shù)據(jù)分布下,再輸入到下一層,可以使中間層輸出更穩(wěn)定,加快模型的訓練速度,緩解梯度消失問題,提高模型的泛化能力。將殘差塊與3D V-Net 融合,不僅能夠增加網(wǎng)絡的深度,提高肺結節(jié)檢測的準確率,還能加快訓練速率,提高候選結節(jié)檢測模型的檢測性能。
2.1.2 損失函數(shù)
損失函數(shù)用于評估模型預測結果與真實結果不一致的程度,它可以決定神經網(wǎng)絡訓練的學習方向,魯棒性越好的模型,其損失函數(shù)值越小。原始肺結節(jié)檢測網(wǎng)絡采用的損失函數(shù)為Dice 函數(shù),其定義如下:
式中:X為預測值;Y為真實結果。
使用Dice 系數(shù)作為損失函數(shù),能夠提升模型訓練的準確度,但同時也可能會丟失一些真實肺結節(jié),使得模型訓練結果精度偏低。為了提高模型檢測的敏感度,本文采用了改進的損失函數(shù)。
為了解決醫(yī)學圖像數(shù)據(jù)正負樣本失衡的問題,S.S.M.Salehi 等[19]提出了基于Tversky 系數(shù)的廣義損失函數(shù),該函數(shù)對Dice 系數(shù)進行了推廣,Tversky 系數(shù)的定義如下:
式中:|X-Y|代表假陽性(FP);|Y-X|代表假陰性(FN);α和β為控制FP和FN之間平衡的超參數(shù)。
當設置超參數(shù)α=β=0.5 時,其實質為Dice 系數(shù),當設置超參數(shù)α=β=1 時,其實質為Jaccard 系數(shù)。
由于一張肺部CT 圖像中結節(jié)體素的數(shù)量遠低于非結節(jié)體素的數(shù)量,這會造成數(shù)據(jù)的不平衡問題,使用正負樣本失衡的數(shù)據(jù)進行模型訓練可能會造成預測的結果更偏向于精度高但靈敏度低的一方。本文采用Tversky 系數(shù)作為損失函數(shù),通過調整超參數(shù)的取值,在訓練融合殘差的3D V-Net 網(wǎng)絡時平衡敏感度和準確率,提高肺結節(jié)自動檢測的靈敏度。
在良惡性結節(jié)分類階段,為了從大量候選肺結節(jié)中準確篩選出真陽性肺結節(jié),提高檢測的靈敏度,需要從中剔除假陽性肺結節(jié)。本文采用3D VGG 分類網(wǎng)絡,通過兩個3×3×3 的卷積核替代5×5×5 的卷積核,保證在具有相同感受野的條件下增加網(wǎng)絡深度,能夠充分利用真實結節(jié)豐富的空間上下文特征,以便準確無誤地獲得真陽性肺結節(jié),3D VGG 分類模型結構見圖4。
圖4 3D VGG 分類模型結構Fig.4 3D VGG classification model structure
如圖4 所示,本研究構建的3D VGG 分類網(wǎng)絡模型由10 個3D 卷積層、4 個最大池化層、2 個全連接層和1 個Softmax 分類層構成。其中,卷積層均采用3×3×3 大小的過濾器。最大池化層采用2×2×2的過濾器,第一個全連接層以及所有卷積層采用ReLU 激活函數(shù),第二個全連接層使用Softmax 激活函數(shù)。第一層卷積核的個數(shù)為32,隨后每一層都在前一層的基礎上翻倍,最后得到的網(wǎng)絡寬度為512。為了避免網(wǎng)絡訓練過程中的梯度消失問題,本研究設計了殘差跨層連接。
本文采用LUNA16[20]數(shù)據(jù)集對兩階段肺結節(jié)檢測進行驗證。該數(shù)據(jù)集剔除了最大的公開肺結節(jié)參考數(shù)據(jù)庫LIDC-IDRI 中一些切片缺失、切片厚度大于3 mm,及切片間距不一致的CT,共組成888 幅含多個512×512 切片的三維肺部圖像數(shù)據(jù)集。對于每個CT 掃描圖像,由4 名專業(yè)放射科醫(yī)生對結節(jié)大小、結節(jié)坐標等進行標注,共標記了1 186 個肺結節(jié),肺結節(jié)直徑范圍為3.3~30.6 mm,平均長度為8.3 mm,結節(jié)大小偏小。得到的LUNA16 數(shù)據(jù)集的候選節(jié)點信息共有551 065 個,每個候選節(jié)點都提供相應的類別標簽:非結節(jié)為0,結節(jié)為1。肺結節(jié)信息標注示例如表1 所示。
表1 LUNA16 數(shù)據(jù)集結節(jié)信息標注示例Table 1 Sample illustration of the node information annotation for LUNA16 dataset
3.1.1 數(shù)據(jù)預處理
由于肺器官的內部結構較為復雜,肺部圖像預處理主要如下:1)根據(jù)肺部區(qū)域CT 值的取值范圍在-500 亨氏單位(Hounsfield unit,HU)左右,過濾掉CT 圖像中骨骼、金屬床亮斑以及其他組織器官等無關信息,增強肺結節(jié)信息的可檢測性,簡化數(shù)據(jù),以提高肺結節(jié)檢測的準確度和訓練速度;2)根據(jù)肺結節(jié)坐標信息,將2D 數(shù)據(jù)堆疊成需要的3D 數(shù)據(jù),以保留肺結節(jié)的空間信息;3)結節(jié)數(shù)據(jù)增強,避免網(wǎng)絡訓練過擬合,提升模型的泛化能力。
預處理LUNA16 數(shù)據(jù)集步驟如下:1)生成肺結節(jié)掩膜圖像。以肺結節(jié)的坐標為中心點,生成以結節(jié)直徑為邊長的正方體區(qū)域,最后生成包含所有結節(jié)的掩膜文件(都是3D),原始CT 圖像與對應結節(jié)掩膜,如圖5 所示。2)圖像去噪與歸一化處理。根據(jù)肺部HU 的取值范圍,設置上下限,去除原始CT 圖像中存在的噪聲,然后將圖像像素進行歸一化處理至(0,1),加快網(wǎng)絡收斂,提高運算速率。3)生成候選結節(jié)檢測數(shù)據(jù)。將經過處理后的CT 圖像及對應掩膜圖像,分別使用線性插值和最鄰近插值進行采樣,并在CT 圖像和對應掩膜圖像上,根據(jù)設定步長生成大小為(96,96,16)的小塊圖像,判斷并保留有效的小塊CT 圖像及對應小塊圖像的掩膜圖像,小塊CT 圖像與對應結節(jié)掩膜圖像如圖6 所示;4)生成結節(jié)分類數(shù)據(jù)。根據(jù)候選結節(jié)文件的坐標信息,以該坐標為中心,截取大小為(48,48,48)的區(qū)域作為候選結節(jié)圖像,根據(jù)候選結節(jié)文件內標注的良惡性結節(jié)信息,將圖像分為0(非結節(jié))和1(結節(jié))兩類。
圖5 原始數(shù)據(jù)與對應結節(jié)掩膜Fig.5 Original data and corresponding nodule mask
圖6 小塊CT 圖像與對應結節(jié)掩膜Fig.6 Small CT images with its corresponding nodule mask
3.1.2 數(shù)據(jù)增強
訓練神經網(wǎng)絡需要大量的訓練樣本才能訓練得到一個泛化性能較好、魯棒性較強的模型。在訓練數(shù)據(jù)量少或正負樣本失衡的情況下,可以利用數(shù)據(jù)增強方式來增加訓練樣本的多樣性,避免網(wǎng)絡訓練出現(xiàn)過擬合現(xiàn)象,提升模型的泛化性能。
肺部CT 圖像數(shù)據(jù)經過預處理后,得到1 351 個有結節(jié)的圖像和549 714 個沒有結節(jié)的圖像,結節(jié)與非結節(jié)圖像數(shù)量相差特別大。為了避免網(wǎng)絡訓練過擬合,提升模型的泛化能力,從1 351 個有結節(jié)的圖像中先隨機選取20%的圖像作為測試數(shù)據(jù),剩下的作為訓練數(shù)據(jù),再對該訓練和測試數(shù)據(jù)分別作平移、旋轉及翻轉操作進行數(shù)據(jù)增強,將有結節(jié)圖像的數(shù)量擴大30 倍,得到40 530 個結節(jié)圖像集;從549 714個非結節(jié)圖像中隨機選取30%的數(shù)據(jù),組成164 914個非結節(jié)圖像集,再對164 914 個非肺結節(jié)圖像進行隨機采樣20%的圖像數(shù)據(jù)作為分類測試集,剩下的圖像數(shù)據(jù)作為分類訓練集。將結節(jié)和非結節(jié)訓練數(shù)據(jù)和測試數(shù)據(jù)合并,得到最終分類訓練集和測試集。
本次實驗使用Window10 操作系統(tǒng),處理器為Intel(R)Xeon(R)CPU E5-2680 v4@2.4 GHz(2處理器),計算機內存為64 GB,整個網(wǎng)絡模型代碼都使用Python 3.8 版本進行編寫,并在Tensorflow-gpu2.8.0深度學習框架下搭建,同時使用顯存為11 455 MiB的NVIDIA Tesla M40 顯卡,在GPU 上加速模型訓練。
為了評估肺結節(jié)檢測網(wǎng)絡的有效性和檢測的準確性,本文采用敏感度(sensitivity)SEN、準確率(accuracy)ACC、受試者工作特性曲線(receiver operating characteristic curve)ROC、曲線ROC下方面積(area under the curve)AUC及混淆矩陣5 個指標,整體評估網(wǎng)絡性能,具體定義如下,其中下標P 表示陽性結節(jié),N 表示陰性結節(jié):
式(3)(4)中:TP為真陽性;FP為假陽性;TN為真陰性;FN為假陰性。
預測結果描述如表2 所示。
表2 混淆矩陣Table 2 Confusion matrix
候選結節(jié)檢測主要使用敏感度和Dice 系數(shù)作為模型性能評估指標,性能好的模型應該具有較高的敏感度和Dice 系數(shù)。敏感度用來評估模型檢測出的真實結節(jié)占全部候選結節(jié)的比例,敏感度越高,則漏檢率越低;Dice 系數(shù)用于評估預測結果與真實標簽的相似度,Dice 系數(shù)越大,相似度越高。通過混淆矩陣、ROC曲線圖及AUC直觀評估良惡性結節(jié)分類模型性能,ROC曲線是反映特異性和敏感性連續(xù)變量的綜合指標,曲線越接近左上角,模型的分類性能越好,誤診和漏診的可能性越小。AUC是指ROC曲線下方的面積,AUC越大,分類性能越好。
模型中僅在分類網(wǎng)絡最后一個全連接層使用Softmax 激活函數(shù),其余均使用ReLU 作為激活函數(shù),并采用Adam 作為網(wǎng)絡訓練優(yōu)化方法,Adam 是一種高效的隨機優(yōu)化方法,它結合了目前流行的AdaGrad和RMSProp 兩種優(yōu)化方法的優(yōu)點[21],可以使肺結節(jié)檢測模型擁有更好的性能。在一定范圍內,不同批處理大小對實驗結果影響不大,其設置主要依據(jù)數(shù)據(jù)集大小,批處理設置越大,模型分類性能相對越好;迭代次數(shù)主要影響模型的訓練速度,其設置越大,訓練時長越長;學習率控制權重更新步長,其設置太大可能導致不收斂,而設置太小導致收斂速度過慢。綜合考慮,將Batchsize 大小設為16,迭代次數(shù)設為10,學習率設為0.001,以收獲較為滿意的實驗結果。
3.5.1 候選結節(jié)檢測結果
在候選結節(jié)檢測階段,本文使用融合殘差結構的3D V-Net 網(wǎng)絡,在相同的LUNA16 數(shù)據(jù)集下,對比了其他肺結節(jié)檢測網(wǎng)絡在本階段的模型性能,所得結果見表3。
表3 不同候選結節(jié)檢測網(wǎng)絡性能對比Table 3 Performance comparison of different candidate nodule detection networks
表3 所示實驗結果表明:在候選結節(jié)檢測階段,本文提出的融合殘差結構的3D V-Net 網(wǎng)絡的敏感度為91.28%,高于其他文獻所提算法的敏感度,從而驗證了融合殘差結構的3D V-Net 網(wǎng)絡在肺結節(jié)檢測階段的網(wǎng)絡性能高于其他算法的。
候選結節(jié)檢測階段訓練過程中的損失函數(shù)變化情況見圖7。
圖7 候選結節(jié)訓練過程損失函數(shù)變化圖Fig.7 Variation chart of loss function during the training process of candidate nodules
從圖7 所示損失函數(shù)曲線可以看出,隨著訓練次數(shù)的增加,loss 值的變化逐漸趨于穩(wěn)定,且收斂速度較快,整個訓練過程中損失很小。
本文提出的融合殘差結構的3D V-Net 網(wǎng)絡在測試集上對原始圖像進行預測的結果如表4 所示。對比分析預測結果圖像與金標圖像可知,模型預測圖像與金標圖像差別不大,這一結果說明本文提出的算法檢測性能較好。
表4 融合殘差結構的3D V-Net 網(wǎng)絡預測結果Table 4 Prediction results of 3D V-Net network integrating residual structure
3.5.2 良惡性肺結節(jié)分類結果
在良惡性結節(jié)分類階段,采用融合殘差結構的3D VGG 網(wǎng)絡對結節(jié)與非結節(jié)進行分類,獲得真陽性結節(jié),在相同數(shù)據(jù)集LUNA16 下,對比其他結節(jié)檢測網(wǎng)絡在本階段的模型性能,結果見表5。
表5 不同分類模型性能對比Table 5 Performance comparison of different classification models
表5 所示實驗結果表明:本文在良惡性肺結節(jié)分類階段采用融合殘差結構的3D VGG 網(wǎng)絡,最終獲得了99.22%的分類準確率和96.60%的敏感度,相較于表中其他文獻的算法,本文提出的良惡性結節(jié)分類網(wǎng)絡在準確率和敏感度上更優(yōu)。
良惡性結節(jié)分類階段訓練過程的損失函數(shù)變化如圖8 所示,由損失函數(shù)曲線可看出,隨著訓練次數(shù)的增加,Loss 值先急劇下降,隨后小幅波動,收斂速度較快,表明分類模型在訓練過程中損失很小。
圖8 分類階段訓練過程損失函數(shù)變化曲線Fig.8 Change curve of loss function during the training process at classification stage
圖9 為分類階段訓練過程準確率函數(shù)變化圖,從圖中曲線可以得出,隨著訓練次數(shù)增加,準確率最終趨于穩(wěn)定,整個過程收斂速度較快,當訓練次數(shù)達30 000 時,分類準確率達0.99,隨后小幅波動。
圖9 分類階段訓練過程準確率函數(shù)變化圖Fig.9 Variation of accuracy function during training in classification stage
使用ROC曲線直觀分析分類模型性能,結果見圖10。曲線越靠近左上角,模型敏感性和特異性越高,從圖中可看出,ROC曲線距離(0,1)點較近,通過計算曲線下方面積,獲得的AUC達99.90%,驗證了本文方法在數(shù)據(jù)集LUNA16 上的分類性能。
圖10 模型的ROC 曲線圖Fig.10 ROC curve of the model
表6 所示混淆矩陣直觀展示了分類結果,分析表中矩陣數(shù)據(jù)可知,分類模型的準確率達99.22%,假陽率只0.11%,漏檢率為3.40%,準確率偏高,可能與分類數(shù)據(jù)集正負樣本不平衡有關,假陽率較低,漏檢率相對偏高,分類結果符合預期,這表明模型分類性能較好。
表6 分類結果混淆矩陣Table 6 Confusion matrix of classification results
在CT 中準確檢測出早期肺結節(jié)是肺癌診斷和治療的關鍵步驟。針對現(xiàn)有肺結節(jié)自動檢測模型精度較低、假陽性較高等問題,本文提出了一種融合殘差結構的3D V-Net 網(wǎng)絡和3D VGG 網(wǎng)絡的兩階段肺結節(jié)檢測方法,實現(xiàn)了對肺結節(jié)的準確檢測。在肺結節(jié)檢測階段,通過在3D V-Net 網(wǎng)絡的基礎上融合殘差結構,加深網(wǎng)絡深度,并實現(xiàn)圖像特征的重復利用,為解決數(shù)據(jù)集正負樣本失衡的問題,引入改進的損失函數(shù),提高了模型的檢測效率和敏感度;在良惡性分類階段,采用融合殘差連接的3D VGG 網(wǎng)絡對良惡性結節(jié)進行分類,以降低假陽性,獲得真陽性結節(jié)。實驗結果表明,本文方法對比目前其他檢測方法,在檢測準確率和敏感度方面均有所提升,可用來輔助放射科醫(yī)生對肺結節(jié)進行檢測。