高智勇,黃金鎮,杜程剛
(中南民族大學生物醫學工程學院,武漢 430074)
肺癌是全球致死率最高的癌癥之一,是我國發病率最高的癌癥。若能早發現早治療,患病7 年的肺癌死亡率將降低20%[1]。計算機斷層掃描(Computerized Tomography,CT)是目前肺癌篩查中較為有效的方法,肺結節是肺癌的早期表征之一,因此對CT影像中的肺結節進行檢測分析有助于早期肺癌的診斷。肺癌影像學診斷一般由醫生人工檢查完成,但是隨著CT掃描技術的發展和快速增長的需求,放射科醫生所需分析的數據量大大增加,導致工作量和診斷難度不斷提高[2]。因此計算機輔助檢測肺結節系統逐漸發展起來,一方面可以節約醫生的時間成本,另一方面能夠降低主觀診斷誤差,提高診斷準確率和效率。
在深度學習方法出現之前,很多研究者提出了不同的肺結節檢測方法。Murphy等[3]根據形狀指數和曲率設定閾值選取候選肺結節區域種子點,拓寬閾值范圍以獲取更多的候選體素族,再遞歸合并相鄰3 個體素內的所有族,得到候選肺結節區域。唐思源等[4]首先使用多尺度高斯濾波器增強結節和血管的形狀,然后采用模糊聚類算法(Fuzzy Clustering Method,FCM)初步分割出疑似肺結節,最后應用相關匹配法再次篩選疑似結節,減少非結節區域,從而獲得包含結節的感興趣區域(Region Of Interesting,ROI)。此外,基于形態學的模板匹配法和基于高斯混合模型的模糊聚類法等也取得了一定的檢測效果[5]。然而,這些方法通常基于一定的先驗假設人工提取目標特征,主要缺點是人為選取肺結節特征不具有代表性,不能客觀地進行肺結節檢測,效果往往不理想。
隨著深度學習方法在醫學圖像處理領域越來越廣泛的研究及應用,它在肺結節檢測任務中也獲得了較好效果[5-6]。區域卷積神經網絡(Region Convolutional Neural Network,RCNN)是一種基于候選區域的二階段深度學習目標檢測方法,具有較好的檢測效果。Faster R-CNN 通過共享卷積特征,將候選區域提議網絡(Region Proposal Network,RPN)和感興趣區域池化(ROI Pooling)歸并為一個端到端的目標檢測系統,作為R-CNN 的改進版,它具有更快、更準確的檢測性能[7]。Xie 等[8]較早采用Faster R-CNN 算法來檢測肺結節,在LUNA16 數據集上取得86.4%的平均敏感度。由于Xie 等[8]的算法中并沒有針對性地解決肺結節尺寸偏小而不易被檢測的問題,因此該算法性能有改進提升的空間。Ding 等[9]提出了在Faster R-CNN 中引入反卷積層,擴大頂層卷積特征的空間分辨率,有利于提取較小尺寸的結節特征,最終平均檢測敏感度相比Xie 等[8]的算法有所提升。雖然以R-CNN 系列為代表的深度學習方法在檢測肺結節的研究中取得了較好的結果,但是由于結節形態變化較大而且通常尺寸較小,因此在檢測中會存在漏檢等問題。Ding 等[9]的算法雖然能帶來一定到提高,但依舊沒有充分解決肺結節檢測中的多尺度特征提取問題。
本文基于卷積網絡構建特征金字塔網絡(Feature Pyramid Network,FPN)[10],高效整合淺層、深層卷積特征。首先,基于FPN 設計肺實質分割網絡(Mask FPN),在預處理階段獲得分割更精準的肺實質圖像;然后,針對肺結節檢測的特點,結合反卷積層構建具有更多尺度的特征金字塔網絡,提高Faster R-CNN 算法對肺結節的敏感度;最后,針對肺結節正負樣本不平衡問題,采用焦點損失(Focal Loss)作為RPN 的損失函數,減少訓練時正負樣本不平衡的影響[11],以提高Faster RCNN的檢測性能。
CT 影像中的肺結節通常是形狀不規則的小目標,而且肺結節的大小隨著病例的特異性、疾病發展狀況的不同在臨床CT 影像上會有較大的差別,因此在結節檢測過程中,需要考慮尺寸、外形變化較大時如何有效提取結節特征的問題。此外,在一幅CT肺部掃描圖像中,結節只占了很小的面積,這也使得結節檢測成為較困難的小目標檢測問題。
目前基于卷積神經網絡方法進行肺結節檢測的研究中,通常使用Faster R-CNN 檢測方法。Faster R-CNN 在Pascal VOC 和COCO 等自然圖像數據集中取得了較好的檢測效果,但在肺結節檢測中,直接采用Faster R-CNN 來檢測,其效果雖然比非深度學習方法有所提高,但是沒有充分考慮到肺結節圖像特點。例如,Xie 等[8]在Faster R-CNN 網絡結構中使用VGG16 來提取圖像的卷積特征,在MaxPool5 層輸出的特征上進行檢測。在肺結節檢測中,MaxPool5 輸出的特征圖相比輸入圖像被下采樣了32 倍,此時特征圖分辨率變得很小,不利于細小肺結節的檢測。
針對此問題,Ding 等[9]在MaxPool5 層后添加一個反卷積層,輸出的特征圖分辨率是之前特征圖尺寸的2 倍,然后在此特征圖上進行肺結節檢測。更大的特征圖刻畫了更豐富的肺結節細節,Ding 等[9]憑此改進方法奪取了LUNA16 挑戰賽的冠軍。
在肺結節檢測中,由于結節在CT 影像中尺寸差別較大,因此應該提取肺結節在不同尺度上的特征,從而得到更好的檢測結果,但是Xie 等[8]和Ding 等[9]并沒有充分考慮肺結節的多尺度特征問題,事實上這也是目標檢測領域的一個主要難點[10]。目前較常見的多尺度特征處理方法有兩種:1)構建圖像金字塔,分別在多尺度圖像上進行檢測;2)整合提取多尺度卷積特征,如多尺度特征金字塔網絡、可變形卷積核和空洞空間金字塔池化(Atrous Spatial Pyramid Pooling,ASPP)等方法來提取多尺度特征[12]。其中,多尺度特征金字塔網絡能夠提取更多尺度上的特征信息,因此針對肺結節檢測,本文引入特征金字塔FPN來提取結節的多尺度特征,以提高檢測的敏感度,減少漏檢。
在肺結節檢測中,除了需要考慮提取多尺度特征外,還需要考慮CT影像中結節通常在圖像中尺寸較小,即小目標檢測問題。Ding 等[9]雖然針對結節目標較小的問題進行了研究,但沒有充分考慮到結節大小多變即多尺度特征提取問題,導致了一些結節的漏檢。本文綜合考慮結節尺寸、形狀多變,而且通常是圖像中小目標的特點,首先利用特征金字塔FPN 提取多尺度特征,同時針對小目標檢測問題,在特征金字塔的頂層增加反卷積層,以提取小目標特征,構建具有更多尺度、更大分辨率的特征金字塔網絡,改進Faster R-CNN的檢測性能。
同時,在臨床肺結節檢測過程中,CT 影像數據集中往往只存在極少數量的肺結節圖像,大部分圖像不包含肺結節,因此數據集中存在正樣本數較少,即正負樣本數差異較大的數據樣本不平衡問題。樣本不平衡會影響模型的檢測性能甚至導致訓練過程模型退化、難以收斂。因此在構造卷積神經網絡時需要考慮樣本不平衡問題,本文在RPN 中引入焦點損失函數(Focal Loss)來訓練模型,以提高RPN的檢測率。
此外,在肺結節檢測時,如果能對CT圖像進行預處理,提取肺實質,無疑會有利于肺結節檢測。本文進行肺結節檢測中所使用的FPN,不僅可以改進Faster R-CNN 的肺結節檢測性能,同時也有利于語義分割網絡的性能提高。因此,本文對結節檢測中的FPN進行改進,可以對卷積特征圖復用,不需要增加很多計算量,但是能夠高效、準確地分割肺實質,提高檢測效果。
結合以上幾點,本文提出一種改進的特征金字塔的肺結節檢測方法,檢測過程如圖1 所示。在預處理階段,利用FPN高效準確地分割肺實質,獲得掩模圖像,作為Faster R-CNN 檢測網絡的輸入。同時,分別利用不同骨干網絡構建特征金字塔網絡,并在FPN 中添加反卷積層以獲取更高分辨率的特征圖,之后進行傳統的Faster R-CNN 檢測。此外,針對結節檢測的特點改進了檢測網絡的損失函數。

