放弃识图搜索的异类方案
开源情报安全专家 Sofia Santos 发布了一张由无人机拍摄的海滩度假村照片,要求挑战者找出度假村名称、岛屿坐标以及相机朝向。照片没有包含任何 GPS 经纬度或设备型号信息,画面中只有椰树、白沙滩以及远方的三块陆地。
大部分解题者的第一反应是打开逆向图像搜索引擎,尝试用模型识别沙滩或建筑结构。开发者 yassa9 选择了另一套解法:关闭搜索框,写下一串算法代码,将全球 882MB 的海岸线矢量数据全部载入显卡显存中。
在笔者看来,通用图像识别模型在高度同质化的自然景观面前极易失灵,热带海滩的视觉特征往往会诱发大量的误报。将搜索降维到确定性几何学,成为摆脱概率陷阱的唯一路径。
图:Sofia Santos 发布的 OSINT 挑战原图,画面中包含三块独立岛礁。来源:yassa9 博客
把三块岛礁转化为地理指纹
照片画面中清晰可见三块陆地:前景的度假村小岛 P0、右侧的平坦小岛 P1,以及左侧带有山峰起伏的岛屿 P2。这三个物理点在二维平面上构成了一个特定的三角形。
三角形的三条边长比例与三个内角数值,构成了不可伪造的几何特征。考虑透视拉伸与镜头畸变后,算法为这套几何特征设定了 ±20% 的容差区间,使其成为一套可被机器遍历的「地理指纹」。
处理数据的第一步是载入 OpenStreetMap 的全球海岸线矢量数据集 land-polygons-split-4326,原始文件大小为 882MB。为了防止计算量爆炸,筛选管线采取了分层压缩策略:
通过热带植被特征将搜索纬度锁定在南北纬 ±30° 之间,存活多边形数量从百万级骤降至 141,131 个。这一步筛选去除了全球 68% 的陆地多边形,将计算边界收缩在热带物理带内。
随后执行 5km 密度采样,将节点数压缩至 51,576 个,再通过 20km 空间聚类划分出 23,500 个岛屿簇。将各簇内的节点进行三点组合枚举后,最终生成了 80,690,777 个候选三角形。8069 万个候选组合把原本依赖直觉的经验搜寻,转化为标准的计算穷举问题。
图:经过几何筛选与 CUDA 内核加速后落入容差范围的候选地点分布。来源:yassa9 博客
显卡在 204 毫秒内的暴风检索
在常规 CPU 上遍历 8069 万个几何组合需要消耗数十分钟,这构成了工程落地的最大瓶颈。yassa9 编写了专用的 CUDA 内核,把每一个候选三角形分配给一个独立的 GPU 计算线程。
算法在售价仅千元的消费级显卡 NVIDIA RTX 3050 上运行,该显卡仅具备 5.2GB 显存。CUDA 内核完成全部 8069 万次三角形形状匹配的实际耗时仅为 204.1 毫秒,瞬间筛除了 99.8% 的无效组合,最终保留 158,784 个候选三角形。
显卡并行流处理器极适合处理无关联的独立几何检验,0.2 秒的内核运行时间将搜寻效率提升了数千倍。
层层收紧的数据筛选网
158,784 个候选目标依然超出了人工核验的极限,需要构建多维度的数据筛选管线逐级过滤。算法首先执行空间去重,将重复计数的相邻三角形合并,幸存目标缩减至 8,915 个。
紧接着是开阔水域检查,通过矩形边界框剔除内陆湖泊与密集群岛,剩余 948 个节点。为了匹配照片中珊瑚礁环绕的特征,算法引入了 Polsby-Popper 紧凑度指标计算海岸线周长与面积比,将候选数量进一步压低至 213 个。紧凑度计算成功剥离了形状极其不规则的碎裂海岸,保留了具备大面积环礁特征的岛礁。
随后进行的椭圆填充率过滤将目标减少至 137 个。此时算法接入遥感卫星数据,利用 NDVI 卫星植被指数对候选点进行绿度检验,设定阈值为 0.6。高植被指数瞬间过滤掉裸露沙洲与无植被人工构筑物,幸存候选降至 66 个。
最后一项自动化关卡是 Copernicus DEM 30m 高程数据检索。算法对比照片中 P2 岛屿的山峰起伏,要求候选地点必须具备特定高度的山体,最终将范围锁定在 26 个候选点。30 米分辨率的高程匹配消除了大量平坦的低海拔珊瑚礁,完成了自动化管线的最后一击。
人眼收尾与军工级算法的碰撞
自动化管线将 8069 万个选项压缩到了 26 个,剩下的核验交由人工完成。yassa9 按照筛选优先级依次查看卫星图,在比对到第 8 个候选点时,成功锁定目标。
最终确定的位置为密克罗尼西亚联邦的 Oan 岛(坐标 7°21’48.4”N 151°45’20.7”E)。照片中的度假村即为 Oan 度假村,无人机拍摄时的镜头视角为正西北方向 324.97°。
在 Hacker News 社区讨论中,许多技术人员指出这套解法本质上重现了巡航导弹的 TERCOM(地形轮廓匹配)导航原理。美国 NASA 喷气推进实验室(JPL)在 Mars 2020 毅力号火星车降落时,也采用了类似的几何特征匹配算法,将着陆椭圆区域缩小了一个数量级。
这项个人实验验证了一个事实:无论是在几十公里外的岛屿定位,还是在火星表面的精准着陆,利用确定性几何约束去抹平视觉模糊性是极其可靠的技术路径。
算力抹平经验壁垒
从 882MB 的海岸线数据到 204 毫秒的显卡计算,在笔者看来,这场寻找无名荒岛的试验展示了现代工程解题的威力。
照片中的三座岛礁轮廓,本质上就是写在地球表面的一串几何经纬。只要将物理特征转化为可计算的数据结构,庞大的未知空间就可以在算力的轰鸣声中被迅速压缩。
当 GPU 暴力搜索遇上严格的几何约束,传统依靠经验与幸运的人眼认路模式正在被机器的穷举算法彻底重构。
参考链接:
- yassa9 博客:Geolocating an Island Photo
- Hacker News 社区讨论:Geolocating an Island Photo
- gralhix OSINT 挑战:Challenge #004