EXIFがなければ、写真の位置はわからない。
長年そう思っていた。GPSタグが入っていなければ、場所の情報は写真の中には存在しない、と。
ところが2023年、その前提を静かに覆すモデルが公開されていた。
GeoCLIPという。
GeoCLIPとは何か
GeoCLIPは、フロリダ大学のVicente Vivancoらが2023年のNeurIPS(神経情報処理システム国際会議)で発表した、画像から緯度経度を推定するモデルだ。
CLIPという、OpenAIが開発した「画像とテキストを同じベクトル空間に射影するモデル」をベースに、画像とGPS座標のペアで対照学習を行っている。
学習データは、世界中で撮影された470万枚の写真とその位置情報。
その結果、モデルは画像の視覚的特徴から場所を推定できるようになった。
実際に動かしてみた
インストールは一行だ。
pip install geoclip
コードも数行で済む。
python
import sys
from geoclip import GeoCLIP
from geoclip.model.image_encoder import ImageEncoder
def patched_forward(self, x):
vision_out = self.CLIP.vision_model(x)
x = vision_out.pooler_output
x = self.CLIP.visual_projection(x)
x = self.mlp(x)
return x
ImageEncoder.forward = patched_forward
model = GeoCLIP()
path = sys.argv[1] if len(sys.argv) > 1 else "image.png"
top_gps, top_prob = model.predict(path, top_k=5)
for i in range(5):
lat, lon = top_gps[i]
prob = top_prob[i]
print(f"#{i+1} 緯度: {lat:.6f}, 経度: {lon:.6f} 確率: {prob:.4f}")
print(f" https://maps.google.com/?q={lat},{lon}")
※ transformers 5.x との互換パッチを含む。
試しに、東京スカイツリーの空撮写真を入力した。

結果は以下のとおりだ。
#1 緯度: 35.712166, 経度: 139.811996 確率: 0.0306
#2 緯度: 35.710037, 経度: 139.810699 確率: 0.0293
スカイツリーの実際の座標は、緯度35.7101・経度139.8107。

EXIFなし、テキスト入力なし、空撮写真一枚で、誤差10メートル以内に収まった。
なぜこんなことができるのか
GeoCLIPは、画像を512次元のベクトルに変換する。
そのベクトルが、GPS座標のベクトルと近ければ近いほど「この画像はその場所で撮られた」と判断する。
470万ペアの学習を経た結果、モデルの内部には「東京スカイツリーの周辺はこういう視覚特徴を持つ」という情報が、明示的なルールではなく、ベクトル空間の構造として焼き付いている。
人間でいえば、35年間現場を歩いて蓄積した「この風景は○○に違いない」という直感に近い。
ただし、人間の直感と違うのは、数値として出力されるという点だ。
精度の限界と現実的な使い方
驚異的な結果を出す一方で、明確な限界もある。
浜松のアクトタワーで試したところ、緯度はほぼ正解(誤差200メートル以内)だったが、経度が約200キロ西の大阪に飛んだ。
理由は単純だ。
「高層ビルが立ち並ぶ日本の都市」という視覚特徴は、大阪も浜松も共通している。学習データに浜松の写真が少なければ、よく似た都市として大阪を選ぶ。
GeoCLIPは「世界のどこか」を当てるモデルだ。世界的なランドマークや、地域固有の景観が写っている写真では高精度を発揮する。しかし、どこにでもある住宅街や地方都市の一般的な建物では、国・地域レベルの推定にとどまる。
| 向いている用途 | 向いていない用途 |
|---|---|
| 世界的ランドマークの特定 | 地方都市の一般的な建物 |
| 「どの国で撮られたか」の判定 | 「どの市区町村か」の特定 |
| 地域特有の景観・植生の識別 | 室内写真・接写 |
GIS・リモセンとの接続
GeoCLIPに続いて、衛星・航空画像に特化したGeoRSCLIPというモデルも公開されている。
こちらはLandsat・Sentinelなどの衛星画像を直接入力できる。「スギ壮齢林」「ヒノキ若齢林」「荒廃農地」などのテキストで衛星画像を検索することが理論上可能だ。
現在のNDVI差分解析は数値で変化を捉えるが、GeoRSCLIPを組み合わせれば「その画像が何を写しているか」をテキストで説明できるようになる。
J-Creditの検証レポートに「数値+画像の意味解釈」をセットで出せるなら、第三者検証としての説得力は大きく変わる。
「写真は削除しても残る」という話
以前、「削除しても遅い——写真は数値になって残り続ける」という記事を書いた。
CLIPによって、写真はアップロードされた瞬間にベクトルへ変換される。そのベクトルには、EXIFがなくても場所の情報が含まれうる。
GeoCLIPはその具体的な実例だ。
EXIFを消せばプライバシーは守られる——という前提は、GeoCLIPのようなモデルの前では成立しない。
軍事・安全保障の現場がこの技術に注目しているのは、想像に難くない。
おわりに
pip install geoclipの一行で、写真から緯度経度を取り出せる時代になった。
精度に限界はある。使いどころを選ぶ必要がある。しかしそれは、すべての道具に言えることだ。
重要なのは、こういう技術が「論文の世界の話」ではなく、今日のWindowsのコマンドプロンプトで動くという事実だ。
GISと画像AIの境界は、もうほとんど残っていない。


コメント