o3 击败了一位 Master 级别的 GeoGuessr 玩家——即使用假的 EXIF 数据也没用

在这场比赛中,我试图暂时保持人类的“霸主地位”

更新:Hello HN 和 MR 的朋友们!以下是两个快速更新:

  1. 很多评论提到 o3 模型在 5 局中有 2 局使用了搜索,这样做不太公平。为了看看搜索是否真的起了关键作用,我重新在“临时聊天”(Temporary Chat)中让它猜了那两局,并确保不使用搜索。结果几乎完全一样,你可以自己去验证——我已经把新结果也放到文章里了。

  2. 我现在失业了,非常希望能找到工作。如果你有项目需要用到地图数据——或者任何有意思的东西——欢迎发邮件找我聊。

更新 2:目前这张地图已经有 100 名玩家玩过了!o3 现在依然稳居第 11 名。

Screenshot

简要概述(TL;DR)

在一次 GeoGuessr 1 对 1 对决中,OpenAI 的 o3 模型以 23,179 分对 22,054 分击败了我——一位 Master I 级别的人类玩家。它准确识别出了所有 5 个国家,并有两次猜得相距仅几百米。即使我在图片的 EXIF 中嵌入了假 GPS 坐标,模型也忽略了这个“诱饵”,依然准确定位到真实地点,证明它的能力来自视觉推理和动态网络搜索——而不是读取隐藏的元数据。


背景

几天前,Simon Willison 发了一篇帖子到 Hacker News,讨论了 o3 模型在地理定位(geolocation)方面的惊人能力。他给模型一些图片,它就能相当精准地判断地理位置。

我在评论区分享了身为 GeoGuessr 玩家的一些看法:

我在 GeoGuessr 上算是打得比较“硬核”了,想试试这个模型到底行不行。
结果让我非常震惊。
它会利用已知的关于你的各种信息来推断答案——比如我给它看一张我家附近的照片,它就直接猜到那个徒步小径的入口,并且提到它知道我住在附近。
但我也给它看了很久以前出门旅行的照片,而且不全是热门景点。它都猜得比专业人类玩家还准。欧洲、中美洲、美国各种地方的图片它都能猜到。
它的推理过程和人类有点类似:看植被、地形、建筑、道路、标牌……但又好像对这些都“全知全能”。
人类也能学到类似的方法,不过你可能需要上千场对局或者非常专门的研究,才能形成那种广泛而细致的知识。比如我就给自己做了一个有上百条细节的记忆卡片,用来记各种道路线、电线杆、防撞桩、建筑风格、车牌等等。而这些模型掌握的知识远远超过一个人脑容量能记下的极限。

那篇帖子以及我的评论在 HN 上得到不少关注,也引发了很多有趣的讨论。Simon 也在自己的网站发了一篇短文提到我的分享。

多数人都和我们一样,对模型惊人的表现感到难以置信。但也有两种质疑声音:

  1. 模型只是通过读取 EXIF 数据在装腔作势(即“LLM 在骗我们”),根本不是靠真正的推理。

  2. 模型其实没那么强,只是我们精心挑选了案例或运气好才显得厉害。

确实,这些模型在有 EXIF 数据可读时往往会用,而且可能不会主动告诉你。就像我分享的那则故事:

我曾参加了一个 AI Safety 相关的项目,目标是给 AI 图像地理定位做基准测试。[也就是那个时候开始,我迷上了 GeoGuessr!]
起初,实验结果好得离谱,连一些公开的基础模型也能猜到很难的地点,而且分辨率还不高。
后来才发现,我们提供给模型的图片文件名里就带了地理位置信息,模型直接给利用了……这是我们自己的疏忽。

然而,EXIF 那个事情被夸大了。我在测试里用的都是截图,根本不含任何元数据,但 o3 依然表现出色。

不过有人提出了新的想法:

你不如试试给图片加上伪造的 EXIF 数据,比如把一片森林的照片 EXIF 坐标改成时代广场,看它会不会中招。

或者说,我们可以搞些假元数据来试它。

这样就能看出它到底会不会去“二次确认”这些数据,或者在被故意误导时做何反应。

好嘛,那就来测试一下。我想以此证明:
1)EXIF 并非决定性因素;
2)这个模型的 GeoGuessr 水平确实很强。


我的水平

先自我介绍一下:我可不是那种顶级 GeoGuessr 神仙选手,比如 Rainbolt 或 Zi8gzag 那种。他们是职业玩家,全职创造内容,也玩了好多年。

