陳道爭,江 倩
(1.上海海事大學 信息化辦公室,上海 201306;2.上海海事大學 信息工程學院,上海 201306)
針對肺部病變的檢測,X光胸片仍是目前最常用的醫學影像診斷技術[1]。傳統的人工閱片方式主要存在兩點缺陷:一是放射科每天產生的海量圖像數據給醫生帶來了沉重的工作負擔,診斷效率亟待提升;二是診斷過程容易受到疲勞、經驗不足等主觀因素的影響,進而導致較高的誤診、漏診率。由此,計算機輔助診斷(computer-aided diagnosis,CAD)技術應運而生[2]。現有的肺結節檢測CAD系統主要分為兩類:基于手動提取特征的機器學習方法[3-5]和基于自動提取特征的深度學習方法[6-8]。近年來,卷積神經網絡(convolutional neural network,CNN)在諸如圖像分類[9-11]、目標檢測等任務中表現出色,成為醫學影像分析領域的研究熱點。將CNN應用于醫學圖像肺結節檢測存在困難:出于對患者隱私和數據安全的考慮,難以獲取充足的訓練數據;另外,對醫學圖像進行專業標注是一項耗時費力的工作。遷移學習是指將從源域中學習到的知識作為先驗信息應用到目標域中,能夠有效解決小規模數據集的訓練問題[12]。隨著越來越多的研究學者開始探究遷移學習策略的有效性,利用這一策略進一步改進算法性能是目前肺結節檢測CAD系統研究的重點。
肺結節檢測CAD系統一般包含4個步驟:圖像預處理、肺區域分割、候選結節檢測和假陽性去除。Li等[13]針對傳統肺結節檢測方法存在的低敏感度、高假陽性率問題,提出一種基于集成卷積神經網絡(ensemble of convolutional neural networks,E-CNNs)的算法框架,用于實現肺結節檢測中的假陽性去除。在JSRT數據集[14]上進行驗證,分別獲得了假陽性水平為5.0時94%的敏感度和假陽性水平為2.0時84%的敏感度,實現了當時先進水平。Dai等[15]提出一種結構校正對抗網絡(structure correcting adversa-rial network,SCAN)用于實現X光胸片肺區域分割。實驗結果表明,所提出的方法實現了較高的準確度和比較自然的分割結果。同時,該方法并不依賴于網絡結構的設計和數據集規模,在訓練樣本有限的情況下,仍然可以獲得接近甚至達到人類的先進診斷水平。Wang等[16]通過對從非醫學圖像數據集中提取的特征和人工提取的醫學影像特征進行深度特征融合,實現肺結節檢測中的假陽性去除。實驗結果表明,基于深度特征融合的檢測方法比采用單一的人工提取特征的檢測方法獲得了更高的敏感度和特異度,同時有效降低了假陽性率。結合X光胸片中肺結節的孤立性特征,Li等[17]提出了一種新的肺結節檢測方法。通過采用平穩小波變換和收斂指數濾波器提取肺結節的紋理特征,AdaBoost算法用于生成白色結節的相似性映射。在日本放射技術學會(Japanese society of radiological technology,JSRT)數據集上進行驗證,該方法分別實現了假陽性水平為2.0時80%的檢出率和假陽性水平為5.0時93%的檢出率,具有潛在的臨床應用價值。
相較于傳統的人工神經網絡,CNN的主要優勢在于允許將經過預處理的圖像數據直接作為網絡輸入,省去了手動提取特征的步驟。同時,權值共享和反向傳播算法保證了模型的泛化能力并得到概率上的全局最優。經典的CNN模型主要包括1998年的LeNet、2012年的AlexNet、2014年的VGG-Net以及2015年的GoogLeNet和ResNet[18]。LeNet包含了CNN模型的所有基本層結構,即卷積層、池化層和全連接層,但由于其網絡層數較少,在運算效率和算法性能方面有一定的局限性。AlexNet取得成功的關鍵原因主要有4點:一是使用非線性激活函數ReLU,不僅能夠加快模型收斂速度,同時可以降低計算成本;二是在池化層中引入了Dropout正則化技術,可以有效防止過擬合;三是采用了數據增強技術和局部響應歸一化(local response normalization,LPN)層,能夠提高模型對未知數據的預測能力;四是基于雙GPU并行訓練,進一步縮短了訓練時間。VGG-Net在繼承了LeNet和AlexNet部分網絡框架的基礎上,繼續增加其網絡深度。隨著網絡深度的增加,可以保證模型處理更復雜問題的能力。GoogLeNet的創新之處在于提出了批量歸一化(batch normalization,BN)層,即通過歸一化網絡輸出的均值和標準差來減少模型訓練過程中產生的數據偏移問題。ResNet中殘差模塊的提出使得訓練一個具有152個網絡層的深度神經網絡模型成為可能。
近年來,一些新的CNN模型相繼被提出并應用于醫學圖像肺結節檢測。朱翔宇等[19]開創性地提出了一種基于U-Net模型的肺結節檢測CAD系統,由圖像預處理、肺部分割、模型訓練、結節檢測共4個部分組成。其中,肺部分割分別基于一般形態學方法和基于分水嶺算法實現,能夠有效提高肺結節檢測的準確率。朱國策等[20]提出了一種新的基于深度卷積神經網絡(deep convolutional neural network,DCNN)的肺結節檢測方法用于降低假陽性率。首先采用USM銳化方法對X光胸片進行預處理,以突出顯示結節信息;然后訓練模型,基于滑動窗口方法提取出候選結節;最后,根據候選結節的區域面積大小實現假陽性結節的篩除。
遷移學習能否應用于醫學影像分析領域主要取決于兩個方面的因素:一是源數據集與目標數據集的相似性;二是目標數據集的大小。根據實際應用場景的不同,需要采取不同的實現方案:若二者相似且目標數據集較小,則可以考慮將所有卷積層的權重參數遷移到目標域中,并設置這部分網絡結構不參與訓練,只需訓練重新定義的頂部層結構即可;若二者相似且目標數據集較大,由于有充足的訓練數據,即使微調整個預訓練模型也不會出現過擬合的問題;若二者不相似且目標數據集較小,則可以考慮重新訓練部分卷積層,以充分提取目標數據集上的特征信息;若二者不相似且目標數據集較大,則不建議使用遷移學習,重新訓練一個網絡可能更有效。
近年來,遷移學習在醫學影像分析領域的應用方向大致可以分為兩類:一是將預訓練模型作為特征提取器,在此基礎上訓練一個新的分類模型;二是更改網絡結構,例如將頂部的全連接層替換為邏輯回歸層,使得在新的數據集上只需訓練自定義的頂部層結構。Shin等[21]將遷移學習應用于兩個特定的計算機輔助診斷任務,即腹腔淋巴結檢測和間質性肺病分類,并在腹腔淋巴結檢測任務中取得了當時先進水平,進一步驗證了遷移學習的有效性。Rajpurkar等[22]通過固定網絡的卷積層參數,將X光胸片直接輸入預訓練模型,僅對全連接層進行參數微調。賀智超等[23]提出一種通過迭代競爭的方式找到最佳微調深度的方法,稱之為“自適應微調深度的遷移學習方法”,并在多任務圖像分類中獲得了比較理想的實驗結果。楊涵方等[24]建立了稀疏辨別性遷移模型(sparse discriminating transfer model,SDTM)及其對應的跨領域DCNN模型。實驗結果表明,所提出的方法實現了較高的圖像分類精度和較好的跨領域學習能力。張弛名等[25]提出一種基于深度遷移學習的肺結節良惡性輔助診斷方法,在LIDC(lung image database consortium)數據集[26]上進行驗證,獲得了91.44%的準確度和96.21%的AUC值。
本文提出的X光胸片肺結節檢測方法主要包括4個步驟:圖像預處理、肺區域分割、模型訓練、肺結節檢測,具體實現流程如圖1所示。

