吳優(yōu),張睿,張文強
復旦大學 計算機科學技術學院,上海 200011
根據(jù)世界衛(wèi)生組織發(fā)表的GLOBOCAN2018癌癥報告顯示[1],肺部癌癥是全球性發(fā)病率最高且死亡人數(shù)最多的一種疾病,肺癌的發(fā)病率和死亡率分別為11.6%和18.4%,并且呈現(xiàn)出不斷增長的趨勢。研究表明,早期診斷肺部疾病并及時治療能提高至少30% 的肺癌生存率。由于肺部疾病的初期癥狀并不明顯,患者很容易錯過最佳治療時間,所以在CT 掃描影像中提取病灶特征并進行檢測是一項重要任務。眾多研究者在利用神經(jīng)網(wǎng)絡的學習能力在CT 圖像領域幫助醫(yī)生輔助診斷進行了大量研究,并且取得了一定成果。但由于肺部疾病常常伴隨著多種并發(fā)癥同時出現(xiàn),如氣管炎、淋巴系統(tǒng)疾病、心臟疾病等,目前在肺部單影像特征的臨床實踐中,計算機輔助系統(tǒng)已經(jīng)取得了非常好的發(fā)展,但對肺部多病種的研究卻鮮有涉及,下一步的重點是對肺部多種疾病進行智能綜合診治。
傳統(tǒng)的肺部疾病檢測需要有臨床經(jīng)驗的醫(yī)生采取人工特征識別的方式來鑒別,人工特征包含查看形狀、紋理以及上下文空間信息等[2],醫(yī)生需要反復翻看CT 圖片來確定病人是否患有某種疾病,并且多個醫(yī)生由于經(jīng)驗的不同可能會對相同CT 影像產(chǎn)生截然相反的檢測結果。所以人工檢測過程復雜、耗時耗力、還可能因為人工疲勞等因素造成誤檢漏檢。
從20 世紀90 年代開始,計算機輔助診斷(computer aided diagnosis,CAD)在臨床醫(yī)療研究中被廣泛應用.眾多國內(nèi)外學者發(fā)現(xiàn),卷積神經(jīng)網(wǎng)絡(convolutional neural network,CNN)能自主學習肺部CT 影像中的高級特征,無需經(jīng)過人工檢驗的繁瑣步驟,直接學習肺部疾病的特征來進行檢測[3-4]。以肺結節(jié)檢測為例,Chen 等[5]使用聚類分水嶺算法來提取候選結節(jié)檢測區(qū)域,并使用支持向量機來進行分類,結節(jié)檢測準確率為79%。Setio 等[6]提出一種多視圖2D CNN 方法,以2D 圖像作為輸入進行肺結節(jié)的檢測,檢測結果比傳統(tǒng)人工識別方式精度高出15% 左右。Dou 等[7]提出3D 卷積神經(jīng)網(wǎng)絡能更好的學習到CT 影像中的空間信息,并提出以候選位置坐標為中心切割3 個不同大小的立方體并送入網(wǎng)絡,分別訓練3 個包含不同層次上下文信息的三維卷積網(wǎng)絡,將這些網(wǎng)絡的后驗預測融合在一起,得到最終的分類結果,但該網(wǎng)絡結構存在需要手動控制每個尺度權重的問題,所以如何選取網(wǎng)絡能更快更準確的檢測出肺部疾病是目前存在的問題。
一般來說,肺部病種檢測分為2 個階段[8-10]:找到候選患病區(qū)域,剔除假陽性病灶。本文提出的基于2D 網(wǎng)絡分割和3D 網(wǎng)絡假陽性判別及分類的肺部CT 圖像多病種自動檢測和分類方法不僅能檢測出肺結節(jié)、索條、動脈硬化或鈣化3 種疾病,還能達到速度快,準確率高的優(yōu)點。
本文針對設備有限的現(xiàn)實場景下,對多病種檢測任務使用融合2D 分割網(wǎng)絡和3D 分類網(wǎng)絡的自動檢測方法進行快速且準確地檢測。
本文將重點從分割網(wǎng)絡和檢測網(wǎng)絡等方面展開闡述。首先將數(shù)據(jù)集進行預處理,再使用2D U-Net 分割網(wǎng)絡找到疑似病灶區(qū)域,并用優(yōu)化后的3D MGI-CNN 網(wǎng)絡對疑似病灶區(qū)域進行去除假陽性操作.
本文所使用的數(shù)據(jù)集為LUNA16 和天池數(shù)據(jù)集,其中LUNA16 數(shù)據(jù)集是從LIDC-IDRI[11]數(shù)據(jù)集中選取的一部分,LUNA16 全稱為Lung Nodule Analysis 16,是2016 年推出的一個數(shù)據(jù)量大、質(zhì)量高的肺結節(jié)CT 數(shù)據(jù)集,包含885 個患者的CT 圖像,共計1 186 個結節(jié),數(shù)據(jù)由4 位臨床經(jīng)驗豐富的胸部放射科醫(yī)師對患者CT 圖像進行兩次圖像標注得到。天池數(shù)據(jù)集包含1 470 個患者的CT 圖像,3 種病灶數(shù)量共計11 078 個,其中肺結節(jié)、索條、動脈硬化或鈣化3種病灶的數(shù)量分別為3 264,3 613和4 201,數(shù)據(jù)預處理方法如下。
1)坐標轉(zhuǎn)化。首先根據(jù)LUNA16 數(shù)據(jù)集標注文件和天池數(shù)據(jù)集標注文件讀取病灶區(qū)域坐標以及半徑,式(1)給出了世界坐標C1到體像素坐標C2之間的轉(zhuǎn)換公式:
式中原點坐標O和像素間距信息S是使用Python 中的SimpleITK 庫提取.raw 文件得到的內(nèi)容,圖像信息是提取.mhd 文件并可視化的內(nèi)容。
2)圖片標準化。根據(jù)得到的轉(zhuǎn)換坐標讀取MHD 文件中Z軸上的2D 圖片,式(2) 進行標準化操作,將原圖中每個像素值P1標準化為0~1 的數(shù)值并縮放到320×320 大小,轉(zhuǎn)換后的CT 像素值P2標記為
式中Pmin和Pmax分別為像素點最小值和最大值。通過轉(zhuǎn)換后的坐標及半徑信息,就能確定一個病灶區(qū)域的中心點和長寬,我們以此來生成mask 圖,病灶區(qū)域內(nèi)像素值為1,病灶區(qū)域外像素值為0。圖1 為3 種病灶數(shù)據(jù)集和對應mask 可視化圖。
圖1 3 種疾病可視化圖
本文采用U-Net 神經(jīng)網(wǎng)絡[12-13]作為分割模型來預測肺部多種疾病分割圖像,具體包含如下步驟。
1)圖像增強。使用的數(shù)據(jù)增強方法包括旋轉(zhuǎn)、彈性變換、改變圖片顏色和改變對比度等,數(shù)據(jù)集在送入網(wǎng)絡之前要進行數(shù)據(jù)類型轉(zhuǎn)換,即將圖片像素值轉(zhuǎn)換成float 類型并進行通道歸一化。
2)網(wǎng)絡構建。U-Net 由2 個部分組成:一個是收縮路徑,一個是擴展路徑。收縮路徑主要是用來捕捉醫(yī)學影像中的上下文方面的信息,擴展路徑的目的是將圖片中分割出來的部分進行精確定位。為了達到精確定位的作用,收縮路徑提取出來的高像素特征會在上采樣過程中與新的特征圖進行結合,此操作可以最大程度地保留前面模型在下采樣過程中的一些重要信息,圖2 為分割網(wǎng)絡的模型。
圖2 分割模型
對于真值mask 圖和得到的mask 圖,我們將兩者得到的圖像矩陣展開為ytrue和ypred,Dice Loss 函數(shù)是一種集合相似度度量函數(shù),通常用于計算2 個樣本的相似度,構建損失函數(shù)為
式中:K為平滑數(shù),實驗中設置為1 來避免L分母為0 的情況。
本文采用三維多尺度融合神經(jīng)網(wǎng)絡MGICNN 來預測多種病灶的真假陽性概率[14],去除假陽性病灶并在網(wǎng)絡結構中增加分類部分使得能對病灶區(qū)域區(qū)分病種,圖3 為優(yōu)化后的分類網(wǎng)絡。
圖3 分類模型
優(yōu)化過程具體步驟如下。
1)數(shù)據(jù)準備。使用本文1.2 節(jié)分割模型得到候選病灶區(qū)域mask 圖后,根據(jù)預測的mask 圖找到中心坐標,將影像ID、病灶坐標x、病灶坐標y和病灶坐標z進行標記存儲,并在原MHD 格式的CT 圖中裁剪出3 個不同大小的三維圖像塊送入模型中。
2)網(wǎng)絡構建。通過得到的病灶區(qū)域中心點位置得到40×40×26,30×30×10,20×20×6 這3 個不同大小的立方體如圖4 所示,我們稱之為S1,S2和S3。
圖4 3D 立方體提取
調(diào)整三者的大小為20×20×6 的相同尺寸,將3 個不同尺度的信息進行融合,按照S1+S2+S3 的方法和S3+S2+S1 的拼接方法得到9×9×192 大小的Zoom-in 信息和Zoom-out 信息如圖5 所示。
將Zoom-in 特征和Zoom-out 特征先通過卷積層調(diào)整到9×9×256 大小的特征并融合,訓練結束能得到病種分類和假陽性檢測信息2 種信息。
3)模型訓練。將3 個病種得到的立方體及對應標簽作為訓練集,根據(jù)步驟2)構建的三維多尺度融合3D 神經(jīng)網(wǎng)絡來得到分類信息以及假陽性信息。網(wǎng)絡訓練基于隨機梯度下降算法,并采用五折交叉驗證方式,假陽性部分損失函數(shù)采用sigmoid 交叉熵損失函數(shù):
式中:N為樣本數(shù),yi為第i個樣本的標簽,pi為第i個樣本的預測值;w為待訓練權重。
分類損失函數(shù)為多分類交叉熵損失函數(shù),并且使用Adam 優(yōu)化器:
式中:N為樣本數(shù);M為類別數(shù),本文中的值M為4,包含健康、患肺結節(jié)、患肺部索條和患動脈硬化或鈣化4 類;yi值若為1 表示該類別與樣本的類別相同,否則就是0;pi即觀測樣本i屬于類別j的概率。
最后假陽性檢測及病灶分類部分網(wǎng)絡的損失函數(shù)為上述兩類損失函數(shù)之和,即
這部分指標使用曲線下面積(area under curve,AUC)曲線衡量??梢灾?,AUC 曲線被定義為ROC 曲線下與坐標軸圍成的面積,顯然這個面積數(shù)值不會大于1,又由于y=x這條直線圍成的AUC 面積為0.5,等于隨機概率,沒有應用價值,所以常見的ROC 曲線一般都處于y=x直線上方,取值范圍在0.5~1.0,AUC 值越接近1.0 表明檢測方法準確性越高。
本文實驗基于keras 深度學習框架,所采用的LUNA16 數(shù)據(jù)集共計1 186 個結節(jié),天池數(shù)據(jù)集中肺結節(jié)有3 264 個,索條數(shù)量有3 613 個,動脈硬化或鈣化數(shù)量共計4 201 個。因為肺結節(jié)訓練集數(shù)量明顯多于其他病種數(shù)據(jù)集數(shù)量,故將LUNA16數(shù)據(jù)集得到的訓練集用于預訓練模型,預訓練結束時U-Net 對肺結節(jié)的預測查全率為95.1%。將天池數(shù)據(jù)集3 種病灶區(qū)域及mask 圖均以PNG 格式存儲,訓練集、驗證集和測試集占比分別為70%、15%和15%,兩階段網(wǎng)絡使用的訓練集、驗證集和測試集數(shù)量比例均對應。
使用U-Net 網(wǎng)絡作為分割模型得到候選病灶區(qū)域階段,設置batch_size 為64,epoch 為150。實驗表明每個epoch 平均運行時間為160 s,由于網(wǎng)絡預先使用LUNA16 數(shù)據(jù)集進行預訓練,在肺結節(jié)單病種上該預訓練網(wǎng)絡能到達95.1% 的查全率,加載權重開始訓練多病種時,前5 次查全率達到76.08%;epoch為50后,查全率趨于平穩(wěn),為93.6%,實驗結果如圖6 所示。
圖6 階段-準確性曲線
查全率表明在實際患病的病人中,成功預測患病的病人百分比。U-Net 分割階段目的是盡量找到所有患病區(qū)域,高查全率是這一階段的目標。在93.6% 查全率的情況下,查準率卻只有20.6%,所以在第二階段剔除假陽性病灶并對患病區(qū)域進行分類階段,要以高查準率為目標,即所有預測患病的病人中,實際患病的病人百分比。
使用分類網(wǎng)絡剔除假陽性病灶并對真實患病區(qū)域進行分類時,因為數(shù)據(jù)量較大,該階段的batch_size 設置為32,epoch 為100,使用AUC 作為衡量指標,AUC 越接近1.0 表明檢測方法準確性越高。優(yōu)化后的MGI-CNN 網(wǎng)絡查準率為0.955,實驗結果如圖7 所示。
圖7 第二階段AUC 曲線
Ding 等[15]于2017 年提出的3D DCNN 網(wǎng)絡其輸入為患者的肺部CT 圖像中相鄰3 張,其基礎架構為Faster R-CNN[4]。Liao 等[16]于2019 年提出的C-Net 網(wǎng)絡準確率達91.23%,該網(wǎng)絡是通過一個2 部分的檢測網(wǎng)絡來進行肺部檢測。Zhu 等[17]于2018 年提出的DeepLung 結構準確率達90.05%,采用多路徑網(wǎng)絡來學習特征。Joseph Redmon 等[18]設計的YOLOv3 網(wǎng)絡采用二維卷積神經(jīng)網(wǎng)絡和anchor box 進行病灶區(qū)域定位,表1 為本文實現(xiàn)的準確率、召回率和在單張CT 影像上運行的速度對比結果。
在多病種檢測任務中,測試集選取切片張數(shù)(slice)在100~230 的CT 影像,可以發(fā)現(xiàn),本文模型計算速度略小于二維模型YOLOv3[18],但是準確性比二維YOLOv3[18]高,計算速度遠快于三維模型3D DCNN[15]、C-Net[16]和DeepLung[17],但是檢測準確性略低于三維模型C-Net[16]、DeepLung[17],本文模型能在保證準確性的情況下滿足醫(yī)院等使用場景設備條件并快速進行診斷。
圖8 為成功檢測出肺結節(jié)和索條多病種的示例圖,其中用紅線框出病灶區(qū)域,如圖中左肺成功檢測出肺結節(jié),右肺成功檢測出索條。
圖8 結果可視化圖
在本文的應用背景下,先將不同的神經(jīng)網(wǎng)絡用于天池數(shù)據(jù)集,檢測結果如表1 所示。
表1 不同模型性能對比
中國肺部疾病患者較多,醫(yī)生人工診斷費時費力,還可能導致錯檢、漏檢,本文在對設備要求不高的情況下對肺部多病種檢測方法展開研究。本文采用卷積神經(jīng)網(wǎng)絡的方法訓練兩階段模型,工作總結如下:
1)針對復雜的醫(yī)學影像預處理操作,本文設計的肺部影像數(shù)據(jù)預處理流程能讓原始影像數(shù)據(jù)保留更多的特征供模型學習。
2)針對醫(yī)學影像數(shù)據(jù)龐大且病灶位置分散,傳統(tǒng)單病種研究使用的2D 模型無法學習空間信息、檢測準確性低;3D 模型學習參數(shù)過多、檢測速度慢且對設備性能要求高等問題,本文提出一種融合2D 和3D 神經(jīng)網(wǎng)絡的anchor-free 雙階段模型。用2D 模型初篩數(shù)據(jù)提取疑似病灶區(qū)域,用3D 模型精篩數(shù)據(jù)去除假陽性。實驗結果表明,本文方法能成功檢測出肺部多種疾病,并且檢測速度較快,對設備性能要求低,適用于醫(yī)院等設備性能無法滿足要求的現(xiàn)實場景,相比于其他2D 和3D 檢測方法,本文提出的模型具有節(jié)省資源且用時少的優(yōu)點,具有更高的實用性和可拓展性。