DEEP DIVEクラファンの衛星画像解析タスクについて勝手に調べて考えてみた
概要
私が初期のクラウドファンディングに参加して以来注目している組織のYouTubeチャンネル「DEEP DIVE Cast」にて、新たなクラウドファンディングの呼びかけとともに解決したい課題について紹介されている動画がありました。
一言で言えば衛星画像にAIを活用したいという話だったのですが、実課題としていろんな要素が含まれていてとても興味深いものでしたので、私なりにこのタスクにどう登るものかと考えてみました。
なお、私自身は機械学習プロジェクト自体は実務経験があるものの、衛星画像の画像処理などの分野には馴染みのない人間です。数日のサーベイ程度の付け焼き刃で書いているので、指摘の抜け漏れや間違いを多分に含んでいる可能性がある点をご容赦ください。
タスクの整理
動画内で触れられている機械学習タスクを、まずは私なりに要約します。
- Task 1. 衛星画像からの船舶の領域特定およびカウンティング
- 船舶が複数隻横付けされた"メザシ状態"のものも正確に計測したい
- 既存のAIでは、カウントの間違いや船舶種別の誤りがある (おそらくChatGPTやGeminiなどの生成AI)
- 人間は一定程度正確な領域特定およびカウントが可能である (それだけの衛星画像の分解能はある前提)
この事例はDeepDiveのウェブサイトの「LumoScan ミスチーフ礁に滞在する中国海上民兵船舶」というレポートで詳細に触れられており、時系列で隻数の変化を追跡することで中国のミスチーフ礁および周辺海域の行動を分析しています。そのために長期間にわたり何度も衛星画像からの船舶数のカウンティングをする必要があるようです。
また、それ以外にも一般的な衛星画像からの船舶の種類特定についても触れられていました。
- Task 2. 衛星画像からの船舶の種類特定
- 例として中国の原子力潜水艦の093型と094型の区別
- 衛星画像の分解能が低くとも、特徴的な外見を捉えることで専門家は判別可能である
なお、クラウドファンディングのページでは、AI活用の目的が下記のように説明されています。
地政学リスクを把握する上で、衛星画像は不可欠な「眼」です。しかし、現在の分析には、いくつかの大きな課題があります。
・物体検知や判別を人手で行う必要があり、膨大な時間がかかる
・天候や撮影条件によって、重要施設や車両・船舶等の細部が見えにくく、得られる情報に限界がある
・衛星画像・電波データ・AIS(船舶自動識別装置)などが統合されておらず、全体像を俯瞰しづらい
ただデータ利活用なども入れてしまうとスコープが広くなってしまうため、この記事ではあくまでもいくつかの特定の機械学習タスクに限定します。

