宙畑 Sorabatake

機械学習

異なる解像度の衛星画像から車両検出するコンペSolafuneのチャレンジログ

2022年8月~10月に開催された異なる解像度の衛星画像から車両検出をするコンペについて、コンペ参加者の一人にチャレンジログを執筆いただきました!

(1)Solafune・筆者紹介

2021年は、民間企業が運用する宇宙船で宇宙飛行士が国際宇宙ステーションを行き来するようになったり、民間人が宇宙を旅行するようになったりと、宇宙ビジネス関連のニュースが絶えませんでした。

これまで国主導で開発が進められてきた宇宙分野ですが、近年ではこのように民間企業の参入が活発になってきています。中でも、「衛星データの活用」という領域は、その活用範囲が地球上での私たちの生活であるという意味で、新たな民間企業の参入が最も期待される領域です。

【Solafuneとは】
Solafune」は、衛星データや地理空間データに特化したコンテストでそのコンテストを実施している会社名でもあります。

これまでも「夜間光データから土地価格を予測」、「衛星画像から空港利用者数を予測」といった独自のテーマでのコンテストが開催されています。

「Solafune」では宇宙から観察した地球のデータや地上データを参加者に提供し、社会課題や企業課題の解決のために活用していくコンテストが開催されており、今後も楽しみなサイトです。

また、「Solafune」では、コンテスト参加者が交流できるDiscordのチャネルも用意されており、ベースラインのコードについて議論されるなど、活発な意見交換が実施されています。