GeoGuessr 有一个基于 Elo 的天梯分段,顶级分段叫 Champion,我所在的段位是 Master I(再往下是 Master II、Gold、Silver、Bronze 等)。
我目前还在努力冲 Champion,我历史最高 Elo 是 1188,而 Champion 大概从 1230 开始。
也就是说,我是一个 Master,但称不上“特级大师”或者“国际大师”。

我算有一定资格评判模型在 GeoGuessr 上的表现,也能判断它的思路是否合理或只是胡说。本文我也会把自己的推理过程分享出来,好让读者对比模型的推理。


测试方法

  • 地图和种子:使用 Community World 这张地图,种子 gDq4wXvsLU3oNuY8
    你也可以点这里挑战

  • 模式:No Move。我能看到完整的 Street View 全景,而 o3 只有两张 90° 截图(正对和背对)。

  • 浏览/工具:o3 开启了正常的网络访问。PNG 文件没有任何 EXIF;而在伪造元数据测试时,我使用压缩包来保留 GPS 信息。

  • 计分:标准 GeoGuessr 规则,每局 0~5000 分,总共 25000 分满分。

o3 的输出通常非常长,这里如果全贴上,文章就太臃肿了。所以我把它们独立放在链接里,感兴趣可以去看。
另外,o3 产生的 Chain of Thought(思考链)里还包含一些截图,我为节省篇幅就不贴了(它会自动裁剪多张参考图)。

Screenshot

我使用了“临时聊天(Temporary Chat)”模式,这样之前的对话不会对它的定位结果造成影响。


正面交锋

Round 1 - 保加利亚

人类玩家的思路

Screenshot

我的第一感觉是欧洲或土耳其。然后我注意到电线杆和后面那些红瓦屋顶:

Screenshot

我几乎能肯定这是保加利亚。那里常见这种真正的红瓦,水泥电线杆上带向上弯钩也是很典型。

我继续环顾四周,确认了想法。确定国家后,我就开始想大概在哪个区域。
地形看起来是丘陵地貌,风格比较偏南。
我在地图上随便挑了个看着还行的点放标。

o3 的推理

思考耗时 2 分 39 秒

o3 Geoguessr test Round 1 CoT

它的结论是:保加利亚南部——罗多彼山脉小镇 Zlatograd(斯莫梁州),具体到 Smolyan 省的 Zlatograd。

结果

Screenshot

我稍微更近一点,但差距很小,只多拿了大约 100 分。
总之我感觉开局不错。


Round 2 - 奥地利

人类玩家的思路

Screenshot

第一眼就很欧洲。看起来像瑞士或者奥地利的建筑,然后我看到车后面那个域名是 .at,那就太明显了!
好吧,模型会不会也去看这个域名呢?

接着我尝试猜奥地利哪里。看山地程度似乎不算特别高,我猜应该是在国家东部那片丘陵地区。

Screenshot

结果其实这是奥地利最西边接近瑞士和德国的地方,恰好那段地势也没那么险峻……我一下子离得 381 公里,给了 o3 机会。它能不能抓住呢?

o3 - 使用了搜索的版本

(我忘记了这一回合的详细思考记录,之后想查看却发现是“临时聊天”,已经找不到了。)

它的结论是:
多恩比恩(Dornbirn),福拉尔贝格州,奥地利,大致坐标 (47.41 N, 9.73 E),就在市中心东北几条街的范围。

为什么它猜那儿

线索

表明什么

背景的山

看上去像 Dornbirn 东面的那座山 Karren/Kapf,也在莱茵河谷附近。

建筑风格

带有 Bregenzerwald 样式的木质房子,还有红白相间的“Rheintaler Riegelhaus”,在福拉尔贝格州北部很常见。

街道设施

奥地利那种蓝底白字的街道名牌、小红白门牌、欧盟式的交通标识等等。

出租车

后窗贴着 www.taxilinder.at,查一下(它用 Google)就知道是多恩比恩。

车牌模糊区域

奥地利风格,但看不清具体区域编码。

地势

平坦的谷地正好旁边就有很高的山,和多恩比恩城市区外的地形很吻合。

综上,它认定多恩比恩,而且说只在河以北几百米处就能找到和图中非常相似的街区。

结果

Screenshot

它几乎 5K 了,因为猜得只差几百米。
这就让人很无奈——感觉“作弊”了,因为它利用了网络搜索查了那个出租车域名。不过,它确实赢了。