Modified Copernicus Sentinel data 2025 を使用。
実際にミスチーフ礁に集まる小型船舶群の様子。Sentinel-2の分解能では、連なった船舶数をカウントするのは私は不可能だった
既存研究
まずはこれらのタスクについて、現状どういった研究事例があり、どのくらいの精度で解かれているのかを、学習/評価データセットをベースに代表例をいくつか見ていきます。
Task 1.1 船舶検出
HRSC2016は、サブメートル級の高分解能衛星画像から構成される船舶検出の標準的なベンチマークデータセットです。1,061枚のアノテーション付き画像に、空母や軍艦、商船など28の細粒度カテゴリの回転矩形(OBB)アノテーションが付与されています。ming71/HRSC2016_SOTAによるリーダーボードでは、評価値であるVOC2007形式のmAP(07)のスコアにおいて90%前後の性能が報告されています。
DOTAは、Google Earth等の複数ソースから収集された分解能0.1m〜数mの大規模衛星画像の物体検知データセットです。船舶に限らず車両や飛行機など15カテゴリ(v1.0)を含み、全体のmAPは75〜81%程度ですが、船舶カテゴリのAPは89%程度と全体平均を大きく上回っています。なお、DOTAのアノテーションにはdifficultフラグ(小さすぎる・遮蔽されている等の理由で判別困難な対象)があり、標準的な評価ではこれらは除外されるため、実際の運用で遭遇するような困難なケースはスコアに反映されていない点には留意が必要です。
LEVIR-Shipは、分解能16mという中解像度の衛星画像(GF-1/GF-6)における小型船舶検出のデータセットです。無償で利用できるSentinel-2(10m)に近い分解能帯であり、現実的なOSINT運用に近い条件といえます。現状のAPは82.4%で、上記の高分解能データセットと比べると精度は劣るものの、小型船というタスク難易度や分解能の制約を考慮すれば一定機能するレベルとは言えそうです (Chen+, 2022)。
これらを総合すると、おおよそ研究事例は豊富にあり、それらを評価するためのパブリックなデータセットも利用可能であることがわかります。
Task 1.2 船舶のカウンティング
船舶のカウンティングに特化したベンチマークとしては、RSOC(Remote Sensing Object Counting)データセットのShipサブセットがあります (Gao+, 2020)。DOTAデータセットから収集された密集港湾の画像で構成されており、1枚あたり平均328隻(最大1,661隻)という非常に高密度な画像が対象です。データセット規模は、学習用97枚テスト用40枚の計137枚と小規模です。
カウンティングでは個々の物体を検出するのではなく、画像から密度マップを推定して総数を予測する手法が主流です。主要な手法のベンチマーク結果は以下の通りです。
| 手法 | 種別 | MAE | RMSE | 出典 |
|---|---|---|---|---|
| CDDMNet | 密度ベース | 52.80 | 69.77 | Chen+, 2025 |
| SwinCounter | 密度ベース | 52.88 | 74.82 | Huang+, 2022 |
| P2PNet | ポイントベース | 62.00 | 76.43 | Song+, 2021(数値はXu+, 2023より) |
| ASPDNet(ベースライン) | 密度ベース | 193.83 | 318.95 | Gao+, 2020 |
MAE(Mean Absolute Error)は予測隻数と正解隻数の差の絶対値を平均した指標、RMSE(Root Mean Square Error)は、誤差を二乗して平均し平方根をとった指標であり、大きな誤差をより強く評価します。1枚あたり平均328隻に対してMAE 52.80ということは、誤差率にして約16%程度です。YOLO等で個別に検出してカウントする検出ベースの手法と比べると、密集した港湾シーンでは密度マップ手法のほうが精度が高いようですが、そもそもが学習/評価データがかなり少なく、データの性質に大きく左右されると思われます。
Task 2. 船舶の種類特定
船舶の種類特定に特化したデータセットも複数公開されています。光学画像の細粒度分類では、以下のデータセットが代表的です。
ShipRSImageNetは、4階層の分類体系からなり最も細かいもので50種類の船種ラベルが付与された、3,435枚の衛星画像に17,573隻の船舶が含まれた大規模データセットです。分解能は0.12〜6mで、WorldView-3(0.3m)をはじめとする複数の衛星ソースから収集されています。カテゴリには潜水艦、駆逐艦、フリゲート、空母といった軍艦から、コンテナ船、タンカー、タグボートといった商用船まで含まれます。
FGSCR-42は、42カテゴリ/約9,320枚の船舶チップ画像データセットです。ニミッツ級空母やアーレイ・バーク級駆逐艦といった具体的な艦級名で分類されており、軍艦から民間船まで幅広くカバーしています。Google Earth、DOTA、HRSC2016、NWPU VHR-10等の複数ソースから収集されており、分解能は0.1〜4.5mと幅広いのも特徴。
FAIR1Mは、5大カテゴリ/37サブカテゴリの大規模物体認識データセットです (Sun+, 2022)。このうち船舶は旅客船、モーターボート、漁船、タグボート、軍艦など9サブカテゴリで、FAIR1M-1.0では約5.9万のデータを含みます。GaoFen衛星およびGoogle Earth画像から収集され、OBBのアノテーションが付与されています。
また、光学画像は雲や夜間で撮影が困難であるため、全天候および昼夜を問わず運用可能なSAR(合成開口レーダー)画像のデータセットも重要です。FUSAR-Shipは、復旦大学がGaoFen-3衛星(C帯、全偏波、分解能約1m)で構築したSAR船舶分類データセットで、15の一次カテゴリ、98のサブカテゴリという細かな船舶分類体系となっています。約6,200枚の船舶チップが含まれ、AIS(自動船舶識別装置)データとのマッチングにより船種ラベルが付与されています。SAR画像はスペックルノイズや解像度の制約から光学画像ほどの細粒度分類は困難ですが、実運用上は光学画像と相補的な役割を果たします。
ただし、これらのデータセットはいずれも「駆逐艦」「潜水艦」といった艦種レベルの分類であり、DEEP DIVEが求めるような093型と094型の区別のような型番レベルの識別には対応していません。型番レベルの識別を行うには、対象となる型ごとのアノテーション付きデータを独自に用意するか、カテゴリの分類以降のタスクを生成AIに任せるなどの工夫が必要と考えられます。
DEEP DIVEのタスクに向けて
ある程度現状がわかったところで、本タスクについてどう登っていくのか、どこに課題があるのかを考えていきたいと思います。
ここまで見てきたように、船舶検出、カウンティング、種類特定のいずれについても研究事例は豊富で、学習や評価データセットも利用可能です。到達できる精度や実用性を現時点で予測することは難しいですが、そもそもが実現困難なタスクではなく、取り組めば一定の成果は出せると思われます。
当然ながらAIによる予測は精度100%にはできないので個別ケースで間違う場合も出てきますが、そうしたAIの出力が分析用途などに用いられて何らか人間のチェックを通すことを考えると、影響は軽微でしょう。クラウドファインディングのページでも挙げられていたAISなどの他のデータとの統合などによっても解決できる部分がありそうです。
具体的な登り方の一例としては、以下のようなステップが考えられます。
Step 1. タスクの明瞭化と事前調査
まず衛星画像分析で行いたいタスクの洗い出しや要素分解、タスク間の優先度付けを行います。
今回の場合いきなり船舶の隻数カウントという (私から見て) 複雑なタスクに取り掛かり始めてしまうと、希望する精度がでなかったときに、そもそもカウント自体が難しいのか、船舶検知やその他の処理の中で精度が下がっているのか、はたまたデータ自体が良くないことが悪さをしているのかなど、見当がつきづらくなる可能性があります。まずは日頃扱っている分析対象のデータをシンプルなタスク(船舶検知だけなど) に適用しつつ、そこから徐々に複雑なタスクにアプローチしていくのが良いと思います。
あとはタスクを設計していくなかで自ずと既存研究や事例調査も並行して行うので、基本的なデータの取り扱い方やスタンダードなアプローチの方法なども把握しておきます。
Step 2. OSSで利用可能なデータセットや学習済みモデルでのタスクへの適用
既存研究の章では様々なデータセットについて言及しましたが、当然ながら即座に利用可能な学習済みモデルに関しても様々な種類のものが公開されています。これらをまずは適用してみて大まかな精度や出力のイメージを得ます。
分解能1m未満ならUltralytics YOLO OBB、Sentinel-2ならmayrajeo/marine-vesselやSkylightで運用されているvessel-detection-sentinelsが利用できます。また、TorchGeoといった汎用的な衛星画像用のライブラリも存在します。
Step 3. 学習/評価データセットの準備と作成
Step 1.とStep 2.で得られた知見を元に、ここから個別のタスクにチューニングしたAIを作成するための作業に入っていきます。機械学習においてはデータの質と量が成果に大きく影響するので、ここが最も大事なところと言えます。
基本的には大規模なデータ作成であればクラウドソーシングを用いて多人数で並列で仕事をしてもらうことが多いので、ここではクラウドソーシングに依頼する前提で書いています。船舶の種類判定のような少数の専門家でしかできない作業の場合でも、ほぼ同様の作業が必要になります。
まずは準備段階として以下のような作業が挙げられます。
- データセットの元となる衛星画像などの準備
- なるべくタスクの実際の運用に近い条件のデータを大量に用意する
- 衛星画像で雲しか写っていない写真が含まれていても意味がないので、それらを取り除くなどの細かな処理も含む
- クラウドソーシングへの登録やデータ作成会社との契約、ワーカーに対する連携のオペレーション構築
- クラウドソーシングでオペレーションを独自にやるのか、それともデータ作成企業に委託するのかといった意思決定
- どちらにせよタスクの設計者の意図や希望をいかに言語化して関係者に連携するかという過程であり、事務的な作業も大量に発生するので、かなり属人的かつ負担が大きい部分になる
- アノテーション作業環境やアノテーションガイドラインの構築
- ウェブアプリケーションを使う場合はそれの準備、ツールが必要ならそれの取得と配布など
- アノテーションはかなり厳格なマニュアルを作成しなければデータの質が担保できないので、ガイドラインの作成やワーカーへの教育は必須
- 作成したデータセットの品質の評価
- 専門家による目検や、複数ワーカーによる同一データへのアノテーションの一致率などで評価
このあたりの作業については、前職で私が登壇した際の資料がありますので、そちらでも実例とともに詳しく解説しています。
Step 4. AIモデル作成と改善サイクル、成果の利活用へ
最後に作成モデルを元に独自のAIモデルを作成します。ここまでくればあとはやるだけという感じなので、試行錯誤してモデルを作っては評価を繰り返し、改善サイクルを回していきます。必要に応じてStep 3のデータ作成を追加で行うことも検討します。
その後は出来上がったAIを分析フローに組み込んだり、定期的に実行するようなシステムを構築したりといった利活用フェーズに入っていくので、ここから先は割愛します。
課題
さて、ここまで一般的な機械学習プロダクトの作成フローを紹介してきましたが、その上で最後に、DEEP DIVEのタスクを進める上で私が考える主要な課題点を2つ挙げておきます。
1. 衛星画像データの獲得とアノテーション作成にかかる時間的/金銭的コスト
今回の事例では、船舶検出や種類特定に関する公開データセットは複数存在するものの、これらは特定の研究目的に向けて構築されたものであり、撮影条件、対象海域、分解能、船種の分布など、DEEP DIVEが対象とするタスクとは前提が異なります。大規模なデータセットではあってもあらゆるケースを網羅したものではないので、ミスチーフ礁周辺の密集した小型船舶を正確にカウントするといった具体的なユースケースに直接適用できるとは思えません。
そしてデータ作成のコストは決して小さくありません。参考になる事例として、Global Fishing Watchのプロジェクトがあります。2024年にNatureに掲載された衛星画像による船舶活動の全球マッピング研究 (Paolo+, 2024, 解説記事) では、Sentinel-2衛星画像からの船舶検出モデルの学習に11,000枚以上の手動レビュー済みサンプルが作成されました。しかもアノテーションの信頼性を確保するために、同一サンプルに対して3名の独立したアノテーターがクロスチェックを行い、高信頼度のアノテーションのみを採用するという手順を踏んでいます。
仮にこれと同等の規模で船舶検知のみのデータを作成するとして、1枚あたり1分でアノテーションできると仮定すると、11,000枚で約183時間の作業量です。時給1,500円で換算すると約28万円。Global Fishing Watchのように1枚あたり3名でクロスチェックして信頼性を担保する場合、単純計算で3倍の約84万円となります。これはあくまで最低限の見積もりであり、アノテーションの設計やガイドライン作成、アノテーターの教育、品質管理のコストを含めれば実際にはさらにかかるでしょう。また、船舶のカウンティングは根気のいる作業でより時間がかかるでしょうし、船舶の種別判定などは当然ながら素人には困難なタスクですので、それが可能な専門家に依頼するとなると単価は跳ね上がります。機械的に付与したアノテーションを人間が手動で訂正する方法などでコストを下げる方法などもありますが、そうした工夫も含めて最初はかなり手探りで進めつつ結局費用がかさむところかなと思います。
DEEP DIVEの目指すタスクを高精度で達成するには、このデータ整備のフェーズが避けて通れないものであり、プロジェクトの初期段階から計画的に時間的/金銭的なリソースを確保しておく必要があると考えます。
2. 機械学習モデルのドメインシフト問題
もう一つの大きな課題は、ドメインシフトと呼ばれる問題です。衛星画像は提供元の衛星やセンサー、分解能によって画像の特性が大きく異なります。機械学習モデルは学習データと予測データのデータ分布が異なると性能が著しく低下することが知られており、衛星画像の分野でも同様のようです。つまり、なにかの問題を解くことのできるAIを作ったとして、それをどんな衛星画像にでも無条件に適用できるというわけでは必ずしもないということです。
具体的には、xViewデータセット(60クラス、25万以上のオブジェクト)を用いて分解能を表すGSDを段階的に低下させた検出性能の評価実験 (Shermeyer & Van Etten, 2019) では、GSDが0.3mから0.6mへの変化ではmAPの低下はわずか2%にとどまる一方、1.2mで−22%、2.4mで−52%、4.8mでは−78%と加速度的に劣化することが報告されています。また、高分解能→低分解能だけでなく逆の事例として、衛星画像の領域抽出のタスクでは、低分解能で学習したモデルを高分解能画像に適用しても、観測スケールや特徴分布の違いにより性能が著しく低下することが示されています (Jiang+, 2021)。
また、分解能が同程度であっても、センサーの種類や撮影地域が異なればデータ分布は変わりうるため、ドメインシフトは分解能の違いだけに限った問題ではありません。船舶の事例ではありませんが、中東地域の高分解能衛星画像から構築された車両検出データセットVME (Nalemadi+, 2025) のクロスデータセット評価では、アノテーションされた車両数が最大規模のFAIR1M-2.0で学習したモデルであっても、VMEのテストセットではmAP50が15.8%にまで低下しています。単一の大規模な学習データを用意するだけでは、撮影条件や地理的分布の違いに起因するドメインシフトを克服できないことを示す事例といえます。
これをDEEP DIVEの文脈で考えると、例えばSentinel-2(分解能10m)の画像でうまく機能したモデルをMaxar(分解能0.3m)の画像に適用した瞬間、まったく機能しなくなるということは十分にありえます。汎用的に問題を解こうと思うほどに難易度もコストも高くなりがちではあるので、どの衛星画像をどの目的に使うのかを最初から深く計画しておき、利用シーンに即したデータを作って学習と評価を行うことが必要かと思います。また、データ作成の初期段階で、こうしたドメインシフトがどれくらい自分たちの利用データとタスクに影響するのかを評価しておいたほうがいいかもしれません。
まとめ
DEEP DIVEのクラウドファンディングで提起された衛星画像からの船舶検出というタスクに興味を持ち、既存研究やデータセットをサーベイしてみました。その上で、このタスクをプロジェクトとして進めていく上での大まかな流れと、主要な懸念点として学習データの整備にかかるコストおよび衛星画像特有のドメインシフト問題の2点を挙げました。
最後に、このクラウドファンディングが成功し、そしてDEEP DIVEのAI活用プロジェクトがうまくいくことを願っています。そしてこれからのDEEP DIVE Castのコンテンツも楽しみにしております。
補足:生成AIは連なった船舶数をカウントできるのか?
さて、冒頭の動画では生成AIは船舶の認識を誤認識したり複数の船舶を一つと判定する間違いをすると話されていましたが、実際どれくらいの性能が出るかも簡単に確認してみます。
試しにTask1の船舶の隻数を数えさせてみます。ここでは船舶検知は出来ていると仮定し、そこから切り出された矩形領域の画像に加えてプロンプトを作成して、主要な生成AIに投げてみました。画像はYouTubeの動画から私が手動で切り取り、数字にマスクをかけました。プロンプトは下記のように、まず衛星画像という前提条件、そして1隻のサイズを把握するための情報(few shot sampleとして)、そして問題にしている塊の隻数の予測を指示しています。
これはとある海上の衛星画像です。左上に1隻の船が見えます。さて、画像下部に小さな船舶が左舷と右舷で並列に連なった塊が見えますが、これは何隻の船が連なったものでしょうか?画像からのサイズや画素の情報をもとに正確な隻数を推定してください。

