賈 鋒, 薛潺涓, 王 欣
(吉林大學(xué) 計算機(jī)科學(xué)與技術(shù)學(xué)院, 長春 130012)
在肺癌早期篩查中, 肺部計算機(jī)X射線斷層掃描(computed X-ray tomography, CT)圖像上的肺結(jié)節(jié)可為醫(yī)生提供診斷依據(jù)[1]. 而計算機(jī)輔助診斷系統(tǒng)對肺癌的早期診斷有重要意義, 能準(zhǔn)確高效地篩查大量CT圖像, 并有效減少醫(yī)生由于疲勞而導(dǎo)致的誤診. 近年來, 由于深度學(xué)習(xí)在圖像處理中取得的優(yōu)異成績[2-7], 將深度學(xué)習(xí)算法應(yīng)用在醫(yī)學(xué)圖像處理中被廣泛關(guān)注[8-11]. 例如: Roth等[12]采用卷積網(wǎng)絡(luò)進(jìn)行肺結(jié)節(jié)的檢測; Ciompi等[13]采用深度學(xué)習(xí)方法進(jìn)行肺裂隙周圍結(jié)節(jié)的分類, 為提高準(zhǔn)確率, 同時采用了軸向面、 冠狀面和矢狀面的CT視圖; Kumar等[14]使用自編碼器的方法進(jìn)行肺結(jié)節(jié)的分類. 上述研究盡管都取得了較好的效果, 但都只采用二維卷積進(jìn)行特征提取, 不僅未使用結(jié)節(jié)的周長、 尺寸等固有特征, 還忽略了肺部CT實際上是三維數(shù)據(jù)的特性. 針對該問題, Kim等[15]提出了使用深度學(xué)習(xí)尋找CT影像中潛在特征的方法; Zhu等[16]提出了使用三維卷積的肺結(jié)節(jié)檢測和分類方法.
使用三維數(shù)據(jù)對提高肺結(jié)節(jié)檢測和分類的準(zhǔn)確率有重要意義, 但提高了數(shù)據(jù)處理的壓力, 且肺結(jié)節(jié)的檢測和分類任務(wù)所需的模型容量較大, 進(jìn)一步增加了基于深度學(xué)習(xí), 尤其是使用三維卷積方法所需模型的規(guī)模和內(nèi)存. 常見的解決方案是采用大窗口、 小步長的密集裁剪方法降低網(wǎng)絡(luò)的單次數(shù)據(jù)吞吐量[11,16], 但盲目地進(jìn)行密集裁剪會導(dǎo)致樣本量的激增, 降低訓(xùn)練效率, 且容易破壞結(jié)節(jié)特征. 基于此, 本文提出一種基于語義分割和空間金字塔池化[17]的多尺度深度學(xué)習(xí)方法, 用于CT影像中肺結(jié)節(jié)的檢測和分類. 實驗結(jié)果表明, 本文提出的模型在LUNA16[18]公開數(shù)據(jù)集上表現(xiàn)出了對肺結(jié)節(jié)檢測和分類的良好性能, 同時避免了對數(shù)據(jù)的盲目裁剪, 提高了特征的利用率和訓(xùn)練效率.
從CT圖像中確定肺結(jié)節(jié)的位置, 屬于圖形學(xué)中的“目標(biāo)檢測”任務(wù). Faster-RCNN[19]是具有代表性的基于深度學(xué)習(xí)的目標(biāo)檢測方法. 該方法首先使用一個卷積網(wǎng)絡(luò)進(jìn)行特征提取, 卷積網(wǎng)絡(luò)可以是VGG-16[20]或ResNet101[21]等合適的模型, 再使用區(qū)域建議網(wǎng)絡(luò)(region proposal networks, RPN)進(jìn)行候選區(qū)域提名, 最后使用ROI Pooling綜合卷積網(wǎng)絡(luò)提取特征和候選區(qū)域, 并統(tǒng)一多尺度輸入, 提供給分類后端進(jìn)行分類和輸出. Faster-RCNN的候選區(qū)域提名采用“anchor+偏移量”的描述方法, 其中anchor表示給定的一系列標(biāo)識位置的矩形框, 通過對這些矩形框施加一個網(wǎng)絡(luò)預(yù)測產(chǎn)生的偏移量框定目標(biāo)區(qū)域, 避免了選擇性搜索[22]等方法的大量時間開銷. 本文借鑒這種方法, 針對肺結(jié)節(jié)檢測任務(wù)的特點, 在肺結(jié)節(jié)檢測中采用尺度為5,10,20的三種anchor以及x,y,z,d四個偏移量描述一個候選結(jié)節(jié)的位置和直徑.
語義分割任務(wù)是對輸入圖像中每個像素進(jìn)行分類的過程, 與其他圖像任務(wù)相比, 語義分割最顯著的特征是輸出結(jié)果為一張圖片, 每個像素值表示輸入圖片對應(yīng)位置的分類結(jié)果. 基于深度學(xué)習(xí)的語義分割有全卷積網(wǎng)絡(luò)(fully convolutional network, FCN)[23]、 Tiramisu[24]和U-Net[25]等方法. 考慮到U-Net的網(wǎng)絡(luò)結(jié)構(gòu)有較大設(shè)計空間, 且可廣泛應(yīng)用于醫(yī)學(xué)圖像的處理, 因此本文使用基于U-Net的三維卷積模型進(jìn)行肺結(jié)節(jié)的檢測. 語義分割的優(yōu)勢為除了能給出定位和分類結(jié)果外, 還能提供對輸入場景的語義分割結(jié)果. 本文使用語義分割結(jié)果對分類器的輸出進(jìn)行預(yù)處理, 用以屏蔽非結(jié)節(jié)區(qū)域并突出候選結(jié)節(jié)區(qū)域, 以提高分類的靈敏度.
對肺部CT圖像進(jìn)行預(yù)處理的目的主要有兩個: 首先, 肺部周圍的一些結(jié)構(gòu), 如血管或支氣管的橫斷面在結(jié)構(gòu)上相似, 這些肺部外的結(jié)構(gòu)不但會增加無關(guān)數(shù)據(jù)量, 還會對檢測結(jié)構(gòu)產(chǎn)生干擾, 因此需將肺部以外的區(qū)域去除; 其次, CT圖像具有較大的位深度, 使得其數(shù)值范圍很大, 不利于神經(jīng)網(wǎng)絡(luò)的收斂, 因此需要對圖像進(jìn)行歸一化.
CT值反映物質(zhì)的密度, 肺部的CT值為-450~600 HU. 本文基于文獻(xiàn)[11]的工作對肺部CT圖像進(jìn)行了預(yù)處理, 取-400 HU為窗位, 1 500為窗寬, 該狀態(tài)下的原始肺部圖像如圖1(A)所示. 然后對圖像依次進(jìn)行二值化、 清除外部邊界、 取最大連通區(qū)域、 模板大小為2×2的腐蝕以及模板大小為10×10的閉操作后, 再通過空洞進(jìn)行填充, 得到完整的肺部區(qū)域掩碼, 最后將肺實質(zhì)掩碼與原圖像相乘, 得到最終分割的肺實質(zhì)圖像, 分別如圖1(B)~(H)所示.
圖1 肺部CT圖像的預(yù)處理
預(yù)處理中窗寬和窗位的選取是為了便于掩碼生成以及展示效果, 在實際應(yīng)用中, 掩碼會作用于原始的CT數(shù)據(jù), 原始數(shù)據(jù)的動態(tài)范圍并未被壓縮, 因此需要對原始數(shù)據(jù)進(jìn)行歸一化操作以加快網(wǎng)絡(luò)訓(xùn)練的收斂. 對于肺部CT, CT值大于600 HU則說明不是肺部組織, 由于本文不需考慮骨組織, 因此選取歸一化閾值為[-1 200,600], 將該范圍歸一化到[0,255]區(qū)間. 本文采用的歸一化公式如下:
(1)
其中: pixelCT表示肺部圖像的CT值; pixelnormal表示歸一化后的值.
經(jīng)過上述處理后, 原始數(shù)據(jù)中只保留了肺部數(shù)據(jù). 為充分利用CT數(shù)據(jù)中的三維信息, 網(wǎng)絡(luò)模型采用三維卷積結(jié)構(gòu), 因此需將數(shù)據(jù)也處理成三維形式. 由于數(shù)據(jù)集中含有的CT圖像是由不同儀器設(shè)備采集的, 其原始空間坐標(biāo)系與像素間隔并不完全一致, 因此必須統(tǒng)一坐標(biāo)系統(tǒng). 本文首先將原始數(shù)據(jù)所采用的世界坐標(biāo)系轉(zhuǎn)換為統(tǒng)一的圖像坐標(biāo)系, 并通過平移變換將原點的位置統(tǒng)一. 然后利用尺度變換和三次樣條插值將像素間隔統(tǒng)一為每個像素表示世界坐標(biāo)系中的1 mm×1 mm大小. 最后, 為提高訓(xùn)練時的讀取效率, 將所有訓(xùn)練數(shù)據(jù)都預(yù)先裁剪為96×96×96的三維數(shù)據(jù)塊并進(jìn)行磁盤緩存, 裁剪步長為4, 延拓時采用水對應(yīng)的CT值170 HU進(jìn)行填充.
本文使用的模型分為檢測器和分類器兩部分. 檢測器以U-Net為基礎(chǔ)結(jié)構(gòu), 編碼階段采用14層三維卷積, 將尺寸為[N,1,96,96,96]的輸入編碼為尺寸[N,512,3,3,3]的特征(尺寸含義為[batch size,channels,W,H,D], 其中batch size和N表示數(shù)據(jù)中含有的圖片數(shù)量, channels為通道數(shù),W,H,D分別表示輸入數(shù)據(jù)在x,y,z方向上的尺寸). 解碼階段采用相同深度的三維反卷積層, 每隔兩層編碼器將編碼特征與解碼特征進(jìn)行連接, 最后得到[N,15,96,96,96]的輸出特征, 其中包含[96,96,96]的語義信息和對應(yīng)三種anchor(尺度為5,10,20)的四個偏移量(分別為坐標(biāo)x,y,z的偏移量和直徑d)以及置信度p.
對檢測器的輸出進(jìn)行多尺度處理. 首先, 將檢測到的所有置信度大于80%的候選結(jié)節(jié)按檢測器預(yù)測出的中心坐標(biāo)和直徑從原始數(shù)據(jù)中進(jìn)行裁剪; 然后將裁剪所得數(shù)據(jù)塊與檢測器給出的語義信息中心重合, 以語義信息為掩碼, 作用于原始數(shù)據(jù), 將候選結(jié)節(jié)外的像素屏蔽, 起到突出候選結(jié)節(jié)并減少外部干擾的作用; 最后將處理后的候選結(jié)節(jié)輸入到一個五級的池化金字塔, 如圖2所示, 池化尺度分別為1,3,4,6,8, 無論輸入尺寸多大, 最終輸出的特征都是126維(126=12+32+42+62+82), 該特征將作為分類器的輸入.
圖2 金字塔池化
分類器接受池化金字塔的輸出, 并最終給出該候選結(jié)節(jié)是惡性結(jié)節(jié)的概率. 分類器網(wǎng)絡(luò)的構(gòu)造單元為雙路徑網(wǎng)絡(luò)(dual path network, DPN)[26], 它將輸入特征分為兩部分, 分別通過密集鏈接塊和殘差塊, 在輸出端重新拼合成一個特征向量. 殘差結(jié)構(gòu)能將特征傳遞到更深的結(jié)構(gòu), 便于通過加深網(wǎng)絡(luò)層次獲取更好的效果, 而密集連接結(jié)構(gòu)能有效防止由于網(wǎng)絡(luò)加深而導(dǎo)致的梯度消失問題, DPN能將兩種結(jié)構(gòu)相結(jié)合. 由于分類器要處理的特征向量較大, DPN使得模型能使用更多的層以更平緩的方式進(jìn)行特征收縮, 相比于更激進(jìn)、 更快速的收縮, 本文采用的方式有效減少了特征的損失. 同時, 由于殘差結(jié)構(gòu)的加入, 模型的可訓(xùn)練參數(shù)被控制在合理范圍內(nèi), 對加速訓(xùn)練過程和防止過擬合也有一定的意義. 圖3為網(wǎng)絡(luò)結(jié)構(gòu), 圖中矩形高度和寬度的變化分別表示特征張量的尺寸和通道數(shù). 在4個DPN層中分別使用了3層、 4層、 20層和3層的DPN塊, 最后通過最大池化層和全連接線性層輸出二分類結(jié)果.
圖3 網(wǎng)絡(luò)結(jié)構(gòu)
由于本文采用兩階段的模型方案, 因此損失函數(shù)由兩部分組成: 回歸損失和分類損失. 其中回歸損失用于訓(xùn)練檢測器, 而分類損失用于訓(xùn)練分類器.
(2)
(3)
其中smoothl1函數(shù)定義為
(4)
(5)
在回歸損失和分類損失的基礎(chǔ)上將總損失定義為
Ltotal=αLcls+Lreg,
(6)
其中α為權(quán)重系數(shù), 在實驗中取α=0.5.
用于肺結(jié)節(jié)檢測和分類的兩階段深度學(xué)習(xí)方法的算法流程如圖4所示. 數(shù)據(jù)集經(jīng)過預(yù)處理后, 構(gòu)成(數(shù)據(jù),標(biāo)簽)的形式. 其中, 數(shù)據(jù)為邊長512像素的立方體數(shù)據(jù), 標(biāo)簽中標(biāo)識有結(jié)節(jié)的位置、 尺寸和良惡性. 訓(xùn)練階段, 通過隨機(jī)采樣獲取邊長為96像素的立方體作為訓(xùn)練樣本, 在測試階段, 通過步長為4的密集采樣獲取相同尺寸的樣本. 檢測網(wǎng)絡(luò)能根據(jù)輸入的樣本給出其中候選結(jié)節(jié)的位置、 置信度和語義信息. 在訓(xùn)練階段, 檢測網(wǎng)絡(luò)的輸出用于參與回歸損失的計算, 分類網(wǎng)絡(luò)的輸入通過標(biāo)簽中的位置和尺寸信息完成采樣, 而在測試階段, 使用檢測網(wǎng)絡(luò)輸出的候選結(jié)節(jié)位置進(jìn)行采樣, 并使用語義信息進(jìn)行掩碼處理, 以便充分利用原始數(shù)據(jù)的特征信息. 最后, 經(jīng)過空間金字塔池化, 統(tǒng)一維度的特征信息被輸入到分類網(wǎng)絡(luò), 得到良惡性的分類結(jié)果.
圖4 訓(xùn)練和測試階段的算法流程
本文采用LUNA16數(shù)據(jù)集進(jìn)行訓(xùn)練和測試. LUNA16共有888個CT序列, 實際上是一個更大的數(shù)據(jù)集LIDC-IDRI的子集, 本文在訓(xùn)練和測試中使用LUNA16數(shù)據(jù)集的CT數(shù)據(jù)和標(biāo)簽以及對應(yīng)的LIDC-IDRI標(biāo)簽. 888張CT中, 共有36 378個結(jié)節(jié)被標(biāo)出, 在LUNA16數(shù)據(jù)集中, 只有直徑>3 mm的結(jié)節(jié)作為樣本, 直徑<3 mm的結(jié)節(jié)和非結(jié)節(jié)都不選入, 而直徑<3 mm的結(jié)節(jié)有11 509個, 非結(jié)節(jié)區(qū)域有19 004個, 剩余5 765個. 此外, 若兩個結(jié)節(jié)的中心距離小于半徑之和, 則對這兩個結(jié)節(jié)進(jìn)行合并, 合并的中心和半徑是兩個結(jié)節(jié)的均值. 經(jīng)過上述處理, 剩余2 290個結(jié)節(jié). 結(jié)節(jié)的惡性程度標(biāo)注來自4位專家, 對于每個結(jié)節(jié), 給出標(biāo)注的專家可能是1~4個, 標(biāo)注的方式是給出一個[1,5]的整數(shù)表示惡性程度, 本文對該值取平均值, 排除所有等于3 mm的情況, 小于3 mm的認(rèn)為是良性結(jié)節(jié), 大于3 mm的認(rèn)為是惡性結(jié)節(jié). 最終有1 186個結(jié)節(jié)進(jìn)入訓(xùn)練集.
將篩選得到的數(shù)據(jù)通過沿3個軸反轉(zhuǎn)和隨機(jī)選取4×4×4大小的區(qū)域填充為水的CT值170 HU的方式進(jìn)行數(shù)據(jù)擴(kuò)充. 采用隨機(jī)梯度下降進(jìn)行訓(xùn)練, 動量參數(shù)設(shè)置為0.9, batch size=16, 學(xué)習(xí)率初始化為0.1, 每經(jīng)過70個epoch(使用所有數(shù)據(jù)訓(xùn)練一次稱為一個epoch)將學(xué)習(xí)率調(diào)整為原來的1/10, 網(wǎng)絡(luò)在訓(xùn)練200個epoch時收斂.
圖5 靈敏度曲線
為衡量檢測器的性能, 將本文的檢測器與3D DPN-26 Faster R-CNN和3D Res-18 Faster R-CN[16]檢測器進(jìn)行對比實驗. 對比指標(biāo)采用LUNA16數(shù)據(jù)集的官方評價標(biāo)準(zhǔn), 即無限接收特性曲線(free-response receiver operating characteristic curves, FROC). 圖5為假陽性率為0.125,0.25,0.5,1,4,8時的靈敏度. 由圖5可見, 本文檢測器的性能優(yōu)于作為比較基線的檢測器, 并且本文檢測器具有更少的可訓(xùn)練參數(shù)(3D DPN-26 Faster R-CNN檢測器有超過9×107的可訓(xùn)練參數(shù), 而本文檢測器只有不到2×106的可訓(xùn)練參數(shù)), 能更快地訓(xùn)練.
表1列出了不同網(wǎng)絡(luò)模型對LUNA16中結(jié)節(jié)的分類結(jié)果. 由表1可見: 由于充分利用了CT的三維信息, 3D結(jié)構(gòu)的模型要優(yōu)于2D結(jié)構(gòu)的模型, 使用3D DPN對結(jié)節(jié)圖像進(jìn)行分類取得了比多尺度CNN(卷積神經(jīng)網(wǎng)絡(luò))[25],2D CNN,3D CNN以及更高的分類準(zhǔn)確率; 本文提出的模型中使用空間金字塔池化對不同尺度的候選結(jié)節(jié)進(jìn)行尺度統(tǒng)一, 并利用檢測器的輸出對分類器的輸入進(jìn)行處理, 且由于DPN的特性, 本文分類器能以更合理的速度進(jìn)行維度收縮, 從而提升了分類的效果.
表1 不同網(wǎng)絡(luò)模型對LUNA16上的結(jié)節(jié)分類準(zhǔn)確率
本文還與LIDC-IDRI數(shù)據(jù)集中4名醫(yī)生的標(biāo)注結(jié)果進(jìn)行了對比, 選取所有被4名醫(yī)生標(biāo)注的測試數(shù)據(jù). 對于一個樣本, 4名醫(yī)生會對其惡性程度給出1~5的評分, 本文對4名醫(yī)生的評分進(jìn)行平均, 將平均結(jié)果作為真實值, 剔除平均結(jié)果為3的樣本, 平均值在3以上的視為惡性, 否則視為良性. 如果一個醫(yī)生給出的良惡性結(jié)果與真實值不符, 則認(rèn)為這名醫(yī)生對該樣本給出了錯誤標(biāo)注. 根據(jù)以上原則, 統(tǒng)計出4名醫(yī)生在測試集上的分類準(zhǔn)確率, 并進(jìn)行對比實驗, 對比結(jié)果列于表2.
表2 分類準(zhǔn)確率(%)對比
本文的分類器輸出二分類結(jié)果, 對于良性和惡性, 分別給出分類概率, 采用大于50%的類別作為最終分類結(jié)果. 表3列出了預(yù)測概率占總體數(shù)據(jù)的比例. 由表3可見, 63.92%的樣本能給出接近0或1的分類結(jié)果, 表明模型受到了有效的訓(xùn)練, 分類效果明確.
表3 預(yù)測概率占總體數(shù)據(jù)的比例
綜上所述, 本文提出了一種用于肺部CT圖像中肺結(jié)節(jié)檢測和分類的深度學(xué)習(xí)模型, 使用兩階段方法, 先使用基于U-Net的三維卷積網(wǎng)絡(luò)進(jìn)行結(jié)節(jié)的檢測, 得到候選結(jié)節(jié)的語義信息和位置信息, 再根據(jù)檢測結(jié)果對原始數(shù)據(jù)進(jìn)行處理, 使用空間金字塔池化進(jìn)行多尺度操作, 然后使用基于DPN的分類器進(jìn)行分類, 最后給出良惡性分類結(jié)果. 在LUNA16數(shù)據(jù)集上對肺結(jié)節(jié)檢測和分類模型進(jìn)行測試的結(jié)果表明, 本文方法準(zhǔn)確度較高.