本文提出一種在圖像精細預處理條件下,通過二維卷積神經網絡對低劑量計算機斷層掃描(CT)圖像進行肺結節檢測的方法。通過圖像剪切、歸一化操作等算法對 CT 圖像預處理,對正樣本進行擴充以平衡正負樣本數量,訓練二維卷積神經網絡并在過程中不斷優化網絡參數,最終得到性能最優的模型。本文采用美國 2016 年肺結節分析(LUNA16)挑戰賽開源數據集進行五折交叉驗證,取每組模型實驗結果的平均值,最終準確率為 92.3%、敏感性為 92.1%、特異性為 92.6%,相較于已有的其他肺結節自動檢測分類方法在各項指標上均有所提高。隨后本文在此基礎上進行模型微擾實驗,實驗結果表明,模型穩定且具有一定的抗干擾能力,可以有效地識別肺結節,期望可為肺癌早期篩查提供輔助診斷意見。
引用本文: 劉一鳴, 侯智超, 李曉琴, 王學棟. 基于卷積神經網絡的肺結節檢測方法. 生物醫學工程學雜志, 2019, 36(6): 969-977. doi: 10.7507/1001-5515.201902001 復制
引言
肺癌是對人類生命和健康威脅最大的腫瘤[1],早期發現對于患者的生存和康復至關重要。臨床上,肺結節檢測是肺癌篩查的第一步。如何檢測作為肺癌早期特征之一的肺結節,近幾年引發了廣泛討論和關注[2]。
傳統的肺結節檢測方法是醫生通過肉眼直接觀察肺部計算機斷層掃描圖像(computed tomography,CT),來評估患者肺部是否存在肺結節。但一位患者的 CT 圖像往往有上百張切片,對這些圖像采用人工方式進行觀察、判斷,工作量巨大,且一些 CT 圖像上較小的肺結節由于不易觀察可能會造成遺漏[3]。因此,迫切需要開發新的計算機輔助檢測肺結節的方法提升肺結節的檢測效率。
近幾年人工智能技術,尤其是深度學習方法,發展十分迅速,應用在識別圖像方面有很好的效果,因此相關應用也擴展至醫學領域[4]。深度學習是以圖像特征的識別和分類來訓練模型,并利用模型的準確率、特異性等多重評價標準來反向指導特征的提取[5],從而實現端到端的映射學習。Liu 等[6]以肺實質區域提取、獲取候選結節集、模型的特征提取訓練以及肺結節分類 4 個步驟為基本流程確立了肺結節計算機輔助設計(computer aided design,CAD)分類系統。Shen 等[7]提出以多尺度 CT 圖像作為輸入的肺結節分類模型,該研究截取三種不同尺度的肺結節圖像作為卷積神經網絡(convolutional neural network,CNN)模型的輸入,從而在訓練過程中讓模型可以更好地學習到肺結節特征,增加分類器的準確率。Kumar 等[8]提出一種肺結節良惡性 CAD 分類系統,該研究首先利用一個 5 層棧式自動編碼器提取出肺結節的特征,之后利用二值決策樹對結節分類,該研究在肺圖像數據庫聯盟(Lung Image Database Consortium,LIDC)數據集表現良好,且準確率優于其他的精度度量方法。Hua 等[9]將深度信念網絡(deep belief network,DBN)與 CNN 網絡分別應用于肺結節分類檢測中,DBN 網絡的敏感性達到 73.40%,CNN 網絡的敏感性達到 73.30%。上述研究使用了包括深度學習在內的各種方法,設計完成了肺結節 CAD 分類系統,并取得了良好的效果。
隨著技術的不斷發展,肺結節的識別與檢測不斷取得新進展,但依然存在一些問題。首先,在原始數據的預處理方面,大多數的研究對醫學圖像的處理方法比較粗略,一定程度上會損失一些包含關鍵特征的細節信息,從而無法提高最后分類的準確率;其次,在訓練網絡模型時所使用的數據量不夠大,且數據中的正負樣本數量不均衡,使得訓練后的模型泛化能力較弱;最后,在運用深度學習網絡模型學習特征并分類時,網絡過于繁雜,使得訓練成本過高但準確率提升不大。針對以上問題,本文設計了一種基于 CNN 的肺結節自動檢測方法,建立了一套針對肺部 CT 圖像的預處理流程,并針對正負樣本數據量不均衡問題對正樣本數據進行擴增,有效提升了模型的泛化能力,并在 CNN 中加入丟棄(dropout)層[10],用于防止模型在訓練中出現過擬合的現象,最終建立了一個穩定可靠的肺結節檢測系統,可以有效地識別檢測肺結節,或可為肺癌早期篩查提供輔助診斷意見。
1 實驗數據
本文采用的研究數據來源于美國國家癌癥研究所(National Cancer Insitute,NCI)發起收集的肺部圖像數據庫聯盟和圖像數據庫資源倡議(Lung Image Database Consortium and Image Database Resource Initiative,LIDC-IDRI)開源數據集(網址為:https://wiki.cancerimagingarchive.net/display/Public/LIDC-IDRI)和基于 LIDC-IDRI 開源數據集的美國 2016 年肺結節分析挑戰賽(Lung Nodule Analysis 2016,LUNA16)[11]開源數據集(網址為:https://luna16.grand-challenge.org/),該數據集提供了患者的肺部 CT 圖像及醫生的標注信息,旨在為研究肺結節的檢測分類和肺癌的輔助診斷提供幫助。
LUNA16 數據集將 LIDC-IDRI 數據集中切片厚度大于 2.5 mm 的 CT 圖像以及切片像素不一致或不完整的 CT 圖像去除,最終形成了包含 888 個樣本的 CT 數據集,且圖像信息均以.mhd 為擴展名的頭信息文件和以.raw 為擴展名的像素信息文件存儲。
LIDC-IDRI 數據集中每幅 CT 圖像均由 4 名專業的影像科醫生分兩階段標注。第一階段,每位醫生分別獨立診斷肺部 CT 圖像,對其進行標注并分為三類:非結節、直徑大于 3 mm 的結節、直徑小于 3 mm 的結節。第二階段,每位醫生分別復審其他三位醫生的標注,最終給出自己的診斷結果。在 LUNA16 數據集中,最終選取 LIDC-IDRI 數據集中三位及三位以上醫生標注的且直徑大于 3 mm 的結節作為肺結節的標準標注,共有 1 186 個肺結節。
2 實驗方法
本文提出了一種基于 CNN 的肺結節檢測方法,方法流程圖如圖 1 所示,由以下 4 個步驟組成:

(1)圖像預處理:讀取 LUNA16 數據集的 CT 圖像數據,使用圖像預處理算法對其進行處理,提取出肺部感興趣區域(region of interest,ROI),形成圖像數據集,用于后續模型的訓練、測試等工作。
(2)搭建并優化 CNN:搭建初始 CNN,利用步驟(1)形成的數據集對網絡進行訓練及測試,根據測試結果不斷調整訓練參數及網絡結構。
(3)模型評估:結合測試結果設定評估指標,并通過多個驗證實驗多角度對模型進行評估。
(4)模型應用:利用模型對外部 CT 圖像數據進行檢測。
2.1 數據集預處理
數據集預處理的目標是提取出圖像中的 ROI。在本文中 ROI 即為肺部 CT 圖像中待檢測的結節區域,這個區域是研究中重點關注的對象。若能將這個區域精細地從圖像中分割出來,則在后續模型訓練中,模型會更容易學習到結節的特征信息,提高模型的準確率。
研究中發現,僅使用單一圖像處理方法得到的圖像精度不足,在模型中的表現并不理想,因此本文嘗試將多種方法結合,從而獲得具有統一格式、圖像信息量大、正負樣本數量均衡且易于模型訓練的數據集。本文對圖像預處理的流程如圖 2 所示。

2.1.1 歸一化處理
LUNA16 數據集中的圖像數據來源于不同儀器的掃描結果,受成像效果的影響會產生灰度差異,這種差異對于需要利用灰度信息來對肺結節分類的過程影響很大[12]。因此,在提取 CT 圖像中的灰度值信息時,需要盡可能地去除因成像差異對圖像灰度造成的干擾,保證在模型中圖像灰度信息作為一個不變的特征,以便于對來自不同設備輸出的醫學圖像進行肺結節的識別和分類,即進行圖像的歸一化處理。
歸一化處理在醫學圖像處理中應用非常廣泛,其原因是它可以減小醫學圖像由于光線不均勻所造成的干擾。本文主要使用線性函數變換法[13]對圖像進行歸一化處理。首先,將切片中采樣點的亨氏值(hounsfield unit,HU)歸一化為 0~1 之間的值,表達式如式(1)所示:
![]() |
其中,為歸一化處理前的值、
為歸一化處理后的值,在輸出為灰度圖像時需乘以 255,HUmax、HUmin 分別為最大 HU 值和最小 HU 值,本文中分別取 400 和?1 000。
2.1.2 數據降維
在 LUNA16 數據集中,888 例患者肺部 CT 圖像(均為 512 × 512 個采樣點)中共有 551 065 處注釋。由于在數據集預處理和網絡訓練階段,龐大的圖像數據量會耗費大量的時間,而且對計算機等設備配置的要求較高,因此需要在不丟失圖像信息的基礎上對原始圖像數據進行降維。圖像數據降維主要從尺寸和數量兩個方面進行:
(1)圖像尺寸降維
本文選用的是剪切圖像的方式,由于數據集中提供了候選結節集的位置信息,因此以其為中心對圖像剪切。在剪切尺寸方面,本文選擇截取以標注位置信息為中心的大小為 50 × 50 圖像塊作為 ROI。統計數據表示,在 LUNA16 數據集中,醫生所標注的結節直徑范圍均在 3~30 mm,因此 50 × 50 圖像塊可以截取到每個結節的全部信息,后續的實驗也證明:50 × 50 圖像塊在網絡訓練中十分適用且高效,在圖像檢測分類中也表現良好。
在醫學圖像分割過程中,坐標系的轉換一直是處理時的重點與難點[14]。在 LUNA16 數據集中,文件所標注的各個結節的位置,是距離每張圖像中心掃描點的距離信息,并不是坐標信息,但是僅獲得結節的距離信息是無法對圖像進行剪切的。因此需要將原始的坐標轉換為其在每張圖像中的體素坐標。
如圖 3 所示,掃描點 C(x,y)是指從坐標文件中讀取的結節中心的位置信息,中心點 O(a,b)是指在解剖學坐標系中第一個體素的位置,空間距離 S(m,n)是兩個體素橫向和縱向之間的距離信息。利用上述三個點的信息,計算掃描點 C 經坐標轉換為 C’(x’,y’)點的表達式如式(2)所示:

![]() |
(2)圖像數量降維
數據集中正負樣本比例約為 1∶500,其中負樣本數據量大約有 550 000 個,大量的負樣本并不會有效提升分類模型的準確率,反而增加系統負擔,因此在不影響模型性能的情況下,適量選取負樣本。在經過實驗后,本文最終以正負樣本 1∶5 的比例隨機抽取負樣本。
2.1.3 正樣本擴充
在對負樣本進行降維后,正樣本數據量依然不足,如果僅使用少量正樣本數據集對模型訓練會削弱模型的泛化能力、影響模型的識別準確率,因此需要對正樣本進行合理的擴充[15]。
經過大量實驗后,本文采用平移和旋轉兩種方法對正樣本數據進行擴充。由于在處理圖像時均是以結節作為中心進行剪切,使得結節出現位置過于單一。因此,在剪切時將圖像中心坐標于橫向或縱向上隨機平移 0~10 個單位,得到一系列既含有結節且結節不在中心處的新圖像。同時,為獲取不同成像條件下的結節圖像,本課題組又對圖像進行了旋轉操作,進一步擴充正樣本。
對于坐標為(x,y)的點,平移操作后的坐標為(x′,y′),其表達式如式(3)所示;旋轉操作后的坐標為(x″,y″),表達式如式(4)所示:
![]() |
![]() |
式(3)中 k1、k2 分別為圖像在橫向或縱向上平移的單位數量,這里 k1、k2 取-10~10 之間的整數,Δx、Δy 是橫向、縱向像素點的單位間距。式(4)中的 θ 為圖像逆時針旋轉的角度。本文中選取 θ 值為 90° 和 180°,使用該方法對圖像正樣本擴增后的結果如圖 4 所示。后續,本課題組將通過實驗以證明通過上述方法對正樣本數量進行擴充后有利于提升模型的泛化能力。

2.1.4 數據集分類
經過處理得到的 ROI 區域最終要應用于深度學習模型中,在有監督的機器學習中[16],數據集通常被分 1~2 個訓練集和 1 個測試集。
由于本文在最后評估模型時所使用的是五折交叉驗證方法,因此將數據均分為 5 個子集 X_1~X_5,每次從 5 個子集中選取 3 個子集合并作為訓練數據集,剩余兩個子集則作為驗證集與測試集。訓練數據集用于訓練模型,建立分類器;驗證數據集用于確定網絡結構和控制模型復雜程度的參數,也可以調整分類器的參數;測試集則用來檢驗訓練后得到的最優模型的性能。5 種組合如圖 5 所示,對應訓練模型 1~5,各數據集的樣本量如表 1 所示。


2.2 二維卷積神經網絡
用于檢測肺結節的 CNN 主要由不同數量的輸入層、卷積層、池化層、全連接層、dropout 層及輸出層共 9 層構成,具體結構如圖 6 所示。輸入層是通過預處理得到的 50 × 50 的圖像,之后通過一個有 32 個 5 × 5 卷積核的卷積層和步長為 2 的 2 × 2 池化層,接著順次通過有 64 個 5 × 5 卷積核的卷積層、64 個 3 × 3 卷積核的卷積層以及步長為 2 的 2 × 2 池化層,之后通過全連接層以及防止過擬合的 dropout 層,分類后由輸出層輸出[17]。

2.2.1 卷積層
卷積層是 CNN 中的核心層。卷積是一種線性運算,通過局部加權來輸入信號,其本質是提取目標圖像數據集中不同頻段的特征信息,假設 是第 l 層卷積層接收到的第 i 個特征圖,那么卷積的計算過程如式(5)所示:
![]() |
其中, 表示第 l 層中第 j 個特征圖的對應偏置,f(·)為激活函數,*表示卷積運算[18]。Mj 表示第 j 個輸出特征圖卷積過程中的輸入圖合集,
表示第 l 層用于提取特征圖 x 的第 i 個輸入的卷積核,最后輸出第 j 個特征圖,其表達式如式(6)所示:
![]() |
卷積計算中使用的激活函數有很多種,本文采用修正線性單元(rectified linear units,ReLU)激活函數,ReLU 激活函數如式(7)所示:
![]() |
ReLU 函數是分段線性函數,將所有負值轉化為 0,但正值不變,這種操作被稱為單側抑制,正是由于單側抑制,神經網絡中的神經元具有了稀疏激活性[18]。
2.2.2 池化層
池化層穿插在不同的卷積層中,與卷積層相連,以縮小數據和參數的量,減輕過度擬合現象。池化層的輸入為經由卷積層計算而得到的特征圖,且輸出的特征圖數量與輸入的特征圖數量相同,經過池化后輸出的特征圖的維度大幅度減少,計算公式如式(8)所示:
![]() |
式(7)中 表示池化層 l 的前一層中的第 j 個特征圖,
表示第l層輸出的第 j 個池化結果,
表示第 l 層第 j 個特征圖對應的加權值,
表示對應的偏置項,f(·)為激活函數,down(·)為池化函數[19]。本文選擇最大池化操作,即池化結果中采樣點的值為卷積計算后窗口中最大的值,如式(9)所示:
![]() |
式中 pj 表示池化結果,Rj 表示池化窗口,si 表示池化窗口中的數值。最大池化具體操作示意圖如圖 7 所示。

2.2.3 dropout 層
在訓練網絡模型時,隨著迭代數量的增加,網絡對訓練數據集和驗證數據集上的圖像數據擬合程度呈現兩極分化的態勢,前者效果很好而后者則較差,即過擬合現象。
針對這種現象,本文引入 dropout 層,將這層神經元隨機采樣,將采樣后的子網絡作為新的目標網絡。根據參數 p 得出向量 r(l),利用上一步得到的 r(l)向量對 h(l)進行采樣,產生一個約減的輸出,如式(10)~(11)所示,從而完成對原網絡的采樣并生成新的子網絡[19]。
![]() |
![]() |
其中,向量 r(l)的元素符合伯努利隨機分布,常參數 p 為人為設置的丟棄神經元個數的比例,在 dropout 層以其作為參數按比例隨機激活神經元,h(l)是上一層的輸出,· 表示按向量元素點乘。若在一個具有 n 個結點的網絡中插入一個 dropout 層,可用的子網絡共有 2n 個,且當 n 足夠大時,每次采樣更新后得到的新子網絡均不重復[20],進而降低過擬合程度。
3 實驗結果
3.1 模型評估指標
利用本文模型,對給定標簽的樣本數據集進行預測,并將預測結果與標簽結果比對。
分類模型的性能通過準確率(accuracy)(以符號 Acc 表示)、敏感性(sensitivity)(以符號 Se 表示)和特異性(specificity)(以符號 Sp 表示)來衡量,其中準確率是正確分類的樣本占比。每個指標具體計算方法如式(12)~(14)所示:
![]() |
![]() |
![]() |
其中,真陽性(true positive,TP)(符號記為:TP)表示正樣本被正確分類的個數;假陽性(false positive,FP)(符號記為:FP)表示負樣本被錯誤地分類為正樣本的個數;真陰性(true negative,TN)(符號記為:TN)表示負樣本被正確分類的個數;假陰性(false negative,FN)(符號記為:FN)表示正樣本錯誤地分類為負樣本的個數。
3.2 實驗結果與分析
以 LUNA16 數據集為原始數據,采用本文的圖像預處理方法得到適配模型的數據集,并對本文設計的模型進行測試,測試結果的方法采用了建模應用中常見的五折交叉驗證方法,將實驗數據集劃分為訓練集、驗證集和測試集三個子集,依據 2.1 節描述的方法對數據集進行處理,采用五折交叉驗證的方法,使用不同數據的排列組合方法訓練 5 個模型,對訓練出的 5 個模型分別進行評估,將得到的準確率、敏感性、特異性三項評估指標分別取均值,作為本模型最終的評估結果。
五折交叉驗證法可以有效地評估模型的性能,在數據集有限的情況下,采用同一數據的不同部分來訓練測試模型,相當于擴充了訓練集的數據,若 5 個模型的測試結果都很好,說明模型具有良好的泛化能力。
利用本文訓練出的 5 個模型,分別對相應測試集樣本進行測試,測試結果及其對應的評估指標如表 2 所示。可以看出,5 個模型的肺結節檢測準確率、敏感性和特異性指標均在 92.0% 以上,各項指標數據平穩。綜合 5 個模型的評估指標,肺結節檢測的準確率均值為 92.3%、敏感性均值為 92.1%、特異性均值為 92.6%。

將上述結果與一些同樣需要依賴于圖像精細處理的肺結節分類算法進行比較,不同模型的肺結節檢測結果如表 3 所示。

從表 3 中可以看出:雖然部分方法采用的數據集有所不同,但是仍可以粗略地比較出不同算法之間的優劣性。在使用了最終用途負荷和保護評估計劃(End-Use Load and Conservation Assessment Program,ELCAP)數據集的三維 CNN(3D-CNN)中,由于數據集圖像數量較少,從而導致準確率和特異性偏低;在同樣使用了 LUNA16 數據集的二維 CNN(2D-CNN)和人工神經網絡(artificial neural network,ANN)中,ANN 模型在敏感性上具有相對優勢;本文經改良的 2D-CNN 肺結節檢測模型的準確率、特異性均高于其它模型;敏感性與 ANN 模型持平,但是相較于另兩個網絡模型仍具有優勢,模型整體更加穩定,性能優于上述模型。
3.3 驗證實驗結果與分析
在對模型評估的同時,本文也進行了一些驗證實驗,以驗證方法的正確性及模型性能。首先,分別用平移、旋轉、平移和旋轉共 3 種不同的擴充方法進行正樣本擴充,并進一步建模以驗證其準確率,結果發現,平移法對應模型的驗證準確率為 89.6%,旋轉法對應模型的驗證準確率為 88.3%,平移和旋轉相結合對應模型的驗證準確率為 92.3%。僅平移或僅旋轉進行數據擴增訓練出的模型準確率相當,但將兩種方法結合后,準確率得到了顯著的提升。因此在正樣本擴增過程中使用平移和旋轉方法相結合是有效的。
本文增加了模型微擾實驗,具體方法為:按照正負樣本 1∶1 比例,從 LUNA16 數據集中隨機抽取 100 張 CT 圖像,提取 100 張圖像的 ROI 作為測試集 1;之后,將測試集 1 中每幅圖像的中心點在橫向或縱向隨機平移 0~10 個單位,分別提取 100 張圖像的 ROI 作為測試集 2;同理,隨機平移 10~20 個單位,形成測試集 3。將 3 個測試集輸入 2.1 節的模型 1 中檢測,得到的結果如表 4 所示。

通過表中數據可以看出:測試集 1 和測試集 2 三項指標均相差不大,但是在測試集 3 中出現了明顯的下滑,主要原因是一些半徑大的大結節在平移過程中移出圖外,僅有部分留在圖像內的特征被模型學習到,導致模型對此結節的特征學習不夠完整。模型微擾實驗結果說明,本文給出的肺結節檢測模型對于肺結節偏離中心 0~20 個單位的圖像也具有較高的識別能力。
3.4 肺結節檢測實驗結果與分析
在實際肺結節檢測中,結節的位置未知,無法構建以結節為中心的圖像集,因此要對整張切片進行分割。首先在 LUNA16 數據集中隨機選取一位患者 CT 圖像中的某張切片,該切片中僅有一處醫生確診為肺結節的標注。對切片進行歸一化處理等醫學圖像預處理操作,可視化切片及結節標注如圖 8 所示,圖中箭頭所指為結節。

然后,對該圖像進行切割,以 10 個像素單位為間隔截取圖像,共獲得 2 209 張大小為 50 × 50 的圖像樣本集。利用本文模型對這 2 209 張圖像進行檢測,將檢驗為正樣本的所有圖像的中心點繪制在原切片中得到散點圖,結果如圖 9 左圖所示。根據 3.3 節驗證實驗的結果可知,模型對結節處于中心及結節中心偏移 0~20 個單位的圖像檢測結果一致,即對實際結節,結節點附近會出現 3 × 3 及以上的散點陣列,如圖 9 中綠色散點所示。對散點進行處理,保留 3 × 3 及以上的散點陣列,該陣列所在位置即為結節分布區域,如圖 9 右圖所示。可以看出:符合要求的區域只有一個且與醫生給定的結節標注位置相符。

在實際肺結節檢測應用中,使用本節的圖像分割方法得到樣本集并用模型進行檢測。同上述方法,對醫學數字成像和通信(digital imaging and communications in medicine,DICOM)格式的外源 CT 圖像數據進行肺結節檢測的結果如圖 10 所示。

上述基于 CNN 的肺結節檢測方法已獲得北京市知識產權局頒發的軟件著作權,軟件名稱為“肺結節檢測模型建立及應用系統”,可實現肺結節的自動檢測,授權號為 2019SR0075702。
4 結論
肺癌篩查結果分析的第一步是肺結節檢測。為輔助肺癌的早期篩查,本文建立了基于 CNN 模型的肺結節檢測方法。提出了一套肺部 CT 圖像預處理方案,構建了模型訓練所需的數據集;通過對比實驗調整了 CNN 網絡架構,采用 ReLU 激活函數加快收斂速度,引入 dropout 層防止過擬合;采用五折交叉驗證訓練肺結節檢測模型進行有效評估,并將模型用于患者任意 CT 圖像切片的肺結節篩查。結果顯示,圖像中心坐標隨機平移的正樣本擴增方式可有效提高模型的泛化及抗干擾能力;本文所提肺結節檢測模型可對肺結節進行有效檢測;將該模型應用于患者肺結節檢測,可準確定位肺結節,為肺癌早期篩查提供有效幫助。
基于正樣本數量的增加可以有效獲取肺結節差異性特征,且增加正樣本數量可以提高模型的泛化性能,后續本課題組可以嘗試重建肺結節并提取肺結節多維度信息,增加肺結節樣本的數量,進一步提高肺結節檢測模型的泛化能力。此外,由于 2D-CNN 有其自身局限性,忽略了肺結節豐富的空間結構特征,今后可以考慮用 3D-CNN 取代 2D-CNN,建立基于 3D-CNN 的肺結節檢測模型。
利益沖突聲明:本文全體作者均聲明不存在利益沖突。
引言
肺癌是對人類生命和健康威脅最大的腫瘤[1],早期發現對于患者的生存和康復至關重要。臨床上,肺結節檢測是肺癌篩查的第一步。如何檢測作為肺癌早期特征之一的肺結節,近幾年引發了廣泛討論和關注[2]。
傳統的肺結節檢測方法是醫生通過肉眼直接觀察肺部計算機斷層掃描圖像(computed tomography,CT),來評估患者肺部是否存在肺結節。但一位患者的 CT 圖像往往有上百張切片,對這些圖像采用人工方式進行觀察、判斷,工作量巨大,且一些 CT 圖像上較小的肺結節由于不易觀察可能會造成遺漏[3]。因此,迫切需要開發新的計算機輔助檢測肺結節的方法提升肺結節的檢測效率。
近幾年人工智能技術,尤其是深度學習方法,發展十分迅速,應用在識別圖像方面有很好的效果,因此相關應用也擴展至醫學領域[4]。深度學習是以圖像特征的識別和分類來訓練模型,并利用模型的準確率、特異性等多重評價標準來反向指導特征的提取[5],從而實現端到端的映射學習。Liu 等[6]以肺實質區域提取、獲取候選結節集、模型的特征提取訓練以及肺結節分類 4 個步驟為基本流程確立了肺結節計算機輔助設計(computer aided design,CAD)分類系統。Shen 等[7]提出以多尺度 CT 圖像作為輸入的肺結節分類模型,該研究截取三種不同尺度的肺結節圖像作為卷積神經網絡(convolutional neural network,CNN)模型的輸入,從而在訓練過程中讓模型可以更好地學習到肺結節特征,增加分類器的準確率。Kumar 等[8]提出一種肺結節良惡性 CAD 分類系統,該研究首先利用一個 5 層棧式自動編碼器提取出肺結節的特征,之后利用二值決策樹對結節分類,該研究在肺圖像數據庫聯盟(Lung Image Database Consortium,LIDC)數據集表現良好,且準確率優于其他的精度度量方法。Hua 等[9]將深度信念網絡(deep belief network,DBN)與 CNN 網絡分別應用于肺結節分類檢測中,DBN 網絡的敏感性達到 73.40%,CNN 網絡的敏感性達到 73.30%。上述研究使用了包括深度學習在內的各種方法,設計完成了肺結節 CAD 分類系統,并取得了良好的效果。
隨著技術的不斷發展,肺結節的識別與檢測不斷取得新進展,但依然存在一些問題。首先,在原始數據的預處理方面,大多數的研究對醫學圖像的處理方法比較粗略,一定程度上會損失一些包含關鍵特征的細節信息,從而無法提高最后分類的準確率;其次,在訓練網絡模型時所使用的數據量不夠大,且數據中的正負樣本數量不均衡,使得訓練后的模型泛化能力較弱;最后,在運用深度學習網絡模型學習特征并分類時,網絡過于繁雜,使得訓練成本過高但準確率提升不大。針對以上問題,本文設計了一種基于 CNN 的肺結節自動檢測方法,建立了一套針對肺部 CT 圖像的預處理流程,并針對正負樣本數據量不均衡問題對正樣本數據進行擴增,有效提升了模型的泛化能力,并在 CNN 中加入丟棄(dropout)層[10],用于防止模型在訓練中出現過擬合的現象,最終建立了一個穩定可靠的肺結節檢測系統,可以有效地識別檢測肺結節,或可為肺癌早期篩查提供輔助診斷意見。
1 實驗數據
本文采用的研究數據來源于美國國家癌癥研究所(National Cancer Insitute,NCI)發起收集的肺部圖像數據庫聯盟和圖像數據庫資源倡議(Lung Image Database Consortium and Image Database Resource Initiative,LIDC-IDRI)開源數據集(網址為:https://wiki.cancerimagingarchive.net/display/Public/LIDC-IDRI)和基于 LIDC-IDRI 開源數據集的美國 2016 年肺結節分析挑戰賽(Lung Nodule Analysis 2016,LUNA16)[11]開源數據集(網址為:https://luna16.grand-challenge.org/),該數據集提供了患者的肺部 CT 圖像及醫生的標注信息,旨在為研究肺結節的檢測分類和肺癌的輔助診斷提供幫助。
LUNA16 數據集將 LIDC-IDRI 數據集中切片厚度大于 2.5 mm 的 CT 圖像以及切片像素不一致或不完整的 CT 圖像去除,最終形成了包含 888 個樣本的 CT 數據集,且圖像信息均以.mhd 為擴展名的頭信息文件和以.raw 為擴展名的像素信息文件存儲。
LIDC-IDRI 數據集中每幅 CT 圖像均由 4 名專業的影像科醫生分兩階段標注。第一階段,每位醫生分別獨立診斷肺部 CT 圖像,對其進行標注并分為三類:非結節、直徑大于 3 mm 的結節、直徑小于 3 mm 的結節。第二階段,每位醫生分別復審其他三位醫生的標注,最終給出自己的診斷結果。在 LUNA16 數據集中,最終選取 LIDC-IDRI 數據集中三位及三位以上醫生標注的且直徑大于 3 mm 的結節作為肺結節的標準標注,共有 1 186 個肺結節。
2 實驗方法
本文提出了一種基于 CNN 的肺結節檢測方法,方法流程圖如圖 1 所示,由以下 4 個步驟組成:

(1)圖像預處理:讀取 LUNA16 數據集的 CT 圖像數據,使用圖像預處理算法對其進行處理,提取出肺部感興趣區域(region of interest,ROI),形成圖像數據集,用于后續模型的訓練、測試等工作。
(2)搭建并優化 CNN:搭建初始 CNN,利用步驟(1)形成的數據集對網絡進行訓練及測試,根據測試結果不斷調整訓練參數及網絡結構。
(3)模型評估:結合測試結果設定評估指標,并通過多個驗證實驗多角度對模型進行評估。
(4)模型應用:利用模型對外部 CT 圖像數據進行檢測。
2.1 數據集預處理
數據集預處理的目標是提取出圖像中的 ROI。在本文中 ROI 即為肺部 CT 圖像中待檢測的結節區域,這個區域是研究中重點關注的對象。若能將這個區域精細地從圖像中分割出來,則在后續模型訓練中,模型會更容易學習到結節的特征信息,提高模型的準確率。
研究中發現,僅使用單一圖像處理方法得到的圖像精度不足,在模型中的表現并不理想,因此本文嘗試將多種方法結合,從而獲得具有統一格式、圖像信息量大、正負樣本數量均衡且易于模型訓練的數據集。本文對圖像預處理的流程如圖 2 所示。

2.1.1 歸一化處理
LUNA16 數據集中的圖像數據來源于不同儀器的掃描結果,受成像效果的影響會產生灰度差異,這種差異對于需要利用灰度信息來對肺結節分類的過程影響很大[12]。因此,在提取 CT 圖像中的灰度值信息時,需要盡可能地去除因成像差異對圖像灰度造成的干擾,保證在模型中圖像灰度信息作為一個不變的特征,以便于對來自不同設備輸出的醫學圖像進行肺結節的識別和分類,即進行圖像的歸一化處理。
歸一化處理在醫學圖像處理中應用非常廣泛,其原因是它可以減小醫學圖像由于光線不均勻所造成的干擾。本文主要使用線性函數變換法[13]對圖像進行歸一化處理。首先,將切片中采樣點的亨氏值(hounsfield unit,HU)歸一化為 0~1 之間的值,表達式如式(1)所示:
![]() |
其中,為歸一化處理前的值、
為歸一化處理后的值,在輸出為灰度圖像時需乘以 255,HUmax、HUmin 分別為最大 HU 值和最小 HU 值,本文中分別取 400 和?1 000。
2.1.2 數據降維
在 LUNA16 數據集中,888 例患者肺部 CT 圖像(均為 512 × 512 個采樣點)中共有 551 065 處注釋。由于在數據集預處理和網絡訓練階段,龐大的圖像數據量會耗費大量的時間,而且對計算機等設備配置的要求較高,因此需要在不丟失圖像信息的基礎上對原始圖像數據進行降維。圖像數據降維主要從尺寸和數量兩個方面進行:
(1)圖像尺寸降維
本文選用的是剪切圖像的方式,由于數據集中提供了候選結節集的位置信息,因此以其為中心對圖像剪切。在剪切尺寸方面,本文選擇截取以標注位置信息為中心的大小為 50 × 50 圖像塊作為 ROI。統計數據表示,在 LUNA16 數據集中,醫生所標注的結節直徑范圍均在 3~30 mm,因此 50 × 50 圖像塊可以截取到每個結節的全部信息,后續的實驗也證明:50 × 50 圖像塊在網絡訓練中十分適用且高效,在圖像檢測分類中也表現良好。
在醫學圖像分割過程中,坐標系的轉換一直是處理時的重點與難點[14]。在 LUNA16 數據集中,文件所標注的各個結節的位置,是距離每張圖像中心掃描點的距離信息,并不是坐標信息,但是僅獲得結節的距離信息是無法對圖像進行剪切的。因此需要將原始的坐標轉換為其在每張圖像中的體素坐標。
如圖 3 所示,掃描點 C(x,y)是指從坐標文件中讀取的結節中心的位置信息,中心點 O(a,b)是指在解剖學坐標系中第一個體素的位置,空間距離 S(m,n)是兩個體素橫向和縱向之間的距離信息。利用上述三個點的信息,計算掃描點 C 經坐標轉換為 C’(x’,y’)點的表達式如式(2)所示:

![]() |
(2)圖像數量降維
數據集中正負樣本比例約為 1∶500,其中負樣本數據量大約有 550 000 個,大量的負樣本并不會有效提升分類模型的準確率,反而增加系統負擔,因此在不影響模型性能的情況下,適量選取負樣本。在經過實驗后,本文最終以正負樣本 1∶5 的比例隨機抽取負樣本。
2.1.3 正樣本擴充
在對負樣本進行降維后,正樣本數據量依然不足,如果僅使用少量正樣本數據集對模型訓練會削弱模型的泛化能力、影響模型的識別準確率,因此需要對正樣本進行合理的擴充[15]。
經過大量實驗后,本文采用平移和旋轉兩種方法對正樣本數據進行擴充。由于在處理圖像時均是以結節作為中心進行剪切,使得結節出現位置過于單一。因此,在剪切時將圖像中心坐標于橫向或縱向上隨機平移 0~10 個單位,得到一系列既含有結節且結節不在中心處的新圖像。同時,為獲取不同成像條件下的結節圖像,本課題組又對圖像進行了旋轉操作,進一步擴充正樣本。
對于坐標為(x,y)的點,平移操作后的坐標為(x′,y′),其表達式如式(3)所示;旋轉操作后的坐標為(x″,y″),表達式如式(4)所示:
![]() |
![]() |
式(3)中 k1、k2 分別為圖像在橫向或縱向上平移的單位數量,這里 k1、k2 取-10~10 之間的整數,Δx、Δy 是橫向、縱向像素點的單位間距。式(4)中的 θ 為圖像逆時針旋轉的角度。本文中選取 θ 值為 90° 和 180°,使用該方法對圖像正樣本擴增后的結果如圖 4 所示。后續,本課題組將通過實驗以證明通過上述方法對正樣本數量進行擴充后有利于提升模型的泛化能力。

2.1.4 數據集分類
經過處理得到的 ROI 區域最終要應用于深度學習模型中,在有監督的機器學習中[16],數據集通常被分 1~2 個訓練集和 1 個測試集。
由于本文在最后評估模型時所使用的是五折交叉驗證方法,因此將數據均分為 5 個子集 X_1~X_5,每次從 5 個子集中選取 3 個子集合并作為訓練數據集,剩余兩個子集則作為驗證集與測試集。訓練數據集用于訓練模型,建立分類器;驗證數據集用于確定網絡結構和控制模型復雜程度的參數,也可以調整分類器的參數;測試集則用來檢驗訓練后得到的最優模型的性能。5 種組合如圖 5 所示,對應訓練模型 1~5,各數據集的樣本量如表 1 所示。


2.2 二維卷積神經網絡
用于檢測肺結節的 CNN 主要由不同數量的輸入層、卷積層、池化層、全連接層、dropout 層及輸出層共 9 層構成,具體結構如圖 6 所示。輸入層是通過預處理得到的 50 × 50 的圖像,之后通過一個有 32 個 5 × 5 卷積核的卷積層和步長為 2 的 2 × 2 池化層,接著順次通過有 64 個 5 × 5 卷積核的卷積層、64 個 3 × 3 卷積核的卷積層以及步長為 2 的 2 × 2 池化層,之后通過全連接層以及防止過擬合的 dropout 層,分類后由輸出層輸出[17]。

2.2.1 卷積層
卷積層是 CNN 中的核心層。卷積是一種線性運算,通過局部加權來輸入信號,其本質是提取目標圖像數據集中不同頻段的特征信息,假設 是第 l 層卷積層接收到的第 i 個特征圖,那么卷積的計算過程如式(5)所示:
![]() |
其中, 表示第 l 層中第 j 個特征圖的對應偏置,f(·)為激活函數,*表示卷積運算[18]。Mj 表示第 j 個輸出特征圖卷積過程中的輸入圖合集,
表示第 l 層用于提取特征圖 x 的第 i 個輸入的卷積核,最后輸出第 j 個特征圖,其表達式如式(6)所示:
![]() |
卷積計算中使用的激活函數有很多種,本文采用修正線性單元(rectified linear units,ReLU)激活函數,ReLU 激活函數如式(7)所示:
![]() |
ReLU 函數是分段線性函數,將所有負值轉化為 0,但正值不變,這種操作被稱為單側抑制,正是由于單側抑制,神經網絡中的神經元具有了稀疏激活性[18]。
2.2.2 池化層
池化層穿插在不同的卷積層中,與卷積層相連,以縮小數據和參數的量,減輕過度擬合現象。池化層的輸入為經由卷積層計算而得到的特征圖,且輸出的特征圖數量與輸入的特征圖數量相同,經過池化后輸出的特征圖的維度大幅度減少,計算公式如式(8)所示:
![]() |
式(7)中 表示池化層 l 的前一層中的第 j 個特征圖,
表示第l層輸出的第 j 個池化結果,
表示第 l 層第 j 個特征圖對應的加權值,
表示對應的偏置項,f(·)為激活函數,down(·)為池化函數[19]。本文選擇最大池化操作,即池化結果中采樣點的值為卷積計算后窗口中最大的值,如式(9)所示:
![]() |
式中 pj 表示池化結果,Rj 表示池化窗口,si 表示池化窗口中的數值。最大池化具體操作示意圖如圖 7 所示。

2.2.3 dropout 層
在訓練網絡模型時,隨著迭代數量的增加,網絡對訓練數據集和驗證數據集上的圖像數據擬合程度呈現兩極分化的態勢,前者效果很好而后者則較差,即過擬合現象。
針對這種現象,本文引入 dropout 層,將這層神經元隨機采樣,將采樣后的子網絡作為新的目標網絡。根據參數 p 得出向量 r(l),利用上一步得到的 r(l)向量對 h(l)進行采樣,產生一個約減的輸出,如式(10)~(11)所示,從而完成對原網絡的采樣并生成新的子網絡[19]。
![]() |
![]() |
其中,向量 r(l)的元素符合伯努利隨機分布,常參數 p 為人為設置的丟棄神經元個數的比例,在 dropout 層以其作為參數按比例隨機激活神經元,h(l)是上一層的輸出,· 表示按向量元素點乘。若在一個具有 n 個結點的網絡中插入一個 dropout 層,可用的子網絡共有 2n 個,且當 n 足夠大時,每次采樣更新后得到的新子網絡均不重復[20],進而降低過擬合程度。
3 實驗結果
3.1 模型評估指標
利用本文模型,對給定標簽的樣本數據集進行預測,并將預測結果與標簽結果比對。
分類模型的性能通過準確率(accuracy)(以符號 Acc 表示)、敏感性(sensitivity)(以符號 Se 表示)和特異性(specificity)(以符號 Sp 表示)來衡量,其中準確率是正確分類的樣本占比。每個指標具體計算方法如式(12)~(14)所示:
![]() |
![]() |
![]() |
其中,真陽性(true positive,TP)(符號記為:TP)表示正樣本被正確分類的個數;假陽性(false positive,FP)(符號記為:FP)表示負樣本被錯誤地分類為正樣本的個數;真陰性(true negative,TN)(符號記為:TN)表示負樣本被正確分類的個數;假陰性(false negative,FN)(符號記為:FN)表示正樣本錯誤地分類為負樣本的個數。
3.2 實驗結果與分析
以 LUNA16 數據集為原始數據,采用本文的圖像預處理方法得到適配模型的數據集,并對本文設計的模型進行測試,測試結果的方法采用了建模應用中常見的五折交叉驗證方法,將實驗數據集劃分為訓練集、驗證集和測試集三個子集,依據 2.1 節描述的方法對數據集進行處理,采用五折交叉驗證的方法,使用不同數據的排列組合方法訓練 5 個模型,對訓練出的 5 個模型分別進行評估,將得到的準確率、敏感性、特異性三項評估指標分別取均值,作為本模型最終的評估結果。
五折交叉驗證法可以有效地評估模型的性能,在數據集有限的情況下,采用同一數據的不同部分來訓練測試模型,相當于擴充了訓練集的數據,若 5 個模型的測試結果都很好,說明模型具有良好的泛化能力。
利用本文訓練出的 5 個模型,分別對相應測試集樣本進行測試,測試結果及其對應的評估指標如表 2 所示。可以看出,5 個模型的肺結節檢測準確率、敏感性和特異性指標均在 92.0% 以上,各項指標數據平穩。綜合 5 個模型的評估指標,肺結節檢測的準確率均值為 92.3%、敏感性均值為 92.1%、特異性均值為 92.6%。

將上述結果與一些同樣需要依賴于圖像精細處理的肺結節分類算法進行比較,不同模型的肺結節檢測結果如表 3 所示。

從表 3 中可以看出:雖然部分方法采用的數據集有所不同,但是仍可以粗略地比較出不同算法之間的優劣性。在使用了最終用途負荷和保護評估計劃(End-Use Load and Conservation Assessment Program,ELCAP)數據集的三維 CNN(3D-CNN)中,由于數據集圖像數量較少,從而導致準確率和特異性偏低;在同樣使用了 LUNA16 數據集的二維 CNN(2D-CNN)和人工神經網絡(artificial neural network,ANN)中,ANN 模型在敏感性上具有相對優勢;本文經改良的 2D-CNN 肺結節檢測模型的準確率、特異性均高于其它模型;敏感性與 ANN 模型持平,但是相較于另兩個網絡模型仍具有優勢,模型整體更加穩定,性能優于上述模型。
3.3 驗證實驗結果與分析
在對模型評估的同時,本文也進行了一些驗證實驗,以驗證方法的正確性及模型性能。首先,分別用平移、旋轉、平移和旋轉共 3 種不同的擴充方法進行正樣本擴充,并進一步建模以驗證其準確率,結果發現,平移法對應模型的驗證準確率為 89.6%,旋轉法對應模型的驗證準確率為 88.3%,平移和旋轉相結合對應模型的驗證準確率為 92.3%。僅平移或僅旋轉進行數據擴增訓練出的模型準確率相當,但將兩種方法結合后,準確率得到了顯著的提升。因此在正樣本擴增過程中使用平移和旋轉方法相結合是有效的。
本文增加了模型微擾實驗,具體方法為:按照正負樣本 1∶1 比例,從 LUNA16 數據集中隨機抽取 100 張 CT 圖像,提取 100 張圖像的 ROI 作為測試集 1;之后,將測試集 1 中每幅圖像的中心點在橫向或縱向隨機平移 0~10 個單位,分別提取 100 張圖像的 ROI 作為測試集 2;同理,隨機平移 10~20 個單位,形成測試集 3。將 3 個測試集輸入 2.1 節的模型 1 中檢測,得到的結果如表 4 所示。

通過表中數據可以看出:測試集 1 和測試集 2 三項指標均相差不大,但是在測試集 3 中出現了明顯的下滑,主要原因是一些半徑大的大結節在平移過程中移出圖外,僅有部分留在圖像內的特征被模型學習到,導致模型對此結節的特征學習不夠完整。模型微擾實驗結果說明,本文給出的肺結節檢測模型對于肺結節偏離中心 0~20 個單位的圖像也具有較高的識別能力。
3.4 肺結節檢測實驗結果與分析
在實際肺結節檢測中,結節的位置未知,無法構建以結節為中心的圖像集,因此要對整張切片進行分割。首先在 LUNA16 數據集中隨機選取一位患者 CT 圖像中的某張切片,該切片中僅有一處醫生確診為肺結節的標注。對切片進行歸一化處理等醫學圖像預處理操作,可視化切片及結節標注如圖 8 所示,圖中箭頭所指為結節。

然后,對該圖像進行切割,以 10 個像素單位為間隔截取圖像,共獲得 2 209 張大小為 50 × 50 的圖像樣本集。利用本文模型對這 2 209 張圖像進行檢測,將檢驗為正樣本的所有圖像的中心點繪制在原切片中得到散點圖,結果如圖 9 左圖所示。根據 3.3 節驗證實驗的結果可知,模型對結節處于中心及結節中心偏移 0~20 個單位的圖像檢測結果一致,即對實際結節,結節點附近會出現 3 × 3 及以上的散點陣列,如圖 9 中綠色散點所示。對散點進行處理,保留 3 × 3 及以上的散點陣列,該陣列所在位置即為結節分布區域,如圖 9 右圖所示。可以看出:符合要求的區域只有一個且與醫生給定的結節標注位置相符。

在實際肺結節檢測應用中,使用本節的圖像分割方法得到樣本集并用模型進行檢測。同上述方法,對醫學數字成像和通信(digital imaging and communications in medicine,DICOM)格式的外源 CT 圖像數據進行肺結節檢測的結果如圖 10 所示。

上述基于 CNN 的肺結節檢測方法已獲得北京市知識產權局頒發的軟件著作權,軟件名稱為“肺結節檢測模型建立及應用系統”,可實現肺結節的自動檢測,授權號為 2019SR0075702。
4 結論
肺癌篩查結果分析的第一步是肺結節檢測。為輔助肺癌的早期篩查,本文建立了基于 CNN 模型的肺結節檢測方法。提出了一套肺部 CT 圖像預處理方案,構建了模型訓練所需的數據集;通過對比實驗調整了 CNN 網絡架構,采用 ReLU 激活函數加快收斂速度,引入 dropout 層防止過擬合;采用五折交叉驗證訓練肺結節檢測模型進行有效評估,并將模型用于患者任意 CT 圖像切片的肺結節篩查。結果顯示,圖像中心坐標隨機平移的正樣本擴增方式可有效提高模型的泛化及抗干擾能力;本文所提肺結節檢測模型可對肺結節進行有效檢測;將該模型應用于患者肺結節檢測,可準確定位肺結節,為肺癌早期篩查提供有效幫助。
基于正樣本數量的增加可以有效獲取肺結節差異性特征,且增加正樣本數量可以提高模型的泛化性能,后續本課題組可以嘗試重建肺結節并提取肺結節多維度信息,增加肺結節樣本的數量,進一步提高肺結節檢測模型的泛化能力。此外,由于 2D-CNN 有其自身局限性,忽略了肺結節豐富的空間結構特征,今后可以考慮用 3D-CNN 取代 2D-CNN,建立基于 3D-CNN 的肺結節檢測模型。
利益沖突聲明:本文全體作者均聲明不存在利益沖突。