研究內容
研究動機
決策支援系統實驗室之實驗目的為偵測出眼底血管狹窄是否影響顱內血管,導致其狹窄,這項研究的重要性在於眼底血管的變化可能是顱內血管病變的早期徵兆,而顱內血管狹窄進一步增加了患者發生中風的風險。該實驗希望透過分析眼底血管影像及腦部血管影像,幫助醫師能有效地做出診斷即治療方案,並降低誤診率。綜上所述,實驗圍繞在眼底攝影(Fundus image)的小動脈血管分割(Segmentation)、分類(Classification)與量測(Measurement)和腦部動脈血管( Magnetic Resonance Angiography, MRA)分割與量測這兩部分,目前主要著重於眼底影像之分割、分類與量測的部分。
研究流程
血管分割
↓
血管動靜脈分類
↓
血管管徑量測
眼底疾病分類
在眼底血管狹窄的偵測實驗過程中我們發現使用眼底影像做疾病分類(classification)的可行性,因此延伸出此項目。
工具
Tensorflow
使用 TensorFlow 的優點:
1. 廣泛應用:適用於各種機器學習和深度學習任務,包括圖像識別、自然語言處理和時間序列分析。
2. 高效工具:提供高層次的 Keras API 和低層次的 TensorFlow Core API,既適合快速原型設計,又能進行細粒度控制。
3. 豐富資源:擁有強大的社群支持和豐富的教學資源,幫助用戶快速上手和解決問題。
GPU A100
- 在實驗中,為了進一步提升計算效率,NVIDIA A100 GPU被用來加速深度學習模型的訓練與推斷。
- A100 GPU基於Ampere架構,具備卓越的運算能力,尤其在處理深度學習中的大規模數據集時,能顯著縮短訓練時間。
- 通過GPU的加速,實驗能夠更高效地進行大規模並行計算,確保複雜的深度學習任務可以順利且迅速地完成。
血管分割
Dataset : FIVES
在研究的過程中我們不斷尋找、更換新的資料集,從最常被使用的DRIVE、HER、CHASE_DB1等,一直到FIVES dataset ,這是我們目前正在使用的dataset。
FIVES資料集包含800張圖像,正常眼睛和3種不同眼部疾病:包含糖尿病視網膜病變(DR)、老年黃斑部病變(AMD)和青光眼(Glaucoma)的圖像,每個類別200張,是迄今為止最大的視網膜血管分割數據集,避免了傳統數據集中包含的圖像數量較少,在疾病分佈上存在不平衡的問題。
圖像預處理
- 圖像灰階處理:使用不同的加權係數將彩色圖片轉換為灰階圖像,降低影像的複雜度,使後續處理步驟更高效 。
- 圖像銳化:使用卷積核進行圖像銳化處理,幫助模型更容易捕捉到圖像中的重要特徵,提高模型的準確性和效能 。
- 調整圖像尺寸:將所有圖像和對應的遮罩調整為固定的尺寸(例如512x512像素),有助於批量處理和加速計算。
- 擴展維度:為了使圖像和掩碼能夠作為模型的輸入,需要為它們添加一個新的維度。
- 標準化(Normalization):將圖像和掩碼的像素值縮放到0到1之間,使資料更容易處理,幫助模型更好地訓練和收斂。
Model : Unet & Vgg16
UNet:
是一種用於圖像分割的網絡結構,其中包含了對稱的Encoder和Decoder,能夠有效地捕捉不同尺度的特徵。
UNet架構特點:
此架構包含下採樣(Downsampling)和上採樣(Upsampling)兩路徑,形成一個“U”的形狀,下採樣路徑的部分,通過卷積層和池化層來提取特徵並減少空間尺寸;而上採樣路徑,恢復圖像的空間尺寸,此架構為目前最多文獻所使用辨識眼底影像血管分割之方法。
VGG16:
VGG16裡面一共有16層:13個卷積層及3個全連接層所組成,採用了連續的3x3卷積核和池化層,通過多次減少特徵圖的尺寸,VGG16在不增加太多參數的情況下提高了模型的表徵能力和性能。
作為UNet的Backbone:
VGG16作為UNet的Backbone,這樣的組合可以兼顧VGG16強大的特徵提取能力和UNet良好的分割性能,通常在圖像分割任務中得到很好的應用。
預測結果
訓練完成後,從測試數據中隨機選擇一張眼底圖像及其相對應之mask(遮罩),並使用先前訓練完成的模型生成一張預測的mask(遮罩),最終顯示圖像、真實掩碼和預測掩碼。最終驗證損失率(Validation Dice Loss)為0.0921、
驗證IoU(Intersection over Union) score為0.8621、驗證f1-score為0.9258。血管分類
Dataset : HRF/RITE
- HRF Dataset (High-Resolution Fundus Image Database) 是一個專為視網膜影像分析設計的公開資料集,該數據集包含 45 張高分辨率視網膜影像 (3504 x 2336 像素),分為三類:健康視網膜、青光眼、糖尿病視網膜病變,各類影像均提供手工標註的血管分割金標準及遮罩文件。
- RITE(Retinal Images vessel Tree Extraction,視網膜圖像血管樹提取)是一個資料集,用於在眼底圖像上進行動脈和靜脈分割或分類的比較研究。該資料集包含40組圖像。每組圖像包括:一張眼底照片、一個血管參考標準 、 一個動脈/靜脈(A/V)參考標準。
預處理:ACE
ACE(自適應對比增強)演算法將圖像分為高頻部分和低頻部分。
低頻部分通過平滑、模糊以及其他低通濾波方法獲得,而高頻部分則是通過從原始圖像中減去低頻部分直接得到的。在ACE中,對高頻部分進行放大,並將其添加到原始的低頻部分中,從而生成增強後的圖像。
經過增強處理的圖像,其色彩恆定性和亮度恆定性得到改善,並且圖像的對比度發生了變化。通過與原始圖像對比可以發現,增強後的圖像中血管像素(特別是微血管像素)與背景像素之間的對比度顯著提高,有利於後續的圖像處理和分析。
左圖是原圖,右圖是經ACE預處理後的圖像
MODEL:IMPROVED U-NET
U-Net 架構在下採樣過程中引入了空洞空間金字塔池化(ASPP)模組,並在跳躍連接中加入注意力模組。此外,還在下採樣過程中引入了殘差連接,以有效緩解梯度消失問題。
殘差連接增強了生成器對權重變化的敏感性,使其能更好地學習視網膜血管像素的分佈,從而提升血管分類的性能。
ASPP 模組利用具有不同膨脹率的卷積操作,擴展了網絡的感受野,捕獲多尺度上下文信息,同時不增加計算複雜度。該模組還能減少詳細信息的損失,從而更好地保留血管特徵信息並豐富微血管信息。
注意力模組則在 U-Net 網絡的跳躍連接中引入,用於加強關鍵特徵的關注。通過在下採樣過程中加入殘差連接,不僅緩解了梯度消失問題,還進一步提升了生成器對權重變化的敏感性,使網絡能更充分地學習視網膜血管像素分佈,從而改進血管分類效果。
血管分類結果與訓練情況
- HRF
- RITE
血管量測
在測量血管管徑前,首先進行視盤分割,視盤的準確分割可以幫助我們確定血管的起始位置和方向,並計算特定區域的血管管徑。因此,通過先分割視盤,可以確保後續血管管徑的測量更加精確。
Dataset:ORIGA、G1020
- ORIGA(Ophthalmic Imaging and Glaucoma AnalysisDatabase) :用於青光眼分析與研究,包含650張圖像,經過醫師標註視盤形狀。
- G1020:用於青光眼偵測,包含1020張圖像,經過醫師標註視盤形狀。
視盤分割圖像預處理
- 調整圖像尺寸:將所有圖像和對應的mask(遮罩)調整為固定的尺寸(64x64像素)。
- 標準化(Normalization):將圖像和mask(遮罩)的像素值縮放到0到1之間。
- 擴展遮罩維度:將維度擴展為三維,這是因為深度學習模型通常需要三維的輸入。
- Label Encoding:使用 LabelEncoder 將遮罩圖像中的每個像素標籤(通常是 0 或 1)轉換為數字標籤(例如,背景是0,物體是1),將類別標籤轉換為數字格式。
- One-HotEncoding:將遮罩的數字標籤進行One-Hot 編碼,這會將每個標籤轉換為一個二進制向量,其中只有一個位置為1,其餘為0,這樣模型可以學會區分每個像素的不同類別。
視盤分割深度學習模型: UNet & EfficientNetB1
使用 UNet 架構的卷積神經網路(Convolutional Neural Network, CNN)深度學習模型,並定義U-Net的骨幹網路(Backbone)為 EfficientNetB1,使用EfficientNet-B1模型作為U-Net的編譯器,提取視覺特徵。EfficientNet是Google 於2019年提出,透過均勻地縮放網路深度、寬度、圖像解析度 (resolution),使用複合係數 (compound coefficient) 均勻地縮放網路深度(網路的層數)、寬度(指通道數)、圖像解析度(resolution,圖像大小),在多個維度上進行均衡擴展,從而提升模型的表現。
血管骨架提取與AVR ROI切割
使用skeletonize函數提取血管的骨架,skeletonize函數是一種圖像處理技術,目的是將二值圖像中的物體簡化成一條細線,通常稱為骨架,這樣可以保留物體的結構特徵,同時減少圖像的複雜性。提取出的骨架線表示血管的中心線,它保留了血管的形狀特徵,但減少了其厚度,方便後續測量血管管徑。
透過先前的視盤分割,測量視盤直徑,並切割距離以視盤為中心0.5到1的視盤直徑範圍作為測量AVR的區域,即右圖中0.5DD至1DD之間之區域。
將測量區域作為新遮罩套用至眼底血管分割結果及血管骨架提取結果上,結果如右圖。
血管管徑量測
透過血管分割圖和骨架圖計算並繪製血管直徑線,利用骨架圖標記血管的中線,並通過血管分割圖來計算血管的直徑。
具體如下,給定某個點的坐標(來自骨架圖的中線),由該點向左和向右延伸,找到血管的左右邊界(即血管的邊緣像素),計算左右邊界之間的距離,即血管的直徑,重複上述處理所有骨架點,最終對同條血管的計算結果取平均,從而獲得該血管的平均管徑。
在眼底影像處理領域,血管分割、視盤(Optic Disc, OD)分割和AVR(Arteriovenous Ratio, 動靜脈比)區域的提取,為辨識眼底血管狹窄中至關重要的步驟,已經取得了顯著的進展,然而,由於血管管徑測量方法需要針對局部血管變化進行動態監測,而不僅僅依賴靜態的血管寬度測量,這要求測量方法能夠考慮到血管的非線性形變、局部擴張和收縮,並在不同影像質量和角度下保持穩定性,因此在血管管徑測量的準確性方面仍有很大的改進空間。
疾病分類
眼底鏡疾病分類
許多眼部疾病(如糖尿病視網膜病變、青光眼和白內障)在早期通常沒有明顯的症狀,因此難以及早察覺。然而,這些疾病如果不及時診斷和治療,可能導致永久性視力損失。視網膜眼底影像篩檢是診斷這些疾病的重要技術,但傳統的手動檢測方式既費時又耗力。為了解決這個問題,我們採用了深度學習技術,實現對眼部疾病的自動化檢測。
流程架構
Dataset-FIVES
資料集由 800 張來自 SHAZU 的彩色眼底照片組成。這些照片包括 200 張糖尿病性視網膜病變 (DR)、青光眼、老年性黃斑部病變 (AMD) 和正常對照組的圖像。
像素大小:2048 x 2048
預處理
- CLAHE
- 正規化
- 調整大小
- 垂直翻轉
- 水平翻轉
CLAHE
( 限制對比度自適應直方圖均衡)
將圖像分割為許多小區塊(tiles),並對每個區塊分別執行直方圖均衡化。
此外,CLAHE 增加了一個對比限制,以防止過度增強,確保圖像保持自然外觀。
此方法顯著增強局部對比度,同時保持整體亮度。
Model:EfficientNetB3
EfficientNet-B3 是一種深度學習模型,基於 Google 的 EfficientNet 系列,專注於計算效率和模型效能之間的平衡。它使用 Compound Scaling 方法,同步調整模型的深度(層數)、寬度(每層的參數數量)和輸入解析度,以達到高效的特徵學習能力。
- 深度 (Depth): 增加層數以捕捉更深層的特徵
- 寬度 (Width): 增加每層的濾波器數量以捕捉更細膩的細節
- 圖像解析度 (Resolution): 增強對輸入細節的捕捉能力
分類結果
- backbone: EfficientNetB3
- Dropout:0.5
- Learning rate : 0,00005
- Loss : categorical_crossentropy
- Early_stopping
與其他眼底鏡疾病分類方式比較
- 在實驗中,為了進一步提升計算效率,NVIDIA A100 GPU被用來加速深度學習模型的訓練與推斷。