概要

Google DeepMindが公開したAlphaEarth Foundations Satellite Embeddings(AEF)という衛星画像の基盤モデルがあります。地球上のあらゆる陸地を10m解像度・64次元のベクトル(embeddings)で表現するものです。2017年から年次データがGoogle Earth Engine上で無償公開されており、2025年のデータが2026/3/11に公開されました。

2025年に発表された論文では、土地被覆分類(米国・欧州)、農作物マッピング(カナダ・エチオピア・サブサハラアフリカ)、樹種分布推定、油ヤシプランテーション検出、蒸発散量推定、土地被覆の経年変化検出など15種類のベンチマークで評価されており、既存手法を広く上回る性能が報告されています。

最近は衛星画像周りを色々と調べていて興味深い題材だったので、今回はSatellite Embeddingsを使った検証を行いたいと思います。特に教師なしの文脈で人間も解釈しやすいタスクとして、地上のある程度の大きさを持つ構造物の検出を近似最近傍探索(ANN)により検証してみたいと思います。

AlphaEarth Foundations Satellite Embeddingsとは

AEFはGoogle DeepMindが開発した衛星画像基盤モデルで、10m×10mのピクセルごとに64次元のベクトルを生成します。入力にはSentinel-2(光学)、Landsat 8/9、Sentinel-1(SAR)の3つの衛星データを使い、学習ターゲットにはLiDAR、DEM、気象データ、米国の土地被覆データ(NLCD)や農作物分類データ(CDL)など多様なデータソースが使われています。

Satellite Embeddingsの性質

Satellite embeddingsの重要な性質として、ベクトルが単位球面上に正則化されているため、ベクトル間の内積がそのままコサイン類似度として解釈できます。また線形合成可能性(linear composability)という性質があり、空間的に平均化してもセマンティックな意味が保持されます。つまり、複数ピクセルの平均embeddingsを計算しても、それは「そのエリア全体を代表するembeddings」として意味を持つということです。これらの性質は、自然言語処理におけるword2vecと構造的に似ていますね。word2vecが単語の分布的意味論(distributional semantics)を固定長ベクトルにエンコードしたように、AEFは土地被覆のスペクトル・空間・時間的特性を64次元ベクトルにエンコードしています。いずれもベクトル間の内積が類似度として機能し、加算平均が意味を保存するという性質を共有しています。

詳しくはAEFの論文やGoogle Earth Engineの公式チュートリアルを参照してください。

構造物を学習しているわけではない

AEFは明示的に構造物分類を学習しているわけではなく、衛星画像を主たる入力としています。都市域に関する学習ターゲットとしてはNLCDがありますが、NLCDは都市域を不透水面の割合で4段階に分類するだけで、空港・港・スタジアムといった構造物の区別は含みません。にもかかわらず、embeddingsが衛星画像のみで構造物レベルの意味情報を暗黙的に獲得していることを示す報告がいくつかあります。

  • Element 84の分析: フィラデルフィア上空で全64次元を個別に可視化したところ、第26次元が空港ピクセルに強く反応することを発見。ボストンやリスボンの空港でも同様のパターンが確認されている
  • Google EEの穀物サイロ検索: カンザス州の穀物サイロをもとに他の穀物サイロを発見する事例
  • Google Earthの公式ブログ: “Each 10-meter pixel’s embedding also captures information about the area around that pixel, so that areas that appear very similar when considered in isolation, e.g., the asphalt surfaces of a parking lot or a freeway, will have quite distinct embeddings.“とあるように、例えば同一のアスファルトの道であっても周辺の空間のコンテクストがembeddingsに反映される

こうした報告から、AEFは構造物の分類を直接学んでいないのに、空間パターンとして構造物の特徴をエンコードしている可能性があります。

実装

それでは実際にSatellite Embeddingsのデータを利用して、ANNによる類似構造物検出を実装します。ソースコードはGitHubで公開しています。

https://github.com/yagays/alphaearth_embeddings

データパイプライン

全体の構成は以下の通りです。

Earth Engine API → 100m/pixel抽出 → L2正規化 → Faiss Index構築

まずEarth Engine(EE) APIで北海道全域(139.3°E〜145.9°E, 41.3°N〜45.6°N)の2025年版Satellite Embeddingsを100m/pixelスケールで抽出しました。対象地域を北海道に限定しているのは、範囲を広くするほどEEへのリクエスト頻度とデータ量が増えるため制限したかったのと、結果を解釈しやすい範囲に留めたかったからです。

