孫 暉, 楊艾炯, 李康博, 孟浩楠, 牛立剛
(吉林大學(xué) 電子科學(xué)與工程學(xué)院, 長(zhǎng)春 130012)
角膜新生血管有高達(dá)4.14%的致盲率, 我國(guó)每年有大約400萬(wàn)的患者因此失明[1]。角膜新生血管的產(chǎn)生原因有: 傷口感染、 缺血和化學(xué)燒傷等。角膜新生血管也是角膜移植發(fā)生排斥的主要原因之一, 由于目前國(guó)內(nèi)相關(guān)的西藥較少, 且療效未達(dá)到理想水平, 因此臨床上主要使用抗血管內(nèi)皮生長(zhǎng)因子(VEGF: Vascular Endothelial Growth Factor)進(jìn)行抗體治療, 例如: 貝伐單抗、 雷珠單抗等新型藥物在早期實(shí)驗(yàn)中具有顯著的治療效果[2]。但是, 當(dāng)前的研究樣本相對(duì)較少, 臨床應(yīng)用中的劑量選擇、 安全性等方面仍需要進(jìn)一步實(shí)驗(yàn)探究。在小鼠動(dòng)物實(shí)驗(yàn)中,醫(yī)學(xué)研究人員需要獲得并分析大量的小鼠眼角膜數(shù)據(jù), 用以對(duì)比不同藥物的治療效果, 因此研究一種自動(dòng)化、 標(biāo)準(zhǔn)化的提取眼角膜數(shù)據(jù)參數(shù)的方法迫在眉睫。
傳統(tǒng)的小鼠眼角膜圖像處理方法是基于基礎(chǔ)的形態(tài)學(xué)圖像處理[3], 包括: 多尺度分割、 邊緣提取和區(qū)域生長(zhǎng)等。在處理單張圖片時(shí), 該方法比目前通用的PhotoShop軟件處理效率更好。但由于不同圖片的參數(shù)不同, 需要人工調(diào)試程序的參數(shù)并不適用于大量圖片的批處理, 尤其是角膜拍攝過(guò)程中出現(xiàn)褶皺的現(xiàn)象。筆者探究了角膜圖片自動(dòng)化分析的方法, 實(shí)現(xiàn)了整個(gè)圖像處理和分析過(guò)程的自動(dòng)化, 方便醫(yī)學(xué)研究人員進(jìn)行進(jìn)一步處理分析, 減輕人工勞動(dòng)強(qiáng)度, 并提高了計(jì)算精度。
目前, 國(guó)內(nèi)大多利用現(xiàn)有的圖像處理軟件加人工輔助的方式進(jìn)行分析[4], 趙超陽(yáng)等[5]對(duì)視網(wǎng)膜分層圖像的不同位置進(jìn)行預(yù)處理, 提取邊緣并進(jìn)行形態(tài)學(xué)處理, 得到角膜灌注區(qū)血管的邊緣輪廓, 計(jì)數(shù)視網(wǎng)膜錐細(xì)胞, 分析細(xì)胞密度特征。國(guó)外一些研究學(xué)者采用深度學(xué)習(xí)算法得到了較高的眼角膜血管計(jì)算精度。Ruggeri等[6]提出了一種角膜圖像的神經(jīng)識(shí)別和追蹤方法, 顯著提升了計(jì)算機(jī)在處理眼角膜圖像時(shí)的計(jì)算能力。Salahuddin等[7]提出了利用受U-Net啟發(fā)的卷積神經(jīng)網(wǎng)絡(luò)(CNN: Convolutional Neural Networks)對(duì)眼角膜血管圖像進(jìn)行血管病變分類的想法, 在血管分割的基礎(chǔ)上對(duì)現(xiàn)有的U-Net網(wǎng)絡(luò)架構(gòu)進(jìn)行了改進(jìn), 用于圖像的分割。
筆者對(duì)來(lái)源于合作醫(yī)院的眼角膜實(shí)驗(yàn)樣本進(jìn)行分析, 首先對(duì)原始數(shù)據(jù)進(jìn)行了數(shù)據(jù)擴(kuò)充, 并人工解譯了眼角膜區(qū)域, 制作了用于圖像分割的小鼠眼角膜圖像數(shù)據(jù)集; 利用SegNet分割方法對(duì)數(shù)據(jù)集進(jìn)行訓(xùn)練, 并將分割結(jié)果與傳統(tǒng)的圖像處理方法和支持向量機(jī)(SVM: Support Vector Machine)的結(jié)果進(jìn)行比較, 實(shí)驗(yàn)表明筆者采用的SegNet更適用于小鼠眼角膜的提取研究。同時(shí), 筆者探究了數(shù)據(jù)集大小對(duì)分割結(jié)果的影響, 為小鼠眼角膜圖像的提取提供了一種基于深度學(xué)習(xí)的自動(dòng)化解決方法, 為治療眼角膜疾病藥物的前期實(shí)驗(yàn)操作步驟提供了一種更高效的優(yōu)化方式。
實(shí)驗(yàn)數(shù)據(jù)來(lái)源于合作醫(yī)院的高分辨率小鼠眼角膜圖像(4 140×3 096像素), 如圖1所示。實(shí)驗(yàn)的目的是從示例圖片中分割出角膜。圖像的角膜外側(cè)通常有大量液泡, 致使角膜邊界與液泡邊界粘連, 給傳統(tǒng)的圖像分割方法帶來(lái)了很大難度。圖1a是原始示例圖像, 圖1b用于說(shuō)明輪廓邊框是希望得到的角膜輪廓, 方框所示是液泡, 圓形框所示是角膜內(nèi)部的血管。
圖1 原始圖片實(shí)例Fig.1 Example of the original image
圖2 標(biāo)簽圖像示例Fig.2 Annotated image example
神經(jīng)網(wǎng)絡(luò)輸入層對(duì)圖片尺寸有嚴(yán)格要求; 大尺寸會(huì)增加運(yùn)算成本; 小數(shù)據(jù)集存在過(guò)擬合、 訓(xùn)練預(yù)期差、 魯棒性差的問(wèn)題。考慮到以上兩點(diǎn), 制做數(shù)據(jù)集的步驟如下。
1) 圖像縮放。將4 140×3 096像素的大尺寸圖像縮小成256×256像素的小尺寸圖像以減少運(yùn)算成本, 提高運(yùn)算速度。
2) 手工標(biāo)注步驟1)得到的圖像, 使用Matlab工具箱標(biāo)注出角膜的輪廓, 生成標(biāo)簽圖像。標(biāo)簽圖像如圖2所示, 其為二值圖像, 用黑色和灰色區(qū)分角膜內(nèi)部和外部。
3) 數(shù)據(jù)增強(qiáng)(數(shù)據(jù)集擴(kuò)充)。即對(duì)步驟1)獲得的小尺寸圖像和步驟2)獲得的標(biāo)簽圖像使用相同的變換得到新圖像, 以達(dá)到擴(kuò)充數(shù)據(jù)集的目的。使用的變換方法有: 翻轉(zhuǎn)、 旋轉(zhuǎn)、 亮度(Gamma)變換和加噪聲[8]。變換類型和參數(shù)如表1所示。
表1 數(shù)據(jù)增強(qiáng)的類型和參數(shù)
變換結(jié)果如圖3所示。
圖3 翻轉(zhuǎn)、 旋轉(zhuǎn)、 增強(qiáng)對(duì)比度和加噪聲圖像Fig.3 Image of flip, rotate, enhance contrast and add noise
數(shù)據(jù)增強(qiáng)的結(jié)果是得到23 331張小尺寸圖像和與之對(duì)應(yīng)的標(biāo)簽圖像, 用于下一步的網(wǎng)絡(luò)訓(xùn)練和預(yù)測(cè)。如表2所示, 訓(xùn)練用訓(xùn)練集; 過(guò)程測(cè)試、 輔助調(diào)試用驗(yàn)證集; 預(yù)測(cè)用測(cè)試集。至此, 數(shù)據(jù)集的規(guī)模從原始的21張擴(kuò)充到了23 331張, 筆者后續(xù)還會(huì)討論數(shù)據(jù)集大小對(duì)訓(xùn)練結(jié)果的影響。經(jīng)驗(yàn)證, 規(guī)模達(dá)到23 331張已經(jīng)能得到較好的訓(xùn)練結(jié)果。
表2 數(shù)據(jù)集的構(gòu)成
技術(shù)路線: 人工標(biāo)簽圖像; 圖像縮放; 數(shù)據(jù)增強(qiáng)并將其分成3類; 訓(xùn)練神經(jīng)網(wǎng)絡(luò), 精度分析。
國(guó)內(nèi)對(duì)角膜的圖像分割大多采用人工分割方法, 這里采用基于深度學(xué)習(xí)分割角膜圖像的方法[9], 使用SegNet網(wǎng)絡(luò)針對(duì)角膜圖像進(jìn)行分割[10], 以解決人工分割方法中人力浪費(fèi)和精度低等問(wèn)題。
圖4 技術(shù)流程圖Fig.4 Technical flow chart
Segnet[11]網(wǎng)絡(luò)為多層深度全卷積網(wǎng)絡(luò), 由編碼網(wǎng)絡(luò)和相應(yīng)的解碼網(wǎng)絡(luò), 像素級(jí)分類層組成(見(jiàn)圖5)。編碼網(wǎng)絡(luò)通過(guò)最大池化, 將圖像分辨率降采樣一半, 記錄每個(gè)最大池化窗口[12]的最大值位置。解碼網(wǎng)絡(luò)通過(guò)上采樣將低分辨率特征圖映射到輸入分辨率。分類層計(jì)算每個(gè)像素在所有類別中的最大概率, 即該像素的標(biāo)簽, 最終在分類層[13]完成分類。
圖5 SegNet網(wǎng)絡(luò)結(jié)構(gòu)圖Fig.5 Segnet network structure diagram
筆者為角膜的分割建立了11層的SegNet網(wǎng)絡(luò)[14]。包括編碼網(wǎng)絡(luò)、 解碼網(wǎng)絡(luò)和分類層。編碼網(wǎng)絡(luò)包括卷積層, 標(biāo)準(zhǔn)化層, 池化層。解碼網(wǎng)絡(luò)包括反卷積層、 標(biāo)準(zhǔn)化層、 上采樣層。表3為SegNet網(wǎng)絡(luò)使用的函數(shù)和公式。
表3 SegNet網(wǎng)絡(luò)使用的函數(shù)和公式
2.1.1 訓(xùn)練參數(shù)
將角膜想要提取的部分和其余部分分成兩個(gè)標(biāo)簽, 輸入圖片不宜過(guò)大, 否則會(huì)過(guò)量占用內(nèi)存, 筆者設(shè)定輸入圖片大小為256×256像素。訓(xùn)練圖片數(shù)為23 331張; 每批大小為6張; 訓(xùn)練輪數(shù)為10輪。
圖6 SVM原理圖Fig.6 SVM schematic diagram
SVM是一種廣義線性分類器, 它基于統(tǒng)計(jì)理論, 使用監(jiān)督學(xué)習(xí)對(duì)數(shù)據(jù)進(jìn)行二向分類。其原理是通過(guò)核函數(shù)找到一個(gè)超平面作為決策邊界分離兩類數(shù)據(jù)集, 然后尋找最優(yōu)分類邊界(見(jiàn)圖6)。利用機(jī)器學(xué)習(xí)方法在高維空間中進(jìn)行學(xué)習(xí), 從而實(shí)現(xiàn)對(duì)目標(biāo)的分類識(shí)別。
筆者采用支持向量機(jī)(SVM)對(duì)圖像進(jìn)行分割處理, 將圖片二值化后進(jìn)行形態(tài)學(xué)處理, 去除圖片中的雜質(zhì)并填充向量機(jī)處理后產(chǎn)生的孔洞。筆者使用多項(xiàng)式核函數(shù)。常用的核函數(shù)如表4所示。
表4 支持向量機(jī)的公式
圖7 傳統(tǒng)方法分割結(jié)果Fig.7 Segmentation results by traditional methods
傳統(tǒng)方法是使用Matlab進(jìn)行形態(tài)學(xué)變換, 包括填充孤立元素、 移除刺激像素、 圖像濾波、 孔洞填充等。結(jié)果如圖7所示。傳統(tǒng)方法處理單個(gè)圖片的結(jié)果較為精確, 圖片細(xì)節(jié)處也能很好地處理, 但處理過(guò)程中需要人工調(diào)整大量的參數(shù), 且算法的普適性差, 對(duì)不同圖片, 處理的方法與參數(shù)也有部分差異。
使用訓(xùn)練后的模型對(duì)測(cè)試集圖像進(jìn)行預(yù)測(cè), 預(yù)測(cè)結(jié)果如圖8所示。
圖8 測(cè)試集示例圖片和預(yù)測(cè)結(jié)果Fig.8 Sample test set image and forecast the results
由圖8可見(jiàn), 陰影部分是角膜區(qū)域, 非陰影部分是背景區(qū)域。SegNet在大血管邊緣的分割效果較好。但在角膜切割邊緣等邊界不清晰的地方有橫條紋出現(xiàn)。
使用支持向量機(jī)法處理前后的角膜圖片如圖9所示。
圖9 處理前和處理后圖像Fig.9 Images of before and after treatment
如圖9所示, SVM方法處理的圖片灰度值較大, 所以筆者使用較高閾值的二值化處理以提高液泡部分與角膜部分元素的對(duì)比度, 并對(duì)圖片進(jìn)行形態(tài)學(xué)[3]處理, 去除雜質(zhì),填充孔洞。結(jié)果如圖10所示。
圖10 二值化處理后的結(jié)果和填充孔洞后的結(jié)果Fig.10 The result after binarization and the result after filling out
3.2.1 精度評(píng)價(jià)指標(biāo)
衡量語(yǔ)義分割準(zhǔn)確率的指標(biāo)有: 像素準(zhǔn)確率(PA: Pixel Accuracy)、 召回率(Recall)、 類別平均像素準(zhǔn)確率(MPA: Mean Pixel Accuracy)和平均交并比(MIOU: Mean Intersection Over Union)等。
在機(jī)器學(xué)習(xí)的混淆矩陣中有如下定義: 真正類(TP: True Positive), 樣本的真實(shí)類別是正類, 并且模型識(shí)別的結(jié)果也是正類。假負(fù)類(FN: False Negative), 樣本的真實(shí)類別是正類, 但是模型將其識(shí)別成為負(fù)類。假正類(FP: False Positive), 樣本的真實(shí)類別是負(fù)類, 但是模型將其識(shí)別成為正類。真負(fù)類(TN: True Negative), 樣本的真實(shí)類別是負(fù)類, 并且模型將其識(shí)別成為負(fù)類。
PA=Q, RECALL=W, MPA=E, MIOU=R
(1)
TP=Pii,TN=Pjj,FP=Pij,FN=Pji
(2)
其中i為關(guān)心的預(yù)測(cè)類,j為不關(guān)心的預(yù)測(cè)類。Pii為真實(shí)為i類, 預(yù)測(cè)也為i類的像素?cái)?shù);Pij為真實(shí)為i類而預(yù)測(cè)是j類的像素?cái)?shù);Pji為真實(shí)為j類, 而預(yù)測(cè)為i類的像素?cái)?shù);Pjj為真實(shí)為j類, 預(yù)測(cè)也為j類的像素?cái)?shù)。
基于此理論, 圖片二分類問(wèn)題的評(píng)價(jià)指標(biāo)定義如下:
1) PA是預(yù)測(cè)類別正確的像素?cái)?shù)占總像素?cái)?shù)的比例Pji。即
(3)
2) Recall是真實(shí)為i類, 預(yù)測(cè)也為i類的樣本在真實(shí)為i類的樣本中所占的比例, 即
(4)
3) MPA是所有類別分類正確的比例的平均值, 即
(5)
4) MIoU是每類預(yù)測(cè)結(jié)果求交并比的均值。交并比是真實(shí)值的交集與并集的比值, 即
(6)
下面采用控制變量的思想, 研究數(shù)據(jù)集大小和不同方法對(duì)精度的影響。
3.2.2 數(shù)據(jù)源擴(kuò)充前后的精度對(duì)比分析
使用相同的方法(以SegNet為例), 討論數(shù)據(jù)集大小對(duì)精度的影響。其他訓(xùn)練參數(shù)保持一致, 數(shù)據(jù)集大小分別為4 200和23 331時(shí)訓(xùn)練過(guò)程的曲線如圖11所示, 精度指標(biāo)如表5所示。
圖11 4 200張圖片的訓(xùn)練曲線和23 331張圖片的訓(xùn)練曲線Fig.11 Training curves of 4 200 images and training curves of 23 331 images
表5 不同數(shù)據(jù)集的各計(jì)算指標(biāo)
從訓(xùn)練曲線可以直觀地看出, 訓(xùn)練輪數(shù)接近10輪時(shí), 兩種數(shù)據(jù)集都能基本收斂。但大數(shù)據(jù)集精確度會(huì)略高, 損失值也會(huì)低很多, 使預(yù)測(cè)結(jié)果更加穩(wěn)定。從表5中可以看出, 當(dāng)數(shù)據(jù)集增大到23 331張圖片時(shí), 精度指標(biāo)相比4 200張圖片提高顯著并且能達(dá)到很高的水平。但增大后的數(shù)據(jù)集存在邊際效益, 數(shù)據(jù)集大小為23 331張時(shí), 本實(shí)驗(yàn)分割角膜已經(jīng)有不錯(cuò)的結(jié)果。
綜上所述, SegNet網(wǎng)絡(luò)的各項(xiàng)指標(biāo)適合用于角膜圖片分割, 用SegNet網(wǎng)絡(luò)進(jìn)行角膜分割能得到理想的結(jié)果, 本實(shí)驗(yàn)最終選定SegNet網(wǎng)絡(luò)進(jìn)行角膜分割。
3.2.3 3種方法的精度對(duì)比分析
使用相同的數(shù)據(jù)集(以23 331張圖片為例), 不同方法下的精度指標(biāo)如表6所示。
表6 不同方法下的精度指標(biāo)
從表6可以看出, SVM和SegNet網(wǎng)絡(luò)都能基本實(shí)現(xiàn)對(duì)角膜圖片的分割。但SegNet網(wǎng)絡(luò)在精度上優(yōu)于SVM, 所以SegNet網(wǎng)絡(luò)用作角膜圖像分割是一種很好的選擇。
筆者采用的實(shí)驗(yàn)數(shù)據(jù)是由合作醫(yī)院提供的小鼠角膜切片。首先對(duì)眼角膜圖像進(jìn)行灰度變換、 數(shù)據(jù)增強(qiáng)等預(yù)處理, 并通過(guò)人工解譯制作標(biāo)簽, 得到小鼠眼角膜分割數(shù)據(jù)集; 再將圖片輸入SegNet和SVM模型分別進(jìn)行訓(xùn)練、 測(cè)試; 最后對(duì)分割結(jié)果進(jìn)行精度分析, 實(shí)驗(yàn)結(jié)果表明, SegNet在眼角膜的提取中的表現(xiàn)突出, 相比傳統(tǒng)方法的提取精度提高了8個(gè)百分點(diǎn), 相比SVM提高了5個(gè)百分點(diǎn)。
筆者提出的眼角膜提取方法也存在一些需要改進(jìn)地方, 如實(shí)驗(yàn)處理過(guò)程中訓(xùn)練時(shí)間過(guò)長(zhǎng)、 預(yù)測(cè)圖片存在橫條紋的問(wèn)題, 但這些問(wèn)題不會(huì)影響訓(xùn)練的準(zhǔn)確性。未來(lái)可以嘗試?yán)肬-net網(wǎng)絡(luò)[15], 各向異性擴(kuò)散算法[16], PCNN(Pulse Coupled Neural Network)模型方法[17]等進(jìn)行處理。最后, SegNet網(wǎng)絡(luò)法在角膜圖片分割處理方面具有較高的精度與可靠性, 為角膜圖片處理提供了一個(gè)可靠的思路和方向。