【俺人自己紹介】
優秀な人工知能に代わりに頑張ってもらうことを目標に、Solafuneを始め各種コンテストに参画しながら、Pythonや機械学習、統計学などの勉強中をしています。学習したことを自分の身に着けるために、ブログ(https://oregin-ai.hatenablog.com/)やTwitter(https://twitter.com/Oregin2)にアウトプットしています。

【実績】
〇データ分析サイト(2022年10月時点)
・ProbSpace 総合1位(金5、銀4、銅2)
・Solafune 衛星画像から空港利用者数を予測 準優勝
・夜間光データから土地価格を予測 9位
・Nishika 総合19位(金1、銅2)
・SIGNATE 銅1
・Kaggle 銅1
〇日本ディープラーニング協会主催
・CDLEハッカソン2020 優秀賞受賞
・CDLEハッカソン2021 企業賞受賞

(2)コンペの概要

Credit : solafune

マルチ解像度画像の車両検出
https://solafune.com/ja/competitions/25012781-b1e8-499e-9c8c-1f9b284d483e?menu=about&tab=overview

今回のコンテストは、練馬区の航空写真データセット(https://www.city.nerima.tokyo.jp/kusei/tokei/opendata/opendatasite/
tokei_kusei/koku-shashin.html
)などの航空写真や衛星画像から車両を検出する課題でした。

このコンテストのアウトカムとして、現在地上での移動手段の最も大きな割合を占める車の移動や駐車状況を把握することで、人々の行動やその結果を分析する手法を確立し、渋滞の把握・事故車両の検出・駐車台数から商業施設の業績予測などの様々な場面で応用されることが期待されています。

また、与えられたデータは、高解像度データの取得が困難なエリアもカバーできるよう、低解像度から高解像度まで幅広い解像度となっており、マルチ解像度に対応する必要がありました。

(3)チャレンジした結果

チャレンジした結果としては、17位でした。入賞はできませんでしたが、初めてマルチ解像度の物体検出に取り組み、いくつかの手法を学べたことはとても良い経験になりました。

(4)精度を上げるためにやったこと

今回のコンテストは、異なる解像度の航空写真や衛星画像から、車両である領域を検出するモデルを作成し、正解の領域との差異が小さいことを競うコンテストでした。

差異が小さいことを評価する指標には、CVPRという国際学会に2022年に発表された「OC-cost」(https://arxiv.org/abs/2203.14438)という比較的新しい評価指標が用いられました。(評価指標については後述します)

私は、OpenMMLabプロジェクトがPytorchベースで開発する物体検出に特化した「MMDetection」(https://github.com/open-mmlab/mmdetection)というツールボックスを利用して、YOLOXで学習を実施しました。

モデル構築にはわっしーさんの記事(https://zenn.dev/kwashizzz/articles/solafune-vehicle-det-mmdet)も参考にさせていただきました。

〇前処理

前処理としては、MMDetectionで利用できるように画像はtiffからpngに変換し、アノテーションデータはjsonからMicrosoftのCommon Objects in Contextデータセット(通称MS COCO dataset)のフォーマットに変更しました。(https://cocodataset.org/

〇学習

学習については、「MMDetection」(https://github.com/open-mmlab/mmdetection)というツールボックスを利用して、「YOLOX」(https://arxiv.org/abs/2107.08430)で学習しました。

「YOLOX」は、2021年8月に公開された最新の物体検出モデルです。YOLOv5を超える性能と、使いやすいライセンス(Apache License)を両立し、CVPR2021のAutomous Driving WorkshopのStreaming Perception Challengeで1位を獲得しています。

〇車両検出

1175枚の訓練画像で学習させたモデルに、1177枚の評価画像を投入し、検出された領域をjson形式に出力して提出ファイルとしました。

〇評価指標

今回の「OC-cost」(https://arxiv.org/abs/2203.14438)という評価指標は、検出された領域を正解の領域にするためには、どれだけ領域を変更しなくてはならないかという点を評価する指標になります。(実際は、検出された領域が何であるかの分類の修正も評価対象になりますが、今回のコンテストでは「車両」のみの検出なので分類誤りは発生しないタスクでした。)

従来のmAP(Mean Average Precision)という評価指標に比べ、余分な検出に対してもペナルティを積極的に与える、画像1枚に対する検出においても精度が評価できる、分類の誤差と領域の誤差の評価を同時に行えるなどの特徴があります。

lissさんが、今回のコンテストのデータを用いて、様々なパターンの誤差ごとに評価指標に与える影響を記事にしてくださっています。(https://zenn.dev/lissxxxx/articles/oc-cost-sample

(5)難しかったこと/壁を感じたこと

今回のテーマは、初めて本格的に物体検出に取り組んだので、評価指標が改善したり悪化したりした際に、何が影響するのかを把握できず苦戦しました。

他のコンテストで、数値を予測するタスクや画像を分類するタスクでは、評価指標だけでなく、訓練データの予測値と正解値を眺めることで、評価指標の改善や悪化を感覚的に認識することができたのですが、物体検出については感覚的な認識だけでは足らず、もっと理論的に理解を深める必要があると改めて認識しました。

また、毎回画像系のコンテストでは感じていることなのですが、異なる解像度の画像から物体を検出するのに多くのリソースが必要(特にGPUは必須!)ということで、これまで同様、Google Colabを中心にコンテストに取り組んでいる私にとっては、何度も試行を繰り返すことが難しいタスクでした。

早くGPUが安価に手に入る時代になることを願っています。

(6)車両検出をやってみて感じた衛星データの可能性

車両検出を実施することで、私の作成したモデルでも、それなりの精度で、車両を検出することができました。

従来、交通量等の把握は、人力で車両台数を数える手法や、道路や駐車場にカメラを設置する手法が一般的でしたが、今回のコンテストのように空からの航空写真や衛星画像を用いて、精度の高い車両検出が行えるようになれば、より効率的・広範囲・低コストで交通量等の把握することが可能となります。

冒頭に述べたように、衛星データを活用することで、交通量等の把握ができるようになれば、渋滞の把握・事故車両の検出・駐車台数から商業施設の業績予測など、様々な場面での活用可能性が高まります。

今回のようなコンペティションで作成されたモデルが、実運用にも適用され、ますます衛星データの物体検出技術の発展に繋がっていくことを願っております。

最後になりましたが、本コンペを運営してくださいました、Solafune の運営の皆様、一緒にコンペに取り組んでいらっしゃった皆様、TwitterやDiscord上でやりとりを実施させていただいた皆様に心より感謝申し上げます。