はじめに
衛星画像の解析は、かつては専門のGISソフトウェアと高価なデータを必要とする分野だった。2026年現在、Pythonのオープンソースライブラリとクラウドプラットフォーム、無料公開の衛星データを組み合わせることで、個人のノートPCからでも衛星画像の機械学習解析が可能になっている。
本記事では、衛星データ×機械学習をPythonで始めるための基礎知識を整理する。
主要Pythonライブラリ
ラスター・ベクター操作
| ライブラリ | 用途 |
|---|---|
| Rasterio | GeoTIFFの読み書き。バンドデータをNumPy配列として取得 |
| GeoPandas | ベクターデータ(Shapefile, GeoJSON)の操作。空間結合・座標変換 |
| Xarray + rioxarray | 多次元配列(時系列衛星データ)の操作。時系列スタック処理に最適 |
| GDAL/OGR | 地理空間データ変換の基盤。Rasterio等の内部で使用 |
衛星データAPI
| ライブラリ | 用途 |
|---|---|
| sentinelhub-py | Sentinel Hub APIの公式Python SDK。Sentinel・Landsat・MODISのダウンロード・処理 |
| eo-learn | Sentinel Hub開発のEOワークフローフレームワーク。クラウドマスキング・特徴抽出・分類のパイプライン構築 |
| Google Earth Engine Python API | ペタバイト規模の衛星データをクラウドで処理。import ee; ee.Initialize() で利用開始 |
深層学習
| ライブラリ | 用途 |
|---|---|
| TorchGeo | PyTorch公式の地理空間ライブラリ。30以上のデータローダー、120以上のベンチマークデータセット、110以上の事前学習済みモデル。マルチスペクトル画像の事前学習モデルを提供する初のDLライブラリ |
| spyndex | 数百のスペクトル指数を一括計算。NumPy・Pandas・Xarray・Earth Engineオブジェクトに対応 |
出典: TorchGeo公式 / Rasterio公式 / eo-learn公式
衛星画像×MLの主要タスク
| タスク | 説明 | 代表的アーキテクチャ |
|---|---|---|
| 土地利用分類(LULC) | ピクセルごとに「都市」「森林」「農地」「水域」等を分類 | U-Net, DeepLabV3+, ViT |
| 物体検出 | 船舶、建物、航空機、車両を検出 | Faster R-CNN, YOLO |
| 変化検出 | 2時点の画像比較で都市拡大・森林伐採・洪水被害等を検出 | Siamese Network, UNet-LSTM |
| 作物分類 | 農地の作物種類を分類。精密農業や食料安全保障に活用 | CNN + LSTM(時系列), Random Forest |
| 雲除去 | 光学衛星画像から雲を除去・補完 | GAN, Autoencoder |
| 超解像 | 低解像度画像を高解像度に変換 | SRCNN, ESRGAN |
スペクトル指数 — NDVI・NDWI・NDBI
衛星のマルチスペクトル画像から、特定の現象を数値化する「スペクトル指数」が広く使われる。
NDVI(正規化植生指数)
植生の量・健康状態を測定する最も基本的な指数。
NDVI = (NIR - Red) / (NIR + Red)
値は-1.0〜+1.0。0.2〜0.8が健全な植生。Sentinel-2では (B8 - B4) / (B8 + B4)。
NDWI(正規化水指数)
水域の検出(湖・川・湿地)に使用。
NDWI = (Green - NIR) / (Green + NIR)
Sentinel-2では (B3 - B8) / (B3 + B8)。
NDBI(正規化建築指数)
市街地・建築物の検出に使用。
NDBI = (SWIR - NIR) / (SWIR + NIR)
Sentinel-2では (B11 - B8) / (B11 + B8)。
Pythonでの計算例
import rasterio
import numpy as np
with rasterio.open("sentinel2.tif") as src:
nir = src.read(8).astype(float) # B8 (NIR)
red = src.read(4).astype(float) # B4 (Red)
np.seterr(divide='ignore', invalid='ignore')
ndvi = (nir - red) / (nir + red)
# spyndexで複数指数を一括計算
import spyndex
idx = spyndex.computeIndex(
index=["NDVI", "NDWI", "NDBI"],
params={"N": nir, "R": red, "G": green, "S1": swir1}
)
無料衛星データソース
| データ | 解像度 | 再訪頻度 | 特徴 |
|---|---|---|---|
| Sentinel-2 | 10m(RGB, NIR) | 5日 | 13バンド。植生・土地利用に最適 |
| Landsat | 30m | 16日 | 40年以上の連続記録。長期変化分析に |
| MODIS | 250m-1km | 1-2日 | 広域・高頻度。気候変動・火災検出 |
| Sentinel-1 | 5-20m | 6日 | SAR(レーダー)。全天候型。無料 |
ダウンロード方法
| プラットフォーム | 特徴 |
|---|---|
| Copernicus Browser | Sentinel全シリーズ。ブラウザからGeoTIFFダウンロード |
| USGS EarthExplorer | Landsat・MODIS・ASTER等40年分 |
| EO Browser | Sentinel-2, Landsat等。JPEG/KMZ/GeoTIFF出力 |
クラウドプラットフォーム
| プラットフォーム | 提供元 | 特徴 | 料金 |
|---|---|---|---|
| Google Earth Engine | 最も成熟。ペタバイト規模。自動補正・雲除去済みデータ | 研究用無料 | |
| Microsoft Planetary Computer | Microsoft | Azure基盤。STAC標準対応。JupyterHub環境 | 無料(要申請) |
| AWS Open Data | Amazon | S3上にSentinel・Landsat等。従量課金 | データ無料、計算は従量課金 |
初心者向け推奨: Google Earth Engineが最もドキュメント・コミュニティが充実している。
マルチスペクトル vs ハイパースペクトル
| マルチスペクトル | ハイパースペクトル | |
|---|---|---|
| バンド数 | 3-20 | 数百 |
| バンド幅 | 広い(数十nm) | 狭い(10-20nm) |
| 空間解像度 | 高い(10-30m) | 低い(30m以上が多い) |
| 代表衛星 | Sentinel-2, Landsat | PRISMA, EnMAP |
| 用途 | 植生分類、土地利用、水域検出 | 鉱物識別、汚染物質検出 |
Sentinel-2の主要バンド
| バンド | 波長帯 | 解像度 | 用途 |
|---|---|---|---|
| B2(Blue) | ~490nm | 10m | 大気散乱、水深 |
| B3(Green) | ~560nm | 10m | 植生のピーク反射 |
| B4(Red) | ~665nm | 10m | 葉緑素吸収 |
| B5-B7(Red Edge) | 705-783nm | 20m | 植生の健康状態 |
| B8(NIR) | ~842nm | 10m | NDVI、バイオマス |
| B11-B12(SWIR) | 1610-2190nm | 20m | 土壌水分、鉱物、建築物 |
学習リソース
無料コース
- EO College — Introduction to ML for Earth Observation — Python + TensorFlow。ビデオ+実践演習
- UN SDG:Learn — ML on Satellite Imagery — 18時間。Jupyter Notebook形式
- Carpentries — Geospatial Python — Rasterio・GeoPandasの基礎ハンズオン
- NASA Earthdata Trainings — NASAの衛星データ活用チュートリアル
Kaggleコンペティション
- Planet: Understanding the Amazon from Space — アマゾン熱帯雨林の多ラベル分類
- DSTL Satellite Imagery Feature Detection — 建物・道路・水域のセマンティックセグメンテーション
- satellite-image-deep-learning/datasets(GitHub) — 衛星画像DL用データセットの包括的リスト
NVIDIA — 衛星・気象AIのオープンソース化
NVIDIAは2025-2026年にかけて、衛星データ・気象AIの分野で大規模なオープンソース化を進めている。
Earth-2: オープンソース気象AIプラットフォーム
2026年1月、米国気象学会で発表されたEarth-2は、世界初の完全オープンな気象AIプラットフォーム。5つのモデルがオープンソースで公開されている。
| モデル | 機能 |
|---|---|
| Earth-2 Medium Range(Atlas) | 70以上の気象変数で15日間予報 |
| Earth-2 Nowcasting(StormScope) | 衛星+レーダーデータで0-6時間のkm解像度局地予測 |
| Earth-2 CorrDiff | 大陸スケール→地域スケールのダウンスケーリング(従来比500倍高速) |
| Earth-2 FourCastNet3 | アンサンブル予報(従来比60倍高速) |
| Earth-2 HealDA | 大気初期条件の生成(スパコンで数時間→数秒) |
コードはGitHub: NVIDIA/earth2studioとGitHub: NVIDIA/physicsnemoで公開。モデルはHugging Faceからも取得可能。
採用機関: イスラエル気象局、台湾中央気象署、The Weather Company、米国立気象局、TotalEnergies、AXA、S&P Global Energy。
出典: NVIDIA Blog — Earth-2 Open Models(2026年1月) / KQED — NVIDIA Open-Source Weather Models
GPU加速の地理空間処理 — RAPIDS / cuSpatial
NVIDIAのGPU加速データサイエンスエコシステムRAPIDSには、衛星データ処理に直接使えるライブラリがある。
- cuSpatial: CUDA加速GISライブラリ。空間演算で10倍〜10,000倍の高速化
- cuDF: GPUデータフレーム。Google Colabにもプリインストール済み
- cuML: scikit-learnをGPU加速
NASAのDeepSatフレームワークは217,088 CUDAコアで65TBの衛星画像を分類処理した実績がある。
Prithvi-EO-2.0 — NASA/IBMの地球観測基盤モデル
NVIDIAのハードウェアで訓練されたPrithvi-EO-2.0は、6億パラメータの地球観測基盤モデル。NASAのHarmonized Landsat/Sentinel-2アーカイブから420万のグローバル時系列サンプルで学習。240基のNVIDIA A100 GPUで訓練され、Hugging FaceとGitHubでオープンソース公開。
用途: 土地利用追跡、災害監視、収量予測、環境分析。
軌道上GPU — 宇宙でのエッジAI
NVIDIAのGPUは宇宙でも稼働を始めている。
- Starcloud-1(2025年11月打ち上げ): NVIDIA H100を搭載した軌道上データセンター。宇宙で初めてLLMを訓練。Capella SpaceのSAR画像で捜索救助・火災検出を実行
- Planet Labs Pelican-2(2025年1月打ち上げ): NVIDIA Jetsonで軌道上AIを処理。約1時間でAI分析済み画像を配信
- OroraTech: JetsonをCubeSatに搭載し60秒以内の山火事検出を実現
- Jetson AGX Thor(2025年8月): Blackwellアーキテクチャ、2,070 FP4 TFLOPS。宇宙エッジAI向けの次世代プラットフォーム
NVIDIAは「軌道データセンターシステムアーキテクト」(年収$224K-$356K)の求人も公開しており、宇宙コンピューティングへの本格参入を示唆している。
出典: CNBC — Starcloud(2025年12月) / Planet Labs × NVIDIA Jetson / Cloud News — NVIDIA Orbital Data Centers
まとめ
衛星データ×機械学習は、3つの要素が揃ったことで急速にアクセシブルになった。
- 無料データ — Sentinel-2(10m, 5日周期)、Landsat(30m, 40年超の記録)が無料公開
- Pythonエコシステム — Rasterio、TorchGeo、Google Earth Engine APIで、専用GISソフトなしに解析可能
- クラウド計算 — Google Earth Engine、Microsoft Planetary Computerでペタバイト規模のデータをブラウザから処理
最初の一歩として推奨するのは、Google Earth EngineでSentinel-2画像を取得し、NDVIを計算すること。コード数行で衛星画像の世界に入れる。
参考とした記事:
- TorchGeo — PyTorch公式地理空間ライブラリ
- Rasterio公式ドキュメント
- eo-learn公式ドキュメント
- Google Earth Engine
- satellite-image-deep-learning/techniques(GitHub)
- NEON — Calculate NDVI in Python
- spyndex(GitHub)
- Copernicus Data Space
- USGS EarthExplorer
- NASA Earthdata
- EOS — Free Satellite Imagery Sources
- GIS Geography — Multispectral vs Hyperspectral
- NVIDIA Blog — Earth-2 Open Models(2026年1月)
- GitHub — NVIDIA/earth2studio
- GitHub — NVIDIA/physicsnemo
- cuSpatial GitHub
- NASA Science — Prithvi-EO-2.0
- Prithvi-EO-2.0 GitHub
- CNBC — Starcloud(2025年12月)