圖1 系統實現流程
圖像預處理旨在通過一系列像素級別的操作來改善圖像質量,例如去噪和圖像增強。為了突出顯示結節信息,本文對原始胸片進行直方圖均衡化處理,如圖2所示。可以看出,經過增強處理的圖像可以明顯提高結節與周圍組織結構的對比度。

圖2 圖像預處理
肺結節多見于肺實質內。肺區域分割是指將肺實質從肺部醫學圖像中分離開來,以避免無關背景區域對后續實驗步驟的干擾。本文根據文獻[27]中提出的方法,基于U-Net網絡模型實現X光胸片的肺區域分割,如圖3所示。

圖3 肺區域分割實現流程
2.3.1 ResNet
ResNet的提出,使得在沒有引入額外參數且不增加網絡計算復雜度的前提下,仍可利用梯度下降算法訓練深度網絡模型。因此,相比較已有的CNN模型,ResNet在參數、深度、寬度以及計算成本上都更具優勢。本文實驗中使用的ResNet50是在現有訓練深度網絡模型的基礎上,提出的一種具有易優化、計算負擔小等優點的深度殘差網絡。ResNet50網絡結構中包含跨層連接和短連接:通過短連接實現輸入數據的跨層傳遞,然后與經過卷積后的輸出疊加,從而達到充分訓練淺層網絡的效果。
2.3.2 VGG-Net
VGG-Net通過使用多個較小尺寸的卷積核來代替較大尺寸的卷積核(使用3個3×3的卷積核代替7×7的卷積核,使用兩個3×3的卷積核代替5×5的卷積核),以保證在具有相同感受野的條件下可以繼續增加網絡深度。通過探究CNN深度與模型性能之間的聯系得出結論:增加網絡層數可以得到更好的訓練結果。本文實驗中使用的兩種具有不同網絡結構的VGG-Net,即VGG16和VGG19,分別具有16個隱藏層(13個卷積層和3個全連接層)和19個隱藏層(16個卷積層和3個全連接層),也是Keras深度學習框架中適用于圖像分類的兩種比較常用的經典CNN模型。
本文設計實現的模型訓練過程主要包含3個階段:加載預訓練模型、遷移學習、超參數微調,具體實現流程如圖4所示。