AEFのネイティブ解像度は10mですが、Earth Engine側で100mにリサンプリングして取得しています。このリサンプリングの過程で単位ベクトル性が崩れるため、抽出後にL2正規化で単位ベクトルに戻しています。なお、sampleRectangle APIのピクセル数上限(262,144)に対応するため、300×300ピクセル(≈30km四方)のタイルに分割して処理しています。

抽出したピクセルをそのままFaissでインデックス化しました。100m/pixelでの抽出なのでグリッド集約は行わず、各ピクセルが1ベクトルとしてインデックスに格納されています。

項目
抽出スケール 100m/pixel
ベクトル数 15,662,989
Faissインデックスサイズ 3.8GB

Web UI

フロントエンドはReact + TypeScript + react-leaflet、バックエンドはFastAPIを用いた検索ツールを構築しました。

検索フローは以下の通りです。

  1. 地図上で矩形を描画してクエリ領域を指定
  2. バックエンドがbbox内の全インデックスセルのembeddingsを取得し平均化
  3. 平均embeddingsを再正規化
  4. Faiss kNN検索でTop-k取得
  5. 結果を地図上のマーカーとミニマップ付きリストで表示

検索結果ではクエリ地点の近隣セルが上位を占めてしまうことがあるため、クエリ範囲自体を結果から除外する機能と、クエリ地点から一定距離以内の結果を除外する最小距離フィルタを実装しています。

具体事例

今回は6種類の構造物で類似検索を試しました。それぞれの結果を検索画面のスクリーンショットとともに見ていきます。中央の地図の青色の点が検索クエリの地点、赤色の点が類似度が高く候補となった点(k=30)、そして右側が類似度の降順でヒットした地点とその衛星画像を表示しています。なお、この衛星画像はESRIによるもので、AEFの学習ソースではない点に留意ください。

空港 (一部成功)

空港の検索結果

新千歳空港の滑走路をクエリに実行した結果です。丘珠空港や旭川空港、女満別空港、釧路空港、帯広空港など、北海道内の主な空港が類似地点として検出できているのがわかります。一方で検索範囲内には函館空港や稚内空港など他にもいくつか空港が存在するため、Recallを上げるためには候補数をもう少し上げる必要がありそうです。

滑走路は幅45-60m長さ2,000-4,000mほどで空港全体としてはkm規模の構造になるので、embeddingsが十分に特徴を捉えられるスケールで、かつ道路などとは違った独自の外観をしているのが成功の要因と言えそうです。Element 84の分析で空港に関連する次元が発見されていることとも整合する結果でした。

太陽光発電所 (成功)

太陽光発電所の検索結果

太陽光発電所の検索は、ヒットした地点の衛星画像を見ると検出精度が高いと言えそうです。均一に敷設されたソーラーパネルは周辺の農地や森林とスペクトル特性が大きく異なるため、非常に特徴的な人工表面を形成しているからだと思われます。

ゴルフ場 (成功)

ゴルフ場の検索結果

ゴルフ場の検索も太陽光発電所と並んで高い精度でした。ゴルフ場は数十haの面積を持ち、フェアウェイやグリーンの独特の形状や植生パターンがわかりやすく、周囲の森林や農地とは明確に異なるのがembeddingsに強く反映されているようです。

港湾施設 (一部成功)

港湾施設の検索結果

小樽港をクエリとした検索では、他の港湾施設を正しく検出できました。ただし、石狩のLNG貯蔵施設であったり海岸の消波ブロックがある領域が結果に混ざっていました。

港湾施設特有の海と人工構造物の境界というパターンを捉えていると思われますが、グリッドの範囲指定では内陸側の荷役設備や倉庫群などもクエリに含まれるほか、海上の特徴も埋め込まれていると思われるので、範囲選択の工夫によってある程度改善が見込まれそうです。

競馬場 (失敗)

競馬場の検索結果

競馬場の検索はうまくいきませんでした。今回は札幌競馬場を検索クエリにしていますが、普通の市街地が多く検出される結果となりました。

理由として考えられることとして、トラックの楕円構造などは特徴的ではあるものの、それ以外の場所に芝生などの緑地が多かったりトラック内部の建物の様子が一般の市街地と類似しているため、結果としてトラックの要素が薄まってしまったのかもしれません。ただ、北海道にはこうした楕円形の競馬場は少数しか存在せず、そうした正解とみなせる地点の少なさも影響していそうです。

