geo-sleuth如何用街景验证位置:DINOv2+SIFT双阶段匹配原理与实践
【免费下载链接】geo-sleuthAn agent skill that finds where a photo was taken — OpenStreetMap geometry, elevation skylines, satellite imagery and street view — and shows its work. Works with Claude Code, Codex, Cursor, Gemini CLI, OpenCode and GitHub Copilot.项目地址https://gitcode.com/gh_mirrors/ge/geo-sleuth点击查看免费下载照片定位验证网络迷踪 / GeoGuessing最难的一步在最后候选地点缩小到几条街道后还要用街景证明就是这里。开源项目geo-sleuth把这个街景验证自动化了match.py 先用 DINOv2 全局相似度对成百上千个街景候选做宽召回再用 SIFT 特征点 RANSAC 内点数做几何精验证人只需要打开前 10 张图比对。本文讲清楚这套双阶段匹配的原理与实战用法。为什么街景是照片定位的最后一关 ️geo-sleuth 是一个定位照片的 Agent Skill给智能体一句find where this photo was taken它会读 EXIF、做 OCR 和以图搜图再用 OpenStreetMap 几何、高程天际线、卫星影像逐步搜索最后给出机位坐标 误差半径 证据图完整流程见 SKILL.md。但缩小不等于验证。两个常见的卡点以图搜图找到的是相似图不是拍摄地。比如稻田这张照片百度以图搜图能搜到一整屏相似的水泥烤炉但没有一个是拍摄地全景点太多。一条街道可能有几十到几百个全景点逐个渲染翻看根本不现实。所以 geo-sleuth 对街景环节的原则只有一句机器先排序人只看前几名——粗排交给 DINOv2SIFT 双阶段管线人只负责对 Top 10 做最后的目视比对。DINOv2 SIFT 双阶段匹配原理 为什么要两个阶段因为两类特征回答的是两个不同的问题全局特征DINOv2这两张图像不像同一个场景——对光照、视角、局部遮挡都鲁棒一张图一个向量比对极快但它不看精确几何季节、街道风格相似的相似场景容易拿高分。局部特征SIFT这两张图是不是几何上同一个地方——服从同一平面投影变换的角点才算内点内点数就是同地同视角的几何证据但它慢只适合验证少数候选。于是管线设计成宽召回 → 严验证。阶段一DINOv2 全局相似度做宽召回源码见 match.py#L89-L137模型为 Meta 的facebook/dinov2-small首次使用自动下载并缓存图像统一缩放为 224×224取 CLS token 与 patch 均值拼接成全局向量并归一化多视角技巧查询图会被编码成 4 个视角全图 / 中心裁剪 / 左半幅 / 右半幅每个候选取这 4 个视角中的最高相似度。原因很实际街景车在马路中间拍原照片往往在人行道上拍两边对不齐但重叠的那一半大概率对得上所有候选一次批算余弦相似度几秒内得到初始排序。阶段二SIFT RANSAC 内点数做几何精验证源码见 match.py#L140-L163。对全局分最高的前 30 张默认--refine-top 30逐张执行灰度化、缩放后SIFT 提取至多 3000 个角点特征ratio test阈值 0.75过滤误匹配RANSAC 拟合单应矩阵重投影误差阈值 6 px数内点数inliers——只有严格服从同一视角变换的点才算内点最终排序有内点的按内点数排前其余按全局分排后。默认--min-inliers 15内点数 ≥15 的图会被置顶提示先打开这些比对。阶段一DINOv2阶段二SIFT RANSAC回答的问题像不像同一场景是不是真的同一地点特征类型全局语义向量局部角点特征覆盖范围全部候选前 30 名优点对视角、光照鲁棒快几何严格不怕相似街道弱点季节、相似场景会打高分慢纹理少时特征点不足一句话总结DINOv2 负责召回SIFT 负责精确。一条命令完成街景验证三步实操 第 1 步采集全景点。国内用百度全景 baidu_pano.py国外用免密钥的 Google 街景 gsv.py。scan在候选地点半径内扫出所有全景点uv run skills/geo-sleuth/scripts/baidu_pano.py scan lat,lon --radius 300 --out panos.json第 2 步双阶段匹配输出 Top 10 对比图。--toward把每个全景的渲染朝向对准已知地标增加与原照片同视角相遇的概率--spread 15表示每 15 米只保留一个全景点避免算一堆几乎重复的视角uv run skills/geo-sleuth/scripts/match.py rank --query photo.jpg --panos panos.json \ --toward 地标lat,lon --spread 15 --refine sift --top 10 \ --out m.json --sheet m.jpg生成的m.jpg就是最终对比图每张街景标注名次、内点数和全局分打开即看。第 3 步人只做最后目视比对。只比不变特征清单见 verify.md#L20-L31要比 ✅不要比 ❌建筑轮廓、窗户位置、阳台形状停着的车、行人电线杆、路灯位置、路缘石、台阶招牌、遮阳棚、广告山脊线、河岸线树叶多少、花有没有开达到路级结论需 ≥2 个独有特征吻合楼级需 ≥3 个再加两个独立的机位约束。4 个避坑点内点数低 ≠ 不是这里 ⚠️全局分被季节主导樱花季的街景无论在哪里都会打高分。尽量找与原照片同季节的历史采集来比gsv.py sheet --date year。内点数低很正常原片在人行道拍、街景在路中拍或季节差异大时正确答案可能只有 5 个甚至 0–8 个内点。官方 8 例基准测试里正确答案的名次是 1/2/4/1/1 和 5/1/6——全部在前 6 名内一半排第一。旧街景比旧楼采集比照片早很多年时新建筑还不存在以老建筑和永久性结构为准verify.md#L86-L91。机器排序、人类判断排序只是顺序不是结论。Top 10 都不像时先换朝向--spread-headings -30,0,30或扩大范围别只看分数下结论。实战案例温哥华樱花街定位到 3 米 一张温哥华人行道上的樱花照片。车牌和路灯样式锁定温哥华但全市约有 1 万条街块。城市开放数据里 1,095 棵大樱花 → 97 个候选街块 → 车影方向 道路横坡筛到 72 块 → 再逐棵树核对W 60th Ave 100 号段北侧排满大樱花南侧远处只有 7.6 cm 的幼苗——与原照片近处右侧没有高树、远处一片粉色树冠完全一致。最后一步正是典型的街景验证场景原照片在人行道上拍街景车在马路中间视角错位——恰是 DINOv2 多视角 SIFT 要处理的情况。同一街块的 2024 年和 2009 年两次采集里都出现了石砌挡土墙、墨绿色路灯和白房子而照片里那栋带屋顶露台deck 的房子同时出现在 2024 年采集与原照片中。最终结论机位在北侧人行道、朝向东误差 3 米。卫星证据图标出了机位、视场角和来自城市数据的每一棵行道树值得翻的源码与文档 文件作用skills/geo-sleuth/scripts/match.pyDINOv2/CLIP 全局粗排 SIFT 内点精排skills/geo-sleuth/scripts/baidu_pano.py百度全景扫描、渲染、缩略图页skills/geo-sleuth/scripts/gsv.pyGoogle 街景免密钥、历史采集skills/geo-sleuth/references/verify.md验证规则比对什么、方位自检、历史影像skills/geo-sleuth/references/data-sources.md每个脚本的数据来源清单 小贴士match.py首次运行要下载模型权重比平时多等几分钟遇到超时先跑doctor.py --network检查服务连通性。赞分享【免费下载链接】geo-sleuthAn agent skill that finds where a photo was taken — OpenStreetMap geometry, elevation skylines, satellite imagery and street view — and shows its work. Works with Claude Code, Codex, Cursor, Gemini CLI, OpenCode and GitHub Copilot.项目地址https://gitcode.com/gh_mirrors/ge/geo-sleuth点击查看免费下载相关推荐反向图片搜索OCR全解如何用geo-sleuth百度Yandex双引擎定位照片反向图片搜索OCR全解如何用geo sleuth百度Yandex双引擎定位照片 geo sleuth 是一个照片定位photo geolocation智PingFangSC跨平台字体解决方案高性能Web字体架构设计与实践PingFangSC跨平台字体解决方案高性能Web字体架构设计与实践 在当今多设备、多平台的数字生态中字体一致性已成为现代Web开发的核心挑战。PingFa前端yuzu模拟器中文支持终极指南快速解决字体乱码问题yuzu模拟器中文支持终极指南快速解决字体乱码问题 还在为yuzu模拟器中文字体显示为方块或乱码而烦恼吗作为Nintendo Switch最优秀的开源模拟器游戏开发创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

