🚀 🩺 用於COVID - 19 CT掃描分割的UNet模型
本模型是一個基於UNet的分割模型,專為在CT掃描中實現對COVID - 19感染肺部區域的自動分割而設計。它通過引入注意力機制對經典的U - Net進行了增強,從而能夠更精準地聚焦於感染區域。
📚 詳細文檔
📌 模型概述
- 架構:UNet + 注意力門
- 數據集:來自Coronacases.org、Radiopaedia.org和Zenodo Repository的COVID - 19 CT掃描數據
- 任務:圖像分割(肺部感染)
- 評估指標:Dice係數、交併比(IoU)、豪斯多夫距離、對稱表面距離(ASSD)
📊 訓練詳情
- 數據集規模:20次CT掃描(512 × 512 × 301切片)
- 預處理:
- 像素強度歸一化到
[0,1]
- HU閾值設定為
[-1000, 1500]
- 圖像調整大小為
128 × 128像素
- 掩碼二值化(0 = 背景,1 = 感染區域)
- 數據增強:
- 旋轉:±5度
- 彈性變換、高斯模糊
- 亮度/對比度變化
- 最終數據集:2,252個CT切片
- 訓練:
- 優化器:Adam(
學習率 = 1e - 4
)
- 損失函數:加權BCE - Dice損失 + 表面損失
- 批量大小:16
- 訓練輪數:25
- 訓練平臺:NVIDIA Tesla T4(Google Colab Pro)
🚀 模型性能
指標 |
未增強模型 |
增強模型 |
Dice係數 |
0.8502 |
0.8658 |
IoU(均值) |
0.7445 |
0.8316 |
ASSD(對稱距離) |
0.3907 |
0.3888 |
豪斯多夫距離 |
8.4853 |
9.8995 |
ROC AUC得分 |
0.91 |
1.00 |
📌 關鍵發現:
✔ 數據增強顯著提高了分割精度
✔ 注意力U - Net的表現優於其他分割模型
💻 使用示例
1️⃣ 加載模型
TensorFlow/Keras
import os
from huggingface_hub import hf_hub_download
from tensorflow.keras.models import load_model
from keras.saving import register_keras_serializable
import tensorflow.keras.backend as K
os.environ["KERAS_BACKEND"] = "jax"
@register_keras_serializable()
def dice_coef(y_true, y_pred, smooth=1e-6):
y_true_f = K.flatten(y_true)
y_pred_f = K.flatten(y_pred)
intersection = K.sum(y_true_f * y_pred_f)
return (2. * intersection + smooth) / (K.sum(y_true_f) + K.sum(y_pred_f) + smooth)
@register_keras_serializable()
def gl_sl(*args, **kwargs):
pass
model_path = hf_hub_download(repo_id="amal90888/unet-segmentation-model", filename="unet_model.keras")
unet = load_model(model_path, custom_objects={"dice_coef": dice_coef, "gl_sl": gl_sl}, compile=False)
from tensorflow.keras.optimizers import Adam
unet.compile(optimizer=Adam(learning_rate=1e-4), loss="binary_crossentropy", metrics=["accuracy", dice_coef])
print("✅ Model loaded and recompiled successfully!")
📄 許可證
本項目採用MIT許可證。