diff --git a/README.md b/README.md index f05e81156f0d77debcbef152a9bb64976fdc6115..855af362324d27858bf2de9c1ffe83cb32e114a1 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,16 @@ - - -I apologize, but I'm unable to access the repository files at the specified local path. However, based on the code map you provided, I can see this is a deep learning homework project for major assignment related to route planning/optimization using OSM (OpenStreetMap) data. - -Let me create a comprehensive README.md based on the project structure and information provided in the code map: - # Deep Learning Major Assignment - 宁无地区候选线路生成 本项目是一个深度学习课程大作业,旨在基于 OpenStreetMap (OSM) 数据为宁无地区生成候选输电线路。 +## 项目简介 + +本项目实现了以下核心功能: +- 通过 Overpass API 从 OpenStreetMap 获取宁无地区地理数据 +- 构建 12 通道代价图层,涵盖噪声敏感区、水体、居民区、道路、铁路、保护区等多种地理要素 +- 使用 U-Net 融合网络生成统一的代价地图 +- 采用神经启发式 A* 算法生成候选路径 +- 通过 MMR(最大边际相关性)多样性筛选,最终选出 5 条最优候选线路 + ## 项目结构 ``` @@ -33,43 +36,40 @@ major-assignment/ ├── train_all.py # 训练脚本 ├── visualize.py # 可视化工具 └── outputs/ # 输出结果 - ├── candidate_routes.geojson # 最终候选线路 - ├── cost_map.npy # 代价图 - ├── fusion_unet.pt # 训练好的模型 - └── ... ``` ## 技术方案 -### 1. 12通道代价图层 - -| 通道 | 描述 | -|------|------| -| ch0 | 噪声敏感区 | -| ch1 | 水体 | -| ch2 | 居民区/settlement | -| ch3 | 道路邻近度 | -| ch4 | 铁路 | -| ch5 | 保护区 | -| ch6 | 土地利用 | -| ch7 | 地形 | -| ch8 | 电力线 | -| ch9 | 管道 | -| ch10 | 建筑密度 | -| ch11 | 道路交叉口 | +### 1. 12 通道代价图层 + +| 通道 | 描述 | 用途 | +|------|------|------| +| ch0 | 噪声敏感区 | 避开噪声敏感区域 | +| ch1 | 水体 | 跨越水体需特殊处理 | +| ch2 | 居民区/settlement | 避开密集居住区 | +| ch3 | 道路邻近度 | 道路可达性分析 | +| ch4 | 铁路 | 铁路交叉处理 | +| ch5 | 保护区 | 环境保护约束 | +| ch6 | 土地利用 | 土地使用类型 | +| ch7 | 地形 | 地形起伏影响 | +| ch8 | 电力线 | 现有电力设施 | +| ch9 | 管道 | 地下管线 | +| ch10 | 建筑密度 | 建筑密集区域 | +| ch11 | 道路交叉口 | 交叉口处理 | ### 2. 核心模型 -- **CostFusionUNet**: 用于融合多通道代价信息,生成统一的代价地图 -- **HeuristicNet**: 神经启发式网络,用于A*搜索的启发函数 +- **CostFusionUNet**: 用于融合 12 通道代价信息,生成统一的代价地图 +- **HeuristicNet**: 神经启发式网络,用于 A* 搜索的启发函数 +- **GPU 栅格化引擎**: 基于 PyTorch 的 GPU 加速地理要素栅格化 ### 3. 路径生成策略 -1. 使用Overpass API从OSM获取宁无地区地理数据 -2. 构建12通道代价图层 -3. 通过U-Net融合生成代价地图 -4. 使用神经启发式A*生成68条候选路径 -5. 通过MMR(最大边际相关性)多样性筛选,最终选出5条候选线路 +1. 使用 Overpass API 从 OSM 获取宁无地区地理数据 +2. 构建 12 通道代价图层 +3. 通过 U-Net 融合生成代价地图 +4. 使用神经启发式 A* 生成多条候选路径 +5. 通过 MMR(最大边际相关性)多样性筛选,最终选出 5 条候选线路 ## 环境配置 @@ -81,6 +81,8 @@ major-assignment/ - geopandas - scikit-learn - matplotlib +- numpy +- pandas ### 安装 @@ -88,6 +90,11 @@ major-assignment/ pip install torch rasterio geopandas scikit-learn matplotlib numpy pandas ``` +### 硬件要求 + +- 支持 CUDA 的 NVIDIA GPU(如 RTX 3080/4080/5080 等) +- 建议显存 ≥ 8GB + ## 使用方法 ### 1. 数据采集(如需重新采集) @@ -97,7 +104,7 @@ cd crawling-script-data-collection-ningwu python collect_ningwu_data.py ``` -### 2. 运行任务B +### 2. 运行任务 B ```bash cd task_b @@ -110,19 +117,25 @@ python main.py | 文件 | 说明 | |------|------| -| `candidate_routes.geojson` | 最终交付物 - 5条候选线路 | -| `all_samples.geojson` | 全部68条生成路径 | +| `candidate_routes.geojson` | 最终交付物 - 5 条候选线路 | +| `all_samples.geojson` | 全部生成的候选路径 | | `cost_map.npy` | 代价图数值数据 | | `cost_map.png` | 代价图可视化 | -| `fusion_unet.pt` | 训练好的U-Net模型 | +| `fusion_unet.pt` | 训练好的 U-Net 模型 | | `route_stats.csv` | 路径统计数据 | +| `training_log.csv` | 训练日志 | + +### 代价通道可视化 + +- `cost_channels/cost_channels.png`: 12 通道代价图层可视化 ## 注意事项 -1. GPU要求:需要支持CUDA的NVIDIA GPU(如RTX 5080等) -2. OSM数据授权:遵循OpenStreetMap开放数据许可 +1. GPU 要求:需要支持 CUDA 的 NVIDIA GPU +2. OSM 数据授权:遵循 OpenStreetMap 开放数据许可 3. 训练收敛可能需要适当调整学习率和训练轮数 +4. 运行时确保工作目录正确,设置好相关路径 ## 许可证 -本项目仅供学习使用,数据来源于OpenStreetMap。 \ No newline at end of file +本项目仅供学习使用,数据来源于 OpenStreetMap。 \ No newline at end of file