更新:后来我又让它再猜一遍,这次不用搜索。结果还是几乎一样,它是靠山脉轮廓而不是域名推出来的。

目前 o3 领先我大约 800 分,我急需逆袭。

o3 - 不使用搜索版本

o3 geoguessr battle austria without search

它依然把坐标精确到 多恩比恩,福拉尔贝格州,奥地利,(47.41° N, 9.74° E),只是通过分析地形山脉、房屋风格、车牌式样等信息得出的结论。下图显示它不靠搜索也能识别那座山:

Screenshot

Round 3 - 爱尔兰

人类玩家的思路

Screenshot

第一反应是爱尔兰。那种黄线在马路外侧的标线很有辨识度,再结合欧盟式车牌,可以 100% 说这是爱尔兰。

接着我发现左侧就是大海,西边一望无际,但远处似乎还能看到陆地?
也许是西海岸,不过西北方向还有其他岛屿?

我花了几分钟在地图上比对道路朝向、海岸分布,想冲击 5K。

o3 - 使用了搜索的版本

o3 geoguessr battle round 3

它推断这应该是 County Clare 的 The Burren 区域,具体是 R477 “Coast Road”,位置在 Fanore 和 Ballyvaughan 之间,紧靠 Black Head 往东南,大约在 53.120° N, -9.285° W。

o3 - 不使用搜索版本

o3 geoguessr Ireland without search

它给出的结论几乎相同:
County Clare 的 R477 沿岸公路(Burren 岩溶地貌区),在 Black Head/Fanore 附近,坐标大约 53.13 N, -9.30 W。


结果

Screenshot

它大约只差一公里,而我差 10 公里,基本是同一个量级,但它更准一点。

它的思维链里确实说到它会用搜索,但其实你看它整个推理过程,也基本是先看完所有路面、车牌、岩石、海岸,再去搜索做确认。
更新:后来看确实如此,就算不搜索,它也能拿到差不多的结论。


Round 4 - 哥伦比亚

人类玩家的思路

Screenshot

感觉是南美。路面标线有点像巴西,但车牌全是黄牌,这在哥伦比亚很常见。

我继续找更多线索,看到这张路牌背面有个哥伦比亚特有的十字:

Screenshot

那就完全确定了是哥伦比亚。接着我看地势这么平,这在哥伦比亚不多见,估计要么在安第斯山脉以东,要么在海岸区。我看见很多棕榈树,土看起来有点浅色/沙质,所以我猜是靠海。

o3 的推理

o3 geoguessr battle round 4 CoT

它判断这是“哥伦比亚加勒比平原,Ruta 25 / Troncal de Occidente 连接 Sincelejo 和 Caucasia 那片区域”。

最终猜:
“Ruta 25 在 Córdoba 省西面的 Planeta Rica 附近,大约 8.4° N, -75.6° W。”

结果

Screenshot

结果它确实比我更近,我太偏北了,其实正确点在稍南。
它在思考链里还提到另一个更近的城镇,但最后总结时却选了个相对远点的。
无论怎样,它依然拿到更高分。

现在它领先我大约 1300 分,只剩最后一局。


最后一局 - 斯洛伐克

人类玩家的思路

Screenshot

乍一看就是欧洲中东部。

看到路边这个防撞柱:

Screenshot

这只在捷克或斯洛伐克出现。地形上看是平原,但远处有山,所以两国都有可能。
然后我瞄到一个路标:

Screenshot

不太清楚地写了啥,我瞎琢磨是不是“Kosice”,那在斯洛伐克东面。但我也不知道会不会看错了……如果猜错是捷克,那就离太远。于是我就选了捷克东部,想做个保守猜测。

Screenshot

不太好……事实证明确实是 Košice 附近,那个带 M 开头的其实是 Michalovce,我看成了 H……
不过反正我是猜错了。

o3 的推理

o3 geoguessr battle round 5 CoT

它最终给出的结论是:
“斯洛伐克西南部多瑙河沿岸地区,63 号国道 (road 63),在 Šamorín 附近,也就是 48.03 N, 17.40 E。”

结果

Screenshot

它国家猜对了,但距离比我还要远一点点。我虽然国别猜错,但位置离最终点数上反而接近一丁点……

不过就算我这一局稍微扳回了点分,远远不够逆转。


最终得分

Screenshot

我总分 22,054 / 25,000。
对我而言,5 局拿到 22k 还算不错了,尤其随机地图往往我只能拿 18k 左右。
但 o3 拿了 23,179,比我高出 1,100 多分。

