DeepOSM
DeepOSM 是一款开源工具,旨在利用深度学习技术自动识别卫星影像中的道路及其他地理特征。它通过结合高分辨率的卫星图像(如 NAIP 数据,包含红外与 RGB 波段)与开放街道地图(OpenStreetMap, OSM)的标注数据,训练神经网络来分类地表信息。
该工具主要解决了传统地图数据更新滞后或存在偏差的问题。它能够快速分析特定区域,预测卫星图中是否存在道路,并直观地展示 OSM 数据中可能存在的“误报”位置(即地图标记有路但实际影像中没有,或反之),从而辅助验证和修正地图数据的准确性。在默认配置下,仅需短暂训练即可达到 75%-80% 的识别准确率。
DeepOSM 特别适合开发者、地理空间数据研究人员以及从事地图制作的专业人士使用。对于希望探索计算机视觉在地理信息系统中应用的爱好者,它也是一个极佳的入门项目。其技术亮点在于流程的高度自动化:从下载卫星图块和 OSM 数据,到生成训练集及渲染预测结果,均可通过 Docker 一键完成。此外,它不仅支持常规的 RGB 图像,还创新性地利用了红外波段提升识别效果,并提供了可视化功能,能直接生成图像标示出数据不一致的区域,让模型预测结果一目了然。
使用场景
某非营利组织正在为偏远灾区更新紧急救援地图,需要快速识别卫星图像中未被记录的道路网络。
没有 DeepOSM 时
- 志愿者需人工对照高清卫星图与旧地图,逐像素排查新修道路,耗时数周且极易疲劳出错。
- 现有开源地图(如 OSM)在该区域数据严重滞后,救援车队常因导航缺失而受阻于断头路。
- 传统图像处理算法无法有效利用红外波段区分植被覆盖下的路面,漏检率极高。
- 缺乏自动化验证机制,难以发现地图中已存在但实际已损毁的“幽灵道路”。
- 团队需雇佣专业 GIS 分析师处理数据,高昂的人力成本超出了项目预算。
使用 DeepOSM 后
- DeepOSM 自动下载并分析 200 平方公里的卫星影像与 OSM 数据,仅需数分钟即可生成道路预测结果。
- 利用红外与 RGB 多波段训练的深度神经网络,精准识别出被部分植被遮挡的隐蔽小路,填补数据空白。
- 系统直接渲染出“假阳性”预测图,直观标记出 OSM 中标记为道路但实际不通的区域,辅助快速修正。
- 基于 Docker 的一键部署让普通开发人员也能在本地运行模型,无需组建庞大的专家团队。
- 整体识别准确率达到 75%-80%,救援路径规划效率提升十倍,确保物资第一时间送达。
DeepOSM 通过将开放地图数据与卫星影像深度融合,以极低成本实现了灾区路网的高精度自动化更新。
运行环境要求
- Linux (14.04
- 16.04)
- macOS (10.x)
- 非必需
- 若需加速,需安装 NVIDIA 驱动及 nvidia-docker
- README 未指定具体显卡型号、显存大小或 CUDA 版本,仅要求安装对应 GPU 的最新驱动
最低 4GB

快速开始
DeepOSM 
通过使用OpenStreetMap (OSM) 数据训练神经网络,对卫星影像中的道路和地物进行分类。
DeepOSM 可以:
- 下载一块卫星影像
- 下载该区域的道路/地物信息的 OSM 数据
- 生成训练和评估数据
- 显示 OSM 数据中未正确配准的道路预测结果,或显示 ON/OFF 的原始预测结果
运行代码非常简单:只需安装 Docker、执行 make dev 并运行一个脚本即可。
欢迎贡献代码。如果您想讨论要做的事情,请提交一个问题,或者发送邮件给我。
默认数据/准确率
默认情况下,DeepOSM 会分析特拉华州约 200 平方公里的区域。DeepOSM 将:
- 预测 64×64 像素瓦片的中心 9×9 像素是否包含道路。
- 使用红外波段和 RGB 波段。
- 总体准确率达到 75%-80%,且仅需训练约一分钟。
- 在 TensorFlow 中使用单个全连接的 ReLU 层。
- 将 OSM 数据中“假阳性”的预测结果渲染为 JPEG 图像——即 OSM 标记了道路,但 DeepOSM 认为那里并没有道路。