圖1 改進的肺結節檢測過程Fig.1 Improved pulmonary nodule detection process
由于肺結節只存在于肺實質中,因此預先提取肺實質可以有效避免肺實質外噪聲的干擾,有利于肺結節檢測。傳統肺實質分割算法通常依賴大量經驗參數來進行預處理、分割和后處理,速度慢且效果不明顯。本文基于特征金字塔網絡,設計了一個簡單的全卷積語義分割網絡(Mask FPN),可以端到端快速、準確地分割提取肺實質。本文肺實質分割網絡Mask FPN結構如圖2所示。

圖2 肺實質分割網絡(Mask FPN)結構Fig.2 Architecture of pulmonary parenchyma segmentation network(Mask FPN)
首先,根據骨干卷積網絡輸出的特征構建特征金字塔網絡,得到4 個尺度的特征層(P2,P3,P4,P5),且每個尺度層的輸出通道數均為256。然后,使用反卷積核將各個尺度的輸入特征上采樣至輸入圖像的1/4大小,其中反卷積核的上采樣倍數均是2 倍,輸出通道數是128。最后,將各個尺度輸出的特征圖以空間元素相加的方式進行融合,由一個1×1 的卷積核全連接輸出,并通過4 倍上采樣將輸出結果映射為輸入圖像的大小,再由softmax輸出最終語義分割的預測結果。
目前基于深度學習的目標檢測網絡大致可根據是否依賴于先驗錨框(anchor box)分為單階段檢測網絡和二階段檢測網絡,前者檢測速度快,但后者通常檢測精準率更高。本文采用經典的二階段檢測網絡Faster R-CNN 作為檢測基線。針對肺結節尺寸小、形態不規則和多尺度等特點,結合反卷積和FPN 改進Faster R-CNN,克服其檢測時圖像特征分辨率過小以及尺度單一的缺陷,改進的肺結節檢測網絡結構如圖3所示。