Screenshot

国家

人类距离 (km)

o3 距离 (km)

人类得分

o3 得分

o3 是否用搜索

1

保加利亚

54

63

4856

4755

2

奥地利

381

0.4

3336

4999

(域名查询)

3

爱尔兰

10

1.2

4984

4997

是(验证)

4

哥伦比亚

298

82

3983

4699

5

斯洛伐克

173

265

4895

4729

总分

22054

23179

(加粗表示那回合的胜利者)

o3 拿到 23,179 分,最终赢我 1,100 多。
在某几局我确实猜得更准,但它在有些局几乎做到了 5K,我根本顶不住。
它还成功地猜对了所有 5 个国家。我只是在第一局和最后一局略微领先。
在某些回合中它确实用到了搜索(尤其奥地利那局),但总体来说,即使在没用搜索的回合它也很强。
从速度上看,人类目前还占优:我通常 1-2 分钟之内就会做决定,而 o3 好几次都花了超过 4 分钟甚至 6 分钟的思考时间。

别忘了,它只看到了两张 90° 截图,还没有任何元数据,也没额外提示,就能有这水平。


EXIF 伪造测试

正如开头说的,我尝试给截图添加假的 EXIF GPS 信息,看看能不能坑到它。

结果发现,这事儿本身比我想的还复杂……

我先用 exiftool 把一张真正含 GPS 的图片元数据替换到截图里,然而模型并不会读取。它说浏览器上传会把 EXIF 数据剥离了,压根看不到。
我只好把图片打包成 zip 后上传。这样它才拿到 EXIF 坐标。

第一次尝试,模型压根没提到 EXIF 数据,我追问后它才说:

我从 JPEG 里读到这段 EXIF GPS,坐标看起来在曼谷郊区,这明显和画面里的安第斯山风光对不上。要么是你把截图二次编码了,要么是相机当时定位不准。

好吧……那么我尝试另一种方式,把 EXIF 详细信息用 exiftool 打印出来,再以文字形式贴到聊天里。
模型的反应是:

哦,你想骗我?EXIF 里写着 43°N,尼康 P6000 相机,但这场景明显是个冷杉、桦树混生的北欧秋季景致,根本不可能是托斯卡纳(Tuscany)什么的……

它还列了个表:

线索

显示了什么

森林种类、地被、落叶树枝等

典型的北欧景观

没有中央黄线,只有两道长虚线边缘

挪威那种县级道路风格

防撞栏样式

挪威公路部门常见设计

桁架桥

1960 年代以后挪威常见的预制桥梁结构

河谷地形

中部挪威典型场景

Google 水印

说明是 Street View 而非尼康 P6000 拍的

然后它一口咬定这是挪威 Trøndelag 省某地的公路桥,连河流名字都说得出来……

所以从我的两次测试看,无论是伪造 EXIF 还是在 Chat 里提供假元数据都不顶用。o3 根本不吃这一套,或者说它会比对图片实际内容,一旦不符,它就知道 EXIF 有问题,也就无视了。

当然,我也不知道别人怎么让模型自动去读取图片里的 EXIF 并上钩的。如果你有成功骗过它的方法,欢迎告诉我。但至少对我来说,它没有被假 EXIF 误导。


总结

它的思考链是否可信?
大部分时候看起来挺合理的。确实有时它会花大量篇幅在些无关紧要的小事上,比如广告牌,但是总的来说,它判断路标、车牌、路面线之类的描述都是靠谱的。
最后它能猜得又快又准,应该确实是凭这些信息推理出来的。

如果它用了其他方式,那绝对不是读取图片里的 EXIF 数据(因为我特地伪造了,还被它识破)。它确实会尝试做网络搜索,比如奥地利那一回合就查到了具体城市,爱尔兰那局可能也是辅助确认。但同样的,在不搜索时它依旧一样准。

所以最终结论:

  1. o3 模型并不是靠读取 EXIF 元数据在骗人。它确实具备不输 Master I 水平的人类玩家的地理定位能力。(至少从我这 20 来局的体验看是这样。)

  2. 在速度上,人类依旧比较快——我通常不到两分钟就猜完,而它要 4 分钟甚至 6 分钟以上。

  3. 伪造 EXIF 数据并不能让它“中招”。

至于你觉得这是一个科技上的奇迹,还是有些“赛博·反乌托邦”,那就见仁见智了。但它绝非单纯的“障眼法”。它是真真切切能“看图猜地点”的。