Kaggle競賽銀牌: 糖尿病視網膜病變檢測

Kaggle 競賽銀牌:
APTOS2019 糖尿病視網膜病變檢測

此作品為大數據競賽及大學畢業專題

我們參加 APTOS 與 Kaggle 合作舉辦的大數據競賽,使用 EfficientNet 搭配多種深度神經網路的訓練技巧,建立一套 全球排名 Top 1% 準確度 的糖尿病視網膜病變分類網路,並設計簡易圖形化介面,讓使用者容易使用。

比賽簡介

糖尿病經常引起視網膜病變,導致血管滲漏,造成視網膜組織傷害,以致所看到的影像變成模糊、扭曲或部份喪失。APTOS 2019 Blindness Detection 提供 50,000 美元獎金池及大量眼底鏡影像,參賽者藉由深度學習技術自動判斷視網膜是否病變或病變之程度。減輕專業醫師負擔,並協助患者及早進行診斷與治療,預防永久失明。

資料集

本此比賽的資料庫

根據以下等級,臨床醫生根據 0 至 4 的等級評估每張眼底鏡中的糖尿病視網膜病變程度。

分級 眼底鏡 說明
0
No DR
健康的眼睛
1
Mild DR
僅限微動脈瘤
2
Moderate DR
微動脈瘤
視網膜內出血
3
Severe DR
大量視網膜內出血
念珠菌感染
視網膜內微血管異常增長
但沒有 PDR 現象
4
Proliferative DR
兩種情況之一
新生血管形成
玻璃體/視網膜前出血

這些眼底鏡圖像從多個診所使用各種相機收集而來。圖像可能包含偽影、失焦、曝光不足或過度曝光。

  • 3662 Training set

    • 圖片、標籤可下載
  • 1928 Public test set

    • 圖片可下載、標籤在伺服器
    • 於比賽期間上傳至評分伺服器可取得 Public Leaderboard 分數
  • 20GB Private test set

    • 圖片、標籤在伺服器
    • 用於結算比賽成績的 Private Leaderboard

額外的資料

2015 在 Kaggle 由 California Healthcare Foundation 贊助舉辦的另一場糖尿病視網膜病變檢測競賽所提供的資料庫,擁有與本次競賽相同的分類標籤與眼底鏡圖片。可作為本次競賽的擴充資料使用。

  • 35126 Training set

    • 圖片、標籤可下載
  • 53576 Testing set

    • 圖片、標籤可下載

準確度公式

Quadratic Kappa Metric
預測結果與實際結果偏差越大,扣分越重。滿分為 1 最低為 0。

模型訓練

資料前處理

資料增強 Data augmentation

每張圖像傳入神經網路訓練前,對其進行隨機的旋轉、調整大小、比例尺寸,或者改變亮度色溫、翻轉等處理。如此操作可以提升資料多樣性,避免網路過度擬合,且增強網路的泛化能力。

遷移式學習

選用當時 ImageNet 分類的 SOTA 模型: EfficientNet,利用 ImageNet 的 Pretrain Weight 預先對本次競賽和額外的資料集做遷移式學習,再用訓練完的 Weight 對本次競賽的資料做 Fine-tune,以保證模型收斂能確實符合本次競賽。

K-fold

K-fold 選作交叉驗證 (Cross Validation) 方法。將資料隨機平均分成 5 個集合,然後將其中一個集合當做驗證資料,剩下的 4 個集合做為訓練資料,重複進行到每一個集合都被當過驗證資料後,可得到五個 Weight。以這五個模型對 Public test set 資料進行預測,即可取出最佳的 Weight。

資料後處理

TTA: Test Time Augmentation

針對測試資料做影像加強,包括不同區域裁剪和更改縮放程度等,並對不同版本的圖像進行預測,能得到多個結果,最後進行平均輸出作為最終結果,如此能夠提高結果的穩定性與精確度。如下表可見基於 EfficientNet B4 的模型,在加入 TTA 後,Public Leaderboard 分數有了顯著的上升。

Model Post Process Public Leaderboard Score
EfficientNet B4 - 0.805
EfficientNet B4 TTA 0.813

Model Ensemble

訓練多組模型,將預測結果做平均,提升預測準確度及穩定度,進行多組實驗後我們決定選用 EfficientNet B4、EfficientNet B5 進行 Ensemble。

Model Cross Validation Score Public Leaderboard Score
EfficientNet B4 0.9381 0.813
EfficientNet B5 0.9454 0.817
Ensemble B4 & B5 0.822

競賽成果 Top 1%

Leaderboard Rank Score
Public #88 0.822879
Private #19 (Final standings) 0.929524

GUI 設計

使用 PyQt5 設計使用者介面,使模型能被簡易使用。