圖4 模型訓練過程
本文選用的3種預訓練模型,即VGG16、VGG19和ResNet50,其權重參數均來自于大型圖像數據集ImageNet的訓練結果,已經具備一定的圖像識別能力。通過將預訓練模型的中低層作為特征提取器、將模型的頂層或接近頂層的部分作為分類器,計算機視覺領域的圖像分類、目標定位、目標檢測等研究工作大多都是基于ImageNet數據集展開。
所謂遷移學習,具體可以分為凍結全部卷積層和微調部分網絡層兩種實現策略。凍結全部卷積層是指僅允許預訓練模型的頂層部分參與訓練,而中低層的全部卷積層不參與訓練。頂層是指神經網絡模型中鄰近輸出層的幾個隱藏層以及輸出層,在CNN模型中,頂層一般由一個或多個全連接層構成。微調部分網絡層是指允許預訓練模型的部分卷積層(一般指接近頂層的幾個卷積塊)和頂層同時參與訓練過程。根據自定義頂層結構的不同,本文共設計實現了4種情況用于分析遷移學習的有效性:①直接輸出,記為D1;②輸出層和一個含有64個神經元的全連接層,記為D64;③輸出層和一個含有512個神經元的全連接層,記為D512;④輸出層和一個含有1024個神經元的全連接層,記為D1024。
超參數微調是深度學習中的一項必備技能。本文主要研究以下3個超參數對模型分類性能的影響:優化器、批處理大小和迭代次數。常見的優化器如SGD、Adam和RMSprop:SGD雖然收斂速度偏慢,但加入動量后可加快收斂,同時帶動量的SGD可以得到更好的最優解;RMSprop適用于帶有循環結構的深度網絡模型;Adam同時結合了Adagrad善于處理稀疏梯度和RMSprop善于處理非平穩目標的優勢,對內存需求較小。批處理大小是指每一次訓練時輸入模型的樣本數,通常取值為8的倍數,例如8、16、32、64、128、256等。較大的批處理數量通常可以加快模型收斂速度,但由于受到計算機內存資源的限制,批處理數量太大可能會導致內存溢出或程序內核崩潰。迭代次數是指在一次訓練過程中整個訓練集輸入模型的次數。當訓練誤差和測試誤差相差較小時,可以認為當前迭代次數的設置比較合理;當測試誤差先變小后變大,說明迭代次數過大,需要相應地減小,否則容易出現過擬合問題。
數據增強是指通過平移、旋轉、垂直翻轉、水平翻轉、縮放等操作,對原始數據進行擴充。本文實驗中采用水平翻轉、旋轉等操作對訓練樣本進行數據增強,如圖5所示。經過數據增強處理,可以在一定程度上解決訓練樣本不足的問題,同時也有助于提高模型的泛化能力。