数据背景——NAIP 和 OSM PBF
对于训练数据,DeepOSM 会从 NAIP 影像 中裁剪出瓦片,这些影像提供 1 米/像素的分辨率,并包含 RGB 和红外波段数据。
对于训练标签,DeepOSM 使用 OSM 数据的 PBF 提取文件,这些文件以二进制格式存储地物和路径信息,可以使用 Python 进行处理。
NAIP 数据来自 Mapbox 在 AWS S3 上设置的请求者付费存储桶,而 OSM 提取文件则来自 geofabrik。
安装要求
DeepOSM 已成功在 Mac (10.x) 和 Linux (14.04 和 16.04) 上运行。您至少需要 4GB 内存。
AWS 凭证
您需要 AWS 凭证才能从 S3 请求者付费存储桶下载 NAIP 数据。虽然下载大量图像仅需几美分,但您需要绑定一张信用卡。
从 AWS 获取您的 AWS_ACCESS_KEY_ID 和 AWS_SECRET_ACCESS_KEY
将它们导出为环境变量(并可能添加到您的 bash 或 zprofile 文件中)
export AWS_ACCESS_KEY_ID='FOO'
export AWS_SECRET_ACCESS_KEY='BAR'
安装 Docker
首先,安装 Docker 二进制文件。
此外,在 Mac 上运行时,我还需将 VirtualBox 的默认内存设置为 4GB。操作方法如下:
- 按照安装说明启动 Docker
- 停止 Docker
- 打开 VirtualBox,增加 Docker 创建的虚拟机的内存
(仅限 GPU)安装 nvidia-docker
若要使用您的 GPU 加速 DeepOSM,您需要先为您的 GPU 下载并安装最新的 NVIDIA 驱动程序,然后(在已安装 Docker 的基础上)再安装 nvidia-docker。
首先,请访问 NVIDIA 官网 查找适用于您 GPU 的最新驱动程序版本。请务必确认驱动程序的版本号,因为最新发布的版本并不总是最新版本。
下载合适的 NVIDIA-*.run 文件后,按照以下步骤进行安装(参考 AWS 文档):
确保系统已更新,并重启以加载最新内核:
# 确保软件包是最新的
sudo apt-get update
sudo apt-get dist-upgrade
# 并重启
sudo reboot
系统重启后,请安装 build-essential 和当前内核版本对应的 linux-headers 包(或您所使用的 Linux 发行版中的等效包):
sudo apt-get install build-essential linux-headers-$(uname -r)
然后运行之前下载的 NVIDIA 驱动程序安装脚本,并在完成后重启机器:
sudo bash <NVIDIA-Linux-*.run 文件路径>
sudo reboot
最后,验证 NVIDIA 驱动是否正确安装,以及 GPU 是否能够被 nvidia-smi 检测到:
nvidia-smi
Thu Mar 9 03:40:33 2017
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 367.57 Driver Version: 367.57 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 GRID K520 Off | 0000:00:03.0 Off | N/A |
| N/A 54C P0 45W / 125W | 0MiB / 4036MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
| No running processes found |
+-----------------------------------------------------------------------------+
现在 NVIDIA 驱动已安装完毕,您可以按照以下步骤下载并安装 nvidia-docker(基于 这些说明):
wget -P /tmp https://github.com/NVIDIA/nvidia-docker/releases/download/v1.0.1/nvidia-docker_1.0.1-1_amd64.deb
sudo dpkg -i /tmp/nvidia-docker*.deb && rm /tmp/nvidia-docker*.deb
您可以通过在 Docker 容器中尝试运行 nvida-smi 来确认安装是否成功:
nvidia-docker run --rm nvidia/cuda nvidia-smi
Using default tag: latest
latest: Pulling from nvidia/cuda
d54efb8db41d: Pull complete
f8b845f45a87: Pull complete
e8db7bf7c39f: Pull complete
9654c40e9079: Pull complete
6d9ef359eaaa: Pull complete
cdfa70f89c10: Pull complete
3208f69d3a8f: Pull complete
eac0f0483475: Pull complete
4580f9c5bac3: Pull complete
6ee6617c19de: Pull complete
Digest: sha256:2b7443eb37da8c403756fb7d183e0611f97f648ed8c3e346fdf9484433ca32b8
Status: Downloaded newer image for nvidia/cuda:latest
Thu Mar 9 03:44:23 2017
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 367.57 Driver Version: 367.57 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 GRID K520 Off | 0000:00:03.0 Off | N/A |
| N/A 54C P8 18W / 125W | 0MiB / 4036MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
| No running processes found |
+-----------------------------------------------------------------------------+
当您确认 nvidia-smi 在 nvidia-docker 中正常工作后,您应该就可以使用 GPU 运行 DeepOSM 了。
运行脚本
首先启动 Docker,然后运行:
make dev-gpu
如果您没有合适的 GPU,则运行:
make dev
下载 NAIP、PBF 并进行分析
在 Docker 容器中,以下 Python 脚本将正常运行。这些脚本会下载所有源数据,将其切片为训练/测试数据和标签,训练神经网络,并生成图像和文本输出。
默认数据为六幅 NAIP 影像,它们会被切分为 64x64x4 波段的数据(RGB-IR 波段)。训练标签则来自与 NAIP 影像重叠的 PBF 文件。
python bin/create_training_data.py
python bin/train_neural_net.py
DeepOSM 的输出包括一些控制台日志,以及将道路、标签和预测结果叠加在 TIFF 图像上的 JPEG 文件。
测试
目前有一个非常有限的测试套件可供使用,您可以在主机系统上通过运行以下命令来访问它:
make test
Jupyter Notebook
此外,您也可以通过 Jupyter Notebook 进行开发和研究:
make notebook
要通过主机上的浏览器访问该 Notebook,请先找到 VirtualBox 为您的默认 Docker 容器分配的 IP 地址,方法是运行:
docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
default * virtualbox Running tcp://192.168.99.100:2376 v1.10.3
Notebook 服务器可通过端口 8888 访问,在本例中,您需要访问以下地址: http://192.168.99.100:8888
阅读材料
学习在高分辨率航空影像中检测道路(Hinton)
用于航空影像标注的机器学习——Mnih 2013年的博士论文,他是Hinton的学生,这是该领域最好/最新的论文,使用这些方法取得了巨大成功。
类似的基于OSM数据的研究
- OSM-Crosswalk-Detection —— 使用Keras检测人行横道,为一门课程项目(2015年秋季)。
- OSM-HOT-ConvNet —— 尝试用于灾害响应,作者认为其像素级准确率仅为69%(2016年秋季)。
- Terrapattern —— (2016年春季)—— 检测相似图像,例如泳池、船迹或其他记者或研究人员可能感兴趣的内容模式——由卡内基梅隆大学的研究人员开发,开源。
- Skynet Data —— (2016年春季)—— 基于OpenStreetMap的机器学习数据管道。
- Mnih的CNN模型在马萨诸塞州数据上的完整实现
神经网络与深度学习背景资料
- MNIST数据及背景介绍
- 其他所有指向Nielsen书籍和Colah博客的链接。
- 香农的原始信息论论文
论文——可能相关
论文——关联性不大
待審閱論文
近期推薦
FIND - 您是否看過幾年前的一篇論文,該論文通過比較壓縮衛星影像的大小與 OSM 節點數量來估計 OSM 的完整度?
READ - 這是一場關於使用 GPS 軌跡建議 OSM 編輯(Strava/Telenav)的演講:http://webcache.googleusercontent.com/search?q=cache:VoiCwRHOyLUJ:stateofthemap.us/map-tracing-for-millennials/+&cd=3&hl=en&ct=clnk&gl=us
引用 Mnih 和 Hinton 的研究
我正在審閱這些來自 Google 學術的論文,它們都引用了關鍵文獻,並且似乎與主題相關。
http://www.tandfonline.com/doi/abs/10.1080/15481603.2013.802870
https://www.computer.org/csdl/proceedings/icpr/2014/5209/00/5209d708-abs.html
http://opticalengineering.spiedigitallibrary.org/article.aspx?articleid=1679147
http://proceedings.spiedigitallibrary.org/proceeding.aspx?articleid=1354584
http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.309.8565
http://proceedings.spiedigitallibrary.org/proceeding.aspx?articleid=2191094
http://www.sciencedirect.com/science/article/pii/S0924271615001690
https://www.itc.nl/external/ISPRS_WGIII4/ISPRSIII_4_Test_results/papers/Onera_2D_label_Vaih.pdf
http://link.springer.com/chapter/10.1007/978-3-319-23528-8_33#page-1
http://www.tandfonline.com/doi/abs/10.1080/01431161.2015.1054049
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.681.1695&rep=rep1&type=pdf
http://www.tandfonline.com/doi/abs/10.3846/20296991.2014.890271
http://www.sciencedirect.com/science/article/pii/S0303243415300283
原始構想
這是最開始的大致想法,而使用 TMS 地圖瓦片的方式也確實有一定效果(見前 50 多次提交),因此 DeepOSM 最終改為使用更優質的數據:

