这是一个基于PyTorch实现的U-Net医学图像分割项目,专门用于DRIVE(Digital Retinal Images for Vessel Extraction)数据集的血管分割任务。
本项目实现了U-Net架构,用于对眼底图像进行血管分割。U-Net是一种经典的卷积神经网络架构,最初设计用于生物医学图像分割任务。本项目包含数据加载、数据增强、模型定义、损失函数、训练和测试等完整流程。
数据增强是提高模型泛化能力和防止过拟合的重要步骤。本项目的数据增强流程如下:
对训练数据应用以下增强技术:
原始图像 → 水平翻转 → 垂直翻转 → 旋转增强
↓ ↓ ↓ ↓
4张图像 4张图像 4张图像 4张图像
new_data/目录下new_data/
├── train/
│ ├── image/ # 增强后的训练图像
│ └── mask/ # 对应的血管掩码
└── test/
├── image/ # 测试图像(未增强)
└── mask/ # 测试掩码
超参数设置:
- 图像尺寸:512×512
- 批次大小:2
- 学习率:1e-4
- 训练轮数:50 epochs
- 损失函数:DiceBCELoss
- 优化器:Adam
- 学习率调度器:ReduceLROnPlateau(耐心期5)
运行命令:
python train.py
files/checkpoint.pthfiles/checkpoint.pth)运行命令:
python test.py
results/目录results/目录下生成对比图像测试结果按以下格式保存:
results/
├── 01_test_0.png # 第1张测试图像的结果
├── 02_test_0.png # 第2张测试图像的结果
└── ... # 其他测试图像结果
U-Net包含以下组件:
项目使用了两种损失函数:
data_aug.py进行数据预处理和增强train.py开始训练模型test.py评估模型性能测试脚本计算以下评估指标:
项目依赖项详见requirements.txt文件。
请根据您的需要添加许可证信息。