圖3 改進的肺結節檢測網絡結構Fig.3 Improved pulmonary nodule detection network architecture
1.2.1 構建多尺度金字塔網絡提取特征
VGG16 和ResNet50 在圖像識別中均有著當前最好的性能表現(State Of The Art,SOTA),為了探索采用不同卷積網絡作為骨干網絡對模型檢測性能的影響,本文分別基于兩者構建金字塔網絡以提取多尺度特征。卷積網絡的計算可以視為一個自底向上逐層提取高級特征的過程(見圖3),通過骨干卷積網絡前向計算得到C2、C3、C4、C5 四個特征圖。然后,自頂向下構建特征金字塔網絡,每一層特征圖先由一個1×1 卷積核將輸出通道數映射為256 層,接著使用雙線性插值法上采樣至上一層特征圖(分辨率大2 倍)的大小,并與上一層特征圖線性求和得到融合特征P2、P3、P4、P5。線性求和操作會導致一定的混疊噪聲,而在融合特征之后使用1個3×3卷積核可以有效降低此影響。
之后,對Faster R-CNN 中的FPN 進行改進,在骨干網絡的C5 層之上添加一個反卷積層(核大小、步長和填充大小分別為4,4,2),得到上采樣兩倍的輸出特征圖P6(輸出通道數為256)。最終,本文的特征金字塔FPN 由P2到P6共5層特征圖構成。
1.2.2 肺結節檢測網絡
傳統Faster R-CNN 中僅基于頂層特征圖預測候選邊框和類別概率,與之不同的是,本文結合改進的特征金字塔網絡在各個尺度上獨立預測,以提高Faster R-CNN 的多尺度泛化能力。提出的特征金字塔網絡利用5 個尺度的特征圖,使用共享權重的RPN 分別預測各個尺度下的疑似結節候選框,如圖3中多尺度預測部分所示。
將RPN 多尺度預測得到的各尺度上的候選框進行匯總之后,通過ROI 對齊層提取ROI特征。通常,大的目標需要在感受野大的特征層進行識別,小的目標在一次次下采樣過程中丟失邊界信息導致定位不準確。因此,本文中將面積較大的候選區域分配給FPN 的深層特征圖,反之面積較小的候選區域則指定給淺層特征圖。具體分配規則定義[10]如下:

其中:w,h是ROI 的長寬;s為初始參考面積的開方;k0是初始參考層(當ROI 面積為s2時從Pk0層提取ROI 特征)。本文中分別取s和k0參數為224 和4,實驗中大多疑似結節候選框由于面積很小,最終會被映射到P2層進行ROI特征的提取。
此外,CT 影像中肺結節的尺寸分布情況與自然圖像中的目標存在很大差異,因此,針對肺結節檢測任務,需要設計大小合理的錨框(anchor)。根據數據集中不同結節的標注數據進行統計,結合臨床經驗和CT 成像技術參數,在CT 影像中大多數肺結節的直徑占12個像素左右,最大結節直徑約占45個像素。為了讓anchor 的大小盡可能地適應結節直徑分布情況,將P2到P6特征圖對應的anchor尺寸按如表1參數設計。
每個尺度的anchor 分別采取3 種長寬比例(2∶1,1∶1,1∶2)來擴展,最終生成15種不同尺寸的anchor。

表1 anchor大小設計Tab.1 Design of anchor size
在訓練目標檢測模型時,通常輸入圖像上負樣本框數量會遠遠多于正樣本,這會導致模型過度傾向于負樣本;而大量的簡單樣本(通常是負樣本)對模型的訓練沒有很大的幫助,甚至會弱化少量正樣本的損失,導致模型退化[11]。因此,解決樣本不平衡是提高目標檢測模型性能的一個關鍵。在肺結節檢測中,由于病人CT掃描切片中往往只存在極少數量的陽性肺結節,所以正負樣本不平衡問題更為突出,在訓練檢測網絡模型時很容易受到樣本不平衡的影響。
針對樣本不平衡問題,Focal Loss 在交叉熵函數的基礎上進行改進,能較好提高單階段檢測網絡的性能。本文在RPN中引入Focal Loss 來訓練模型,相比交叉熵(Cross Entropy Loss),Focal Loss能較好提高RPN的檢測率。

其中:α用于在數量上平衡正負樣本損失的平衡因子,其有效取值范圍在(0,0.5),本文中分別取α為0.2、0.25 和0.3 三組參數進行實驗分析;(1-p)γ項可以平衡簡單樣本和困難樣本的損失,當γ=0 時,該項無效,本文中分別取γ為1 和2 兩組參數,并結合α的三組參數設計相關實驗進行分析。當α=1,γ=0時,Focal Loss退化為普通的交叉熵損失。
本文的肺實質分割和肺結節檢測算法模型均在公開數據集LUNA16[13]上進行訓練和測試。該數據集包含888 個病人的掃描圖像,每幅掃描圖像的軸向切片大小為512×512,共包含1 186個真實肺結節標注,同時每幅掃描圖像均有對應的肺實質分割標注。
首先,本文從該數據集中隨機抽取100 個病人掃描數據及其肺實質分割標注數據來訓練和評估Mask FPN 模型;其次,根據標注數據提取出1 186個肺結節的相關切片來訓練和評估本文肺結節檢測模型。訓練集、驗證集和測試集均按照6∶2∶2的比例從完整數據集中進行隨機劃分。
為了增強模型的泛化能力,一般需要對訓練數據集進行增強處理。本文采用的數據增強方法有:隨機旋轉、水平翻轉、平移、隨機噪聲和亮度調整等。此外,對整個數據集進行中心化處理,以加速訓練收斂過程。
在分割提取肺實質階段,將本文提出的Mask FPN 與LFZ(Kaggle DSB2017 挑戰賽冠軍隊伍)方法[14]及UNet 網絡的肺實質分割結果進行比較分析。LFZ 方法基于CT 影像Hu 值采用閾值法得到粗分割,并結合形態學操作和連通域分析等方法得到細分割結果。Mask FPN 與UNet 均基于二元交叉熵損失函數進行訓練評估,并且訓練模型時采用Adam 優化方法進行學習,初始學習率為0.001,權重衰減率為0.000 5,batch_size大小為8,最大迭代次數為300。
分割任務中主要采用mIoU(mean Intersection over Union)或者Dice 作為分割評估指標。從表2 可以看到,相比LFZ 結合閾值分割和形態學后處理的方法,基于深度學習的方法UNet和Mask FPN方法相比傳統方法有明顯的精度提升,并提供了一種端到端的處理方法,使得分割過程變得更加簡單,分割速度近乎達到實時。由于本文致力于肺結節檢測,因此對分割的結果也采用了目標檢測中常用的指標mAP(mean Average Precision)進行評價。