Android图书阅读器源码解析:从MVC分层到TXT导入与自动书签实现

Android图书阅读器源码解析:从MVC分层到TXT导入与自动书签实现

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 5:11:01 阅读更多 →
Java 8 Lambda 与 Stream 实战:从语法细节到集合处理重构

Java 8 Lambda 与 Stream 实战:从语法细节到集合处理重构

1. 为什么 Lambda 和 Stream 值得认真用一次1.1 先看一组对比:传统写法 vs Lambda/StreamJava 8 发布已经超过十年,Lambda 和 Stream 早就不是新鲜东西了。但我这几年做代码评审,发现很多团队的老代码里还在用十年前那种写法:明明…

2026/10/12 5:11:01 阅读更多 →
街机小游戏网页源码解析:从贪吃蛇到俄罗斯方块的实现技巧

街机小游戏网页源码解析:从贪吃蛇到俄罗斯方块的实现技巧

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 5:11:01 阅读更多 →

最新新闻

Python成绩统计作业复盘:从平行列表到字典与函数重构

Python成绩统计作业复盘:从平行列表到字典与函数重构

第二次作业发下来的那天,课程群里比平时安静了不少。第一次作业只要照着课堂示例把代码拼一拼,第二次题目一出,大家才发现要面对的是一整套流程:录入、存储、计算、排序、统计、输出。这道成绩统计题几乎在每个Python入门课程里都…

