姜濤,林仲志,吳水才,王笑茹,林沅平
1. 北京工業(yè)大學(xué) 生命科學(xué)與生物工程學(xué)院,北京 100124;2. 長(zhǎng)庚大學(xué) 資訊工程系,臺(tái)灣 桃園 33302
肝癌作為全球發(fā)病率較高的惡性腫瘤之一,正嚴(yán)重威脅我國(guó)人民的生命和健康[1]。據(jù)報(bào)道,原發(fā)性肝癌已成為我國(guó)第四位常見(jiàn)的惡性腫瘤以及第三位的腫瘤致死原因,每年新增病例約占全球一半以上[2],有效地治療肝癌亦成為亟待解決的重大社會(huì)問(wèn)題。隨著醫(yī)學(xué)影像技術(shù)的發(fā)展,尤其是計(jì)算機(jī)斷層掃描(Computed Tomography,CT)技術(shù)在肝癌治療中的廣泛應(yīng)用,對(duì)醫(yī)生進(jìn)行早期診斷、術(shù)前規(guī)劃有很大幫助。從腹部CT 圖像中準(zhǔn)確地分割出肝臟是肝癌計(jì)算機(jī)輔助診斷、手術(shù)規(guī)劃、醫(yī)學(xué)影像導(dǎo)航的第一步,也是極其重要的一步。然而,由于肝臟形狀的高度個(gè)體差異、肝臟內(nèi)部灰度不均勻、與胃等鄰近器官的邊界較弱(圖1)、以及與鄰近器官的灰度差異小等因素,使得肝臟分割成為一項(xiàng)具有挑戰(zhàn)性的任務(wù),吸引了大量研究人員的關(guān)注。
圖1 肝臟的CT影像結(jié)構(gòu)圖
在傳統(tǒng)臨床應(yīng)用中,主要依賴(lài)于經(jīng)驗(yàn)豐富的專(zhuān)業(yè)醫(yī)師從CT 影像中進(jìn)行手工肝臟分割,但這種方法效率十分低,需要消耗大量時(shí)間和精力,醫(yī)師的主觀因素對(duì)分割結(jié)果會(huì)產(chǎn)生較大的影響。為了提高肝臟分割的效率和精度,引入計(jì)算機(jī)圖像處理技術(shù),輔助醫(yī)師分割肝臟CT 圖像是必然的趨勢(shì)。目前常用的肝臟分割方法[3]可分為以下兩類(lèi):半自動(dòng)分割和全自動(dòng)分割。半自動(dòng)肝臟分割方法常常需要人為進(jìn)行種子點(diǎn)的選取等操作,分割效率較低。全自動(dòng)分割過(guò)程中不需要人為的干預(yù),具有較高的分割效率。Luo 等[4]根據(jù)肝臟自動(dòng)算法中使用的圖像特征,將肝臟分割方法分為以下三類(lèi):基于灰度的方法、基于結(jié)構(gòu)的方法和基于紋理的方法。Punia 等[5]回顧了用于肝臟圖像自動(dòng)分割的機(jī)器學(xué)習(xí)方法,主要分為:基于神經(jīng)網(wǎng)絡(luò)的方法、基于支持向量機(jī)的方法、基于聚類(lèi)的方法和組合方法。
Zhou 等[6]提出了一種非對(duì)比X 線軀干CT 圖像中肝臟區(qū)域全自動(dòng)分割的概率模型,利用概率模型估算空間位置計(jì)算出肝臟的分布概率,實(shí)現(xiàn)肝臟的自動(dòng)分割,但分割精度不夠理想。這些傳統(tǒng)的分割方法結(jié)果好壞很大程度上依賴(lài)于配準(zhǔn)的過(guò)程,由于肝臟較大的形狀變化,使得配準(zhǔn)難度變高,對(duì)結(jié)果影響較大。目前深度學(xué)習(xí)在醫(yī)學(xué)圖像分割領(lǐng)域的應(yīng)用受到了越來(lái)越多研究者的關(guān)注,Jin 等[7]以3D U-Net 網(wǎng)絡(luò)[8]為基礎(chǔ),提出一種提出了一種三維混合殘差注意感知分割方法RA-UNet,能夠精確分割出三維的肝臟和肝腫瘤CT 圖像,但需要很高的硬件條件和大量訓(xùn)練時(shí)間和訓(xùn)練樣本。本文根據(jù)肝臟CT 圖像中的分割難題,提出了一種基于卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)和簡(jiǎn)單線性迭代聚類(lèi)(Simple Linear Iterative Cluster,SLIC)超像素算法的肝臟分割方法。首先利用CNN 對(duì)CT 圖像中的肝臟部位進(jìn)行檢測(cè),以獲取其大致區(qū)域及坐標(biāo),再利用SLIC 對(duì)圖像進(jìn)行分割,獲得初步的肝臟分割結(jié)果,最后再通過(guò)腐蝕、膨脹、中值濾波等進(jìn)行后處理,得到更加準(zhǔn)確的結(jié)果。
圖2 為本文方法的整體流程。主要由兩個(gè)階段組成,一個(gè)是以卷積神經(jīng)網(wǎng)絡(luò)為基礎(chǔ)的目標(biāo)檢測(cè);另一個(gè)是以SLIC 為基礎(chǔ)的圖像分割。首先原始CT 圖像經(jīng)過(guò)預(yù)處理,將DICOM 格式轉(zhuǎn)換成JPG 格式,送入CNN 目標(biāo)檢測(cè)模型中,產(chǎn)生目標(biāo)檢測(cè)框,獲取大致的肝臟區(qū)域坐標(biāo),為下一階段做準(zhǔn)備。在圖像分割階段,原始CT 圖像經(jīng)過(guò)SLIC處理之后會(huì)產(chǎn)生很多小的像素塊,即超像素。屬于肝臟區(qū)域的超像素能夠較好保留肝臟的邊緣特征,以及有相似的像素值,故設(shè)置一個(gè)閾值,組合相似超像素塊,得到整體的肝臟區(qū)域。為了將肝臟區(qū)域從原圖中分割出來(lái),利用上一階段獲取的肝臟區(qū)域坐標(biāo),查詢(xún)?cè)诘玫秸w的肝臟區(qū)域之后此坐標(biāo)區(qū)域內(nèi)的像素,找出出現(xiàn)頻率最高的像素值,此像素值就是肝臟區(qū)域的像素值,假設(shè)其為a。因此在以CNN 為基礎(chǔ)的目標(biāo)檢測(cè)階段中,得到的檢測(cè)框只需符合框內(nèi)大部分區(qū)域是肝臟即可,無(wú)須特別精確的包圍整個(gè)肝臟。之后在得到整體的肝臟區(qū)域基礎(chǔ)上,將其中像素值為a 的都設(shè)為1,其余的像素值都設(shè)為0,得到一張只有肝臟的二值圖像,將肝臟區(qū)域從原圖中分割出來(lái)。產(chǎn)生的分割結(jié)果有一些孔洞和邊緣毛刺,最后做一些腐蝕、中值濾波等后處理,使效果更好。
圖2 方法的整體結(jié)構(gòu)圖
卷積神經(jīng)網(wǎng)絡(luò)是一種深層前饋型神經(jīng)網(wǎng)絡(luò)常用于圖像領(lǐng)域的監(jiān)督學(xué)習(xí)問(wèn)題,比如計(jì)算機(jī)視覺(jué)、圖像識(shí)別、目標(biāo)檢測(cè)等。1998 年,Lecun 等[9]提出了最初的CNN 模型,并在之后進(jìn)行了完善,在Krizhevsky 等[10]取得2012 年ImageNet 競(jìng)賽冠軍之后,CNN 在圖像識(shí)別領(lǐng)域幾乎成為深度學(xué)習(xí)的代名詞,在其他領(lǐng)域中也有越來(lái)越多的應(yīng)用。卷積神經(jīng)網(wǎng)絡(luò)主要由卷積層、池化層和全連接層組成,一個(gè)卷積神經(jīng)網(wǎng)絡(luò)中有一個(gè)或多個(gè)卷積層,通常每個(gè)卷積層后都要跟隨一個(gè)池化層,最后連接一個(gè)或多個(gè)全連接層。
圖3 SSD網(wǎng)絡(luò)模型的結(jié)構(gòu)
SSD(Single Shot MultiBox Detector) 是Liu 等[11]在ECCV 2016 上提出的一種基于CNN 的目標(biāo)檢測(cè)算法,是目前主要的檢測(cè)框架之一,其模型結(jié)構(gòu)見(jiàn)圖3。SSD 網(wǎng)絡(luò)總體由兩部分組成,前部分(前五層)主要采用卷積網(wǎng)絡(luò)初步提取圖像特征,以VGG16 網(wǎng)絡(luò)結(jié)構(gòu)作為基礎(chǔ),包括輸入層、卷積層、池化層。后部分將卷積層代替原始全連接層,卷積層逐層遞減,以多尺度滑動(dòng)窗口特征提取層級(jí)結(jié)構(gòu)為主體。分別將VGG16 的全連接層fc6 和fc7 轉(zhuǎn)換成33 卷積層conv6 和11 卷積層conv7,同時(shí)將池化層pool5 由原來(lái)的stride=2 的22 變 成stride=1 的33。然 后 移 除dropout 層和fc8 層,并新增一系列卷積層。
SSD 同樣采用回歸方法獲取目標(biāo)對(duì)象位置和類(lèi)別,不同的是SSD 使用的是目標(biāo)對(duì)象位置周?chē)奶卣鞫侨珗D的特征。SSD 各卷積層將特征圖分割為若干相同大小的網(wǎng)格,稱(chēng)為feature map cell,對(duì)每個(gè)網(wǎng)格設(shè)定一系列固定大小的包圍盒,稱(chēng)為default boxes。然后分別預(yù)測(cè)default boxes 的偏移以及類(lèi)別得分,最終通過(guò)非極大值抑制方法得到檢測(cè)結(jié)果。default boxes 的作用類(lèi)似于Faster R-CNN 的anchor機(jī)制,不同的是default boxes 作用于不同層次的多個(gè)特征圖上,這樣可以利用多層的特征以最佳尺度匹配目標(biāo)對(duì)象的實(shí)際區(qū)域。
SSD 模型要對(duì)目標(biāo)的位置和類(lèi)別同時(shí)進(jìn)行預(yù)測(cè),故其損失函數(shù)L 包括定位損失函數(shù)Lloc和置信度損失函數(shù)Lconf定義為:
式中,N 代表匹配完整物體框的默認(rèn)框數(shù)目;α 為權(quán)值,初始值為1;x 為默認(rèn)框與物體框的匹配結(jié)果;c 為類(lèi)別的置信度;l 為預(yù)測(cè)結(jié)果的位置信息;g 為物體框個(gè)數(shù)。
在圖像中由一系列位置相鄰且顏色、亮度、紋理等特征相似的像素點(diǎn)組成的小區(qū)域,作為一個(gè)整體來(lái)處理,這個(gè)整體就稱(chēng)之為超像素。超像素大多保留了進(jìn)一步進(jìn)行圖像分割的有效信息,且一般不會(huì)破壞圖像中物體的邊界信息。
超像素生成的算法大致可以分成基于圖論的方法和基于梯度下降的方法,SLIC 就是一種基于梯度的超像素分割算法,由Achanta 等[12]提出。Wu 等[13]曾提出基于SLIC超像素的圖像分割方法,實(shí)現(xiàn)肝臟在三維CT 圖像上的自動(dòng)分割。SLIC 算法主要思想將圖像從三維RGB 顏色空間轉(zhuǎn)移到三維CIELAB 顏色坐標(biāo)空間。每個(gè)像素由一個(gè)5 維向量(l,a,b,x,y)表示,其中(l,a,b)為像素LAB 的RGB 顏色,(x,y)為像素的圖像坐標(biāo)。兩個(gè)像素(xi,yi)和(xj,yj)的相似性由距離Dij表示。計(jì)算公式如下:
式中,s 為超像素的面積,其與超像素塊中的像素?cái)?shù)量相關(guān);m 是超像素的聚合度。我們稱(chēng)之為種子點(diǎn)的初始聚類(lèi),是通過(guò)均勻地劃分圖像而生成的。然后,通過(guò)梯度上升方法更新超像素區(qū)域,直到它通過(guò)計(jì)算超像素邊界的不同兩側(cè)上的兩個(gè)像素之間的距離來(lái)收斂。
SLIC 主要優(yōu)點(diǎn)如下:生成的超像素如同細(xì)胞一般緊湊整齊,鄰域特征比較容易表達(dá)。這樣基于像素的方法可以比較容易改造為基于超像素的方法,不僅可以分割彩色圖,也可以兼容分割灰度圖。需要設(shè)置的參數(shù)非常少,默認(rèn)情況下只需要設(shè)置一個(gè)預(yù)分割的超像素的數(shù)量。相比其他的超像素分割方法,SLIC 在運(yùn)行速度、生成超像素的緊湊度、輪廓保持方面都比較理想。
當(dāng)SLIC 圖像分割階段處理完之后,產(chǎn)生的初步分割結(jié)果會(huì)有一些孔洞和邊緣毛刺。膨脹運(yùn)算可以用來(lái)填補(bǔ)目標(biāo)區(qū)域中某些空洞以及消除包含在目標(biāo)區(qū)域中的小顆粒噪聲,腐蝕運(yùn)算可以用來(lái)消除小且無(wú)意義的目標(biāo)物。閉運(yùn)算是對(duì)圖像進(jìn)行先膨脹后腐蝕的操作,可以用來(lái)彌合較窄的間斷和細(xì)長(zhǎng)的溝壑,消除物體間小的孔洞,填補(bǔ)輪廓線中的斷裂。中值濾波是一種非線性數(shù)字濾波器技術(shù),經(jīng)常用于去除圖像或者其他信號(hào)中的噪聲,是圖像處理中的一個(gè)常用步驟,它對(duì)于斑點(diǎn)噪聲和椒鹽噪聲來(lái)說(shuō)尤其有用,保存邊緣的特性使它在不希望出現(xiàn)邊緣模糊的場(chǎng)合也很有用。
因此,本文采用膨脹、閉運(yùn)算和腐蝕等形態(tài)學(xué)運(yùn)算來(lái)處理填充其孔洞,最后經(jīng)過(guò)中值濾波使圖像邊緣變得光滑,圖4 示出了整個(gè)后處理流程及相應(yīng)結(jié)果。
圖4 后處理流程圖
本文采用公開(kāi)數(shù)據(jù)集3DIRCADb(https://www.ircad.fr/research/3dircadb/)作為實(shí)驗(yàn)數(shù)據(jù)集,該數(shù)據(jù)集中有20 套CT 掃描影像(共2821 張),其中10 位為女性檢查者,10位為男性檢查者,在20 位檢查者中75%患有肝癌。
硬件設(shè)備(操作系統(tǒng):Windows 10 64 位;內(nèi)存:16 G;GPU:AMD Radeon R9 M370X;CPU:Inter Core i7-4870HQ(非NVIDIA 顯卡,只能用CPU 訓(xùn)練)。
軟件工具包括TensorFlow:1.9(CPU 版);Python:3.5.2(Anaconda 4.2.0);Tensorflow object detection API(https://github.com/tensorflow/models);LabelImg。
我們隨機(jī)挑選數(shù)據(jù)集的其中10 位病人的數(shù)據(jù)(共1374張CT 影像)作為訓(xùn)練集,2 位病人的數(shù)據(jù)(共287 張CT 影像)作為測(cè)試集。我們主要運(yùn)用的工具是谷歌的Tensorflow object detection API,是一個(gè)構(gòu)建在TensorFlow 之上的可以簡(jiǎn)化構(gòu)建、訓(xùn)練、部署目標(biāo)檢測(cè)模型的開(kāi)源框架,十分便于目標(biāo)檢測(cè)的神經(jīng)網(wǎng)絡(luò)訓(xùn)練。
2.2.1 創(chuàng)建訓(xùn)練/測(cè)試數(shù)據(jù)集
首先我們將所有的數(shù)據(jù)從DICOM 格式轉(zhuǎn)化成JPG 格式:肝臟的CT 值一般在40~70 之間,設(shè)定好窗位后進(jìn)行歸一化處理。然后對(duì)12 位病人的數(shù)據(jù)進(jìn)行人工標(biāo)記,根據(jù)數(shù)據(jù)集提出的金標(biāo)準(zhǔn)標(biāo)記出肝臟區(qū)域,使用的工具為L(zhǎng)abelImg,如圖5 所示,其中紅色框區(qū)域就是手動(dòng)標(biāo)記的肝臟區(qū)域。標(biāo)注完成后保存為同名的xml 文件,為標(biāo)準(zhǔn)的VOC 目標(biāo)檢測(cè)數(shù)據(jù)集格式。最后調(diào)用API 庫(kù)中的數(shù)據(jù)格式轉(zhuǎn)化程序 create_pascal_tf_record.py,將數(shù)據(jù)集轉(zhuǎn)化為T(mén)FRecord 格式。
圖5 對(duì)肝臟區(qū)域進(jìn)行標(biāo)記
2.2.2 肝臟目標(biāo)檢測(cè)
創(chuàng)建完訓(xùn)練/測(cè)試數(shù)據(jù)集后,將其送入API 進(jìn)行訓(xùn)練,選擇的模型是SSD 網(wǎng)絡(luò)模型。實(shí)驗(yàn)中設(shè)置初始學(xué)習(xí)率為0.004,衰減率為0.95,訓(xùn)練步數(shù)設(shè)定為50000 步。使用CPU 作為訓(xùn)練硬件平臺(tái),隨著訓(xùn)練迭代次數(shù)逐步增加,模型的損失函數(shù)L 的值逐漸減少,并趨于1,訓(xùn)練完成后得到一個(gè)肝臟檢測(cè)的模型。當(dāng)送入一張肝臟圖像至模型,就會(huì)得到該圖片的肝臟區(qū)域檢測(cè)框及其坐標(biāo),如圖6 所示,上下分別為不同切面層的肝臟CT 影像,左邊為原始輸入的肝臟圖像,中間紅色區(qū)域?yàn)楦闻K區(qū)域的金標(biāo)準(zhǔn),右邊綠色的框框就是我們檢測(cè)的肝臟區(qū)域的大致范圍,上面的數(shù)字表示模式判斷此區(qū)域?yàn)楦闻K的概率。
圖6 目標(biāo)檢測(cè)結(jié)果
2.2.3 肝臟圖像分割
最后進(jìn)行基于SLIC 的圖像分割,實(shí)驗(yàn)中設(shè)置SLIC 算法初始的種子點(diǎn)個(gè)數(shù)為2000,在設(shè)定閾值合并相似超像素塊時(shí),選擇threshold 的值為25。在后處理階段,膨脹、腐蝕、閉運(yùn)算等形態(tài)學(xué)處理的卷積核設(shè)置為1515 的矩陣,且所有元素都是1,中值濾波中濾波窗口尺寸設(shè)置為7。以上所有參數(shù)皆是在多次對(duì)比實(shí)驗(yàn)中選擇的合理參數(shù),此階段實(shí)驗(yàn)中先手動(dòng)設(shè)置肝臟區(qū)域以調(diào)整參數(shù),然后將目標(biāo)檢測(cè)階段和圖像分割階段整合在一起。圖7 是一張CT 圖像經(jīng)過(guò)目標(biāo)檢測(cè)后的肝臟分割結(jié)果,左邊黃色是區(qū)域是本文方法所產(chǎn)生的分割結(jié)果,中間紅色區(qū)域是數(shù)據(jù)集提供的金標(biāo)準(zhǔn),右邊是二者疊加顯示,可以看出本文提出的方法進(jìn)行肝臟分割的可行性和準(zhǔn)確性。但是也有遇到錯(cuò)誤分割的時(shí)候,如圖8 所示。紅色區(qū)域是肝臟的真實(shí)區(qū)域,黃色區(qū)域是我們的分割結(jié)果,由于在基于CNN 的目標(biāo)檢測(cè)階段錯(cuò)誤的識(shí)別了肝臟,導(dǎo)致了下一步在分割階段的錯(cuò)誤分割。
圖7 實(shí)驗(yàn)結(jié)果比較
圖8 錯(cuò)誤分割的結(jié)果
本文采用標(biāo)重合率DICE、體積重疊誤差VOE 和相對(duì)體積誤差RVD 評(píng)估指標(biāo)[14-15]。定義肝臟分割結(jié)果的區(qū)域?yàn)锳,期望分割結(jié)果為B,這三項(xiàng)指標(biāo)定義如下。
在剩下的8 位病人的數(shù)據(jù)中,隨機(jī)挑選一位,將其CT 序列送入本文設(shè)計(jì)的分割模型中,根據(jù)之前提到的評(píng)估指標(biāo),得到的結(jié)果,見(jiàn)表1,我們的分割結(jié)果的DC 為0.951,VOE 為0.0917,RVD 為-0.018。在同其他一些方法比較的時(shí)候效果也得到一定的提升,其他三種方法也是對(duì)3DIRCADb 數(shù)據(jù)集進(jìn)行分析處理,再次表明本文方法的可行性和準(zhǔn)確性。
表1 不同方法的結(jié)果比較
本文提出了一種基于卷積神經(jīng)網(wǎng)絡(luò)和SLIC 超像素算法的圖像分割方法,準(zhǔn)確地分割了腹部CT 掃描影像中的肝臟區(qū)域。首先是通過(guò)基于卷積神經(jīng)網(wǎng)絡(luò)的目標(biāo)檢測(cè)模型,利用SSD 網(wǎng)絡(luò)結(jié)構(gòu),準(zhǔn)確定位出肝臟的大致區(qū)域,并獲得其坐標(biāo)。然后是通過(guò)基于SLIC 超像素算法的圖像分割模型,得到初步肝臟分割結(jié)果。最后經(jīng)過(guò)一些形態(tài)學(xué)和中值濾波等處理對(duì)結(jié)果進(jìn)一步優(yōu)化。該方法將深度學(xué)習(xí)方法和傳統(tǒng)圖像分割方法相結(jié)合,同已經(jīng)發(fā)表的一些方法比較,分割精度有所提高。
本文提出的方法也需要做出一定的改進(jìn):① 圖8 中由于基于卷積神經(jīng)網(wǎng)絡(luò)的目標(biāo)檢測(cè)未能檢測(cè)出一個(gè)CT 序列的每一張肝臟圖像,所以對(duì)這些圖像就無(wú)法進(jìn)行分割,要對(duì)網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行進(jìn)一步改進(jìn)和優(yōu)化;② 只訓(xùn)練了一種數(shù)據(jù)集,為了進(jìn)一步提高分割準(zhǔn)確度,下一步要訓(xùn)練更多的數(shù)據(jù)集;③ 現(xiàn)在很多三維的肝臟分割方法已經(jīng)發(fā)表,以后需在二維的基礎(chǔ)上向三維的圖像分割進(jìn)行改進(jìn)。