[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-trailbehind--DeepOSM":3,"tool-trailbehind--DeepOSM":64},[4,17,26,40,48,56],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":16},3808,"stable-diffusion-webui","AUTOMATIC1111\u002Fstable-diffusion-webui","stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面，旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点，将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。\n\n无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师，还是想要深入探索模型潜力的开发者与研究人员，都能从中获益。其核心亮点在于极高的功能丰富度：不仅支持文生图、图生图、局部重绘（Inpainting）和外绘（Outpainting）等基础模式，还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外，它内置了 GFPGAN 和 CodeFormer 等人脸修复工具，支持多种神经网络放大算法，并允许用户通过插件系统无限扩展能力。即使是显存有限的设备，stable-diffusion-webui 也提供了相应的优化选项，让高质量的 AI 艺术创作变得触手可及。",162132,3,"2026-04-05T11:01:52",[13,14,15],"开发框架","图像","Agent","ready",{"id":18,"name":19,"github_repo":20,"description_zh":21,"stars":22,"difficulty_score":23,"last_commit_at":24,"category_tags":25,"status":16},2271,"ComfyUI","Comfy-Org\u002FComfyUI","ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎，专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式，采用直观的节点式流程图界面，让用户通过连接不同的功能模块即可构建个性化的生成管线。\n\n这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景，也能自由组合模型、调整参数并实时预览效果，轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性，不仅支持 Windows、macOS 和 Linux 全平台，还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构，并率先支持 SDXL、Flux、SD3 等前沿模型。\n\n无论是希望深入探索算法潜力的研究人员和开发者，还是追求极致创作自由度的设计师与资深 AI 绘画爱好者，ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",107662,2,"2026-04-03T11:11:01",[13,14,15],{"id":27,"name":28,"github_repo":29,"description_zh":30,"stars":31,"difficulty_score":23,"last_commit_at":32,"category_tags":33,"status":16},2268,"ML-For-Beginners","microsoft\u002FML-For-Beginners","ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程，旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周，包含 26 节精炼课程和 52 道配套测验，内容涵盖从基础概念到实际应用的完整流程，有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。\n\n无论是希望转型的开发者、需要补充算法背景的研究人员，还是对人工智能充满好奇的普通爱好者，都能从中受益。课程不仅提供了清晰的理论讲解，还强调动手实践，让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持，通过自动化机制提供了包括简体中文在内的 50 多种语言版本，极大地降低了全球不同背景用户的学习门槛。此外，项目采用开源协作模式，社区活跃且内容持续更新，确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路，ML-For-Beginners 将是理想的起点。",84991,"2026-04-05T10:45:23",[14,34,35,36,15,37,38,13,39],"数据工具","视频","插件","其他","语言模型","音频",{"id":41,"name":42,"github_repo":43,"description_zh":44,"stars":45,"difficulty_score":10,"last_commit_at":46,"category_tags":47,"status":16},3128,"ragflow","infiniflow\u002Fragflow","RAGFlow 是一款领先的开源检索增强生成（RAG）引擎，旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体（Agent）能力相结合，不仅支持从各类文档中高效提取知识，还能让模型基于这些知识进行逻辑推理和任务执行。\n\n在大模型应用中，幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构（如表格、图表及混合排版），显著提升了信息检索的准确度，从而有效减少模型“胡编乱造”的现象，确保回答既有据可依又具备时效性。其内置的智能体机制更进一步，使系统不仅能回答问题，还能自主规划步骤解决复杂问题。\n\n这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统，还是致力于探索大模型在垂直领域落地的创新者，都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口，既降低了非算法背景用户的上手门槛，也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目，它正成为连接通用大模型与行业专有知识之间的重要桥梁。",77062,"2026-04-04T04:44:48",[15,14,13,38,37],{"id":49,"name":50,"github_repo":51,"description_zh":52,"stars":53,"difficulty_score":10,"last_commit_at":54,"category_tags":55,"status":16},519,"PaddleOCR","PaddlePaddle\u002FPaddleOCR","PaddleOCR 是一款基于百度飞桨框架开发的高性能开源光学字符识别工具包。它的核心能力是将图片、PDF 等文档中的文字提取出来，转换成计算机可读取的结构化数据，让机器真正“看懂”图文内容。\n\n面对海量纸质或电子文档，PaddleOCR 解决了人工录入效率低、数字化成本高的问题。尤其在人工智能领域，它扮演着连接图像与大型语言模型（LLM）的桥梁角色，能将视觉信息直接转化为文本输入，助力智能问答、文档分析等应用场景落地。\n\nPaddleOCR 适合开发者、算法研究人员以及有文档自动化需求的普通用户。其技术优势十分明显：不仅支持全球 100 多种语言的识别，还能在 Windows、Linux、macOS 等多个系统上运行，并灵活适配 CPU、GPU、NPU 等各类硬件。作为一个轻量级且社区活跃的开源项目，PaddleOCR 既能满足快速集成的需求，也能支撑前沿的视觉语言研究，是处理文字识别任务的理想选择。",74939,"2026-04-05T23:16:38",[38,14,13,37],{"id":57,"name":58,"github_repo":59,"description_zh":60,"stars":61,"difficulty_score":23,"last_commit_at":62,"category_tags":63,"status":16},2471,"tesseract","tesseract-ocr\u002Ftesseract","Tesseract 是一款历史悠久且备受推崇的开源光学字符识别（OCR）引擎，最初由惠普实验室开发，后由 Google 维护，目前由全球社区共同贡献。它的核心功能是将图片中的文字转化为可编辑、可搜索的文本数据，有效解决了从扫描件、照片或 PDF 文档中提取文字信息的难题，是数字化归档和信息自动化的重要基础工具。\n\n在技术层面，Tesseract 展现了强大的适应能力。从版本 4 开始，它引入了基于长短期记忆网络（LSTM）的神经网络 OCR 引擎，显著提升了行识别的准确率；同时，为了兼顾旧有需求，它依然支持传统的字符模式识别引擎。Tesseract 原生支持 UTF-8 编码，开箱即用即可识别超过 100 种语言，并兼容 PNG、JPEG、TIFF 等多种常见图像格式。输出方面，它灵活支持纯文本、hOCR、PDF、TSV 等多种格式，方便后续数据处理。\n\nTesseract 主要面向开发者、研究人员以及需要构建文档处理流程的企业用户。由于它本身是一个命令行工具和库（libtesseract），不包含图形用户界面（GUI），因此最适合具备一定编程能力的技术人员集成到自动化脚本或应用程序中",73286,"2026-04-03T01:56:45",[13,14],{"id":65,"github_repo":66,"name":67,"description_en":68,"description_zh":69,"ai_summary_zh":70,"readme_en":71,"readme_zh":72,"quickstart_zh":73,"use_case_zh":74,"hero_image_url":75,"owner_login":76,"owner_name":77,"owner_avatar_url":78,"owner_bio":79,"owner_company":80,"owner_location":80,"owner_email":80,"owner_twitter":80,"owner_website":81,"owner_url":82,"languages":83,"stars":104,"forks":105,"last_commit_at":106,"license":107,"difficulty_score":10,"env_os":108,"env_gpu":109,"env_ram":110,"env_deps":111,"category_tags":118,"github_topics":80,"view_count":10,"oss_zip_url":80,"oss_zip_packed_at":80,"status":16,"created_at":119,"updated_at":120,"faqs":121,"releases":155},3482,"trailbehind\u002FDeepOSM","DeepOSM","Train a deep learning net with OpenStreetMap features and satellite imagery.","DeepOSM 是一款开源工具，旨在利用深度学习技术自动识别卫星影像中的道路及其他地理特征。它通过结合高分辨率的卫星图像（如 NAIP 数据，包含红外与 RGB 波段）与开放街道地图（OpenStreetMap, OSM）的标注数据，训练神经网络来分类地表信息。\n\n该工具主要解决了传统地图数据更新滞后或存在偏差的问题。它能够快速分析特定区域，预测卫星图中是否存在道路，并直观地展示 OSM 数据中可能存在的“误报”位置（即地图标记有路但实际影像中没有，或反之），从而辅助验证和修正地图数据的准确性。在默认配置下，仅需短暂训练即可达到 75%-80% 的识别准确率。\n\nDeepOSM 特别适合开发者、地理空间数据研究人员以及从事地图制作的专业人士使用。对于希望探索计算机视觉在地理信息系统中应用的爱好者，它也是一个极佳的入门项目。其技术亮点在于流程的高度自动化：从下载卫星图块和 OSM 数据，到生成训练集及渲染预测结果，均可通过 Docker 一键完成。此外，它不仅支持常规的 RGB 图像，还创新性地利用了红外波段提升识别效果，并提供了可视化功能，能直接生成图像标示出数据不一致的区域，让模型预","DeepOSM 是一款开源工具，旨在利用深度学习技术自动识别卫星影像中的道路及其他地理特征。它通过结合高分辨率的卫星图像（如 NAIP 数据，包含红外与 RGB 波段）与开放街道地图（OpenStreetMap, OSM）的标注数据，训练神经网络来分类地表信息。\n\n该工具主要解决了传统地图数据更新滞后或存在偏差的问题。它能够快速分析特定区域，预测卫星图中是否存在道路，并直观地展示 OSM 数据中可能存在的“误报”位置（即地图标记有路但实际影像中没有，或反之），从而辅助验证和修正地图数据的准确性。在默认配置下，仅需短暂训练即可达到 75%-80% 的识别准确率。\n\nDeepOSM 特别适合开发者、地理空间数据研究人员以及从事地图制作的专业人士使用。对于希望探索计算机视觉在地理信息系统中应用的爱好者，它也是一个极佳的入门项目。其技术亮点在于流程的高度自动化：从下载卫星图块和 OSM 数据，到生成训练集及渲染预测结果，均可通过 Docker 一键完成。此外，它不仅支持常规的 RGB 图像，还创新性地利用了红外波段提升识别效果，并提供了可视化功能，能直接生成图像标示出数据不一致的区域，让模型预测结果一目了然。","# DeepOSM [![Build Status](https:\u002F\u002Ftravis-ci.org\u002Ftrailbehind\u002FDeepOSM.svg?branch=master)](https:\u002F\u002Ftravis-ci.org\u002Ftrailbehind\u002FDeepOSM)\n\nClassify roads and features in satellite imagery, by training neural networks with OpenStreetMap (OSM) data. \n\nDeepOSM can:\n\n* Download a chunk of satellite imagery\n* Download OSM data that shows roads\u002Ffeatures for that area\n* Generate training and evaluation data\n* Display predictions of mis-registered roads in OSM data, or display raw predictions of ON\u002FOFF\n\nRunning the code is as easy as install Docker, make dev, and run a script. \n\nContributions are welcome. Open an issue if you want to discuss something to do, or [email me](mailto:andrew@gaiagps.com).\n\n## Default Data\u002FAccuracy\n\nBy default, DeepOSM will analyze about 200 sq. km of area in Delaware. DeepOSM will\n\n* predict if the center 9px of a 64px tile contains road.\n* use the infrared (IR) band and RGB bands.\n* be 75-80% accurate overall, training only for a minute or so.\n* use a single fully-connected relu layer in [TensorFlow](https:\u002F\u002Fwww.tensorflow.org\u002F).\n* render, as JPEGs, \"false positive\" predictions in the OSM data - i.e. where OSM lists a road, but DeepOSM thinks there isn't one.\n\n![NAIP with Ways and Predictions](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Ftrailbehind_DeepOSM_readme_205580050029.jpg)\n\n## Background on Data - NAIPs and OSM PBF\n\nFor training data, DeepOSM cuts tiles out of [NAIP images](http:\u002F\u002Fwww.fsa.usda.gov\u002Fprograms-and-services\u002Faerial-photography\u002Fimagery-programs\u002Fnaip-imagery\u002F), which provide 1-meter-per-pixel resolution, with RGB+infrared data bands.\n\nFor training labels, DeepOSM uses PBF extracts of OSM data, which contain features\u002Fways in binary format that can be munged with Python.\n\nThe [NAIPs come from a requester pays bucket on S3 set up by Mapbox](http:\u002F\u002Fwww.slideshare.net\u002FAmazonWebServices\u002Fopen-data-innovation-building-on-open-data-sets-for-innovative-applications), and the OSM extracts come [from geofabrik](http:\u002F\u002Fdownload.geofabrik.de\u002F).\n\n## Install Requirements\n\nDeepOSM has been run successfully on both Mac (10.x) and Linux (14.04 and 16.04). You need at least 4GB of memory.\n\n### AWS Credentials\n\nYou need AWS credentials to download NAIPs from an S3 requester-pays bucket. This only costs a few cents for a bunch of images, but you need a credit card on file.\n\n * get your [AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY from AWS](http:\u002F\u002Fdocs.aws.amazon.com\u002Fcli\u002Flatest\u002Fuserguide\u002Fcli-chap-getting-started.html)\n\n * export them as environment variables (and maybe add to your bash or zprofile)\n\n```\nexport AWS_ACCESS_KEY_ID='FOO'\nexport AWS_SECRET_ACCESS_KEY='BAR'\n```\n\n### Install Docker\n\nFirst, [install a Docker Binary](https:\u002F\u002Fdocs.docker.com\u002Fengine\u002Finstallation\u002F).\n\nI also needed to set my VirtualBox default memory to 4GB, when running on a Mac. This is easy:\n\n * start Docker, per the install instructions\n * stop Docker\n * open VirtualBox, and increase the memory of the VM Docker made\n\n### (GPU Only) Install nvidia-docker\n\nIn order to use your GPU to accelerate DeepOSM, you will need to\ndownload and install the latest NVIDIA drivers for your GPU, and\n(after first installing docker itself), install `nvidia-docker`.\n\nFirst, find the latest NVIDIA drivers for your GPU on\n[NVIDIA's website](http:\u002F\u002Fwww.nvidia.com\u002FDownload\u002FFind.aspx). Make\nsure you check the version number of the driver, as the most recent\nrelease isn't always the latest version.\n\nOnce you have downloaded the appropriate `NVIDIA-*.run` file, install\nit as follows (based on\n[these instructions](http:\u002F\u002Fdocs.aws.amazon.com\u002FAWSEC2\u002Flatest\u002FUserGuide\u002Faccelerated-computing-instances.html#install-nvidia-driver)):\n\nEnsure your system is up-to-date and reboot to ensure the latest\ninstalled kernel is loaded:\n\n```\n# ensure your packages are up-to-date\nsudo apt-get update\nsudo apt-get dist-upgrade\n# and reboot\nsudo reboot\n```\n\nOnce your system has rebooted, install `build-essential` and the\n`linux-headers` package for your current kernel version (or\nequivalents for your linux distribution):\n\n```\nsudo apt-get install build-essential linux-headers-$(uname -r) \n```\n\nThen run the NVIDIA driver install you downloaded earlier, and reboot\nyour machine afterwards:\n\n```\nsudo bash \u003Clocation of .\u002FNVIDIA-Linux-*.run file>\nsudo reboot\n```\n\nFinally, verify that the NVIDIA drivers are installed correctly, and\nyour GPU can be located using `nvidia-smi`:\n\n```\nnvidia-smi\n```\n\n```\nThu Mar  9 03:40:33 2017       \n+-----------------------------------------------------------------------------+\n| NVIDIA-SMI 367.57                 Driver Version: 367.57                    |\n|-------------------------------+----------------------+----------------------+\n| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |\n| Fan  Temp  Perf  Pwr:Usage\u002FCap|         Memory-Usage | GPU-Util  Compute M. |\n|===============================+======================+======================|\n|   0  GRID K520           Off  | 0000:00:03.0     Off |                  N\u002FA |\n| N\u002FA   54C    P0    45W \u002F 125W |      0MiB \u002F  4036MiB |      0%      Default |\n+-------------------------------+----------------------+----------------------+\n                                                                               \n+-----------------------------------------------------------------------------+\n| Processes:                                                       GPU Memory |\n|  GPU       PID  Type  Process name                               Usage      |\n|=============================================================================|\n|  No running processes found                                                 |\n+-----------------------------------------------------------------------------+\n```\n\nNow that the NVIDIA drivers are installed, `nvidia-docker` can be\ndownloaded and installed as follows (based on\n[these instructions](https:\u002F\u002Fgithub.com\u002FNVIDIA\u002Fnvidia-docker#quick-start)):\n\n```\nwget -P \u002Ftmp https:\u002F\u002Fgithub.com\u002FNVIDIA\u002Fnvidia-docker\u002Freleases\u002Fdownload\u002Fv1.0.1\u002Fnvidia-docker_1.0.1-1_amd64.deb\nsudo dpkg -i \u002Ftmp\u002Fnvidia-docker*.deb && rm \u002Ftmp\u002Fnvidia-docker*.deb\n```\n\nAnd you can confirm the installation, by attempting to run `nvida-smi`\ninside of a docker container:\n\n```\nnvidia-docker run --rm nvidia\u002Fcuda nvidia-smi\n```\n\n```\nUsing default tag: latest\nlatest: Pulling from nvidia\u002Fcuda\nd54efb8db41d: Pull complete \nf8b845f45a87: Pull complete \ne8db7bf7c39f: Pull complete \n9654c40e9079: Pull complete \n6d9ef359eaaa: Pull complete \ncdfa70f89c10: Pull complete \n3208f69d3a8f: Pull complete \neac0f0483475: Pull complete \n4580f9c5bac3: Pull complete \n6ee6617c19de: Pull complete \nDigest: sha256:2b7443eb37da8c403756fb7d183e0611f97f648ed8c3e346fdf9484433ca32b8\nStatus: Downloaded newer image for nvidia\u002Fcuda:latest\nThu Mar  9 03:44:23 2017       \n+-----------------------------------------------------------------------------+\n| NVIDIA-SMI 367.57                 Driver Version: 367.57                    |\n|-------------------------------+----------------------+----------------------+\n| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |\n| Fan  Temp  Perf  Pwr:Usage\u002FCap|         Memory-Usage | GPU-Util  Compute M. |\n|===============================+======================+======================|\n|   0  GRID K520           Off  | 0000:00:03.0     Off |                  N\u002FA |\n| N\u002FA   54C    P8    18W \u002F 125W |      0MiB \u002F  4036MiB |      0%      Default |\n+-------------------------------+----------------------+----------------------+\n                                                                               \n+-----------------------------------------------------------------------------+\n| Processes:                                                       GPU Memory |\n|  GPU       PID  Type  Process name                               Usage      |\n|=============================================================================|\n|  No running processes found                                                 |\n+-----------------------------------------------------------------------------+\n```\n\nOnce you have confirmed `nvidia-smi` works inside of `nvidia-docker`,\nyou should be able to run DeepOSM using your GPU.\n\n### Run Scripts\n\nStart Docker, then run:\n\n```bash\nmake dev-gpu\n```\n\nOr if you don't have a capable GPU, run:\n\n```bash\nmake dev\n```\n\n### Download NAIP, PBF, and Analyze\n\nInside Docker, the following Python scripts will work. This will download all source data, tile it into training\u002Ftest data and labels, train the neural net, and generate image and text output. \n\nThe default data is six NAIPs, which get tiled into 64x64x4 bands of data (RGB-IR bands). The training labels derive from PBF files that overlap the NAIPs.\n\n```\npython bin\u002Fcreate_training_data.py\npython bin\u002Ftrain_neural_net.py\n```\n\nFor output, DeepOSM will produce some console logs, and then JPEGs of the ways, labels, and predictions overlaid on the tiff.\n\n### Testing\n\nThere is a very limited test suite available at the moment, that can be accessed (from the host system) by running:\n\n`make test`\n\n### Jupyter Notebook\n\nAlternately, development\u002Fresearch can be done via jupyter notebooks:\n\n`make notebook`\n\nTo access the notebook via a browser on your host machine, find the IP VirtualBox is giving your default docker container by running:\n\n```\ndocker-machine ls\n\nNAME      ACTIVE   DRIVER       STATE     URL                         SWARM   DOCKER    ERRORS\ndefault   *        virtualbox   Running   tcp:\u002F\u002F192.168.99.100:2376           v1.10.3\n```\n\nThe notebook server is accessible via port 8888, so in this case you'd go to:\nhttp:\u002F\u002F192.168.99.100:8888\n\n### Readings\n\n* [Learning to Detect Roads in High-Resolution Aerial\nImages](http:\u002F\u002Fciteseerx.ist.psu.edu\u002Fviewdoc\u002Fdownload?doi=10.1.1.232.1679&rep=rep1&type=pdf) (Hinton) \n* [Machine Learning for Aerial Image Labeling](https:\u002F\u002Fwww.cs.toronto.edu\u002F~vmnih\u002Fdocs\u002FMnih_Volodymyr_PhD_Thesis.pdf)- Minh's 2013 thesis, student of Hinton's\nbest\u002Frecent paper on doing this, great success with these methods\n* Similar Efforts with OSM Data\n    * [OSM-Crosswalk-Detection](https:\u002F\u002Fgithub.com\u002Fgeometalab\u002FOSM-Crosswalk-Detection) - uses Keras to detect crosswalks, a class project (Fall 2015)\n    * [OSM-HOT-ConvNet](https:\u002F\u002Fgithub.com\u002Flarsroemheld\u002FOSM-HOT-ConvNet) - attempted use for disaster response, author thinks it's only 69% accurate at pixel level (fall 2016)\n    * [Terrapattern](http:\u002F\u002Fwww.terrapattern.com\u002F) - (spring 2016) - detect similar images, such as pools, boat wakes, or other patterns journalists\u002Fresearchers might be interested in - Carnegie Mellon researchers, open source\n    * [Skynet Data](https:\u002F\u002Fgithub.com\u002Fdevelopmentseed\u002Fskynet-data) - (spring 2016) - data pipeline for machine learning with OpenStreetMap\n    * [Full implementation of Mnih's CNN with Massachusetts data](https:\u002F\u002Fgithub.com\u002Fmitmul\u002Fssai-cnn)\n\n* [Parsing Natural Scenes and Natural Language\nwith Recursive Neural Networks (RNNs)](http:\u002F\u002Fai.stanford.edu\u002F~ang\u002Fpapers\u002Ficml11-ParsingWithRecursiveNeuralNetworks.pdf)\n* Background on Neural Networks and Deep Learning\n    * [MNIST Data and Background](http:\u002F\u002Fyann.lecun.com\u002Fexdb\u002Fmnist\u002F)\n    * all the other links to Nielsen’s book and [Colah’s blog](http:\u002F\u002Fcolah.github.io\u002Fposts\u002F2015-08-Backprop\u002F)\n    * [original Information Theory paper by Shannon](http:\u002F\u002Fworrydream.com\u002Frefs\u002FShannon%20-%20A%20Mathematical%20Theory%20of%20Communication.pdf)\n\n[Also see a work journal here](http:\u002F\u002Ftrailbehind.github.io\u002FDeepOSM\u002F).\n\n### Papers - Relevant Maybe\n\n* [Aerial image geolocalization from recognition and matching of roads and intersections - May 2016](https:\u002F\u002Farxiv.org\u002Fabs\u002F1605.08323)\n\n* [Uses a large window to improve predictions, trying to capture broad network topology.](https:\u002F\u002Fwww.inf.ethz.ch\u002Fpersonal\u002Fladickyl\u002Froads_gcpr14.pdf)\n\n* [Automatically extract roads with no human labels. Not that accurate, could work for preprocessing to detect roads.](https:\u002F\u002Fwww.researchgate.net\u002Fpublication\u002F263892800_Tensor-Cuts_A_simultaneous_multi-type_feature_extractor_and_classifier_and_its_application_to_road_extraction_from_satellite_images)\n\n### Papers - Not All that Relevant\n\n* [Uses map data and shapes of overpasses to then detect pictures of the objects? Seems like a cool paper to read if it was free.](http:\u002F\u002Fdl.acm.org\u002Fcitation.cfm?id=2424336)\n\n* [New technique for classification of sub-half-meter data into different zones.](http:\u002F\u002Fieeexplore.ieee.org\u002Fxpl\u002Flogin.jsp?tp=&arnumber=6827949&url=http%3A%2F%2Fieeexplore.ieee.org%2Fxpls%2Fabs_all.jsp%3Farnumber%3D6827949)\n\n* [Couldn't access text, focused on using lidar data.](http:\u002F\u002Fieeexplore.ieee.org\u002Fxpl\u002Flogin.jsp?tp=&arnumber=6238909&url=http%3A%2F%2Fieeexplore.ieee.org%2Fxpls%2Fabs_all.jsp%3Farnumber%3D6238909)\n\n* [Proposes a way to extract network topology, and maybe this can be used as a post processor?](http:\u002F\u002Fwww.cv-foundation.org\u002Fopenaccess\u002Fcontent_cvpr_2013\u002Fhtml\u002FWegner_A_Higher-Order_CRF_2013_CVPR_paper.html)\n\n### Papers to Review\n\nRecent Recommendations\n\n* FIND - have you seen a paper from a few years ago about estimating OSM completeness by comparing size of compressed satellite images vs number of osm nodes\n\n* READ - this presentation on using GPS traces to suggest OSM edits (Strava\u002FTelenav): http:\u002F\u002Fwebcache.googleusercontent.com\u002Fsearch?q=cache:VoiCwRHOyLUJ:stateofthemap.us\u002Fmap-tracing-for-millennials\u002F+&cd=3&hl=en&ct=clnk&gl=us\n\n#### Citing Mnih and Hinton\n\nI am reviewing these papers from Google Scholar that both cite the key papers and seem relevant to the topic. \n\n* http:\u002F\u002Fieeexplore.ieee.org\u002Fxpl\u002Flogin.jsp?tp=&arnumber=6602035&url=http%3A%2F%2Fieeexplore.ieee.org%2Fxpls%2Fabs_all.jsp%3Farnumber%3D6602035\n\n* http:\u002F\u002Fwww.cv-foundation.org\u002Fopenaccess\u002Fcontent_cvpr_workshops_2015\u002FW13\u002Fhtml\u002FPaisitkriangkrai_Effective_Semantic_Pixel_2015_CVPR_paper.html\n\n* http:\u002F\u002Fwww.tandfonline.com\u002Fdoi\u002Fabs\u002F10.1080\u002F15481603.2013.802870\n\n* https:\u002F\u002Fwww.computer.org\u002Fcsdl\u002Fproceedings\u002Ficpr\u002F2014\u002F5209\u002F00\u002F5209d708-abs.html\n\n* http:\u002F\u002Fopticalengineering.spiedigitallibrary.org\u002Farticle.aspx?articleid=1679147\n\n* http:\u002F\u002Fproceedings.spiedigitallibrary.org\u002Fproceeding.aspx?articleid=1354584\n\n* http:\u002F\u002Fciteseerx.ist.psu.edu\u002Fviewdoc\u002Fsummary?doi=10.1.1.309.8565\n\n* https:\u002F\u002Fwww.itc.nl\u002Flibrary\u002Fpapers_2012\u002Fmsc\u002Fgem\u002Fshaoqing.pdf\n\n* http:\u002F\u002Fieeexplore.ieee.org\u002Fxpl\u002Flogin.jsp?tp=&arnumber=7326745&url=http%3A%2F%2Fieeexplore.ieee.org%2Fxpls%2Fabs_all.jsp%3Farnumber%3D7326745\n\n* http:\u002F\u002Fproceedings.spiedigitallibrary.org\u002Fproceeding.aspx?articleid=2191094\n\n* http:\u002F\u002Farxiv.org\u002Fabs\u002F1509.03602\n\n* http:\u002F\u002Fieeexplore.ieee.org\u002Fxpl\u002Flogin.jsp?tp=&arnumber=7112625&url=http%3A%2F%2Fieeexplore.ieee.org%2Fxpls%2Fabs_all.jsp%3Farnumber%3D7112625\n\n* http:\u002F\u002Fwww.sciencedirect.com\u002Fscience\u002Farticle\u002Fpii\u002FS0924271615001690\n\n* http:\u002F\u002Farxiv.org\u002Fabs\u002F1405.6137\n\n* https:\u002F\u002Fwww.itc.nl\u002Fexternal\u002FISPRS_WGIII4\u002FISPRSIII_4_Test_results\u002Fpapers\u002FOnera_2D_label_Vaih.pdf\n\n* http:\u002F\u002Flink.springer.com\u002Fchapter\u002F10.1007\u002F978-3-319-23528-8_33#page-1\n\n* http:\u002F\u002Farxiv.org\u002Fabs\u002F1508.06163\n\n* http:\u002F\u002Fwww.mdpi.com\u002F2072-4292\u002F8\u002F4\u002F329\n\n* http:\u002F\u002Farxiv.org\u002Fabs\u002F1510.00098\n\n* http:\u002F\u002Flink.springer.com\u002Farticle\u002F10.1007\u002Fs10489-016-0762-6\n\n* http:\u002F\u002Fwww.tandfonline.com\u002Fdoi\u002Fabs\u002F10.1080\u002F01431161.2015.1054049\n\n* http:\u002F\u002Fieeexplore.ieee.org\u002Fxpl\u002Flogin.jsp?tp=&arnumber=7393563&url=http%3A%2F%2Fieeexplore.ieee.org%2Fxpls%2Fabs_all.jsp%3Farnumber%3D7393563\n\n* http:\u002F\u002Fwww.cv-foundation.org\u002Fopenaccess\u002Fcontent_iccv_2015\u002Fhtml\u002FMattyus_Enhancing_Road_Maps_ICCV_2015_paper.html\n\n* http:\u002F\u002Fwww.cv-foundation.org\u002Fopenaccess\u002Fcontent_iccv_2015\u002Fhtml\u002FZheng_Minimal_Solvers_for_ICCV_2015_paper.html\n\n* http:\u002F\u002Farxiv.org\u002Fabs\u002F1405.6136\n\n* http:\u002F\u002Fciteseerx.ist.psu.edu\u002Fviewdoc\u002Fdownload?doi=10.1.1.681.1695&rep=rep1&type=pdf\n\n* http:\u002F\u002Fieeexplore.ieee.org\u002Fxpl\u002Flogin.jsp?tp=&arnumber=7120492&url=http%3A%2F%2Fieeexplore.ieee.org%2Fxpls%2Fabs_all.jsp%3Farnumber%3D7120492\n\n* http:\u002F\u002Fwww.tandfonline.com\u002Fdoi\u002Fabs\u002F10.3846\u002F20296991.2014.890271\n\n* http:\u002F\u002Fieeexplore.ieee.org\u002Fxpl\u002Flogin.jsp?tp=&arnumber=7362660&url=http%3A%2F%2Fieeexplore.ieee.org%2Fxpls%2Fabs_all.jsp%3Farnumber%3D7362660\n\n* http:\u002F\u002Fieeexplore.ieee.org\u002Fxpl\u002Flogin.jsp?tp=&arnumber=7414402&url=http%3A%2F%2Fieeexplore.ieee.org%2Fxpls%2Fabs_all.jsp%3Farnumber%3D7414402\n\n* http:\u002F\u002Fieeexplore.ieee.org\u002Fxpl\u002Flogin.jsp?tp=&arnumber=6663455&url=http%3A%2F%2Fieeexplore.ieee.org%2Fxpls%2Fabs_all.jsp%3Farnumber%3D6663455\n\n* http:\u002F\u002Fieeexplore.ieee.org\u002Fxpl\u002Flogin.jsp?tp=&arnumber=7337372&url=http%3A%2F%2Fieeexplore.ieee.org%2Fxpls%2Fabs_all.jsp%3Farnumber%3D7337372\n\n* https:\u002F\u002Fwww.researchgate.net\u002Fprofile\u002FMoslem_Ouled_Sghaier\u002Fpublication\u002F280655680_Road_Extraction_From_Very_High_Resolution_Remote_Sensing_Optical_Images_Based_on_Texture_Analysis_and_Beamlet_Transform\u002Flinks\u002F55c0d9da08ae092e96678ff3.pdf\n\n* http:\u002F\u002Fieeexplore.ieee.org\u002Fxpl\u002Flogin.jsp?tp=&arnumber=7159022&url=http%3A%2F%2Fieeexplore.ieee.org%2Fxpls%2Fabs_all.jsp%3Farnumber%3D7159022\n\n* http:\u002F\u002Fwww.sciencedirect.com\u002Fscience\u002Farticle\u002Fpii\u002FS0303243415300283\n\n* http:\u002F\u002Fdl.acm.org\u002Fcitation.cfm?id=2666389\n\n* http:\u002F\u002Fwww.ijicic.org\u002Fijicic-15-04045.pdf\n\n### Original Idea\n\nThis was the general idea to start, and working with TMS tiles sort of worked (see first 50 or so commits), so DeepOSM got switched to better data:\n\n![Deep OSM Project](https:\u002F\u002Fgaiagps.mybalsamiq.com\u002Fmockups\u002F4278030.png?key=1e42f249214928d1fa7b17cf866401de0c2af867)\n\n","# DeepOSM [![构建状态](https:\u002F\u002Ftravis-ci.org\u002Ftrailbehind\u002FDeepOSM.svg?branch=master)](https:\u002F\u002Ftravis-ci.org\u002Ftrailbehind\u002FDeepOSM)\n\n通过使用OpenStreetMap (OSM) 数据训练神经网络，对卫星影像中的道路和地物进行分类。\n\nDeepOSM 可以：\n\n* 下载一块卫星影像\n* 下载该区域的道路\u002F地物信息的 OSM 数据\n* 生成训练和评估数据\n* 显示 OSM 数据中未正确配准的道路预测结果，或显示 ON\u002FOFF 的原始预测结果\n\n运行代码非常简单：只需安装 Docker、执行 `make dev` 并运行一个脚本即可。\n\n欢迎贡献代码。如果您想讨论要做的事情，请提交一个问题，或者[发送邮件给我](mailto:andrew@gaiagps.com)。\n\n## 默认数据\u002F准确率\n\n默认情况下，DeepOSM 会分析特拉华州约 200 平方公里的区域。DeepOSM 将：\n\n* 预测 64×64 像素瓦片的中心 9×9 像素是否包含道路。\n* 使用红外波段和 RGB 波段。\n* 总体准确率达到 75%-80%，且仅需训练约一分钟。\n* 在 [TensorFlow](https:\u002F\u002Fwww.tensorflow.org\u002F) 中使用单个全连接的 ReLU 层。\n* 将 OSM 数据中“假阳性”的预测结果渲染为 JPEG 图像——即 OSM 标记了道路，但 DeepOSM 认为那里并没有道路。\n\n![NAIP 与 Ways 和预测](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Ftrailbehind_DeepOSM_readme_205580050029.jpg)\n\n## 数据背景——NAIP 和 OSM PBF\n\n对于训练数据，DeepOSM 会从 [NAIP 影像](http:\u002F\u002Fwww.fsa.usda.gov\u002Fprograms-and-services\u002Faerial-photography\u002Fimagery-programs\u002Fnaip-imagery\u002F) 中裁剪出瓦片，这些影像提供 1 米\u002F像素的分辨率，并包含 RGB 和红外波段数据。\n\n对于训练标签，DeepOSM 使用 OSM 数据的 PBF 提取文件，这些文件以二进制格式存储地物和路径信息，可以使用 Python 进行处理。\n\n[NAIP 数据来自 Mapbox 在 AWS S3 上设置的请求者付费存储桶](http:\u002F\u002Fwww.slideshare.net\u002FAmazonWebServices\u002Fopen-data-innovation-building-on-open-data-sets-for-innovative-applications)，而 OSM 提取文件则来自 [geofabrik](http:\u002F\u002Fdownload.geofabrik.de\u002F)。\n\n## 安装要求\n\nDeepOSM 已成功在 Mac (10.x) 和 Linux (14.04 和 16.04) 上运行。您至少需要 4GB 内存。\n\n### AWS 凭证\n\n您需要 AWS 凭证才能从 S3 请求者付费存储桶下载 NAIP 数据。虽然下载大量图像仅需几美分，但您需要绑定一张信用卡。\n\n * 从 AWS 获取您的 [AWS_ACCESS_KEY_ID 和 AWS_SECRET_ACCESS_KEY](http:\u002F\u002Fdocs.aws.amazon.com\u002Fcli\u002Flatest\u002Fuserguide\u002Fcli-chap-getting-started.html)\n\n * 将它们导出为环境变量（并可能添加到您的 bash 或 zprofile 文件中）\n\n```\nexport AWS_ACCESS_KEY_ID='FOO'\nexport AWS_SECRET_ACCESS_KEY='BAR'\n```\n\n### 安装 Docker\n\n首先，[安装 Docker 二进制文件](https:\u002F\u002Fdocs.docker.com\u002Fengine\u002Finstallation\u002F)。\n\n此外，在 Mac 上运行时，我还需将 VirtualBox 的默认内存设置为 4GB。操作方法如下：\n\n * 按照安装说明启动 Docker\n * 停止 Docker\n * 打开 VirtualBox，增加 Docker 创建的虚拟机的内存\n\n### （仅限 GPU）安装 nvidia-docker\n\n若要使用您的 GPU 加速 DeepOSM，您需要先为您的 GPU 下载并安装最新的 NVIDIA 驱动程序，然后（在已安装 Docker 的基础上）再安装 `nvidia-docker`。\n\n首先，请访问 [NVIDIA 官网](http:\u002F\u002Fwww.nvidia.com\u002FDownload\u002FFind.aspx) 查找适用于您 GPU 的最新驱动程序版本。请务必确认驱动程序的版本号，因为最新发布的版本并不总是最新版本。\n\n下载合适的 `NVIDIA-*.run` 文件后，按照以下步骤进行安装（参考 [AWS 文档](http:\u002F\u002Fdocs.aws.amazon.com\u002FAWSEC2\u002Flatest\u002FUserGuide\u002Faccelerated-computing-instances.html#install-nvidia-driver)）：\n\n确保系统已更新，并重启以加载最新内核：\n\n```\n# 确保软件包是最新的\nsudo apt-get update\nsudo apt-get dist-upgrade\n\n# 并重启\nsudo reboot\n```\n\n系统重启后，请安装 `build-essential` 和当前内核版本对应的 `linux-headers` 包（或您所使用的 Linux 发行版中的等效包）：\n\n```\nsudo apt-get install build-essential linux-headers-$(uname -r)\n```\n\n然后运行之前下载的 NVIDIA 驱动程序安装脚本，并在完成后重启机器：\n\n```\nsudo bash \u003CNVIDIA-Linux-*.run 文件路径>\nsudo reboot\n```\n\n最后，验证 NVIDIA 驱动是否正确安装，以及 GPU 是否能够被 `nvidia-smi` 检测到：\n\n```\nnvidia-smi\n```\n\n```\nThu Mar  9 03:40:33 2017       \n+-----------------------------------------------------------------------------+\n| NVIDIA-SMI 367.57                 Driver Version: 367.57                    |\n|-------------------------------+----------------------+----------------------+\n| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |\n| Fan  Temp  Perf  Pwr:Usage\u002FCap|         Memory-Usage | GPU-Util  Compute M. |\n|===============================+======================+======================|\n|   0  GRID K520           Off  | 0000:00:03.0     Off |                  N\u002FA |\n| N\u002FA   54C    P0    45W \u002F 125W |      0MiB \u002F  4036MiB |      0%      Default |\n+-------------------------------+----------------------+----------------------+\n                                                                               \n+-----------------------------------------------------------------------------+\n| Processes:                                                       GPU Memory |\n|  GPU       PID  Type  Process name                               Usage      |\n|=============================================================================|\n|  No running processes found                                                 |\n+-----------------------------------------------------------------------------+\n```\n\n现在 NVIDIA 驱动已安装完毕，您可以按照以下步骤下载并安装 `nvidia-docker`（基于 [这些说明](https:\u002F\u002Fgithub.com\u002FNVIDIA\u002Fnvidia-docker#quick-start)）：\n\n```\nwget -P \u002Ftmp https:\u002F\u002Fgithub.com\u002FNVIDIA\u002Fnvidia-docker\u002Freleases\u002Fdownload\u002Fv1.0.1\u002Fnvidia-docker_1.0.1-1_amd64.deb\nsudo dpkg -i \u002Ftmp\u002Fnvidia-docker*.deb && rm \u002Ftmp\u002Fnvidia-docker*.deb\n```\n\n您可以通过在 Docker 容器中尝试运行 `nvida-smi` 来确认安装是否成功：\n\n```\nnvidia-docker run --rm nvidia\u002Fcuda nvidia-smi\n```\n\n```\nUsing default tag: latest\nlatest: Pulling from nvidia\u002Fcuda\nd54efb8db41d: Pull complete \nf8b845f45a87: Pull complete \ne8db7bf7c39f: Pull complete \n9654c40e9079: Pull complete \n6d9ef359eaaa: Pull complete \ncdfa70f89c10: Pull complete \n3208f69d3a8f: Pull complete \neac0f0483475: Pull complete \n4580f9c5bac3: Pull complete \n6ee6617c19de: Pull complete \nDigest: sha256:2b7443eb37da8c403756fb7d183e0611f97f648ed8c3e346fdf9484433ca32b8\nStatus: Downloaded newer image for nvidia\u002Fcuda:latest\nThu Mar  9 03:44:23 2017       \n+-----------------------------------------------------------------------------+\n| NVIDIA-SMI 367.57                 Driver Version: 367.57                    |\n|-------------------------------+----------------------+----------------------+\n| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |\n| Fan  Temp  Perf  Pwr:Usage\u002FCap|         Memory-Usage | GPU-Util  Compute M. |\n|===============================+======================+======================|\n|   0  GRID K520           Off  | 0000:00:03.0     Off |                  N\u002FA |\n| N\u002FA   54C    P8    18W \u002F 125W |      0MiB \u002F  4036MiB |      0%      Default |\n+-------------------------------+----------------------+----------------------+\n                                                                               \n+-----------------------------------------------------------------------------+\n| Processes:                                                       GPU Memory |\n|  GPU       PID  Type  Process name                               Usage      |\n|=============================================================================|\n|  No running processes found                                                 |\n+-----------------------------------------------------------------------------+\n```\n\n当您确认 `nvidia-smi` 在 `nvidia-docker` 中正常工作后，您应该就可以使用 GPU 运行 DeepOSM 了。\n\n### 运行脚本\n\n首先启动 Docker，然后运行：\n\n```bash\nmake dev-gpu\n```\n\n如果您没有合适的 GPU，则运行：\n\n```bash\nmake dev\n```\n\n### 下载 NAIP、PBF 并进行分析\n\n在 Docker 容器中，以下 Python 脚本将正常运行。这些脚本会下载所有源数据，将其切片为训练\u002F测试数据和标签，训练神经网络，并生成图像和文本输出。\n\n默认数据为六幅 NAIP 影像，它们会被切分为 64x64x4 波段的数据（RGB-IR 波段）。训练标签则来自与 NAIP 影像重叠的 PBF 文件。\n\n```\npython bin\u002Fcreate_training_data.py\npython bin\u002Ftrain_neural_net.py\n```\n\nDeepOSM 的输出包括一些控制台日志，以及将道路、标签和预测结果叠加在 TIFF 图像上的 JPEG 文件。\n\n### 测试\n\n目前有一个非常有限的测试套件可供使用，您可以在主机系统上通过运行以下命令来访问它：\n\n`make test`\n\n### Jupyter Notebook\n\n此外，您也可以通过 Jupyter Notebook 进行开发和研究：\n\n`make notebook`\n\n要通过主机上的浏览器访问该 Notebook，请先找到 VirtualBox 为您的默认 Docker 容器分配的 IP 地址，方法是运行：\n\n```\ndocker-machine ls\n\nNAME      ACTIVE   DRIVER       STATE     URL                         SWARM   DOCKER    ERRORS\ndefault   *        virtualbox   Running   tcp:\u002F\u002F192.168.99.100:2376           v1.10.3\n```\n\nNotebook 服务器可通过端口 8888 访问，在本例中，您需要访问以下地址：\nhttp:\u002F\u002F192.168.99.100:8888\n\n### 阅读材料\n\n* [学习在高分辨率航空影像中检测道路](http:\u002F\u002Fciteseerx.ist.psu.edu\u002Fviewdoc\u002Fdownload?doi=10.1.1.232.1679&rep=rep1&type=pdf)（Hinton）\n* [用于航空影像标注的机器学习](https:\u002F\u002Fwww.cs.toronto.edu\u002F~vmnih\u002Fdocs\u002FMnih_Volodymyr_PhD_Thesis.pdf)——Mnih 2013年的博士论文，他是Hinton的学生，这是该领域最好\u002F最新的论文，使用这些方法取得了巨大成功。\n* 类似的基于OSM数据的研究\n    * [OSM-Crosswalk-Detection](https:\u002F\u002Fgithub.com\u002Fgeometalab\u002FOSM-Crosswalk-Detection) —— 使用Keras检测人行横道，为一门课程项目（2015年秋季）。\n    * [OSM-HOT-ConvNet](https:\u002F\u002Fgithub.com\u002Flarsroemheld\u002FOSM-HOT-ConvNet) —— 尝试用于灾害响应，作者认为其像素级准确率仅为69%（2016年秋季）。\n    * [Terrapattern](http:\u002F\u002Fwww.terrapattern.com\u002F) —— （2016年春季）—— 检测相似图像，例如泳池、船迹或其他记者或研究人员可能感兴趣的内容模式——由卡内基梅隆大学的研究人员开发，开源。\n    * [Skynet Data](https:\u002F\u002Fgithub.com\u002Fdevelopmentseed\u002Fskynet-data) —— （2016年春季）—— 基于OpenStreetMap的机器学习数据管道。\n    * [Mnih的CNN模型在马萨诸塞州数据上的完整实现](https:\u002F\u002Fgithub.com\u002Fmitmul\u002Fssai-cnn)\n\n* [利用递归神经网络（RNN）解析自然场景与自然语言](http:\u002F\u002Fai.stanford.edu\u002F~ang\u002Fpapers\u002Ficml11-ParsingWithRecursiveNeuralNetworks.pdf)\n* 神经网络与深度学习背景资料\n    * [MNIST数据及背景介绍](http:\u002F\u002Fyann.lecun.com\u002Fexdb\u002Fmnist\u002F)\n    * 其他所有指向Nielsen书籍和[Colah博客](http:\u002F\u002Fcolah.github.io\u002Fposts\u002F2015-08-Backprop\u002F)的链接。\n    * [香农的原始信息论论文](http:\u002F\u002Fworrydream.com\u002Frefs\u002FShannon%20-%20A%20Mathematical%20Theory%20of%20Communication.pdf)\n\n[也可在此处查看工作日志](http:\u002F\u002Ftrailbehind.github.io\u002FDeepOSM\u002F)。\n\n### 论文——可能相关\n\n* [基于道路与交叉口的识别与匹配进行航空影像地理定位——2016年5月](https:\u002F\u002Farxiv.org\u002Fabs\u002F1605.08323)\n\n* [采用大窗口以改善预测效果，试图捕捉广泛的网络拓扑结构。](https:\u002F\u002Fwww.inf.ethz.ch\u002Fpersonal\u002Fladickyl\u002Froads_gcpr14.pdf)\n\n* [无需人工标注即可自动提取道路。准确度不高，但可作为预处理步骤来辅助道路检测。](https:\u002F\u002Fwww.researchgate.net\u002Fpublication\u002F263892800_Tensor-Cuts_A_simultaneous_multi-type_feature_extractor_and_classifier_and_its_application_to_road_extraction_from_satellite_images)\n\n### 论文——关联性不大\n\n* [利用地图数据和立交桥的形状来检测相应物体的图片？如果能免费获取的话，似乎是一篇很有趣的论文。](http:\u002F\u002Fdl.acm.org\u002Fcitation.cfm?id=2424336)\n\n* [一种将亚米级数据分类到不同区域的新技术。](http:\u002F\u002Fieeexplore.ieee.org\u002Fxpl\u002Flogin.jsp?tp=&arnumber=6827949&url=http%3A%2F%2Fieeexplore.ieee.org%2Fxpls%2Fabs_all.jsp%3Farnumber%3D6827949)\n\n* [无法访问全文，主要关注激光雷达数据的应用。](http:\u002F\u002Fieeexplore.ieee.org\u002Fxpl\u002Flogin.jsp?tp=&arnumber=6238909&url=http%3A%2F%2Fieeexplore.ieee.org%2Fxpls%2Fabs_all.jsp%3Farnumber%3D6238909)\n\n* [提出了一种提取网络拓扑结构的方法，或许可以作为后处理工具使用？](http:\u002F\u002Fwww.cv-foundation.org\u002Fopenaccess\u002Fcontent_cvpr_2013\u002Fhtml\u002FWegner_A_Higher-Order_CRF_2013_CVPR_paper.html)\n\n### 待審閱論文\n\n近期推薦\n\n* FIND - 您是否看過幾年前的一篇論文，該論文通過比較壓縮衛星影像的大小與 OSM 節點數量來估計 OSM 的完整度？\n\n* READ - 這是一場關於使用 GPS 軌跡建議 OSM 編輯（Strava\u002FTelenav）的演講：http:\u002F\u002Fwebcache.googleusercontent.com\u002Fsearch?q=cache:VoiCwRHOyLUJ:stateofthemap.us\u002Fmap-tracing-for-millennials\u002F+&cd=3&hl=en&ct=clnk&gl=us\n\n#### 引用 Mnih 和 Hinton 的研究\n\n我正在審閱這些來自 Google 學術的論文，它們都引用了關鍵文獻，並且似乎與主題相關。\n\n* http:\u002F\u002Fieeexplore.ieee.org\u002Fxpl\u002Flogin.jsp?tp=&arnumber=6602035&url=http%3A%2F%2Fieeexplore.ieee.org%2Fxpls%2Fabs_all.jsp%3Farnumber%3D6602035\n\n* http:\u002F\u002Fwww.cv-foundation.org\u002Fopenaccess\u002Fcontent_cvpr_workshops_2015\u002FW13\u002Fhtml\u002FPaisitkriangkrai_Effective_Semantic_Pixel_2015_CVPR_paper.html\n\n* http:\u002F\u002Fwww.tandfonline.com\u002Fdoi\u002Fabs\u002F10.1080\u002F15481603.2013.802870\n\n* https:\u002F\u002Fwww.computer.org\u002Fcsdl\u002Fproceedings\u002Ficpr\u002F2014\u002F5209\u002F00\u002F5209d708-abs.html\n\n* http:\u002F\u002Fopticalengineering.spiedigitallibrary.org\u002Farticle.aspx?articleid=1679147\n\n* http:\u002F\u002Fproceedings.spiedigitallibrary.org\u002Fproceeding.aspx?articleid=1354584\n\n* http:\u002F\u002Fciteseerx.ist.psu.edu\u002Fviewdoc\u002Fsummary?doi=10.1.1.309.8565\n\n* https:\u002F\u002Fwww.itc.nl\u002Flibrary\u002Fpapers_2012\u002Fmsc\u002Fgem\u002Fshaoqing.pdf\n\n* http:\u002F\u002Fieeexplore.ieee.org\u002Fxpl\u002Flogin.jsp?tp=&arnumber=7326745&url=http%3A%2F%2Fieeexplore.ieee.org%2Fxpls%2Fabs_all.jsp%3Farnumber%3D7326745\n\n* http:\u002F\u002Fproceedings.spiedigitallibrary.org\u002Fproceeding.aspx?articleid=2191094\n\n* http:\u002F\u002Farxiv.org\u002Fabs\u002F1509.03602\n\n* http:\u002F\u002Fieeexplore.ieee.org\u002Fxpl\u002Flogin.jsp?tp=&arnumber=7112625&url=http%3A%2F%2Fieeexplore.ieee.org%2Fxpls%2Fabs_all.jsp%3Farnumber%3D7112625\n\n* http:\u002F\u002Fwww.sciencedirect.com\u002Fscience\u002Farticle\u002Fpii\u002FS0924271615001690\n\n* http:\u002F\u002Farxiv.org\u002Fabs\u002F1405.6137\n\n* https:\u002F\u002Fwww.itc.nl\u002Fexternal\u002FISPRS_WGIII4\u002FISPRSIII_4_Test_results\u002Fpapers\u002FOnera_2D_label_Vaih.pdf\n\n* http:\u002F\u002Flink.springer.com\u002Fchapter\u002F10.1007\u002F978-3-319-23528-8_33#page-1\n\n* http:\u002F\u002Farxiv.org\u002Fabs\u002F1508.06163\n\n* http:\u002F\u002Fwww.mdpi.com\u002F2072-4292\u002F8\u002F4\u002F329\n\n* http:\u002F\u002Farxiv.org\u002Fabs\u002F1510.00098\n\n* http:\u002F\u002Flink.springer.com\u002Farticle\u002F10.1007\u002Fs10489-016-0762-6\n\n* http:\u002F\u002Fwww.tandfonline.com\u002Fdoi\u002Fabs\u002F10.1080\u002F01431161.2015.1054049\n\n* http:\u002F\u002Fieeexplore.ieee.org\u002Fxpl\u002Flogin.jsp?tp=&arnumber=7393563&url=http%3A%2F%2Fieeexplore.ieee.org%2Fxpls%2Fabs_all.jsp%3Farnumber%3D7393563\n\n* http:\u002F\u002Fwww.cv-foundation.org\u002Fopenaccess\u002Fcontent_iccv_2015\u002Fhtml\u002FMattyus_Enhancing_Road_Maps_ICCV_2015_paper.html\n\n* http:\u002F\u002Fwww.cv-foundation.org\u002Fopenaccess\u002Fcontent_iccv_2015\u002Fhtml\u002FZheng_Minimal_Solvers_for_ICCV_2015_paper.html\n\n* http:\u002F\u002Farxiv.org\u002Fabs\u002F1405.6136\n\n* http:\u002F\u002Fciteseerx.ist.psu.edu\u002Fviewdoc\u002Fdownload?doi=10.1.1.681.1695&rep=rep1&type=pdf\n\n* http:\u002F\u002Fieeexplore.ieee.org\u002Fxpl\u002Flogin.jsp?tp=&arnumber=7120492&url=http%3A%2F%2Fieeexplore.ieee.org%2Fxpls%2Fabs_all.jsp%3Farnumber%3D7120492\n\n* http:\u002F\u002Fwww.tandfonline.com\u002Fdoi\u002Fabs\u002F10.3846\u002F20296991.2014.890271\n\n* http:\u002F\u002Fieeexplore.ieee.org\u002Fxpl\u002Flogin.jsp?tp=&arnumber=7362660&url=http%3A%2F%2Fieeexplore.ieee.org%2Fxpls%2Fabs_all.jsp%3Farnumber%3D7362660\n\n* http:\u002F\u002Fieeexplore.ieee.org\u002Fxpl\u002Flogin.jsp?tp=&arnumber=7414402&url=http%3A%2F%2Fieeexplore.ieee.org%2Fxpls%2Fabs_all.jsp%3Farnumber%3D7414402\n\n* http:\u002F\u002Fieeexplore.ieee.org\u002Fxpl\u002Flogin.jsp?tp=&arnumber=6663455&url=http%3A%2F%2Fieeexplore.ieee.org%2Fxpls%2Fabs_all.jsp%3Farnumber%3D6663455\n\n* http:\u002F\u002Fieeexplore.ieee.org\u002Fxpl\u002Flogin.jsp?tp=&arnumber=7337372&url=http%3A%2F%2Fieeexplore.ieee.org%2Fxpls%2Fabs_all.jsp%3Farnumber%3D7337372\n\n* https:\u002F\u002Fwww.researchgate.net\u002Fprofile\u002FMoslem_Ouled_Sghaier\u002Fpublication\u002F280655680_Road_Extraction_From_Very_High_Resolution_Remote_Sensing_Optical_Images_Based_on_Texture_Analysis_and_Beamlet_Transform\u002Flinks\u002F55c0d9da08ae092e96678ff3.pdf\n\n* http:\u002F\u002Fieeexplore.ieee.org\u002Fxpl\u002Flogin.jsp?tp=&arnumber=7159022&url=http%3A%2F%2Fieeexplore.ieee.org%2Fxpls%2Fabs_all.jsp%3Farnumber%3D7159022\n\n* http:\u002F\u002Fwww.sciencedirect.com\u002Fscience\u002Farticle\u002Fpii\u002FS0303243415300283\n\n* http:\u002F\u002Fdl.acm.org\u002Fcitation.cfm?id=2666389\n\n* http:\u002F\u002Fwww.ijicic.org\u002Fijicic-15-04045.pdf\n\n### 原始構想\n\n這是最開始的大致想法，而使用 TMS 地圖瓦片的方式也確實有一定效果（見前 50 多次提交），因此 DeepOSM 最終改為使用更優質的數據：\n\n![Deep OSM 項目](https:\u002F\u002Fgaiagps.mybalsamiq.com\u002Fmockups\u002F4278030.png?key=1e42f249214928d1fa7b17cf866401de0c2af867)","# DeepOSM 快速上手指南\n\nDeepOSM 是一个利用 OpenStreetMap (OSM) 数据训练神经网络，从而在卫星图像中分类道路和地物特征的开源工具。它支持下载卫星影像、生成训练数据、训练模型以及可视化预测结果（如检测 OSM 数据中未注册的道路）。\n\n## 环境准备\n\n### 系统要求\n*   **操作系统**：macOS (10.x+) 或 Linux (Ubuntu 14.04\u002F16.04+)\n*   **内存**：至少 4GB RAM\n*   **存储**：需预留足够空间下载卫星影像和中间数据（默认示例约处理 200 平方公里区域）\n*   **GPU（可选）**：若需加速训练，需配备 NVIDIA GPU 并安装对应驱动\n\n### 前置依赖\n1.  **Docker**：必须安装 Docker Engine。\n    *   macOS 用户：安装 Docker Desktop 后，建议通过 VirtualBox 将默认虚拟机内存调整为 4GB 以上。\n2.  **AWS 凭证**：DeepOSM 默认从 AWS S3 \"Requester Pays\" 存储桶下载 NAIP 卫星影像。\n    *   你需要拥有 AWS 账号并配置好信用卡。\n    *   获取 `AWS_ACCESS_KEY_ID` 和 `AWS_SECRET_ACCESS_KEY`。\n3.  **NVIDIA 驱动与 nvidia-docker（仅 GPU 模式）**：\n    *   若使用 GPU 加速，需先在宿主机安装最新的 NVIDIA 驱动。\n    *   安装 `nvidia-docker` 以支持容器调用 GPU。\n\n## 安装步骤\n\n### 1. 配置 AWS 环境变量\n在终端中导出你的 AWS 凭证（建议写入 `~\u002F.bashrc` 或 `~\u002F.zprofile` 以便持久化）：\n\n```bash\nexport AWS_ACCESS_KEY_ID='YOUR_AWS_ACCESS_KEY_ID'\nexport AWS_SECRET_ACCESS_KEY='YOUR_AWS_SECRET_ACCESS_KEY'\n```\n\n### 2. 安装 Docker 及 GPU 支持（可选）\n\n**通用 Docker 安装：**\n请参考 [Docker 官方文档](https:\u002F\u002Fdocs.docker.com\u002Fengine\u002Finstallation\u002F) 安装。\n*   *macOS 提示*：启动 Docker -> 停止 Docker -> 打开 VirtualBox -> 增加 Default VM 的内存至 4GB+ -> 重启 Docker。\n\n**GPU 加速配置（Linux）：**\n若需使用 GPU，请先安装 NVIDIA 驱动并验证 `nvidia-smi` 正常工作，然后安装 `nvidia-docker`：\n\n```bash\n# 下载并安装 nvidia-docker (版本可能需根据实际更新)\nwget -P \u002Ftmp https:\u002F\u002Fgithub.com\u002FNVIDIA\u002Fnvidia-docker\u002Freleases\u002Fdownload\u002Fv1.0.1\u002Fnvidia-docker_1.0.1-1_amd64.deb\nsudo dpkg -i \u002Ftmp\u002Fnvidia-docker*.deb && rm \u002Ftmp\u002Fnvidia-docker*.deb\n\n# 验证安装\nnvidia-docker run --rm nvidia\u002Fcuda nvidia-smi\n```\n\n### 3. 获取代码并构建环境\n克隆项目仓库（如果尚未克隆），然后在项目根目录下运行以下命令构建开发环境：\n\n**使用 CPU 运行：**\n```bash\nmake dev\n```\n\n**使用 GPU 运行：**\n```bash\nmake dev-gpu\n```\n\n## 基本使用\n\n构建完成后，所有操作均在 Docker 容器内进行。以下是标准的训练与预测流程：\n\n### 1. 生成训练数据\n该脚本会自动下载默认的 NAIP 卫星影像（特拉华州区域）和对应的 OSM PBF 数据，将其切割为 64x64 的图块，并生成标签。\n\n```bash\npython bin\u002Fcreate_training_data.py\n```\n\n### 2. 训练神经网络\n使用生成的数据训练模型。默认配置下，训练仅需约一分钟即可达到 75-80% 的准确率。\n\n```bash\npython bin\u002Ftrain_neural_net.py\n```\n\n### 3. 查看结果\n运行结束后，控制台将输出日志，并在本地生成 JPEG 图像。这些图像展示了：\n*   原始卫星影像\n*   OSM 道路标签\n*   模型预测结果（特别是标记出 OSM 中有记录但模型认为不存在道路的“假阳性”区域，用于发现未更新的路网）\n\n### 进阶：使用 Jupyter Notebook 进行研究\n如果你希望通过交互式界面探索数据或调整模型参数：\n\n1.  在项目根目录运行：\n    ```bash\n    make notebook\n    ```\n2.  获取 Docker 容器 IP 地址：\n    ```bash\n    docker-machine ls\n    ```\n    *(例如输出显示 IP 为 `192.168.99.100`)*\n3.  在浏览器中访问：\n    `http:\u002F\u002F\u003CIP_ADDRESS>:8888`\n\n> **注意**：默认示例使用的是美国特拉华州的数据。若要分析其他区域，需修改源码中的数据下载逻辑以指向特定的 NAIP 和 OSM PBF 文件源。","某非营利组织正在为偏远灾区更新紧急救援地图，需要快速识别卫星图像中未被记录的道路网络。\n\n### 没有 DeepOSM 时\n- 志愿者需人工对照高清卫星图与旧地图，逐像素排查新修道路，耗时数周且极易疲劳出错。\n- 现有开源地图（如 OSM）在该区域数据严重滞后，救援车队常因导航缺失而受阻于断头路。\n- 传统图像处理算法无法有效利用红外波段区分植被覆盖下的路面，漏检率极高。\n- 缺乏自动化验证机制，难以发现地图中已存在但实际已损毁的“幽灵道路”。\n- 团队需雇佣专业 GIS 分析师处理数据，高昂的人力成本超出了项目预算。\n\n### 使用 DeepOSM 后\n- DeepOSM 自动下载并分析 200 平方公里的卫星影像与 OSM 数据，仅需数分钟即可生成道路预测结果。\n- 利用红外与 RGB 多波段训练的深度神经网络，精准识别出被部分植被遮挡的隐蔽小路，填补数据空白。\n- 系统直接渲染出“假阳性”预测图，直观标记出 OSM 中标记为道路但实际不通的区域，辅助快速修正。\n- 基于 Docker 的一键部署让普通开发人员也能在本地运行模型，无需组建庞大的专家团队。\n- 整体识别准确率达到 75%-80%，救援路径规划效率提升十倍，确保物资第一时间送达。\n\nDeepOSM 通过将开放地图数据与卫星影像深度融合，以极低成本实现了灾区路网的高精度自动化更新。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Ftrailbehind_DeepOSM_20558005.jpg","trailbehind","TrailBehind, Inc.","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Ftrailbehind_e1c31523.png","",null,"http:\u002F\u002Fwww.gaiagps.com","https:\u002F\u002Fgithub.com\u002Ftrailbehind",[84,88,92,96,100],{"name":85,"color":86,"percentage":87},"Python","#3572A5",87.5,{"name":89,"color":90,"percentage":91},"HTML","#e34c26",10,{"name":93,"color":94,"percentage":95},"Makefile","#427819",1.3,{"name":97,"color":98,"percentage":99},"Shell","#89e051",0.7,{"name":101,"color":102,"percentage":103},"CSS","#663399",0.5,1331,184,"2026-04-03T12:04:26","MIT","Linux (14.04, 16.04), macOS (10.x)","非必需。若需加速，需安装 NVIDIA 驱动及 nvidia-docker。README 未指定具体显卡型号、显存大小或 CUDA 版本，仅要求安装对应 GPU 的最新驱动。","最低 4GB",{"notes":112,"python":113,"dependencies":114},"1. 必须安装 Docker，macOS 用户需将 VirtualBox 默认内存设置为至少 4GB。\n2. 需要 AWS 凭证 (Access Key 和 Secret Key) 以下载 NAIP 卫星图像数据（S3 请求者付费桶）。\n3. GPU 加速需手动安装 NVIDIA 驱动和 nvidia-docker，并在容器内验证 nvidia-smi。\n4. 默认使用特拉华州约 200 平方公里的数据进行训练，包含 RGB 和红外波段。","未说明 (运行于 Docker 容器内)",[115,116,117],"Docker","TensorFlow","nvidia-docker (GPU 模式可选)",[14,34],"2026-03-27T02:49:30.150509","2026-04-06T08:09:16.300453",[122,127,131,136,141,146,151],{"id":123,"question_zh":124,"answer_zh":125,"source_url":126},15962,"运行脚本时遇到 'OSError: No such file or directory' 指向数据生成目录不存在，如何解决？","该错误通常是由于缓存目录路径配置问题或权限问题导致的。确保你是在 `make dev` 成功启动的 Docker 容器内运行命令。如果仍然报错，检查 `src\u002Fconfig.py` 中的 `CACHE_PATH` 设置，确认容器是否有权限创建或删除该目录（脚本中调用了 `shutil.rmtree`）。确保挂载卷（volume）正确，例如使用 `-v `pwd`:\u002FDeepOSM` 将当前目录映射到容器内。","https:\u002F\u002Fgithub.com\u002Ftrailbehind\u002FDeepOSM\u002Fissues\u002F63",{"id":128,"question_zh":129,"answer_zh":130,"source_url":126},15960,"运行 create_training_data.py 时出现 'No module named src.training_data' 导入错误怎么办？","这个问题通常是因为没有正确进入 Docker 容器环境。请按照以下步骤操作：\n1. 确保先成功执行了 `make dev` 命令，该命令会自动安装 TensorFlow 并启动容器。\n2. 如果 `make dev` 失败，可能是网络问题导致 Docker 无法下载镜像，请检查网络连接。\n3. 只有在 `make dev` 成功执行并将你带入 Docker 容器内部后，才能运行 `python bin\u002Fcreate_training_data.py`。不要直接在宿主机上调用该脚本。",{"id":132,"question_zh":133,"answer_zh":134,"source_url":135},15961,"如何在 AWS EC2 (g2.2xlarge) 上配置支持 GPU 的 TensorFlow 环境？","可以在全新的 Ubuntu 14.04 `g2.2xlarge` 实例上运行以下脚本进行配置。注意需先将 cudnn tarball (`cudnn-7.5-linux-x64-v5.0-rc.tgz`) scp 到 `\u002Ftmp` 目录。\n\n主要步骤包括：\n1. 添加 ubuntugis 测试源并更新 apt。\n2. 配置 UTF-8 语言环境。\n3. 黑名单屏蔽 nouveau 显卡驱动以启用 CUDA：\n   ```bash\n   echo -e \"blacklist nouveau\\nblacklist lbm-nouveau\\noptions nouveau modeset=0\\nalias nouveau off\\nalias lbm-nouveau off\\n\" | sudo tee \u002Fetc\u002Fmodprobe.d\u002Fblacklist-nouveau.conf\n   ```\n4. 使用包管理器安装 Python 2.7, TensorFlow 0.8 (GPU 版), CUDA 7.5 和 cuDNN v5，无需手动编译源码。","https:\u002F\u002Fgithub.com\u002Ftrailbehind\u002FDeepOSM\u002Fissues\u002F8",{"id":137,"question_zh":138,"answer_zh":139,"source_url":140},15963,"在使用 Docker 运行 create_training_data.py 时遇到 s3cmd 'Name or service not known' 错误是什么原因？","这通常是 DNS 解析问题或网络连接问题，导致容器无法解析 S3 域名。虽然 Issue 中维护者表示难以直接帮助，但建议检查以下几点：\n1. 确认 Docker 容器的网络配置是否正常，能否 ping 通外部域名。\n2. 检查 AWS 凭证（AWS_ACCESS_KEY_ID 和 AWS_SECRET_ACCESS_KEY）是否已通过 `-e` 参数正确传递给 Docker 容器。\n3. 尝试在容器内手动运行 s3cmd 命令测试连接，确保 s3cmd 版本与代码兼容。","https:\u002F\u002Fgithub.com\u002Ftrailbehind\u002FDeepOSM\u002Fissues\u002F72",{"id":142,"question_zh":143,"answer_zh":144,"source_url":145},15964,"如何优化数据创建和分析的流程架构？","建议将数据创建和数据分析拆分为两个独立的 Docker 应用：\n1. **数据创建 Docker**：负责下载原始数据（如 NAIP 影像和 OSM 数据），处理并序列化训练数据，保存到磁盘或 S3。它可以基于非 GPU 镜像构建。\n2. **数据分析 Docker**：继承标准的 TensorFlow GPU 镜像，专门用于加载已准备好的训练数据进行模型训练和分析。\n这种分离使得生产环境中可以独立扩展，例如数据准备一次性完成后，分析容器可以多次挂载数据桶进行实验，且更易于维护和部署。","https:\u002F\u002Fgithub.com\u002Ftrailbehind\u002FDeepOSM\u002Fissues\u002F30",{"id":147,"question_zh":148,"answer_zh":149,"source_url":150},15965,"遇到 gdal swig binary 与 python bindings 版本不匹配的错误如何处理？","这通常发生在非 GPU Docker 镜像中，原因是 GDAL 的 SWIG 二进制文件与较新的 Python 绑定不同步（特别是涉及 GNM 模块时）。解决方案是确保 Dockerfile 中安装的 `python-gdal` 版本与系统安装的 `gdal` 库版本严格一致。可能需要锁定 Dockerfile 中的具体版本号，或者升级到包含修复版本的最新基础镜像。","https:\u002F\u002Fgithub.com\u002Ftrailbehind\u002FDeepOSM\u002Fissues\u002F74",{"id":152,"question_zh":153,"answer_zh":154,"source_url":140},15966,"训练神经网络时出现 TensorFlow 序列化警告（如 'NoneType' object has no attribute 'name'）会影响运行吗？","这些警告（WARNING:tensorflow:Error encountered when serializing...）通常出现在保存模型或序列化数据增强配置时。虽然它们表明某些对象（如 data_augmentation 或 summary_tags）无法被正确序列化，但在许多情况下，这不会阻止模型的训练过程。如果训练能正常进行且结果符合预期，可以暂时忽略。若需解决，需检查代码中传递给 TensorFlow 集合（CollectionDef）的对象类型，确保它们不是 None 或不支持的字典类型。",[]]