凌彤輝
(1.中國科學院 上海技術物理研究所,上海 200083; 2.中國科學院大學,北京 100049)
肝癌是僅次于肺癌的第二大高致死率癌癥,也是中國和全世界發(fā)病率和死亡率增長最快的癌癥之一。雖然計算機斷層掃描(computed tomography,CT)已廣泛應用于肝癌的篩查、診斷和治療評估,但對CT圖像中的肝癌進行定性和定量分析需要花費醫(yī)生大量時間,且醫(yī)生的分析結果具有主觀性。在計算機技術和人工智能的推動下,計算機輔助診斷(computer aided diagnosis,CAD)系統(tǒng)快速發(fā)展。CAD可以對醫(yī)學影像進行自動化處理,對醫(yī)學影像中的肝臟和肝癌進行智能化分析,為醫(yī)生提供診斷依據(jù)。在對肝臟和肝癌智能分析中,肝臟分割和肝癌分割是必不可少的一步。然而,由于肝臟與周邊組織的對比度低,相鄰器官邊界模糊,形狀變化大,自動分割肝臟是一項具有挑戰(zhàn)性的任務。同時,肝癌形態(tài)呈彌漫性、不均勻性和稀疏性,大小不一,特征不明顯,自動分割肝癌是更加艱巨的任務。
肝臟分割算法主要分為傳統(tǒng)肝臟分割算法和神經(jīng)網(wǎng)絡的方法。傳統(tǒng)肝臟分割算法主要有三種:基于圖像灰度的肝臟分割算法[1-3],基于模型的肝臟分割算法[4-6]和基于紋理特征的肝臟分割算法[7-9]。例如Bae等(1993)[3]提出了一種基于圖像灰度的肝臟分割算法。Wu等(2016)[6]提出了一種基于圖割的肝臟分割算法。Luo等(2009)[7]提出了一種基于紋理特征和SVM的肝臟分割算法。傳統(tǒng)肝臟分割算法都存在不足之處: 當存在邊界模糊時,基于灰度的算法準確度較低;基于統(tǒng)計形狀模型的算法對存在形變的肝臟無法準確分割;基于紋理特征的算法依賴于特征分類器和人工提取的特征。神經(jīng)網(wǎng)絡的方法主要分為二維全卷積網(wǎng)絡[10-11]和三維全卷積網(wǎng)絡[12-13]。例如郭樹旭等(2017)[14]采用了改進的二維全卷積網(wǎng)絡對肝臟進行分割;孫明建等(2018)[15]針對肝臟分割問題,則采用三維全卷積網(wǎng)絡結合條件隨機場的方式,取得了較高的準確率。二維全卷積網(wǎng)絡的分割準確率一般低于三維全卷積網(wǎng)絡,因為二維全卷積網(wǎng)絡無法利用CT影像中的三維空間信息。
肝癌分割是在肝臟分割的基礎上進行計算。肝癌分割算法目前主要采用神經(jīng)網(wǎng)絡的算法,例如Kaluva等(2018)[16]采用一個新型二維全卷積神經(jīng)網(wǎng)絡網(wǎng)絡進行肝臟分割和肝癌分割,通過加入簡單的形態(tài)學操作去除假陽性。Yuan等(2018)[17]采用了3個二維全卷積網(wǎng)絡,前兩個網(wǎng)絡用于對肝臟進行粗分割和細分割,第三個網(wǎng)絡用于對肝癌進行分割。
為了解決肝臟和肝癌的準確分割問題,本文提出了基于三維全卷積網(wǎng)絡的肝臟分割算法和肝癌分割算法。肝臟分割和肝癌分割算法都采用Vnet[13]網(wǎng)絡搭建而成。本文在Vnet網(wǎng)絡中加入了批歸一化(Batch Normalization, BN)[18],提高了模型的收斂速度。在肝臟分割中,通過對Vnet網(wǎng)絡的分割結果進行后處理,顯著提高準確率。在肝癌分割中,采用了組合損失函數(shù)來訓練Vnet網(wǎng)絡,讓模型更好地收斂,并加入后處理提高了肝癌分割準確率。本文針對肝臟分割和肝癌分割進行了實驗,利用公開數(shù)據(jù)集驗證了算法的性能。
Vnet網(wǎng)絡是在全卷積神經(jīng)網(wǎng)絡[10]基礎上提出的一個新型三維全卷積網(wǎng)絡。Vnet 網(wǎng)絡結構成編碼器-解碼器結構, 左半部分為編碼過程,由卷積層和池化層組成,右半部分為解碼過程,由卷積層和反卷積層組成。Vnet網(wǎng)絡編碼部分和解碼部分擁有相同的卷積層數(shù)。網(wǎng)絡結構如圖1所示。其中卷積層的作用是提取圖像特征,池化層的作用是降低數(shù)據(jù)維度,反卷積的作用是恢復圖像尺寸。
圖1 Vnet網(wǎng)絡結構
Vnet網(wǎng)絡在卷積層當中采用了Resnet(He等,2016)[19]的殘差學習結構,即將卷積層的輸入與卷積層最后的輸出進行加和,再進行后續(xù)計算,從而緩解了梯度消失的問題。每個卷積層包含1到3個卷積單元。每個卷積單元由兩部分組成:卷積和激活函數(shù)。Vnet網(wǎng)絡中的卷積采用5×5×5的卷積核進行卷積,padding大小為2,stride為1。因此卷積后得到的特征圖大小不變。Vnet網(wǎng)絡采用的激活函數(shù)為PReLU函數(shù)。本文為了提高模型的收斂速度在卷積單元中加入了BN。BN就是通過計算均值和標準差把神經(jīng)元的數(shù)值分布變回均值為0,方差為1的標準正態(tài)分布,從而達到加快模型收斂和緩解過擬合的效果。
編碼和解碼中間為級聯(lián)層。級聯(lián)層的作用是將編碼部分的特征圖與解碼部分中等大小的特征圖進行拼接,再進行卷積,從而彌補了下采樣過程中丟失的細顆粒度圖像特征和位置信息。Vnet網(wǎng)絡的池化層采用了卷積池化的方式。即使用2×2×2 的卷積核對特征圖進行卷積,步伐大小為2,從而達到池化的效果。卷積池化的好處在于訓練網(wǎng)絡的時候占用更少的內(nèi)存。
Vnet網(wǎng)絡整體屬于端到端的網(wǎng)絡結構,輸入圖像便可直接得到分割結果。Vnet網(wǎng)絡在最后一個卷積層后,使用卷積核大小為1×1×1的卷積將特征圖像進行組合壓縮,得到兩個和原圖像尺寸大小相同的特征圖,然后對這兩個特征圖使用Softmax函數(shù),得到原圖像中每個體素屬于前景和背景的概率,如果前景概率大于背景概率,則預測為前景目標,標記為1,如果前景概率小于背景概率,則預測為背景,標記為0。
本文采用Vnet網(wǎng)絡對CT影像中的肝臟進行分割。算法流程如圖2所示。具體流程如下:首先對CT影像數(shù)據(jù)進行預處理,然后將預處理后的圖像尺寸縮小4倍,之后將縮小后的圖像尺寸裁剪為大小128×128×128,再使用訓練好的Vnet網(wǎng)絡對圖像數(shù)據(jù)進行計算,最后使用后處理優(yōu)化分割結果并還原為原圖像尺寸,從而得到肝臟的分割結果。
圖2 肝臟分割流程圖
預處理主要包括以下三步:分辨率標準化,調(diào)窗處理和灰度值標準化。CT影像由于機器的差異或者參數(shù)設置的差異,其空間分辨率大相徑庭,如果沒有進行分辨率標準化,將會影響肝臟分割準確度。針對肝臟分割,本文采用了分辨率0.69×0.69×1.0 mm3進行標準化。分辨率標準化的方式是根據(jù)標準分辨率和自身分辨率,計算縮放倍數(shù)進行縮放??s放的方式為線性插值。調(diào)窗處理即選擇灰度值范圍,所有大于窗口最大值的灰度值修改為窗口最大值,所有小于窗口最小值得灰度值修改為窗口最小值。該操作可以過濾CT影像中不相關的組織和器官,從而降低算法分割難度,提高分割準確率。針對肝臟分割,選擇灰度值范圍為[-250,250]。灰度值標準化是指將灰度值減去灰度值的均值,再除以灰度值的標準差,灰度值標準化的目的是為了方便數(shù)據(jù)處理和加快模型收斂?;叶戎档木岛蜆藴什钍峭ㄟ^統(tǒng)計訓練數(shù)據(jù)計算得到的。
Vnet網(wǎng)絡屬于有監(jiān)督學習算法,因此網(wǎng)絡模型的權重參數(shù)需要通過訓練得到。訓練Vnet網(wǎng)絡分為兩部分:制作訓練集和訓練模型。制作訓練集就是將提供的CT數(shù)據(jù)預處理,然后縮放裁剪為大小128×128×128。訓練模型需要選擇梯度下降算法、選擇損失函數(shù)和設置相關的超參數(shù)。本文選擇了Adam自適應梯度下降算法[20]來擬合參數(shù),損失函數(shù)選擇為Dice損失函數(shù)。Dice損失函數(shù)描述的是圖像分割結果中預測區(qū)域和真實區(qū)域之間的重合程度。公式如下:
(1)
其中:N代表體素塊的體素數(shù)量;pi代表網(wǎng)絡的預測結果;gi代表對應體素真實標記。
訓練Vnet網(wǎng)絡的學習率設置為0.001,梯度系數(shù)設為0.9,平方梯度的系數(shù)設為0.999,權重衰減系數(shù)設置為1×10-8。為了提高模型的泛化能力,加入了數(shù)據(jù)增強。增強方式包括:在制作訓練數(shù)據(jù)時,加入隨機平移;在訓練模型中加入動態(tài)的隨機旋轉和動態(tài)B樣條插值。
后處理是為了優(yōu)化分割結果。這里采用了形態(tài)學方法來進行后處理:首先對分割結果中標記為1的連接通量進行腐蝕,然后只保留分割結果中的最大連接通量,最后再對最大連接通量進行膨脹。通過上述操作可以有效減少分割結果中的假陽性。
本文采用Vnet網(wǎng)絡來對肝臟中的肝癌進行分割。算法流程如圖3所示。具體流程如下:首先是根據(jù)肝臟分割結果,提取肝臟區(qū)域,然后再對數(shù)據(jù)進行預處理,之后將CT圖像橫斷面尺寸縮小為256×256,再采用訓練好的Vnet網(wǎng)絡對肝臟區(qū)域進行掃描計算,最后進行后處理并還原為原圖像尺寸,從而得到肝癌的分割結果。肝癌分割的Vnet網(wǎng)絡輸入大小為256×256×16。
圖3 肝癌分割流程圖
肝癌分割的預處理包括調(diào)窗處理,三維區(qū)域直方圖均衡化和灰度值標準化。肝癌分割不需要分辨率標準化,是因為分辨率標準化會導致部分CT影像中的小型肝癌丟失。直方圖均衡化的用途是為了提高肝癌和肝組織之間的對比度,從而提高肝癌的分割準確度。
肝癌分割和肝臟分割都采用Vnet網(wǎng)絡結構。不同的地方在于:肝癌分割的Vnet網(wǎng)絡的輸入大小為256×256×16;計算的圖像數(shù)據(jù)只包含肝臟區(qū)域;需要采用掃描計算的方式對整個肝臟區(qū)域進行計算。肝臟分割只需要Vnet網(wǎng)絡對整體計算一次。
肝癌分割的Vnet網(wǎng)絡計算的圖像數(shù)據(jù)只包含肝臟區(qū)域,因此訓練數(shù)據(jù)也只需要包含肝臟區(qū)域。在根據(jù)真實標記提取肝臟區(qū)域后,對訓練數(shù)據(jù)進行預處理。為了減少類別不平衡,只采用數(shù)據(jù)中包含肝癌的切片做成訓練集,因為肝癌分割和肝臟分割都采用Vnet網(wǎng)絡結構,因此在訓練肝癌分割的時候,采用訓練好的肝臟分割Vnet網(wǎng)絡的權重參數(shù)作為肝癌分割Vnet網(wǎng)絡的初始化參數(shù),并在此基礎上進行微調(diào),相應的學習率設置為0.0001。梯度下降算法同樣采用Adam算法。
在CT影像中,肝癌形態(tài)呈彌漫性、不均勻性和稀疏性,因此對肝癌分割會出現(xiàn)嚴重的類別不平衡問題。圖像分割本質(zhì)上是像素級的分類問題,當出現(xiàn)類別不平衡問題,分割準確率會大幅下降。為了能讓Vnet網(wǎng)絡在類別不平衡的情況依然能夠被有效地訓練,本文采用了組合損失函數(shù)。該損失函數(shù)由Dice函數(shù)和帶權重的交叉熵損失函數(shù)組成,公式如下:
E=EDice+ECrossEntropy
(2)
交叉熵損失函數(shù)的權重是通過統(tǒng)計訓練數(shù)據(jù)中肝癌和背景的比例得到的。Dice損失函數(shù)本身對類別不平衡問題較為不敏感,帶權重的交叉熵損失函數(shù)則利用了閾值移動的原理來應對類別不平衡問題。通過組合這兩個損失函數(shù)可以讓模型更好地收斂,提高模型性能。
訓練肝癌分割的Vnet網(wǎng)絡也加入了數(shù)據(jù)增強,包括:在制作訓練數(shù)據(jù)時,加入隨機平移;在訓練模型中加入動態(tài)的隨機旋轉。
肝癌分割結果中,部分被標記為肝癌的體素點位于肝臟區(qū)域外部。而肝癌必然位于肝臟區(qū)域內(nèi),基于這個先驗,對這部分肝癌體素點直接剔除。
本文采用的數(shù)據(jù)集為MICCAI 2017 Liver Tumor Segmentation Challenge(LiTS)的數(shù)據(jù)集。LiTS數(shù)據(jù)集提供了130例帶標注的腹部CT數(shù)據(jù)。這些腹部CT數(shù)據(jù)的軸向分辨率最小為0.55 mm,最大為1.0 mm,層厚最小為0.45 mm,最大為6.0 mm。數(shù)據(jù)提供了肝臟和肝癌的真實標記,可用于算法的訓練和測試。
實驗所使用的硬件環(huán)境如下:Intel(R) Core(TM) i7-6700K CPU @ 4 GHz,內(nèi)存(RAM)64 GB,顯卡 GeForce GTX 1080兩塊。開發(fā)系統(tǒng)為Ubuntu 14.04,開發(fā)工具為python和pytorch。
為了評估器官分割實驗中算法的分割準確度,本文采用以下五個指標進行全面地評估,分別為:
A代表真實屬于器官的區(qū)域,B代表預測屬于器官的區(qū)域;S代表表面體素點,S(A)和S(B)代表A和B的表面體素點。
1)Dice系數(shù):
(3)
2)體積重疊誤差(Volume Overlap Error, VOE):
(4)
3)相對體積偏差(Relative Volume Difference, RVD):
(5)
4)平均對稱面距(Average Symmetric Surface Distance, ASSD):
(6)
d(v,S(A))表示體素v到表面體素S(A)的最短歐式距離。公式如下:
(7)
5)最大對稱面距(Maximum Symmetric Surface Distance , MSSD):
(8)
Dice系數(shù)的值越接近1,則分割越精準。VOE數(shù)值越小代表分割準確度越高。RVD值為0時,分割算法是最優(yōu)的。ASSD和MSSD都是值越小,表明分割效果良好,當值為0時,分割結果最好。
為了保證實驗結果的準確性,本文采用5折交叉驗證進行實驗,即隨機將130例數(shù)據(jù)分為5組,每組包含26例數(shù)據(jù)。每次挑選其中的1份作為測試集,剩下的4份作為訓練集。然后進行5輪訓練和測試。最后統(tǒng)計5輪測試結果的平均值作為最終測試結果。為了防止訓練過擬合,每次訓練需要從訓練集抽取15例數(shù)據(jù)作為驗證集。
在訓練肝臟分割和肝癌分割的Vnet網(wǎng)絡中,batch size的大小都設置為4,訓練迭代次數(shù)都設置為200,在出現(xiàn)明顯過擬合的時候停止訓練。
利用LiTS數(shù)據(jù)集完成5折交叉驗證實驗,平均測試結果如表1所示。
表1 測試結果
通過表1可以看出基于Vnet網(wǎng)絡的肝臟分割算法在交叉實驗中平均Dice系數(shù)達到0.951,說明算法可以準確地對肝臟進行分割?;赩net網(wǎng)絡的肝癌分割算法的平均Dice系數(shù)達到0.712,說明算法可以對較為準確地對肝癌進行分割。
隨機從測試集中抽取一例CT數(shù)據(jù),并選擇其中一層切片。對該切片的算法分割結果和真實標記進行可視化并對比。對比圖如圖4所示。通過該圖可以發(fā)現(xiàn),肝臟分割算法的分割結果和真實標記基本相同,而肝癌分割算法的分割結果中大型肝癌可以較為準確地分割,小型肝癌則存在一處漏檢,原因在于小型肝癌特征不明顯,分割難度較大,容易出現(xiàn)漏檢。
圖4 分割結果對比圖
本文提出了基于Vnet網(wǎng)絡的肝臟分割算法,采用了Vnet網(wǎng)絡分割結合后處理的方式。為了對比肝臟分割算法的性能,同樣采用5折交叉驗證實驗驗證了Unet[11]網(wǎng)絡和3D Unet[12]網(wǎng)絡的性能。Unet網(wǎng)絡為二維全卷積網(wǎng)絡,在二維圖像分割上準確度較高,被廣泛應用。Unet結構上也為級聯(lián)對稱結構,通過級聯(lián)層補充壓縮過程中丟失的信息。3D Unet網(wǎng)絡則是在Unet網(wǎng)絡基礎上提出的三維全卷積神經(jīng)網(wǎng)絡,和Unet網(wǎng)絡不同的地方在于數(shù)據(jù)維度,網(wǎng)絡深度和卷積核的數(shù)量。Unet網(wǎng)絡和3D Unet網(wǎng)絡的平均測試結果如表2所示。表中還羅列了未加后處理的Vnet網(wǎng)絡的平均測試結果。
表2 肝臟分割測試結果對比
從測試結果可以看出,Vnet網(wǎng)絡加后處理的方式在測試集上的各項指標都優(yōu)于單一Vnet網(wǎng)絡,說明后處理的加入有效去除了分割結果中的假陽性,提高了分割準確率。3D Unet網(wǎng)絡在測試集的各項指標低于Vnet網(wǎng)絡,主要原因在于3D Unet網(wǎng)絡的網(wǎng)絡深度和感受野較都小于Vnet網(wǎng)絡。Unet網(wǎng)絡的在測試集的表現(xiàn)則明顯低于Unet網(wǎng)絡和Vnet網(wǎng)絡。其原因在于Unet網(wǎng)絡作為二維全卷積網(wǎng)絡無法利用CT影像中的空間信息,即切片間的相關性。三維全卷積神網(wǎng)絡則可以很好的利用空間信息,因此三維全卷積神經(jīng)網(wǎng)絡準確率是更高的。
本文在Vnet網(wǎng)絡結構中加入了BN來加快模型收斂。經(jīng)過實驗,加入了BN后的Vnet網(wǎng)絡平均在第96次迭代時,驗證集Dice系數(shù)達到最高值,而訓練未加入BN的Vnet網(wǎng)絡平均在第121次迭代才達到最高值,說明Vnet網(wǎng)絡在加入BN后可以更快收斂。
本文在訓練肝癌分割Vnet網(wǎng)絡中,在訓練好的肝臟分割Vnet網(wǎng)絡的權重參數(shù)的基礎上進行微調(diào)。使用微調(diào)的方式訓練Vnet網(wǎng)絡,驗證集上Dice系數(shù)平均最高為0.741,而采用隨機初始化參數(shù)的方式訓練Vnet網(wǎng)絡,驗證集上Dice系數(shù)平均最高為0.728。說明采用微調(diào)的方式,肝癌分割的Vnet網(wǎng)絡收斂效果更好。
本文在肝癌分割算法中采用了組合損失函數(shù),目的是為了應對類別不平衡問題。使用組合損失函數(shù)相比于使用單一的Dice損失函數(shù)和單一的交叉熵損失函數(shù),模型的收斂效果會更好。本文分別使用單一的Dice損失函數(shù)、單一的交叉熵損失函數(shù)和組合損失函數(shù)訓練Vnet網(wǎng)絡。在驗證集沒有出現(xiàn)過擬合的情況下,采用單一的Dice損失函數(shù)在驗證集上Dice系數(shù)平均最高為0.727,,單一的交叉熵損失函數(shù)為0.725,組合損失函數(shù)為0.741。說明組合損失函數(shù)相比單一損失函數(shù)可以讓模型更好地收斂。
在肝癌分割算法中加入了簡單的后處理:剔除不在肝臟區(qū)域的肝癌體素點。經(jīng)過測試,不加后處理的肝癌分割準確率為0.707,加入后處理后肝癌分割準確率為0.712。說明該后處理有效提高了肝癌分割準確率。
本文提出了基于三維全卷積網(wǎng)絡的肝臟分割和肝癌分割算法。采用了加入BN的Vnet網(wǎng)絡進行肝臟分割和肝癌分割。通過加入后處理有效提高了肝臟分割的準確度。通過采用微調(diào)的方式和組合損失函數(shù),更好地訓練肝癌分割的Vnet網(wǎng)絡。利用公開數(shù)據(jù)集驗證了肝臟分割和肝癌分割的準確度。測試結果表明肝臟分割算法可以準確地對肝臟進行分割,肝癌分割算法達到較高準確度。后續(xù)需要針對小型肝癌的分割進行改進。