🚀 🩺 用于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许可证。