宙畑 Sorabatake

機械学習

「市街地衛星画像の超解像化」コンペにチャレンジ! その結果と衛星データの可能性

2021年9月から始まったSolafuneの「市街地画像の超解像化」コンペに参加した俺人さんに、チャレンジした結果の記録を宙畑に寄稿していただきました。

現在、世界中で「衛星データの利活用」を促進するべく、様々な取り組みが行われています。この中でも、衛星データや地理空間データに特化したコンテストを開催することで利活用を促進しようとしているのが「Solafune」です。

これまでも「夜間光データから土地価格を予測」や「衛星画像から空港利用者数を予測」といった衛星データを利用した独自のテーマでコンテストが開催されています。コンテストを開催するだけでなく、Solafuneではコンテスト参加者が交流できるDiscordのチャンネルも用意されており、コンペ参加者同士で活発な意見交換が実施されていることも魅力の1つです。

本記事では、2021年9月から始まった「市街地画像の超解像化」コンペに参加した俺人さん(@Oregin2)に、コンペにチャレンジした記録や今後の衛星データ可能性について教えていただいた内容を掲載しています。

【著者紹介】
俺人
優秀な人工知能に代わりにXXを頑張ってもらうことを目標に、Solafuneを始め各種コンテストに参画しながら、Pythonや機械学習、統計学などの勉強をしています。学習したことをアウトプットすることで自分の身に着けるために、ブログTwitterも運用中です。

【実績】
〇データ分析サイト
 ProbSpace 総合1位(金5、銀2、銅2)
 Nishika 総合13位(金1、銅2)
 SIGNATE 銅1
 Kaggle 銅1
〇日本ディープラーニング協会主催
 CDLEハッカソン2020 優秀賞受賞
 CDLEハッカソン2021 企業賞受賞

(2)「市街地画像の超解像化」コンペの概要

「市街地画像の超解像化」コンペでは、与えられた低解像度の画像から、高解像度の画像を作り出すという課題が与えられました。

衛星画像を活用する際の課題の一つに「解像度が粗いこと」があります。人工衛星は広域を撮影できる一方で、詳細を確認できるようにするためには、高価な衛星画像を購入する必要があります。とは言え、解像度が高いといっても、航空機から撮影した画像だと地上分解能が5 cm程度なのに対して、世界で最も解像度が高い衛星画像であっても地上分解能は30 cm程度です。高解像度のデータは値段が高い上に、利用規約にも様々な制限が課せられています。

この課題を解決するための1つのアプローチとして、画像の超解像化があります。超解像することで、分解能が粗いことで視認性が十分でない画像であっても視認性が向上します。そこで、今回のコンテストでは低解像度の画像から、高解像度の画像を作り出す「超解像化」がテーマとなりました。

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

チャレンジした結果としては、53位と振るわなかったのですが、初めて超解像化に取り組み、いくつかの手法を得られたことはとても良い経験になりました。

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

〇全体像
今回のコンテストは、375×300ピクセルの低解像度の画像から、1500×1200ピクセルの4倍高解像度の画像を生成(超解像化)するモデルを作成し、実際の正解情報である高解像度の画像と、生成した画像の差異が小さいことを競うコンテストでした。

60枚の低解像度と高解像度がセットで揃っている訓練データで学習を行い、40枚の低解像度しかないテストデータから高解像度データを生成することでアルゴリズムの精度を競い合います。

私は、SwinIR、ESPCN、Real-ESRGANというアルゴリズムを組み合わせたモデルを作成し、生成画像の平均画像を作成することで、提出画像を作成しました。
全体像は以下の通りです。

〇前処理
前処理としては、何もせずにそのまま学習に使用するものと、縦横ともに1/3に分解した画像を学習に使用するもので2パターン用意しました。1/3にした理由は、低解像度の縦横、高解像度の縦横の各値が全て3で割り切れるからです。

〇モデル
モデルについては、以下の3種類のモデルを活用しました。
ESPCN:2016年9月に公開されたモデルです。CNNを利用した超解像化モデルとなります。最後の層にSub-Pixel Convolution(Pixel Shuffle)というアルゴリズムを適用することで、斑模様を削減しています。Solafune公式から公開された「市街地画像の超解像度化モデルベースライン」を参考に構築しました。

Source : https://arxiv.org/pdf/1609.05158.pdf

SwinIR:2021年の8月に公開されたモデルです。Transformerを利用した超解像化モデルです。計算にある程度のリソースを必要としますが、多くの超解像タスクでSoTAを達成しています。わっしーさんの「Solafuneの市街地画像の超解像化コンペのまぁまぁ高精度な解法」を参考にさせていただき構築しました。論文はこちら「SwinIR: Image Restoration Using Swin Transformer」、GitHubではこちらに公開されています。

Source : https://arxiv.org/pdf/2108.10257.pdf

Real-ESRGAN:2021年7月に公開されたモデルです。ESRGANの改良版なのですが、モデル自体は変更がなく、下図のように訓練用の低解像度の画像を作成する前処理を工夫することで、精度を向上しています。論文はこちら「Real-ESRGAN: Training Real-World Blind Super-Resolution with Pure Synthetic Data」、GitHubではこちらに公開されています。

Source : https://arxiv.org/pdf/2107.10833.pdf

〇超解像化
訓練データ60組で学習させたそれぞれのモデルに40枚のテストデータを投入し、それぞれの出力の画素毎の平均値を取った画像を最終的な提出画像としました。

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

今回のデータは、高解像度の画像が1500×1200の比較的大きな画像であったことや、超解像化という処理自体が処理に多くのリソースが必要(特にGPUは必須!)ということで、Google Colabを中心にコンテストに取り組んでいる私にとっては、かなり厳しいコンテストとなりました。

これまでのコンテストでは、大量のモデルを作って様々な組み合わせの平均値を網羅的に作成していくといった戦略を取っていました。

しかしながら、今回は、1回1回の試行に時間がかかる上に、Google Colabの処理時間の上限があるため、1個のモデルで学習できる時間に上限ができてしまい、思うように精度があげられませんでした。

やはり、モデルの理論も理解した上で、効率的な試行を行うことが重要であると改めて痛感いたしました。

(6)超解像の解析をやってみて感じた衛星データの可能性

超解像の解析を実施することで、私の作成したモデルでも、見た目にはかなり解像度が上がったと感じられる画像を生成することができました。

冒頭に述べたように、近年、解像度が高い衛星画像の提供・販売も始まっていますが、まだまだ、値段が高く、利用規約にも様々な制限が課せられています。

今後、安価な低解像度の画像から、高解像度の画像を生成できる技術が普及することで、衛星画像利用産業への新規参入障壁が下がることが期待されます。

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

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

引き続き、コンペティションに参加して腕を磨くとともに、身に着けた技術を使って社会貢献できるよう精進してまいりたいと思います。