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 設計使用者介面,使模型能被簡易使用。