圖5 數據增強處理
本文采用由日本放射技術學會提供的JSRT數據集用于X光胸片肺結節檢測。該數據集包含247張胸片,收集自世界上14家不同的醫療機構,包括154例含有結節的樣本和93例不含結節的樣本,所有結節均經過3位放射科醫生的一致確認。每張胸片的尺寸大小為2048像素×2048像素,像素深度為12位,每個像素對應的實際分辨率為0.175 mm。通過將數據集中所有胸片從2048像素×2048像素降采樣至1024像素×1024像素,像素深度由12位處理為8位,以此來減少肺區域分割所需的時間,同時不會影響分割效果。
在肺結節檢測方面,通常采用準確度(accuracy)、敏感度(sensitivity)、特異度(specificity)、ROC曲線和AUC值作為分類性能的評價指標。其中,準確度、敏感度和特異度的計算方法如式(1)所示
(1)
其中,TP表示真陽性,即結節被正確識別為結節;TN表示真陰性,即非結節被正確識別為非結節;FP表示假陽性,即非結節被錯誤識別為結節;FN表示假陰性,即結節被錯誤識別為非結節。ROC曲線越靠近坐標軸左上角,AUC值越大,說明模型的分類性能更好。
本文所有實驗均基于Windows 7操作系統、Anaconda Navigator 4.3.30開發平臺設計實現。Anaconda Navigator開發平臺允許用戶根據需要搭建一個或多個開發環境,不同開發環境之間可以自由切換,同時提供下載功能,用戶可以直接通過該平臺下載開發環境所需的文件。針對CNN模型的訓練過程,本文采用以TensorFlow-GPU作為后端的Keras深度學習框架實現。采用基于GPU加速的TensorFlow庫作為后端,可以調用計算機的顯卡資源,進而加速深度網絡模型的計算過程。同時,需要安裝對應版本的CUDA驅動,例如本文安裝的驅動版本為CUDA 10.0.140,對應的顯卡驅動版本為Geforce GTX 950M。
3.4.1 不同網絡模型對實驗結果的影響
本文首先對比分析了不同網絡模型對實驗結果的影響,如圖6所示。可以看出:①3種模型都實現了較高的準確度、敏感度和AUC值,適用于X光胸片的自動分類;②3種模型對應的特異度都不是很高,有待進一步改進或優化;③僅根據一次實驗結果,難以直接判斷哪種模型的分類性能更優。

圖6 不同網絡模型對實驗結果的影響
3.4.2 不同遷移學習策略對實驗結果的影響
本文通過設計實現兩種不同的遷移學習策略,從定量的角度,充分論證遷移學習的有效性。凍結全部卷積層是指僅允許預訓練模型的頂層部分參與訓練,而中低層的全部卷積層不參與,實驗結果見表1。可以看出:①是否凍結全部卷積層對實驗結果確有一定的影響,整體而言,允許部分卷積層參與訓練過程可以獲得更好的實驗結果;②遷移學習方法的提出,使得以較低的成本實現深度網絡模型的訓練成為可能,由于模型已經在ImageNet數據集上進行了預訓練,再次應用到目標數據集上時,訓練時長明顯縮短,一般僅需0.5小時~2小時;③相比較而言,VGG19的綜合分類性能更好。