2026/10/12 5:52:28 阅读更多 →
前缀和进阶:哈希表、二维前缀和与树状数组

前缀和进阶:哈希表、二维前缀和与树状数组

刷LeetCode刷到一定量之后,你会发现前缀和就像一把“万能钥匙”:它能把区间求和从O(n)压到O(1),也能配合哈希表把子数组统计问题从O(n)压到O(n)。在上一个专题里,我详细讲过最基础的一维前缀和构造、区域和检索、中心下标这类直接…

2026/10/12 5:52:28 阅读更多 →
SpringBoot智能推荐卫生健康系统毕设实战:内容推荐算法实现

SpringBoot智能推荐卫生健康系统毕设实战:内容推荐算法实现

1. 项目概述1.1 这个毕设到底在做什么"基于springboot智能推荐的卫生健康系统的设计与实现",说人话就是:做一个能根据用户的身体状况、生活习惯和健康目标,主动给出个性化健康建议的Web平台。它不是一个简单的健康资讯网站&#xf…

2026/10/12 5:52:28 阅读更多 →
JAVA_HOME环境变量配置与排查:从报错到避坑全攻略

JAVA_HOME环境变量配置与排查:从报错到避坑全攻略

做了这么多年Java开发,几乎每个季度都得处理一次“JAVA_HOME环境变量”的幺蛾子。新同事入职第一件事是配JDK,老同事换项目第一件事是切版本,可翻来覆去出问题的,还是那个看起来人畜无害的JAVA_HOME。你可能也见过这样的报错&…

2026/10/12 5:52:28 阅读更多 →
3关键字B+树构建全解析:从分裂上提到删除合并

3关键字B+树构建全解析:从分裂上提到删除合并

如果你能在纸上从零构建一棵最多只装 3 个关键字的 B 树,那基本上就掌握了 B 树八成以上的难点。这是我当年准备面试时一个学长告诉我的,我照做之后发现确实如此——复杂的 m 阶 B 树,无非是把这里的“3”换成“几百”,分裂、上提…

2026/10/12 5:52:28 阅读更多 →
大模型推理优化实践:从KV Cache到语义缓存的三层缓存架构

大模型推理优化实践:从KV Cache到语义缓存的三层缓存架构

上个月排一个线上问题,我们的对外AI问答服务上线第三周,GPU没有扩容,但模型调用账单涨了快三倍。查了一圈下来最扎眼的还不是成本:平均每天十几万请求里差不多一半是“语义重复”——“附近有什么川菜馆”“川菜馆哪家好”“推荐一…

2026/10/12 5:51:27 阅读更多 →

日新闻

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

在数码相机、高清显示屏与现代矢量图形技术高度发达的今天,画面可以做到绝对的锐利、平滑与无瑕。然而,当一张秋日手账插画或拍立得照片过于“平整无瑕”时,往往会散发出一种冰冷生硬的“数码塑料感(Digital Plasticity&#xff0…

2026/10/12 0:00:59 阅读更多 →
活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

在现代网页与移动端设计中,横排(Horizontal Layout)早已经成为了绝对的主流。然而,当我们翻开泛黄的线装古籍、宋版木刻诗集,或是欣赏一张茶道雅集的手写便签时,那种**自上而下纵向书写、自右向左逐列铺展&…

2026/10/12 0:00:59 阅读更多 →
周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

每到周日的晚上八点到十点,很多人心里都会悄悄亮起一盏警示灯。 在心理学上,这种现象有一个专门的称谓——“周日夜晚焦虑症(Sunday Scaries)”。明天又是周一,闹钟又要重新在七点响彻卧房;脑海里仿佛有一个…

2026/10/12 0:00:59 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/12 0:16:30 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/12 0:16:43 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 10:45:37 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:53 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:54 阅读更多 →