尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

RoadDetections推理实战:HF_GG08_60模型运行全流程(含Python 3.6环境避坑清单)

RoadDetections推理实战:HF_GG08_60模型运行全流程(含Python 3.6环境避坑清单) RoadDetections推理实战HF_GG08_60模型运行全流程含Python 3.6环境避坑清单【免费下载链接】RoadDetectionsRoad detections from Microsoft Maps aerial imagery项目地址: https://gitcode.com/gh_mirrors/ro/RoadDetectionsRoadDetections 是微软地图Microsoft Maps开源的卫星影像道路检测项目通过 UNetResNet 深度学习模型从航拍/卫星影像中识别道路累计挖掘了 5420 万公里路网。本文带你完整跑通仓库中HF_GG08_60模型的推理流程从搭建 Python 3.6 环境、准备输入数据到一条命令生成道路分割结果并附上一份 Python 3.6 环境的避坑清单新手照着做即可上手。一、RoadDetections 如何工作从卫星图到道路网络 ️RoadDetections 的道路提取分为两大阶段语义分割用卷积神经网络CNN在航拍影像上识别哪些像素是道路这一步由本仓库的model/目录负责几何生成把分割结果转化为道路线形GeoJSON包括图像后处理、细化Thinning、连通性增强、图构建与路网拼接这部分在geomgen/目录的 C# 工程中。图RoadDetections 道路检测整体流程——从卫星影像分割到路网几何生成项目已按联合国地理分区发布了全球挖掘成果覆盖北美、欧洲、亚洲、非洲等 20 个区域图RoadDetections 全球道路挖掘状态热力图Microsoft Maps 影像核心模型基于UNet ResNet架构训练集为 2 万张 1088×1088 像素、10cm/分辨率的卫星影像。模型是全卷积的因此可以处理任意 64 倍数尺寸的输入图片。二、搭建 Python 3.6 环境避坑清单 ✅为什么必须是 Python 3.6model/README.md中明确说明该模型使用的 Keras 版本非常老要求 Python 3.6。依赖清单见 requirements.txt核心版本锁定如下依赖包版本说明tensorflow-gpu1.12.0老版本 TF仅支持旧 Pythonkeras2.1.6独立 Keras非 tf.kerasKeras-Applications1.0.8ResNet 相关numpy1.14.0需与 TF 1.12 配套opencv-python3.4.0.12影像处理h5py2.7.1权重读写三大避坑要点 ⚠️坑1不要用 Python 3.7 硬装。tensorflow1.12.0与numpy1.14.0、h5py2.7.1都没有新版本编译好的 wheelPython 3.7 以上会直接编译失败。推荐用 conda 创建python3.6的独立环境或直接用 Docker 固定版本。坑2channels_first 格式。代码在 unet.py 中调用K.set_image_dim_ordering(th)要求通道在前的张量布局而predict.py启动时会校验不满足就抛错channels first image dim ordering expected。这是老 Keras 的默认行为新 Keras 用户迁移时最容易踩。坑3Linux 下 OpenCV 缺动态库。老版本opencv-python3.4.0.12在无桌面环境的服务器上可能报libGL.so.1: cannot open shared object file安装系统包libgl1即可或用opencv-python-headless思路替换。三、准备推理输入TSV 流式文件 推理输入是一个TSV 文本文件如仓库中的model/test.txt每行一张待推理的卫星影像quadkeyTABBase64编码的PNG图片[TABBase64标签(可选用于计算指标)]第一列是影像所在图块的 QuadkeyBing Maps 瓦片索引会原样写入输出第二列是 Base64 编码的影像推理时建议尺寸为1088--input-size须为 64 的倍数且受显存限制可选第三列是标签加上--get-metrics参数后会输出 F1/Precision/Recall 等指标。四、推理全流程一条命令跑通 模型权重文件为model/HF_GG08_60.pklpickle 格式由 utils.py 的load_pickle_weights加载到 res-unet-6 网络结构中。参照官方脚本model/inference.sh推理命令的核心参数如下python3 predict.py --input-dir ./data/ --input-file test.tsv \ --input-size 1088 --batch-size 10 \ --weights-file HF_GG08_60.pkl --model-name res-unet-6 \ --input-previous-model-path ./model/ --output-model-path ./pred/ \ --is-stream运行predict.py后会构建 res-unet-6 网络并加载HF_GG08_60.pkl权重按 batch 逐行读取 TSV 输入调用model.predict得到道路概率图在输出目录生成pred.txt每行quadkey Base64 原始概率图 Base64 二值分割结果阈值默认 0.5可用--threshold调整和quadkeys.txt。官方推理策略还有一个细节以 1088 尺寸推理后会从结果四周裁掉 32 像素的 padding以提升边缘区域预测质量。下面是推理分割得到的道路掩膜样例仓库geomgen/test/中同时保留了原图 RGB 与分割结果图RoadDetections 道路检测推理输出的道路分割掩膜样例五、常见报错速查表 报错信息原因解决办法channels first image dim ordering expected张量布局不是通道在前确认 Keras 已set_image_dim_ordering(th)使用仓库指定版本的 KerasImportError: No module named keras误装了新版 TF 自带的 tf.keras单独安装keras2.1.6不要用tensorflow.keraspickle 加载权重报错网络结构与权重不匹配--model-name必须为res-unet-6权重文件放在--input-previous-model-path指向的目录opencv 导入失败缺系统图形库安装系统依赖libgl1显存不足输入尺寸过大减小--input-size保持 64 的倍数或调小--batch-size六、下一步分割掩膜如何变成路网 ️拿到道路分割图只是第一步。geomgen/目录中的 C# 工程会完成形态学后处理 → 骨架细化 → 连通性修复 → 构建道路图 → 模拟退火优化 → 相邻瓦片间的路网拼接最终输出带WidthMeters道路宽度属性的 GeoJSON。分割后处理的关键逻辑集中在 PostProcessing 项目里包括形态学操作、ConnectionFinder 与图优化Annealing。图RoadDetections 另一块瓦片的道路检测分割结果对比样例总结模型HF_GG08_60.pklres-unet-6 架构UNetResNet全卷积支持任意 64 倍数输入环境Python 3.6 Keras 2.1.6 TensorFlow 1.12.0三样缺一不可流程准备 TSV 流文件 →predict.py一条命令推理 → 得到 pred.txt 分割结果 → 交给geomgen/生成 GeoJSON 路网。官方指标显示像素级 Precision 85.24% / Recall 82.81%几何生成后的 APLS 连通性指标 Precision 87.53% / Recall 79.33%整体路网质量已达生产级。按本文流程操作你就能在自己的卫星影像上跑起这套微软开源的道路检测模型。【免费下载链接】RoadDetectionsRoad detections from Microsoft Maps aerial imagery项目地址: https://gitcode.com/gh_mirrors/ro/RoadDetections创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表