はじめに
衛星画像や空中写真から建物を抽出するとき、セグメンテーションで建物領域を推定できても、その結果をGISで扱いやすい建物ポリゴンにする工程が残ります。
マスクの輪郭をそのままベクトル化すると、境界がギザギザになったり、不要な頂点が増えたりします。簡略化を強くかければ、今度は残したい角や細かな凹凸が失われます。建物領域を正しく認識することと、編集・検査に適した図形を作ることは、それぞれ解く必要がある問題です。
そこで開発したのが、建物を構成する辺と、その接続関係を学習するDINO-EdgeQueryです。
建物ごとの画像特徴から辺の候補を予測し、「どの辺の次に、どの辺が続くか」を学習します。最終的な頂点は、順序づけた辺の支持直線の交点から求めます。
本記事では、FOSS4G Hiroshima 2026のAcademic Trackで発表した論文と発表資料を基に、この設計、学習方法、評価結果を紹介します。論文はISPRS Archivesで公開しています。
なお、対象用途は高解像度衛星画像からの建物抽出ですが、今回の学習・定量評価には、WHU Building Datasetの航空写真を使用しています。衛星画像で同じ性能が得られることを実証した結果ではありません。
この記事は、FOSS4G Hiroshima 2026 アカデミック・トラックに採択された論文と、口頭発表で使用したプレゼンテーションを完結にまとめたものです。
1. なぜ「辺」を予測するのか
マスクの精度と、ポリゴンの品質
建物抽出でよく用いられる処理は、建物マスクの推定、輪郭追跡、ポリゴンの簡略化という流れです。既存のセグメンテーションモデルとGIS処理を組み合わせられる利点がある一方で、マスク境界の誤差が最終形状に影響します。
GISで使う建物ポリゴンには、領域の重なりに加えて、次のような品質も求められます。
- 直線部分を少ない頂点で表せること
- 建物の角が適切な位置にあること
- 自己交差や退化した図形を含まないこと
- 同じ建物を重複して出力しないこと
- 地理座標を持ち、GISで確認・編集できること
多くの建物外形は、長い直線部分と、比較的少数の角で構成されます。DINO-EdgeQueryでは、この性質に合わせて辺を主たる予測単位にします。
既存手法との位置づけ
論文で扱った関連研究を、主に何を表現するかという観点で整理すると、次のようになります。
| アプローチ | 主な表現・考え方 |
|---|---|
| マスクの輪郭追跡・簡略化 | 推定したラスタ境界からポリゴンを作る |
| Frame Field Learning | マスクに加えて境界方向の場を学習し、ポリゴン化を補助する |
| HiSup | 頂点・線分・領域の階層的な教師信号により、ポリゴン化しやすいマスクを学習する |
| PolyWorld / Re:PolyWorld | 頂点と、その接続関係をグラフとして扱う |
| BoundaryFormer | 物体境界をポリゴンの点列として予測する |
| DINO-EdgeQuery | 辺と辺の後続関係を予測し、支持直線の交点から頂点を構成する |
この表は表現方法の比較です。本記事で紹介する実験は、これらの手法との同一条件での性能比較ではありません。
2. 全体構成:画像認識から幾何処理へ
DINO-EdgeQueryは、ニューラルネットワークによる予測と、決定論的なポリゴン構成を組み合わせます。
役割分担は次のとおりです。
| 処理 | 方式 | 役割 |
|---|---|---|
| DINOv3 | 学習済みの重みを固定したニューラルネットワーク | 画像特徴の抽出 |
| Adapter Neck・Instance Decoder | ニューラルネットワーク | 建物ごとのマスク・ボックスなどの予測 |
| ROI Tokenizer・EdgeQuery・各予測ヘッド | ニューラルネットワーク | 建物ごとの辺と後続関係の予測 |
| 閉路選択・直線交点計算 | 決定論的な幾何処理 | 辺を順序づけ、頂点を構成 |
| Quality Gate P1 / P2 | 決定論的な検査・フィルタリング | 不正な形状や重複候補の除去 |
| 座標変換・出力 | 地理空間処理 | GeoJSONとしてGISへ接続 |
EdgeQueryによる辺の予測と後続関係の予測は、どちらもニューラルネットワークの処理です。 その出力を受け取った後のポリゴン構成と品質検査に、幾何アルゴリズムを使います。
3. DINOv3とインスタンス分割で、建物ごとの手がかりを作る
DINOv3とAdapter Neck
入力画像からの特徴抽出には、重みを固定したDINOv3を使用します。Adapter Neckは、その中間特徴を後段で扱うマルチスケール特徴に変換します。
最終実装で使用する特徴は、主に入力に対してストライド8・16・32の特徴マップです。論文では、それぞれを $F_8$、$F_{16}$、$F_{32}$ と表記しています。
境界情報を補うため、RGB画像から浅いCNNで抽出したF4相当の特徴を、F8経路に軽量な残差として加えます。論文の式(2)に対応する処理は、次の形です。
F_8' = F_8 + \phi_{F_4\rightarrow F_8}\bigl(\phi_{\mathrm{stem}}(I)\bigr)
F4相当の特徴を、独立したマスク入力やROI入力として直接使う構成ではありません。補正後の $F_8'$ と $F_{16}$、$F_{32}$ を後段で使用します。
マスクは建物の位置と領域を示す手がかり
Mask2Former系のInstance Decoderは、建物候補ごとにクラス、ボックス、マスク、クエリ埋め込みを予測します。
このマスクは、どの建物を対象にするか、どの範囲の特徴を参照するかを決めるための視覚的な事前情報です。また、生成したポリゴンの整合性を検査する際にも使います。
最終的なポリゴン境界は、EdgeQueryが予測する辺から構成します。そのため、マスクの輪郭をそのまま最終外形として採用するわけではありません。ただし、EdgeQueryはインスタンス分割に依存しており、前段で見逃した建物を回復することはできません。
4. EdgeQuery:建物ごとに辺の候補を予測する
ROI Tokenizer
ROIは、Region of Interest、つまり対象領域です。ROI Tokenizerは、建物ごとのマスクとボックスを使い、マルチスケール特徴からその建物に対応する局所トークンを生成します。
発表資料で示した最終設定では、ROIは $24\times24$、特徴次元は256です。EdgeQueryは、この建物ごとの文脈を使って辺を予測します。
「Query」は辺候補のスロット
ここでのEdgeQueryは、自然言語で画像に質問する仕組みではありません。建物の境界を構成する辺を予測するためのクエリスロットです。
最終設定では、1タイルあたりの建物候補数を $Q=96$、建物候補ごとの辺スロット数を $E=48$ としています。実際の建物が必ず48辺になるわけではなく、有効度や後続関係などに基づいて使用する辺を選択します。
辺に関する予測には、以下の情報が含まれます。
| 情報 | 意味 |
|---|---|
| Activity | 辺スロットを使用するかを判断する有効度 |
| Center | 辺の中心位置 |
| Direction | 辺の方向 |
| Half-length | 辺の半長。線分全体の長さはその2倍 |
| Mode・dominant axis | 辺のモードや建物の主軸に関する情報 |
| Relation embedding | 辺どうしの後続関係を予測するための埋め込み |
予測ヘッドが持つ出力項目と、最終学習で有効な損失項目は区別する必要があります。最終StageG2で直接監督する項目は、後述する有効度・中心・方向・半長・後続関係です。
Successor:次に続く辺を学習する
辺の候補が得られても、その集合だけでは外周をたどる順序が決まりません。Successor Relation Headが、ある辺からどの辺へ続くかという有向の後続関係を予測します。
建物候補 $q$ に対する後続スコア行列を $S_q$ とすると、辺スロット数 $E$ に対して $E\times E$ の関係を扱います。例えば4辺の建物なら、選択された辺が1→3→2→4→1のように、一周して戻る順序を持ちます。
ニューラルネットワークが予測するのは辺の属性と後続スコアです。そこから実際に採用する閉路を選ぶ処理は、後段の決定論的な処理です。
5. 頂点は、辺の支持直線の交点から求める
支持直線とは、予測した線分を両方向へ延長した直線です。辺の中心と方向から支持直線を定め、閉路上で隣り合う支持直線の交点を頂点とします。
以下は論文の式(4)です。$q$ は建物候補、$k$ は辺候補を表します。
\begin{aligned}
\hat{\mathbf n}_{q,k}
&=R_{\pi/2}\frac{\hat{\mathbf d}_{q,k}}
{\|\hat{\mathbf d}_{q,k}\|_2},\\
\hat{\rho}_{q,k}
&=\hat{\mathbf n}_{q,k}^{\mathsf T}\hat{\mathbf c}_{q,k},\\
\mathcal L_{q,k}
&=\left\{\mathbf x\in\mathbb R^2\mid
\hat{\mathbf n}_{q,k}^{\mathsf T}\mathbf x=\hat{\rho}_{q,k}\right\},\\
\hat{\mathbf v}_{q,t}
&=\operatorname{intersection}
\left(\mathcal L_{q,k_t},\mathcal L_{q,k_{t+1}}\right),
\qquad k_{V+1}=k_1.
\end{aligned}
$\hat{\mathbf c}$ は予測した中心、$\hat{\mathbf d}$ は予測した方向です。$R_{\pi/2}$ は方向を90度回転させる演算で、直線の法線 $\hat{\mathbf n}$ を作ります。
支持直線を、選択された閉路 $C_q=(k_1,\ldots,k_V)$ の順に並べれば、隣接する直線の交点として角が決まります。これにより、建物の長い直線部分と角を明示的に扱えます。
ただし、交点を求めるだけで常に正しい建物が得られるわけではありません。辺の予測や閉路の選択を誤ると、不自然な外形や不正なポリゴンが生じるため、次の品質検査を行います。
6. Quality Gate P1 / P2で、形状と重複を検査する
P1:形状と予測マスクとの整合性を検査
P1では、交点から作ったポリゴンについて、予測マスクとのIoU、coverage、outside ratio、面積比、幾何学的な妥当性などを検査します。自己交差や空のポリゴンも除外対象です。
論文で示した主なしきい値は、マスクとのIoUが0.15以上、coverageが0.35以上、outside ratioが0.65以下です。これらは推論時の品質検査に用いる値で、後述する正解ポリゴンとの評価用IoUしきい値とは別です。
P2:包含関係にある重複ポリゴンを抑制
P2は、P1に包含関係を使った重複抑制を追加したプロファイルです。
通常のIoUベースのNMSでは、大きなポリゴンの内部に小さなポリゴンが入っていても、両者の面積差が大きいとIoUが低くなり、重複として除去されない場合があります。
例えば、面積100のポリゴンの内側に面積10のポリゴンが完全に入る場合、IoUは0.1です。一方、小さいポリゴンから見れば、面積の100%が覆われています。この数値例は、包含率とIoUの違いを説明するための例です。
P2では、別のポリゴン $P_b$ が次の条件をすべて満たすとき、$P_a$ を除去します。論文の式(5)に対応します。
\frac{|P_a\cap P_b|}{|P_a|}\geq0.50,
\qquad |P_b|\geq|P_a|,
\qquad \operatorname{centroid}(P_a)\in P_b.
つまり、$P_a$ の面積の50%以上が覆われ、相手が同じかそれ以上の面積を持ち、自身の重心が相手の内部にある場合です。
この検査は予測結果だけで行い、正解データを参照しません。また、幾何学的な妥当性検査は、現実の建物との一致を保証するものではありません。誤検出や見逃しは、別途評価する必要があります。
7. 学習は2段階、推論は1本のパイプライン
全体同時学習から段階学習へ
発表資料では、当初はインスタンス分割から辺予測、ポリゴン構成までを一体として最適化する構想だったことも説明しました。
実装上は、初期のマスクやボックスが変わることでROIの条件が安定しないこと、マスクと幾何に関する損失の収束速度が異なること、離散的な閉路選択や妥当性検査では勾配を扱いにくいことが問題となりました。全体の逆伝播に必要な中間状態を保持するGPUメモリも制約でした。
ここでのメモリの問題は、インスタンス分割・EdgeQuery・ポリゴン構成に関わる工程を、ひとつの大きな学習グラフで扱おうとした場合のものです。最終的に採用した段階学習や推論が、そのまま96GBを使い切るという意味ではありません。
最終実装では、次の2段階で学習し、その重みを統合します。
| 項目 | StageG1 | StageG2 |
|---|---|---|
| 学習対象 | Adapter Neck・Instance Decoder | ROI Tokenizer・EdgeQuery Decoder・辺属性と後続関係の予測ヘッド |
| 固定する主な部分 | DINOv3・EdgeQueryブランチ | DINOv3・Adapter Neck・Instance Decoder |
| 学習画像 | 建物のないタイルも含む全学習タイル | 建物を含むタイル |
| 主な教師信号 | クラス・ボックス・マスク・境界 | 辺の有効度・中心・方向・半長・後続関係 |
| ROI条件 | ― | 正解ボックス・正解マスクを使用 |
P1とP2は、G1・G2に続いて学習するニューラルネットワークのステージではなく、ポリゴン出力の品質検査プロファイルです。
StageG1:境界を意識したインスタンス分割
分類・ボックス・マスクの損失に加えて、正解境界の細い帯に対するBCE損失を使用します。建物内部の広い領域に比べて小さくなりやすい境界誤差を、明示的に学習へ反映するためです。
論文の式(6)では、分類、ボックス、GIoU、マスクBCE、マスクDice、境界BCEの各損失を重み付きで合算しています。
StageG2:安定したROIで辺と接続関係を学習
StageG2では、正解マスクとボックスによるoracle ROIを使用します。これは、辺を学習するときの局所座標と対象領域を安定させるためです。
最終モデルで有効な損失は、論文の式(7)のとおりです。
\begin{aligned}
L_{\mathrm{EdgeQuery}}={}&
\lambda_{\mathrm{act}}L_{\mathrm{act}}
+\lambda_{\mathrm{center}}L_{\mathrm{center}}
+\lambda_{\mathrm{dir}}L_{\mathrm{dir}}\\
&+\lambda_{\mathrm{len}}L_{\mathrm{len}}
+\lambda_{\mathrm{succ}}L_{\mathrm{succ}}.
\end{aligned}
初期設計に含まれていた頂点・ラスタ・トポロジー・規則性・閉路整合性に関する損失は、最終StageG2では有効にしていません。互換性や将来の拡張のために残した項目はゼロにマスクし、報告した学習の目的関数から外しています。
学習後はG1とG2の重みを統合します。推論では正解ボックスや正解マスクを使わず、入力画像から予測した情報だけで最後まで処理します。
8. データセットの整備も、辺表現に合わせる
使用したデータは、WHU Building Datasetの航空写真と建物アノテーションです。本研究で使用した0.2m解像度・COCO形式のデータを、EdgeQuery用に整備しました。
COCO形式のポリゴンを、そのまま辺の教師データとして使うことはできません。外周の向きや辺数をそろえる必要があります。
- 元の1024×1024画像を、重ならない4枚の512×512タイルへ分割する。
- 建物ポリゴンをタイル境界でクリップし、タイル内の座標へ移す。
- 微小な断片や切断時の不安定な形状を除去し、不正な形状を可能な範囲で修復する。
- 重複頂点を除去し、画像座標系で外周の回転方向を統一する。
- 48辺を超える外周を、可能な範囲でトポロジーを保って簡略化する。崩壊したポリゴンは除外する。
- 正規化した外周から、辺の属性と順序付きの後続関係を作る。
現在は、1インスタンスにつき1つの外周閉路を扱います。MultiPolygonは単一ポリゴンのインスタンスへ分割し、穴や入れ子状の構造は除去・平坦化などの対象としています。
この前処理は、画像形式の変換だけではありません。モデルが表現できる辺数や外周構造に合わせて、教師データの形状にも制約を加えています。 同じ前処理を学習・検証データに適用しているため、評価結果もこの条件の下で解釈する必要があります。
最終的に採用した容量
発表資料で示した安定動作時の設定は、以下のとおりです。
| 項目 | 設定・実測値 |
|---|---|
| 入力画像 | 512×512 |
| マイクロバッチ | 8 |
| 勾配累積 | 2回、実効バッチ16 |
| 建物クエリ数 | $Q=96$ / タイル |
| 辺スロット数 | $E=48$ / 建物候補 |
| ROI | 24×24、256チャネル |
| ピークVRAM | 49,470MiB、約48.3GiB |
特に後続関係の行列は辺数の二乗で増えるため、辺スロットを増やすと、その部分の計算量・メモリが増加します。この実測値は採用構成での値であり、あらゆる入力や設定での必要メモリを示すものではありません。
9. 実験結果:P2で重複を減らすと何が変わるか
推論設定
論文で報告した推論プロファイルは次のとおりです。
| パラメータ | 値 |
|---|---|
| インスタンス信頼度しきい値 | 0.60 |
| マスク二値化しきい値 | 0.50 |
| マスク段階のNMS | 0.75 |
| ポリゴン段階のNMS | 0.75 |
| 辺の有効度しきい値 | 0.15 |
| ポリゴン構成に残す辺候補 | 最大32 / インスタンス |
| Boundary support | 有効 |
| Collinear merging | 無効 |
学習時の48辺スロットと、推論時に残す最大32辺候補は、別の設定です。
建物を含む検証タイルでの結果
以下は論文Table 2の値です。P1とP2は同じモデルの出力に対する品質検査プロファイルの比較です。
| 指標 | P1 | P2 |
|---|---|---|
| 予測ポリゴン数 | 21,554 | 19,203 |
| Union IoU | 0.7107 | 0.7064 |
| Boundary IoU・2px | 0.3746 | 0.3710 |
| Boundary IoU・3px | 0.4535 | 0.4496 |
| Recall@75 | 0.6459 | 0.6213 |
| Precision@75 | 0.5486 | 0.5924 |
| Recall@80 | 0.5442 | 0.5258 |
| Precision@80 | 0.4622 | 0.5013 |
| Predictions / GT | 1.1774 | 1.0489 |
| FP / GT | 0.2997 | 0.2295 |
| 自己交差数 / 三角形への崩壊数 | 0 / 0 | 0 / 0 |
Precision@75とRecall@75は、予測ポリゴンと正解インスタンスをIoU 0.75のしきい値で対応づけたときの適合率・再現率です。@80では0.80を使います。これらはAPではありません。FP / GTは、正解インスタンス数に対する偽陽性数の比です。
P2により、予測ポリゴン数は2,351個減り、Precision@75は約4.38ポイント、Precision@80は約3.91ポイント向上しました。一方で、Recall@75は約2.46ポイント低下し、Union IoUも0.0043低下しています。
したがって、この結果はP2が高IoUでの適合率を高め、過剰な出力を減らす一方、再現率とのトレードオフを持つことを示しています。「P2によりIoUも一律に向上した」とは解釈できません。
自己交差と三角形への崩壊は、この評価ではP1・P2ともに0でした。これは検査後の出力についての結果であり、あらゆる入力で形状や位置が正しくなることを保証するものではありません。
建物のない検証タイル
建物のない980タイルに対する結果は、論文Table 3のとおりです。
| 指標 | P1 | P2 |
|---|---|---|
| 予測ポリゴン数 | 90 | 81 |
| 1タイルあたりの平均予測数 | 0.0918 | 0.0827 |
背景だけのタイルでも予測数は減りましたが、誤検出がなくなったわけではありません。なお、0.0827は平均予測数であり、「8.27%の画像で誤検出した」という画像単位の率ではありません。
検証時の出力
図1:検証画像に対するDINO-EdgeQueryの出力過程。上段左から入力画像、正解マスク、予測インスタンスマスク。下段左から未選択の辺候補、選択された閉路の辺、直線交点から構成した最終ポリゴン。出典:原論文Figure 2。
論文Figure 2では、入力画像、正解マスク、予測インスタンス、未選択のEdgeQuery辺、選択された閉路の辺、最終ポリゴンを順に確認できます。
この可視化では、マスクが建物ごとの対象領域を示し、そこから予測された複数の辺候補が選択され、交点による外形へ変換される過程を追えます。上段中央の正解マスクは比較のために表示したもので、推論の入力には使用していません。
10. 画像座標のポリゴンを、GeoJSONとしてGISへ渡す
ポリゴンの頂点は、まず画像座標で得られます。地図上に配置するために、入力GeoTIFFのアフィン変換を使って地理座標へ変換します。
論文の式(9)に対応する頂点変換は、次のとおりです。
\mathbf g_{i,t}
=A\begin{bmatrix}x_{i,t}\\y_{i,t}\\1\end{bmatrix}
$A$ はGeoTIFFのアフィン変換、$(x_{i,t},y_{i,t})$ は画像内の頂点座標、$\mathbf g_{i,t}$ は変換後の地図座標です。
出力パイプラインでは、Rasterio/GDALでアフィン変換とCRSを読み、必要に応じてpyproj/PROJでEPSG:4326などの対象CRSへ変換します。その後、信頼度や品質指標などの属性とともにGeoJSONとして出力します。
推論結果をQGISで表示
図2:テスト画像に対する最終P2ポリゴンを地理座標へ変換し、GeoJSONとしてQGISに読み込んだ例。赤線が出力した建物ポリゴン。出典:原論文Figure 3。Basemap © OpenStreetMap contributors.
画像上の建物外形に、出力された赤いポリゴンが重なっていることを確認できます。これはGISへの接続を確認したテスト画像の例で、前節の検証データによる定量評価とは区別しています。
ここでの「GIS-ready」は、地理座標を持ち、形状の妥当性を検査したベクターデータとしてGISへ渡せるという意味です。測量精度や、目視確認なしでの地図更新を保証するものではありません。
11. 現在の限界と、今後の開発
現在の実装には、次の課題があります。
| 課題 | 現在の制約・今後の方向 |
|---|---|
| インスタンス分割への依存 | 前段で見逃した建物は抽出できない。地域やセンサの違いに強い前段モデルが必要 |
| 穴・中庭・複数外周 | 1つの外周閉路が前提。複数閉路や穴を明示的に扱う拡張が必要 |
| 辺数の上限 | 固定容量と教師データの簡略化により、複雑な建物形状の表現が制限される |
| 品質検査のしきい値 | 手設計であり、異なる解像度や建物形態に合わせた適応が必要 |
| 適合率と再現率 | 重複抑制によって有効な予測も除外される場合がある |
| 評価対象の広がり | 航空写真での評価に加え、衛星画像・別地域・別解像度での検証が必要 |
論文では、ポリゴン品質を予測する学習ヘッド、幾何構成から辺予測への微分可能なフィードバック、複数閉路・穴への対応を今後の方向として挙げています。
また、Adapter Neckは、DINOv3の中間特徴を後段の共通形式へ変換するインターフェースとして設計しています。将来の視覚基盤モデルへ置き換える際にも、後段のEdgeQuery構成を再利用しやすくする狙いがあります。実際の置き換え時には、特徴の接続と学習・評価が必要です。
発表資料ではSpatial Arrowとの統合も今後の取り組みとして紹介しました。地理参照を持つラスタ・ベクターデータから実行時にモデル入力を生成し、DINO-EdgeQueryのベクター出力へつなぐ構想です。今回報告した評価は、その統合を実証したものではありません。
DINO-EdgeQueryで取り組んでいるのは、建物を認識した結果を、辺の構造と検証可能な図形へ変換することです。辺の位置・方向・後続関係を学習し、幾何処理で外周を構成する設計によって、画像認識とGISでの利用を接続しています。
論文・発表資料
- Kobayashi, Y. and Lai, Y. C. (2026): DINO-EdgeQuery: Edge-First Polygon Decoding for Building Footprint Extraction from Satellite Imagery. The International Archives of the Photogrammetry, Remote Sensing and Spatial Information Sciences, L-4/W1-2026, 119–126. 論文掲載ページ / DOI
- FOSS4G Hiroshima 2026 発表資料(Speaker Deck)
本文の数式は論文の式(2)、(4)、(5)、(7)、(9)から該当部分を掲載しました。定量結果は論文Table 2・3、GPUメモリと容量設定、全体同時学習からの設計変更の説明は発表資料に基づきます。

