衛星データのアノテーション方法~QGISでのポリゴン作成と利用する際の注意点~
QGISを用いた衛星データのアノテーション方法を、商用最高級の衛星データを用いて紹介。アノテーションをする際の注意点もまとめています。
宙畑では「駐車場に停まっている車両の検知精度アップ? 衛星データによる車両の回転検知とその実装方法」「桜の記事」など、商用最高の解像度であるMAXARの衛星データを用いた機械学習の実例を紹介しています。
駐車場に停まっている車両の検知精度アップ? 衛星データによる車両の回転検知とその実装方法
衛星データから桜の開花検知によるお花見スポット探索の実装と3Dでの表現【MAXARの衛星データでやってみた】
実は、これらの記事を作成する際に紹介していない衛星データ解析の工程があります。それが本記事のテーマである「アノテーション」です。
本記事では、アノテーションとは何かということと合わせて、アノテーションの方法、また、アノテーションを行う際の注意点を紹介します。
また、冒頭で紹介したような衛星データの解析記事はGithubに記事毎のリポジトリを作成して共有しています。ぜひ本記事でアノテーションを学んで実践した後はGithubも見ながら衛星データ解析を試していただけますと幸いです。
(1)アノテーションとは
アノテーションとは「anotation(注釈・注記)」という英語がもととなったもの。
AIや機械学習に関する文脈で用いられる際は、「(衛星データのような)画像の他、テキスト、音声のデータに対して、メタデータやタグを付与する作業」のことを指します。
例えば、衛星データで車両を検知したい場合、以下のように車両を囲むポリゴン(いくつかの点を位置情報が分かる状態で保持するもの)を作成する作業がアノテーションです。
衛星データから車両を囲もうとすると膨大な時間と、粘り強い根気が必要になるということが、上記のアノテーションの途中経過を見てもお分かりいただけるでしょう。
(2)なぜアノテーションが必要なのか
では、なぜアノテーション作業が必要なのでしょうか?
AIと聞くとすべて全自動で望む結果を返してくれるものというイメージがあるかもしれませんが、AIは何が正解かを何もないところから判断することはできません。
私たち人間が望む正解は、私たち自身がAIに適切に伝える必要があります。その方法がアノテーションです。
例えば、先ほど紹介した以下の画像をご覧ください。
車両と形が似たものを探すと、屋上にある貯水タンクや小屋も形としては似ています。AIに形だけで分類を行ってもらうならば、車両ではないものも車両として認識してしまうかもしれません。
一方で、私たち人間は形だけでは判断せずに道路や駐車場に停まっているものを車両と認識してアノテーションを行うことができます。
正確なアノテーションを行うことがAIの精度を高めます。これがアノテーションが必要である理由です。
しかしながら、アノテーションはとても重要であるものの、とても大変な作業です。最近はアノテーションの負荷を楽にするための手法や、アノテーションの代行を行う企業も増えています。
また、アノテーションをすでに終えているデータセット(学習済みデータ)も近年は多く存在します。それは衛星データも例外ではありません。
(3)QGISでのポリゴン作成
ここまでアノテーションの概要について紹介しました。本章では、実際にアノテーション作業を行う方法を紹介します。
本記事で扱うのは、車両検知のため、QGIS上でMAXARの衛星データ上にある車両のポリゴンを作成するという作業の紹介です。
第4章ではアノテーションを行う際の注意点も記載しておりますので、合わせてご確認ください。
1.QGIS上にMAXARデータを表示する
まずは、購入したMAXARデータをQGISで表示させましょう。任意のファイルをQGIS上にドラッグ&ドロップすることで、衛星データを表示することができます。
2.シェープファイルレイヤをクリックしてファイル名やジオメトリタイプを設定する
続いて、衛星データの表示ができたら、上記画像のカーソルがある「新規シェープファイルレイヤ」をクリックします。
「新規シェープファイルエリア」をクリックすると上記のようなポップアップが表示されます。
まずは、ファイル名を決めて、横にある「・・・」をクリックして、ファイルの保存場所を指定しましょう。今回は車両の検知を行うのでファイル名を「Car」としました。
続いて、ファイルの文字コードなどは以下のように設定してOKをクリックしてください。
===
ファイルの文字コード:UTF-8
ジオメトリタイプ:ポリゴン
座標投影:EPSG4326-WGS 84
===
3.編集モードをクリックして、ポリゴン地物を追加をクリック
2の工程まで終えると、左側の枠の中に「Car」という新しいレイヤが確認できていればOKです。
その後、上記画像のカーソルがある「編集モード切替」をクリックしてください。
「編集モード切替」をクリックすると、上記画像のカーソルがある「ポリゴン地物を追加」をクリックできるようになります。「ポリゴン地物を追加」をクリックして、次の工程に進みましょう。
4.検知したい対象をポリゴンで囲み、囲み終えたら右クリック
ここでようやく検知したい対象をポリゴンで囲むこと(アノテーション)ができるようになります。
今回は車両を検知したいので、よりズームした状態で、対象物である車両の4隅の1点を起点として左クリックし、残り3つの隅をクリックします(複雑な形をしている物体の場合は4点では足りない可能性があります)。
対象物をきれいに囲えたと思ったら右クリックをすれば、ポリゴンの完成です。右クリックをすると上記画像のように、囲ったポリゴンの色が変わります。
続けて、他の対象物についてもどんどん囲ってポリゴンを作成していきましょう。
6.作業したレイヤをエクスポート
すべて囲えたと思ったら、レイヤの「Car」の上で右クリックをして「エクスポート」「地物の保存」をクリックしてください。
その後、上記のようなポップアップが出ますので、形式は「GeoJSON」としてファイル名を任意に設定して保存先を指定すればアノテーションデータの完成です。
(4)アノテーションを行う際の注意点
第3章でアノテーションの手順を一通り紹介しました。
紹介した手順を見て「意外と簡単そう」と思われた方も多いかもしれません。
しかしながら、本章で紹介するアノテーションを行う際の注意点をおさえながら作業しないと、期待していたほど精度の高い、使える結果がでないこともあります。
せっかく頑張ってアノテーションしたのに使えない結果となってしまうのは悲しいですよね。本記事では大きく分けて3つのアノテーションを行う際の注意点を紹介します。
ぜひご自身でアノテーションを行う前に参考にしていただけますと幸いです。
1.画像だけで判断しないこと
アノテーションをする際に、衛星データだけを凝視してアノテーションするのは、解析結果の精度を落としてしまう可能性があります。
第2章ですでに述べた通り、アノテーションを人間が行うのは、車両検知を行う際に道路や駐車場といったその他の要素も把握することができるためです。しかしながら、人間も衛星データだけ見ては完璧なアノテーションはできないでしょう。
そのためにも航空写真やドローン、点群といった地上の情報や、測量情報や土地利用情報といった地図情報も同時に確認しながらアノテーションを行いましょう。
また、アノテーションの対象物によっては、現地を訪れ、現地の人の話も聞きに行けると良いこともあるでしょう。
2.アノテーションのルールを事前に決めること
2つめの注意点は、アノテーションのルールを決めずに進めてしまわないようにすることです。
例えば、車両の検知をしたい場合のアノテーションを考えた時に「車両の一部が見えている場合はアノテーションをしない」といったルールがない場合、本来数えたい車両の台数を見誤ってしまう必要があります。
他にも何点以上のポリゴンにするのか、車両のアノテーションで頭の部分は尖らせてよいのかといったルールを設けて作業することが良い解析結果に繋がります。
3.物理特性や衛星の画像での現象を考えること
3つめの注意点は、衛星画像特有の現象や物理特性を考慮してアノテーションを行う必要があるということです。
例えば、衛星データには雲が写っていることが少なくありません。雲の下の情報が分からないのはもちろんのこと、雲の影がある場所は黒く表現されてしまいます。
また、雪が積もっている日の衛星画像を確認する際に、衛星画像にある白い部分は雪なのか、雲なのかが分かりづらいこともあります。その場合は、NDSIを利用して雲か雪かを判別する工夫も必要となるでしょう。
また、衛星データの中には画像が白飛びしているようなものも存在します。
このような画像は見づらいために基準が曖昧になりやすく、失敗しやすいのでアノテーション対象から外すようにしましょう。
他にも、SAR衛星の衛星画像を見ると以下の画像のようにサイドローブというノイズがあることも少なくありません。
十字架に見える部分が、船舶の構造物が不用意にSARの電波を反射させたことによるサイドローブのノイズです。
サイドローブのノイズについては「注目され始めたSAR画像×船舶×機械学習を概観する」でも解説していますが、発生しやすい条件は以下の通りです。
サイドローブについても、アノテーションを行う際に船舶の形にそってアノテーションをするのか、サイドローブまで含めてアノテーションをするのかでぶれてしまうと、解析結果が思った通りにならない可能性があります。
解析したいことが船舶の検出なのか、サイドローブなどのレーダーの検出なのかによって、サイドローブも含めてアノテーションするかどうかのルールを決めることが重要です。
(5)アノテーションをQGISで行うメリット
画像のアノテーションだけを考えるのであれば、セグメンテーションや物体検知などのアノテーションツールがあります(例えば、CVAT: https://github.com/opencv/cvat や VoTT: https://github.com/microsoft/VoTT などです)。
しかしながら、衛星データでは重要な2つの要素を見逃がす可能性が出てきます。
ひとつは、アノテーションの質に影響があります。衛星データは画像自体が大きいことが多く、大きいままでは細かい物体に対して、詳細のアノテーションが付けにくいため、意図せず品質が落ちていることがあります。
逆に、画像サイズを小さくするためにパッチ画像に切り取ってアノテーションしていくと周囲の状況を理解していないために、質が落ちてしまうと言うことがあります。または画像の切れ端での判断が曖昧になったりします。
もうひとつは、桜のアノテーションをつけるにあたって画像だけで判断すると桜のように見えるが、明らかに位置情報からおかしいことを排除する必要があり、細かい外形判断の調整も精度に影響するということです。
例えば、桜をアノテーションすると、QGISを用いれば公園の上にマッピングされていることは一目瞭然です。
しかしながら、画像だけで判断してしまうと、海の上でもアノテーションをしてしまうかもしれません。
また、Open Street Map の道路の部分に重なっているポリゴンは、細かくアノテーションするのであれば、修正した方が良いか?などの検討ができて、質の向上に繋がります。
これは検証精度や AI の精度にも関わってきます。(下図の青枠)
他にも、登記簿の情報から建物のいちがわかるので建物とかぶっている場所は何か問題がないかなどの検討も可能です。
つまり、位置情報があると、その他の地形情報や、地図上での現象、範囲把握などを同時に確認できたり、ベクターデータであれば解像度に関係なく、様々な衛星データを比較することができるということです。
まとめると、衛星データのアノテーションをする場合、QGISを用いてポリゴン作成(アノテーション)することは、位置情報の確からしさやアノテーションの精度向上など、様々な利点があります。
(5)まとめ
本記事では、QGISを用いた衛星データのアノテーションについて、紹介しました。
MAXARの衛星データでのアノテーションを行いましたので、せっかくならと車両の検知を例に挙げました。車両は1枚の衛星データにおさまる車両の数は多く、アノテーションを行ったメンバーの苦労は途轍もなかったと思います。
大変な作業ではありますが、読者のみなさまも衛星データ解析の世界に一歩足を踏み入れる際には、本記事を参考にアノテーションを一度試してみていただければと思います。
そして、本記事で例に挙げた車両の検知と桜の検知はすでに宙畑の記事として公開しています。ぜひあわせてご覧いただけますと幸いです。