常见问题
相似工具推荐
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
ML-For-Beginners
ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。
ragflow
RAGFlow 是一款领先的开源检索增强生成(RAG)引擎,旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体(Agent)能力相结合,不仅支持从各类文档中高效提取知识,还能让模型基于这些知识进行逻辑推理和任务执行。 在大模型应用中,幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构(如表格、图表及混合排版),显著提升了信息检索的准确度,从而有效减少模型“胡编乱造”的现象,确保回答既有据可依又具备时效性。其内置的智能体机制更进一步,使系统不仅能回答问题,还能自主规划步骤解决复杂问题。 这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统,还是致力于探索大模型在垂直领域落地的创新者,都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口,既降低了非算法背景用户的上手门槛,也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目,它正成为连接通用大模型与行业专有知识之间的重要桥梁。
PaddleOCR
PaddleOCR 是一款基于百度飞桨框架开发的高性能开源光学字符识别工具包。它的核心能力是将图片、PDF 等文档中的文字提取出来,转换成计算机可读取的结构化数据,让机器真正“看懂”图文内容。 面对海量纸质或电子文档,PaddleOCR 解决了人工录入效率低、数字化成本高的问题。尤其在人工智能领域,它扮演着连接图像与大型语言模型(LLM)的桥梁角色,能将视觉信息直接转化为文本输入,助力智能问答、文档分析等应用场景落地。 PaddleOCR 适合开发者、算法研究人员以及有文档自动化需求的普通用户。其技术优势十分明显:不仅支持全球 100 多种语言的识别,还能在 Windows、Linux、macOS 等多个系统上运行,并灵活适配 CPU、GPU、NPU 等各类硬件。作为一个轻量级且社区活跃的开源项目,PaddleOCR 既能满足快速集成的需求,也能支撑前沿的视觉语言研究,是处理文字识别任务的理想选择。
tesseract
Tesseract 是一款历史悠久且备受推崇的开源光学字符识别(OCR)引擎,最初由惠普实验室开发,后由 Google 维护,目前由全球社区共同贡献。它的核心功能是将图片中的文字转化为可编辑、可搜索的文本数据,有效解决了从扫描件、照片或 PDF 文档中提取文字信息的难题,是数字化归档和信息自动化的重要基础工具。 在技术层面,Tesseract 展现了强大的适应能力。从版本 4 开始,它引入了基于长短期记忆网络(LSTM)的神经网络 OCR 引擎,显著提升了行识别的准确率;同时,为了兼顾旧有需求,它依然支持传统的字符模式识别引擎。Tesseract 原生支持 UTF-8 编码,开箱即用即可识别超过 100 种语言,并兼容 PNG、JPEG、TIFF 等多种常见图像格式。输出方面,它灵活支持纯文本、hOCR、PDF、TSV 等多种格式,方便后续数据处理。 Tesseract 主要面向开发者、研究人员以及需要构建文档处理流程的企业用户。由于它本身是一个命令行工具和库(libtesseract),不包含图形用户界面(GUI),因此最适合具备一定编程能力的技术人员集成到自动化脚本或应用程序中