项目简介
本项目借助 PyTorch 实现 U-Net 语义分割模型,针对 Hugging Face 社区的人行道图像语义分割数据集开展语义分割任务,以平均交并比(MIoU)作为分割结果的评价指标。
项目的主要特性和功能
- 数据处理:把 1000 张图像按 7:1:2 的比例随机划分成训练、验证和测试集,采用标准化预处理,利用随机裁剪和水平翻转进行数据增强。
- 模型架构:采用经典 U-Net 架构,包含收缩路径和拓展路径,通过卷积、池化、转置卷积等操作完成特征提取与融合。
- 训练策略:训练总步数为 6000 步,每 100 步进行一次验证,保存验证集 MIoU 分数最高的权重参数;运用 AdamW 优化器和 OneCycle 学习率调度策略。
- 推理策略:采用 Overlap-tile 策略将原图填充并切分进行推理,最后拼接成完整分割图。
- 实验分析:探究输入图像大小对分割效果的影响,并与 Hugging Face 社区上其他微调后的模型进行对比。
安装使用步骤
环境配置
确保 Python 版本为 3.9.16,安装以下 Python 模块及其对应版本:
albumentations 1.3.0
matplotlib 3.7.1
numpy 1.24.2
Pillow 9.4.0
tensorboard 2.12.1
torch 1.13.1
torchvision 0.14.1
tqdm 5.7.1
此代码也在 python 3.7.6 和 torch 1.8.1 环境下测试通过。
数据准备
运行 prepare_data.ipynb
的第一个代码单元格,下载完整数据集。
模型训练
- Linux 环境:可直接执行
run.sh
脚本。 - 通用方式:使用以下命令进行训练:
bash python main.py \ --data_path "./data/sidewalk-semantic" \ --input_size 724 \ --batch_size 16 \ --total_steps 4000 \ --eval_steps 100 \ --learning_rate 0.0005 \ --output_path "./output"
模型推理和测试
使用 tester.py
对训练好的模型进行推理和测试。
结果可视化
使用 visualization.py
对分割结果进行可视化展示。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】