# U-NET **Repository Path**: wang--huan/u-net ## Basic Information - **Project Name**: U-NET - **Description**: unet+python进行影像地类识别训练、验证、测试、优化等 - **Primary Language**: Python - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 4 - **Forks**: 0 - **Created**: 2025-02-19 - **Last Updated**: 2025-08-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: unet, conda, Pip, Python, GDAL ## README # U-NET #### 介绍 unet+python进行影像地类识别训练、验证、测试、优化等 #### 软件架构 软件架构说明 U-NET/ # 项目根目录 ├── data/ # 数据目录(存放训练/验证/测试数据) │ ├── labelme # labelme打标签结果与转换结果 │ ├── train # 训练数据目录 │ ├── val # 验证数据目录 ├── outputs/ # 输出目录(保存模型权重文件) ├── src/ # 源代码目录(存放核心代码) │ ├── train.py # 训练脚本 │ ├── predict.py # 预测脚本 │ ├── deploy.py # 部署脚本-模型导出和优化 │ ├── labelme/ # 数据定义标签目录 │ │ └── json_to_dataset.py # 标签json转图片 │ ├── models/ # 模型定义目录 │ │ └── unet.py # U-Net模型定义 │ ├── config/ # 全局配置目录 │ │ └── config.py # 全局配置 │ └── utils/ # 工具函数目录 │ ├── dataset.py # 数据加载代码 │ └── metrics.py # 评估指标-IoU计算 └── README.md #### 安装教程 1. 安装python环境+conda环境 2. 安装标签工具 pip install isat-sam -i https://pypi.mirrors.ustc.edu.cn/simple/ #半自动标签工具 pip install pyqt5 labelme #手动标签工具 4. 创建虚拟环境(可选但推荐) python方式创建 python -m venv unet unet\Scripts\activate conda方式创建 conda create --copy --name=unet python=3.9 conda activate unet conda create --copy --name=labelme python=3.9 conda activate labelme conda activate isat-sam 3. 安装核心库 pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 # CUDA 11.8版本,若无GPU去掉cu118 pip install numpy # 数值计算 pip install matplotlib # 可视化 pip install opencv-python # 图像处理 pip install scikit-learn # 评估指标 pip install tqdm # 进度条根据 pip install pyqt5 # 标签转图片 pip install labelme==3.16.7 # 标签工具 pip install albumentations # 图像数据增强 pip install numpy matplotlib opencv-python scikit-learn tqdm pyqt5 labelme==3.16.7 conda install -c conda-forge gdal=3.4.3 rasterio=1.2.10 # 示例版本 使用 conda 管理 rasterio 和 GDAL,避免版本冲突或缺失依赖:处理栅格数据、gdal环境 如果出现错误OMP: Error #15: Initializing libiomp5md.dll, but found libiomp5md.dll alread,参考图片![img.png](报错说明.png) #### 使用说明 使用Python+UNet做图像语义分割,训练自己制作的数据集 1. 安装python、conda、labelme环境 2. 创建虚拟环境+指定py版本,下载训练模型需要的相关依赖 3. 搭建初步python工程结构 4. 准备训练和验证的小范围tif数据 5. 运行labelme为训练数/验证数据集打上标签,作为区分不同的地类,实现制作自己的语义分割数据集 6. 编写json_to_dataset.py脚本,实现 标签数据转图片 7. 定义U-Net模型,编写数据加载代码dataset.py与数据训练代码train.py 8. 开始基于CPU/GPU进行数据训练,生成训练模型文件-best_model.pth(CPU训练较慢,GPU提示GPU内存分配不足) 9. 基于训练模型文件,实现模型评估与预测吗,暂时只能支持两种类型(预测结果不稳定、有时候有问题) 10. 多找几份数据分别打好标签,实现训练、验证、预测的数据集不一样,训练更好的效果 11. 不同数据训练出现了新的问题不同数据的尺寸不一样无法直接堆叠为批次维度,需要实现尺寸标准化,确保所有张量的非堆叠维度(如高度、宽度)一致: 12. 预测结果导出 13. 实现预测结果转矢量数据 14. 优化模型训练算法、进行大量数据训练、完善训练模型 15. Linux部署与测试 #### 参与贡献 wanghuan 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request