表2 肺實質分割方法性能Tab.2 Performance of different pulmonary parenchyma segmentation methods
比較兩種深度學習的分割方法,從表2 可以看到,本文Mask FPN 的mIoU 指標趨近于UNet 的分割結果,說明該方法具有良好的肺實質分割效果。此外,由于FPN 是基于很深的ResNet50 重建得到,因此Mask FPN 的參數量遠多于UNet。然而,在重建FPN的過程中,只對原始卷積特征進行少量的卷積操作和線性插值上采樣,因此其效率高于UNet逐層解碼上采樣,分割速度也相對更快。
在肺結節檢測階段,基于傳統Faster R-CNN 檢測模型基線,對本文提出的方法設計相關實驗進行分析。實驗中采用隨機梯度下降(Stochastic Gradient Descent,SGD)法優化算法,端到端訓練肺結節檢測網絡,初始學習率為0.002 5,權重衰減率為0.000 1,學習動量為0.9,最大迭代次數為2 000。
候選結節檢測作為輔助診斷系統關鍵的一步,要求保證結節檢出率足夠高[15]。本文評價模型檢測結果的好壞主要采用以下3 個指標:1)mAP,即檢測結果的平均準確度,是目標檢測任務中常見的評估指標;2)敏感度,理想情況下,模型應盡可能檢測出所有真實結節;3)平均每個CT掃描件中候選結節數(表示為“候選結節數/scan”)。性能好的檢測模型應在低“候選結節數/scan”下具有高的敏感度。
為了全面測試所提方法的性能,本文設計了多組對比分析實驗。首先對所提的改進網絡模型進行性能檢測實驗(共6 組不同網絡結構),驗證FPN 與反卷積對Faster R-CNN 肺結節檢測的有效性和性能的提升,對比結果如圖4所示。
圖4 中,vgg16 和r50 分別表示以VGG16 和ResNet50 作為Faster R-CNN 骨干網絡。可以看出在其他網絡結構保持相同的情況下,以ResNet50 為骨干網絡檢測效果更佳。其次,基于VGG16 和ResNet50 重建FPN 作為Faster R-CNN 的骨干網絡,并在多尺度特征上采取多尺度預測的方式后,分別在圖中表示為vgg16fpn 和r50fpn。可以看到,FPN 對Faster R-CNN 的檢測效果帶來了顯著的提高,如vgg16(傳統Faster R-CNN)的mAP 指 標 從0.773 提 升 至0.831,r50fpn 也 從0.794 提 升 至0.851(5.7 個百分點)。最后,分別在vgg16fpn 和r50fpn 基礎上引入反卷積層(-deconv)。可以看到反卷積層對于Faster RCNN 的肺結節檢測效果進一步帶來了較好的提高,引入反卷積層的r50fpn-deconv檢測精度mAP提升至0.862。

圖4 不同網絡結構的檢測結果對比Fig.4 Detection results comparison of different network structures
針對數據集中正負樣本以及難易樣本之間的不平衡問題,本文在上述r50fpn-deconv 模型的基礎上,結合Focal Loss函數分別取α和γ參數為(0.2,0.25,0.3)和(1,2)進行交叉對比實驗。值得注意的是,由于引入了FPN和反卷積,結節檢測效果較好,改變Focal Loss 參數對結果只有一定的影響,提升了約1 個百分點。最終,在兩組γ的取值中,α=0.25 時檢測效果最佳;并且當α=0.25 時,γ取值為2 檢測效果更好,相比采取交叉熵損失函數的結果,其mAP 指標提升至0.869,較優結果如表3所示。