ちなみに正解は10隻です。
- ChatGPT (GPT5.2-thinking) の解答
- 出力:
結論:約 6 隻です(この切り出し画像内での画素計測ベース)。 - 全文:https://chatgpt.com/share/699bf383-8048-800e-9adf-a36027b5c438
- 出力:
- Claude (Opus4.6) の解答
- 出力:
結論: およそ12隻前後の船舶が並列に連なっていると推定されます。 - 全文:https://claude.ai/share/effd6768-dd57-426d-a8ab-d38f3c7eff16
- 出力:
その結果を見ると、そもそも入力画像が粗すぎるという問題は置いておいて、プロンプトのチューニングの余地は残されているとはいえ、現状での精度はあまり期待できないことがわかりました。これらのAIの思考過程を見るとPythonのコードを書いている様子が見て取れるので、結局は生成AIの思考の結果というよりかはプログラミング的なアプローチでの出力なのだと思います。
そして、カウンティングに生成AIを使うというのはかなり富豪的な解決方法ではあり、これが少数サンプルなら機能するものの、大規模な衛星画像にこれを適用するのは金銭的コストの観点で非現実的でしょう。また、動画内でも言及がありましたが実行ごとに結果が異なるというのも難しいポイントです。ChatGPTやClaudeのAPI経由であればtemperatureというパラメータで出力の確率的挙動を制御できるものの、単一データに同じ答えを示すことは出来ても複数のデータに渡って統一的な基準で答えることを保証するものではないため、注意が必要です。
生成AIを活用するならば、より抽象的であったり論理的な思考ができるようなタスクの方が活用の道がありそうです。最近のマルチモーダルなモデルであれば、衛星画像のみならずグラフや表データなどの情報も入力して複数のデータソースからAIが全体像を把握することも可能です。例えば、軍港周辺の時系列画像から船舶の出港・帰港タイミングを推定させたり (Bellingcatの類似事例)、港湾の物流パターンの異常を検知させるといった使い方が考えられます。実際に、IUU漁業(違法・無報告・無規制漁業)の検出においてGPT-4で漁船の操業パターンを分析するGEOINTへの応用事例も報告されています。OSINTの領域においても生成AIはまだまだ適用先を模索している段階ではあると思うので、どんどんいろんなアイデアを試していくと面白いと思います。