ダム (失敗)

ダムの検索結果

ダムの検索も誤検出が多い結果となりました。定山渓ダムをクエリとして大きな堰を検出できないかと試しましたが、通常の湖の岸辺や自然の水際が多数含まれています。

構造物としての大きさは十分なものの、ダムのコンクリート部分以外の領域にある湖面や湖畔の情報により情報が薄まってしまったのだと考えられます。また、港湾施設の事例と比較すると、やはりダムの構造物としての形状的な特徴が捉えづらいというのもありそうです。

結果と考察

具体事例まとめと成否の要因

6事例をまとめると、以下のようになります。

構造物 典型的サイズ 結果
空港 km規模 成功(一部誤検出)
太陽光発電所 数百m四方 成功
ゴルフ場 数十ha 成功
港湾施設 数百m〜km 成功(一部誤検出)
競馬場 約52ha(札幌競馬場) 失敗
ダム 堤体幅数十m 失敗

これらの結果から、Satellite Embeddingsを使ったANNの構造物検出の特徴をまとめてみます。

成功しやすい条件:

  • 構造物が面的な広がりを持つ(太陽光発電所、ゴルフ場)
  • 構造物特有の空間パターンが十分なピクセル数で表現される(ゴルフ場の植生モザイク、空港の滑走路-誘導路パターン)

失敗しやすい条件:

  • 特徴的な構造が捉えにくい(競馬場のトラック、ダムの堤体)
  • 構造物の周辺環境の影響を受けやすい(競馬場のトラック内部、ダムの湖面)

近隣セルの高類似度問題

さて、今回色々とクエリを検証する中で、クエリ地点の近隣にあるセルが常に高い類似度を示す傾向がありそうでした。特に空港の滑走路はそうした傾向が出やすく、おそらく隣接する場所は似た土地被覆を持っているためだと思われます。加えて、ViTのattentionが隣接ピクセルの情報を含むことや、今回の実験で扱いやすいように100mリサンプリングによって空間的な平滑化をしたことも影響していそうです。

Satellite Embeddingsは構造物の特徴を捉えられているか?

今回の少数の事例だけで全てを判断できませんが、Satellite Embeddingsは人間が解釈可能な構造物に対してある程度納得できる類似度を出せることがわかりました。衛星画像からそこに含まれている構造物の特徴をうまくベクトルとして埋め込んでいると言っていいのではないでしょうか。

もともとAEFのSatellite Embeddingsは「個別の構造物を分類する」ためのものではなく、土地利用ゾーンの空間パターンとスペクトル特性を捉えるものですし、下流タスクに使用するためのベースとなる特徴量として使う側面が多いと思われますが、単体でもこうした評価ができるのは、一時期の自然言語処理におけるword2vecとその派生の流れを想起させますね。

まとめ

今回はAlphaEarth Satellite Embeddingsを使って、北海道全域(約1,566万ベクトル、100mグリッド)のFaissインデックスによる類似構造物検索を実装し検証しました。6種類の構造物を試した結果、太陽光発電所とゴルフ場で高い精度、空港と港湾で良好な精度、競馬場とダムでは失敗という結果でした。成否を分ける要因としては、構造物の面的な広がり、そして空間パターンの特異性の2点が考えられます。

教師あり学習のようにアノテーションを用意する必要がなく、地図上で矩形を描画するだけで検索できる手軽さは、探索的なユースケースでの大きな利点です。高精度を安定して出すのは難しいですが、ラベルなしで「似た場所」を探すQuery-by-Exampleのタスクとしては十分に実用的だと感じました。

今回は北海道かつ1年分という限定したデータのみを利用しましたが、より時間的に広範囲(2017年〜2025年)のembeddingsを使った年次変化の追跡や、日本全域や地球全体への拡張などをすると、より面白い結果が得られそうです。ただし、それに比例してダウンロードが必要なデータ量が増大します。Earth Engine APIは2026/04/27より非商用プロジェクトに月間EECU時間のquota制が導入され、超過すると性能が制限されるほか、GCP/AWSがホストするデータもエグレス(転送料金)が必要になるため、データの入手自体に金銭的コストがかかる点は考慮しなければなりません。