表1 是否凍結全部卷積層對實驗結果的影響
微調部分網絡層是指允許預訓練模型的部分卷積層(一般指接近頂層的幾個卷積塊)和頂層部分同時參與訓練,基于VGG19模型進一步探究,實驗結果見表2。所示。可以看出:①不同結構的自定義頂層設計對實驗結果確有一定的影響,隨著全連接層神經元個數的增加,模型的分類性能逐漸得到改善;②在醫學圖像肺結節檢測方面,研究學者普遍關注的評價指標主要有準確度、敏感度和特異度,較高的敏感度和特異度意味著較低的漏診率和誤診率。通過綜合分析,設置全連接層的神經元個數為1024時,可以獲得比較理想的實驗結果。

表2 微調部分網絡層對實驗結果的影響
綜上所述,采用微調部分網絡層的遷移學習策略可以有效改善CNN模型的分類性能,有助于解決醫學影像分析領域普遍存在的訓練樣本不足的問題,而凍結全部卷積層則會獲得相對較差的實驗結果。
3.4.3 超參數微調對實驗結果的影響
為了進一步改進實驗結果,本文對影響模型分類性能的3個主要超參數進行微調。其中,不同優化器對實驗結果的影響見表3。可以看出:①3種優化器分別對應的準確度、敏感度、特異度、AUC值和訓練時長并沒有顯著區別,說明不同的優化器對實驗結果的影響較小;②整體而言,采用SGD可以實現比較穩定的算法性能。

表3 不同優化器對實驗結果的影響
由于受到計算機硬件資源的限制,本文僅設計了3組對比實驗用于分析不同批處理大小對實驗結果的影響,見表4。可以看出:不同的批處理大小對實驗結果沒有明顯的影響。一般來說,批處理大小的設置主要取決于數據集規模和圖像分類的類別數,并且批處理大小的值越大,模型的分類性能越好。但批處理大小是否與模型的分類性能近似呈正相關,有待進一步探究。

表4 不同批處理大小對實驗結果的影響
從表5中可以看出,迭代次數主要影響的是模型的訓練時長,迭代次數越多,訓練時間越長,而對分類準確度、敏感度、特異度和AUC值則沒有顯著影響。整體而言,設置迭代次數等于16時可以獲得較好的實驗結果,猜測可能與本文使用的數據集規模偏小有關。

表5 不同迭代次數對實驗結果的影響
JSRT數據集中的每張胸片僅含有一個肺結節,采用本文提出的算法進行模型預測,如圖7所示。分析得出,模型預測結果與該數據集提供的樣本標注信息基本一致,進一步論證了本文算法的正確性和有效性。

圖7 模型預測結果可視化
3.4.4 與其它算法結果的對比
當前,大多數關于肺結節檢測方法的研究都是基于計算機斷層掃描(computed tomography, CT)圖像展開。相較于CT篩查,X光胸片具有無創性、放射性低、成本低等優勢。為了對實驗結果進行客觀評價,將本文算法與已有的同類型研究進行對比,見表6。可以看出,本文提出的肺結節檢測方法實現了最高的敏感度和較低的假陽性率。

表6 算法性能對比
針對醫學影像分析領域普遍存在的訓練樣本不足的問題,本文提出了一種基于卷積神經網絡和遷移學習的X光胸片肺結節檢測算法。在公開的JSRT數據集上進行驗證,得出微調部分網絡層有助于提升模型分類性能的結論,驗證了遷移學習的有效性。通過逐步調整模型的超參數設置,算法性能得到進一步改進。與已有的其它研究進行對比,本文提出的算法實現了最高的敏感度和較少的假陽性數。研究結果表明,肋骨抑制處理有助于提高X光胸片中肺結節的檢出率。本文將在接下來的研究中重點分析肋骨抑制對于X光胸片肺結節檢測的影響,以期獲得更優的實驗結果。