表3 損失函數中不同參數設置對結果的影響Tab.3 Effect of different parameter settings of focal loss function on results
不同骨干網絡采用不同改進方法的完整檢測結果如表4所示。從表4 可知,基于卷積網絡重建多尺度特征金字塔網絡顯著地提高了Faster R-CNN 的肺結節檢測準確率,并且還大幅度提高了檢測效率。在效率方面的提升主要有兩方面原因:一是FPN模塊僅僅引入了特別少量的額外參數和計算量;二是FPN 的頭部預測器僅使用兩個1 024 維的全連接層將ROI特征輸入線性分類層和邊框回歸層,而傳統Faster R-CNN則是在C4 卷積層提取ROI 特征之后再通過標準的C5 層(共9個卷積層)前向傳播特征,因此FPN 的頭部預測器更輕量,檢測效率更高。引入反卷積層之后,檢測效率稍有下降,但依舊比r50檢測基線快出近每秒2幀,證明了本文方法的有效性。
此外針對肺結節檢測任務,本文基于ResNet50 骨干網絡,分別通過無限制接受者操作特性曲線(Free response Receiver Operating Characteristic curve,FROC)比較了所提幾種不同結構的肺結節檢測性能表現,如圖5 所示。其中,r50fpn-deconv-fl 表示采用Focal Loss 訓練r50fpn-deconv 模型,可以看出該組模型在LUNA16 肺結節檢測任務上獲得了最好的性能表現。

表4 改進網絡的性能表現對比結果Tab.4 Improved network performance comparison results

圖5 不同網絡結構的肺結節檢測性能對比(FROC)Fig.5 Comparison of pulmonary nodule detection performance of different network structures(FROC)
綜合這些實驗結果可以看出,引入FPN 和反卷積,采用Focal Loss,改進的方法能夠顯著提升肺結節的檢測性能。
最后,本文將所提肺結節檢測方法與其他算法在LUNA16數據集上進行了相關指標的評估,對比結果如表5所示,表中其他方法直接引用相關文獻所給出的結果。
從表5 可知,在使用了相同數據集的實驗條件下,本文方法的敏感度指標(0.957)優于其他算法。文獻[3]方法通過人工方法提取形狀指數和曲率等特征,肺結節檢測敏感度指標為0.856,每個CT掃描件的候選結節數為335.9。文獻[8]方法基于傳統Faster R-CNN 算法檢測肺結節,實驗結果獲得0.864 的敏感度及較低的候選結節數(每個scan 4.7)。文獻[1]方法采用UNet++網絡作為檢測基線,提出改進最終實驗獲得敏感度為0.943,候選結節數為50.2/scan。文獻[9]方法在Faster R-CNN 的基礎上進行改進,獲得0.946 的敏感度,且平均每個掃描件的候選結節數為15.0,本文方法與之相比,敏感度提高了1.1個百分點。

表5 不同方法實驗結果對比Tab.5 Experimental result comparison of different methods
多組對比實驗結果表明,本文基于特征金字塔網絡和反卷積操作改進Faster R-CNN,在肺結節檢測任務上可以獲得更高的檢測敏感度。本文方法雖然在平均每個掃描件的候選結節數指標方面相比其他算法不是最低,但是較高的敏感度對于下一階段的降假陽識別、良惡性分類乃至整個肺結節檢測系統性能的提升都是至關重要的,能為臨床應用減小漏檢率。
肺結節自動檢測對醫生的輔助診斷具有很重要的臨床意義。本文針對CT影像中肺結節尺寸小、多尺度和形狀不規則等固有特點而導致的結節檢測敏感度低等問題,基于特征金字塔網絡提出了改進方法。首先基于FPN提出了語義分割網絡Mask FPN 高效分割提取肺實質,作為肺結節檢測預處理過程;其次,結合反卷積提高基礎FPN 的多尺度特征提取性能,并將FPN 引入Faster R-CNN 采取多尺度預測方法,提高了肺結節檢測的敏感度;最后在改進模型的基礎上,采用Focal Loss 改善了RPN 中正負樣本不平衡的問題。在公開數據集LUNA16 上進行的多組性能評價實驗結果和與其他方法的對比結果表明,本文方法在肺結節檢測中具有較高的敏感度,也具有較快的處理速度。
本文針對肺結節的特點改進檢測方法以提高結節檢出率,然而提高檢測率的同時也存在候選結節數較多的問題,如果將檢測結果再輸入一個分類模型,或許會來降低候選肺結節數,進一步提高臨床應用價值,這值得進行后續研究。