王乾梁,石宏理
1.首都醫(yī)科大學生物醫(yī)學工程學院,北京100069;2.首都醫(yī)科大學臨床生物力學應用基礎研究北京市重點實驗室,北京100069
根據(jù)2019年國家癌癥中心發(fā)布的全國癌癥病情統(tǒng)計數(shù)據(jù),肺癌的發(fā)病率和死亡率仍位居首位,肺癌及相關惡性腫瘤的治療花費超過2 200 億元,防控形勢十分嚴峻[1]。早期診斷和早期治療是降低肺癌死亡率的有效途徑。肺結節(jié)作為早期肺癌的重要病征,準確檢測肺結節(jié)具有極其重要的臨床意義。臨床上一般通過觀察肺部CT 圖像進行肺結節(jié)的診斷判別,但隨著醫(yī)療需求的快速增長,CT圖像數(shù)據(jù)量不斷增加,醫(yī)師的診斷難度也不斷提高,憑借主觀經(jīng)驗判斷容易出現(xiàn)錯誤診斷。因此在CT 圖像診斷基礎上,利用人工智能技術輔助醫(yī)生做出更為客觀、準確的判斷,顯得尤為必要。
傳統(tǒng)的計算機輔助肺結節(jié)檢測方法主要使用人工提取的特征進行訓練,存在步驟繁瑣、檢測精度不高和系統(tǒng)整體性能較差等問題。隨著機器學習領域的快速發(fā)展,以卷積神經(jīng)網(wǎng)絡為代表的深度學習方法廣泛應用于目標檢測領域:一種是基于候選區(qū)域的兩階段檢測算法,如Faster RCNN[2]和Mask RCNN[3],另一種是基于回歸的一階段檢測算法,如YOLO系列[4-6]和SSD[7],目前也有研究在嘗試將兩種方法結合起來使用[8]。其中,YOLO V3 作為YOLO系列的代表算法,在工程應用領域使用廣泛,展現(xiàn)出良好的效果。但在應用YOLO V3 算法處理肺部CT圖像時,存在目標檢測精度不高等問題,難以達到理想效果。針對以上問題,本研究提出基于改進YOLO V3的肺結節(jié)檢測方法,探究應用YOLO V3進行肺結節(jié)檢測的有效性和可行性。
YOLO V3 的輸入圖像尺寸會被縮放或填充到416×416,再送入網(wǎng)絡提取特征。YOLO V3的網(wǎng)絡結構如圖1 所示,主要由CBL 模塊和殘差單元(ResUnit)兩個結構單元組成:CBL模塊由卷積層、批歸一化(Batch Normalization,BN)層[9]和Leaky ReLU激活函數(shù)層構成,具體結構如圖2a所示;殘差單元主要由借鑒Resnet[10]思想構建的殘差模塊(Residual block)組成,殘差模塊具體結構如圖2b 所示。1 個CBL模塊和多個殘差模塊組成1個殘差單元,殘差單元標注的數(shù)字代表包含的殘差模塊數(shù)量,每個殘差單元進行一次下采樣。
圖1 YOLO V3網(wǎng)絡結構Fig.1 YOLO V3 network structure
圖2 YOLO V3的結構單元Fig.2 Structural unit of YOLO V3
YOLO V3 在檢測網(wǎng)絡上使用特征金字塔網(wǎng)絡(Feature Pyramid Network,FPN)[11]結構將不同尺度的特征圖融合,并在5次下采樣中后3次輸出的特征圖上進行檢測。YOLO V3將圖像分別劃分為13×13、26×26、52×52共3種尺度的網(wǎng)格單元,每個網(wǎng)格單元負責預測中心坐標落入其中的目標類別。同時,YOLO V3算法使用錨框(Anchor)機制,通過K均值聚類(Kmeans)算法在3種尺度上各預設3個先驗框,每種尺度的每個網(wǎng)格單元使用先驗框進行預測。生成的大量預測框使用非極大值抑制(Non-Maximum Suppression,NMS)[12]算法進行篩選,從而得到目標檢測框。因為YOLO V3在檢測準確度和檢測速度兩方面都有很好表現(xiàn),實現(xiàn)步驟簡單,能夠滿足實時檢測要求,所以YOLO V3在工程應用領域常作為首選算法。
由于CT 圖像中肺結節(jié)所占面積較小、樣本數(shù)據(jù)不平衡且形狀不規(guī)則,直接使用YOLO V3 算法應用于肺結節(jié)檢測時,會產(chǎn)生小目標定位不精確和檢測準確率低等問題。在進行網(wǎng)絡模型訓練時,較為復雜的網(wǎng)絡結構和3個尺度特征圖生成的大量預測框,都會產(chǎn)生龐大的計算量,影響網(wǎng)絡模型的訓練過程。在使用深度學習方法解決肺結節(jié)這樣的小目標檢測問題時,需要使用高分辨率的特征圖進行預測,對于肺結節(jié)的不規(guī)則形狀則需要提取不同尺度的特征信息和擴大淺層特征圖感受野,以豐富提取的特征信息。同時,提升肺結節(jié)目標預測框的定位精度也尤為關鍵?;谝陨蠋c的改進思路,本研究針對YOLO V3 提出的改進方法主要從兩個方面進行:一是針對肺結節(jié)的目標檢測任務修改YOLO V3的基礎網(wǎng)絡結構,在骨干網(wǎng)絡上增減殘差單元中殘差模塊數(shù)量,提取更多的小目標特征信息;修改YOLO V3的檢測網(wǎng)絡結構,只使用8倍下采樣的輸出特征圖作為檢測尺度,降低訓練時產(chǎn)生的計算量;使用Mish激活函數(shù)[13]替換Leaky ReLU 激活函數(shù),提高網(wǎng)絡模型的準確性和泛化性;加入含有空洞卷積的感受野模塊(Receptive Field Block,RFB)層,融合不同尺度特征并擴大特征圖感受野,提升檢測精度。二是修改YOLO V3 的損失函數(shù),使用CIOU 損失函數(shù)[14]提升邊框回歸的收斂速度,提高預測框的定位精度。
對于YOLO V3 的骨干網(wǎng)絡,為了降低網(wǎng)絡深度減少參數(shù)計算量、防止訓練過程中產(chǎn)生過擬合問題,并提取更多的小目標特征信息,本研究增加了第2個殘差單元的殘差模塊數(shù)量,減少了第3、4、5個殘差單元的殘差模塊數(shù)量。同時本研究考慮到訓練數(shù)據(jù)集的圖像尺寸,將網(wǎng)絡模型的圖像輸入尺寸設置為512×512,不再對圖像尺寸進行縮放或者填充。對于檢測網(wǎng)絡,YOLO V3使用32倍和16倍下采樣輸出特征圖對肺結節(jié)進行檢測時,語義信息丟失嚴重,不能準確定位肺結節(jié)??紤]到使用不同分辨率特征圖,生成預測框時所產(chǎn)生的參數(shù)計算量和內(nèi)存使用量,本研究選擇使用8 倍下采樣的輸出特征圖作為檢測尺度,并使用Kmeans 算法在訓練數(shù)據(jù)集上計算得到3個預設先驗框。
神經(jīng)網(wǎng)絡模型中的激活函數(shù)負責將神經(jīng)元的輸入映射到輸出端,增加非線性變化,提高網(wǎng)絡模型的表達能力,從而能夠實現(xiàn)深度網(wǎng)絡結構。本研究選擇使用的激活函數(shù)為Mish 激活函數(shù),其表達式如式(1)所示。結合圖3 可知,Mish 函數(shù)是一種非單調(diào)的激活函數(shù),不會產(chǎn)生梯度消失,較Leaky ReLU激活函數(shù)更為平滑,具有更好的準確度和泛化能力。
圖3 Mish激活函數(shù)曲線Fig.3 Mish activation function
使用Mish 激活函數(shù)后組成新的網(wǎng)絡結構單元CBM 模塊,由卷積層、批歸一化層和Mish 激活函數(shù)層構成,如圖4所示。
圖4 CBM模塊Fig.4 CBM block
為了增強特征信息的提取,本研究在網(wǎng)絡結構中引入RFBNet 算法[15]提出的RFB 層。RFB 在空間金字塔池化(Spatial Pyramid Pooling, SPP)[16]模塊的實現(xiàn)思路上,模仿人類視覺系統(tǒng)進行設計,能夠融合不同尺度的特征圖并擴大輸出特征圖的感受野,獲取更為全面的特征信息,提升判斷結節(jié)位置的準確性。RFB結構如圖5所示,基于Inception模塊[17]的網(wǎng)絡結構,加入了不同膨脹率的空洞卷積[18]。在分支中使用的卷積核越大其空洞卷積的膨脹率越大,其中膨脹率代表卷積核中的間隔距離。RFB 首先在各個分支上使用1×1 卷積層降低特征圖的通道數(shù),3 個分支的空洞卷積的膨脹率依次為1、3、5。然后通過Concate 拼接操作將不同尺度特征圖融合,最后使用1×1卷積層和Add拼接操作實現(xiàn)跨通道的特征融合。
圖5 RFB層結構Fig.5 Receptive field block structure
本研究在應用時將第2 個分支中1×1 卷積層后的3×3 卷積層替換為1×3 和3×1 卷積層,第3 個分支中1×1 卷積層后的5×5 卷積層替換為兩個3×3 卷積層,使其在不改變感受野的情況下,減少參數(shù)量并增加非線性映射能力,有效提升網(wǎng)絡的推理能力。
綜合以上改進思路,本研究所提出方法使用的網(wǎng)絡模型結構如圖6所示。
圖6 改進的YOLO V3網(wǎng)絡結構Fig.6 Improved YOLO V3 network structure
損失函數(shù)在深度學習方法中用來評估預測的輸出值與實際值之間的差距,以提升算法的運行情況。YOLO V3 的損失函數(shù)對于預測框回歸損失值、目標置信度損失值和目標類別損失值進行計算。
在進行預測框回歸運算時,使用交并比(Intersection over Union, IOU)判別預測框與標注框的位置差距,計算式如式(2)所示,B和Bgt分別代表預測框和標注框。常用IOU 損失函數(shù)對于邊框回歸損失值進行計算,但分析式(2)中的IOU 損失函數(shù)可以發(fā)現(xiàn),面對預測框與標注框無重疊或者重疊面積大小一致等情況時,IOU 不能給出優(yōu)化方向,存在局限性。
本研究使用CIOU 損失函數(shù)計算預測框邊框回歸損失值,CIOU損失函數(shù)計算式如式(3)所示:
式中,b和bgt代表預測框和標注框的中心位置坐標,ρ代表計算兩框中心位置的歐幾里得距離,c代表計算包含預測框和標注框的最小矩形的對角線長度,αυ是考慮預測框和標注框寬高情況的懲罰項。其中:
式中,α為權重參數(shù),υ代表考慮預測框和標注框寬高情況的計算項。
使用CIOU 損失函數(shù)后,進行邊框回歸時面對預測框和標注框兩框重疊面積相等、不相交及相包含等情況時,仍可以給出優(yōu)化方向,使得預測框不斷向標注框中心點靠近,加快網(wǎng)絡訓練的收斂速度。
本研究使用的圖像數(shù)據(jù)來自LIDC-IDRI 數(shù)據(jù)集[19],數(shù)據(jù)集共收錄1 018 個研究實例,每個研究實例由胸部醫(yī)學圖像文件和4 位醫(yī)師標注的肺結節(jié)病變信息組成。在讀取圖像文件頭信息進行重新排序和重采樣等預處理操作后,從中篩選出有至少3位醫(yī)師標注且標注結節(jié)信息一致的CT 圖像共6 712 張,組成實驗使用的圖像數(shù)據(jù)集。
肺結節(jié)所占CT 圖像比例較小,存在樣本不均衡問題。為減少背景區(qū)域的干擾以提升檢測性能,對得到的圖像數(shù)據(jù)集進行肺實質(zhì)分割處理。本研究采用閾值分割和形態(tài)學處理相結合的方法對圖像數(shù)據(jù)集進行肺實質(zhì)分割:首先選取合理閾值對于CT 圖像進行二值化處理,形態(tài)學處理消除邊緣噪聲,然后對比和保留兩塊最大的連通區(qū)域,再進行開閉運算的形態(tài)學處理填充孔洞,最后通過得到的掩膜割取肺實質(zhì)圖像,組成訓練數(shù)據(jù)集。過程可視化如圖7所示。
圖7 肺實質(zhì)分割可視化Fig.7 Visualization of lung parenchyma segmentation
對于處理后的訓練數(shù)據(jù)集進行角度翻轉和添加高斯噪聲等數(shù)據(jù)增強操作,將數(shù)據(jù)集擴充6倍。再將數(shù)據(jù)增強后的訓練數(shù)據(jù)集分成10 份,1 份作為測試集,其余圖像數(shù)據(jù)送入網(wǎng)絡進行訓練。用于訓練的數(shù)據(jù)集再分為10 份,1 份作為驗證集,其余9 份作為訓練集。
網(wǎng)絡模型基于后端為TensorFlow 的Keras 神經(jīng)網(wǎng)絡庫實現(xiàn),使用的Python 版本為3.6,TensorFlow-GPU 版本為1.13.1,Keras 版本為2.2.4。網(wǎng)絡模型訓練使用Adam 優(yōu)化算法,批次大小為32,初始學習率為0.001,在NVIDIA Quadro P6000顯卡上完成訓練。
在網(wǎng)絡模型訓練完成后,使用測試集驗證網(wǎng)絡模型的肺結節(jié)檢測性能。根據(jù)測試集結果,計算目標檢測常用評價指標準確率(Precision)和召回率(Recall),其中IOU閾值設定為0.5。由于通過準確率和召回率并不能完整評估模型性能,本研究進一步通過召回率-準確率曲線,計算得到精度檢測指標AP(Average Precision)。為了更全面評價檢測效果,本研究選擇計算敏感度(Sensitivity)數(shù)據(jù)以評價肺結節(jié)的檢出情況。以計算得到的AP 值和敏感度數(shù)據(jù)兩項指標綜合評價實驗方法的肺結節(jié)檢測性能。
為了充分驗證改進方法的肺結節(jié)檢測性能,進行兩組對比實驗:第1組實驗對于不同組合的改進方法進行對比實驗,驗證本研究所提出方法的可行性,并直觀展示不同組合的改進方法是如何提升網(wǎng)絡模型的檢測性能;第2組實驗將本研究所提出的方法與其他深度學習檢測方法進行對比,驗證本研究方法的有效性。
3.3.1 使用不同改進方法的對比實驗結果在改進的YOLO V3 基礎網(wǎng)絡結構上,搭建不同組合的改進方法的網(wǎng)絡模型,測試這些改進方法對肺結節(jié)檢測性能的提升效果。實驗結果如表1所示。
表1 不同改進方法的實驗結果對比Tab.1 Experimental results comparison among different modified methods
在相同的實驗環(huán)境下,從前4個實驗的結果可以看出,激活函數(shù)的替換、加入RFB 層和修改損失函數(shù)這3 種改進方法的實驗結果均在兩項檢測指標上取得了一定提升,表明針對YOLO V3 的改進思路是有效的,所提出的改進方法能夠提升肺結節(jié)的檢測效果。從后4個實驗的結果可以看出,改進的損失函數(shù)對于肺結節(jié)檢測性能的提升起到了較為重要的作用,在不同組合的改進方法中明顯提升了肺結節(jié)檢測的AP 值和敏感度,明使用CIOU 損失函數(shù)能夠更好地定位肺結節(jié)。同時,應用RFB層加CIOU損失函數(shù)的改進方法相比單獨應用CIOU 損失函數(shù)的改進方法,提升了3.78%的AP 值和2.49%的敏感度,與其他不同組合的改進方法相比表現(xiàn)更好,表明能夠更好地提取肺結節(jié)特征信息。本研究所提出的改進方法結合了以上方法的優(yōu)點,能夠顯著提升模型的檢測性能,對于肺結節(jié)檢測具有可行性。
3.3.2 其他深度學習方法的對比實驗結果本實驗引入Faster RCNN 和SSD 深度學習方法進行對比實驗,在進行網(wǎng)絡訓練時設置相同的隨機數(shù)種子,保證圖像訓練數(shù)據(jù)的一致性和實驗的可重復性。實驗結果如表2所示。
表2 本研究方法與其他檢測方法的實驗結果比較Tab.2 Experimental results comparison of the proposed method and other detection methods
從實驗結果可知,在相同的實驗環(huán)境下,本研究方法在測試集的AP 值和敏感度兩項評價標準上均取得更好的結果,優(yōu)于Faster RCNN 和SSD,能夠更準確地定位結節(jié)。同時相對于Faster RCNN 耗時較長的訓練過程,本研究方法的處理過程簡單直接,更適應于大量圖像數(shù)據(jù)的檢測需求。由此表明,本研究所提出的方法與其他深度學習檢測方法相比,在肺結節(jié)檢測中表現(xiàn)出更好效果。
本研究針對使用深度學習方法在CT 圖像中進行肺結節(jié)檢測時遇到的問題,基于改進的YOLO V3提出一種肺結節(jié)檢測方法:首先進行肺實質(zhì)分割等預處理;然后修改基礎網(wǎng)絡結構,替換激活函數(shù),引入含有空洞卷積的RFB 層,提高肺結節(jié)特征提取能力;最后修改損失函數(shù),提高對于肺結節(jié)的定位精度。該檢測方法經(jīng)過與其他深度學習檢測方法的對比實驗,得到88.89%的準確率和94.73%的高敏感度,能夠有效提升肺結節(jié)的檢測效果,這表明所提出的方法在肺結節(jié)檢測上具有可行性和有效性。但距離實際應用仍有一定差距,下一步將擴大研究范圍,貼合臨床工作實際要求去改進檢測方法,進一步提升對肺結節(jié)的檢測性能。