前に逃げる

勉強したことのメモ

【解説&実験】 CNNによるパンシャープニング

最近取り組んでいたパンシャープニングについてのメモです。パンシャープニングについての説明と、CNNを使ったパンシャープニングの方法について書きます。日本リモートセンシング学会に投稿した内容についてもちょっと書きます。コードもそのうち公開するつもりです。

目次

パンシャープニングとは

パンシャープニングを一言で言うと、低解像度マルチバンド画像と高解像度単バンド画像(パンクロマティック)から高解像度マルチバンド画像を合成することです。(図1参照)

f:id:dl-kento:20181008205458p:plain
図1 パンシャープニングの例 (引用元: Pansharpening by convolutional neural networks 1)

リモートセンシング画像の品質を定めるパラメータの中に空間分解能とスペクトル分解能があります。(多分もっとあるとは思いますが。)空間分解能が高いほど画像を詳細なスケールで解析することができます。また、スペクトル分解能が高いほど画像の1ピクセルから得られる情報量は大きくなります。例えば、スペクトル波形を解析することによって地表面の植物や鉱物の種類を知ることができます。

エネルギー保存の法則から空間分解能 (spatial resolution) とスペクトル分解能 (spectral resolution) にはトレードオフの関係があるため、一つのセンサーにより得られた画像では望ましい性能を達成できないことがあります。そのような場合異なる性能のセンサーのデータを組み合わせることによって疑似的に所望のパラメータを持った画像を合成することができます。図1の例では二つの画像を組み合わせることにより建物一つ一つの解像度を捉えられる分解能を持ったカラー画像を合成しています。

パンシャープンのアルゴリズム

多くのstate-of-the-artのパンシャープニングの手法は以下の式の最適化により行われています。


\mathcal{L} = \lambda_1 f_1(\mathbf{X}, \mathbf{P}) + \lambda_2 f_2(\mathbf{X}, \mathbf{M})  + f_3(\mathbf{X}) \tag{1}

ただし、

 \mathbf{X} : パンシャープニング画像

 \mathbf{P}: パンクロマティック画像

 \mathbf{M}: 低解像度マルチバンド画像

です。

つまり、第1項はパンクロ画像との空間情報の一貫性、第2項はマルチスペクトル画像とのスペクトル情報の一貫性を意味しています。第3項は正則化項です。

CNNによるパンシャープニング(PanNet)

CNNによるパンシャープニングの手法は様々なものが紹介されていますが、今回はICCV2017で発表されたPanNet2を紹介します。

PanNetはCNNによりマルチスペクトル画像とパンシャープン画像の差分をResNetにより推定します(式 (2))。  f_w はCNNによる写像を表しています。また、 \mathbf{M} はパンクロマティック画像の分解能に合わせてアップサンプリングしています。( \uparrow がアップサンプリングに対応しています。)


\mathbf{X} = f_w (\mathbf{P}, \mathbf{M}) + \uparrow \mathbf{M} \tag{2}

学習は式(1)の目的関数によってCNNのパラメータを最適化することにより行われます。ただし、各項は以下のように計算されます。


f_1(\mathbf{X}, \mathbf{P}) = \parallel \Sigma^B_{b=1} \omega_b \mathbf{X} - \mathbf{P} \parallel^2_2 \tag{3}

 f_2(\mathbf{X}, \mathbf{M}) = \Sigma^B_{b=1} \parallel \mathbf{X} - \uparrow \mathbf{M} \parallel^2_2 \tag{4}

 f_3( \mathbf{X} ) = 0 \tag{5}

ここで bはバンドのインデックス、 Bはバンドの総数です。前述の通り、式(3)は空間情報の制約で、式(4)はスペクトル情報の制約です。この論文では f_3 = 0になっていますが、CNNの構造そのものがうまく働いてくれそうだし3確かにあえて損失として設定する必要はないかもしれませんね。

Landsat8を用いた実験

Landsat8の画像が無料で手に入る4のでCNNによるパンシャープニングの実験を行いました。(日本リモートセンシング学会での発表内容もこちらになります。) 個人的に式(4)でアップサンプルしたマルチスペクトル画像をターゲットに損失を計算するのが気持ち悪かったので、少し式を変更しています。(式(4'))


f_2(\mathbf{X}, \mathbf{M}) = \Sigma^B_{b=1} \parallel \downarrow  \mathbf{X} - \mathbf{M} \parallel^2_2 \tag{4}

パンシャープン画像をダウンサンプルしたものがマルチスペクトル画像に一致するという損失をとったほうが自然な気がします。(あまり変わりませんが...)

適当に画像を取ってきて学習させた結果を図2に示します。左からマルチスペクトル画像(RGB画像)、パンクロマティック画像、パンシャープン画像(合成画像)になります。

f:id:dl-kento:20181008205342j:plain
図2: パンシャープン結果例

左二つの画像をうまく使って綺麗な画像が合成されていますね!

おわりに

今回はCNNを用いたパンシャープニングについて書きました。今回は既存手法の再現ですがさらに性能を上げて行きたいと思います。コンピュータビジョンのタスクの中では高解像度化や自動着色が近いと思うのでこのあたりの論文をサーベイしてアイデアを温めようと思います。

参考文献


  1. G.Masi et al. “Pansharpening by convolutional neural networks”. (https://www.mdpi.com/2072-4292/8/7/594)

  2. J. Yang et al. “PanNet: A Deep Network Architecture for Pan-Sharpening”. (http://openaccess.thecvf.com/content_ICCV_2017/papers/Yang_PanNet_A_Deep_ICCV_2017_paper.pdf)

  3. D. Ulyanov et al. “Deep Image Prior”. (https://dmitryulyanov.github.io/deep_image_prior)

  4. LandBrowser (https://landbrowser.airc.aist.go.jp/landbrowser/)