影の検出

近年、深層学習のアルゴリズムを用いいて、写真の中にある影の領域を検出あるいは除去する研究が行われるようになった。自然界で撮影された写真のほとんどには影が映っている。これらの影を検出することで、光の方向や強弱、物体の形などの情報を写真から抽出できるようになる。さらには、写真の中から影を除去することができるようになれば、画像解析の精度の向上が期待される。

影に関する研究は、影の検出と影の除去という 2 つの課題に分けることができる。少し前までは、影の検出に特化したアルゴリズムが作られたり、あるいは、影の検出を行わずに画像全体に対して処理を行なって影の除去を行うアルゴリズムが作られたりしてきた。今では、影の検出から影の除去まで end-to-end のアルゴリズムやフレームワークも開発されるようになった。

DeshadowNet

DeshadowNet (Qu et al, 2017) は、画像中の影領域を除去するフレームワークである。DeshadowNet のソースコードは著者の一人である Tian のウェブサイトから入手できる。

DeshadowNet は 3 つの convolutional neural network で構成されている。画像は、まず、最初の CNN である global localization network (G-Net) に入力され、画像全体の構造と画像中の影との関係が抽出される。次に、G-Net を構成する複数のレイヤーのうち、浅いレイヤーの情報は appearance modeling network (A-Net) に渡され、appearance information が抽出される。また、これと並行で、G-Net の深いレイヤーの情報は semantic modeling network (S-Net) に渡され、semantic information が抽出される。最後に A-Net および S-Net の出力は畳み込みレイヤーによって統合されて、影なしの画像が出力される。

次の画像は、Qu et al, 2017 論文中の Figure 5 を改変した画像である。1 列目は影入りの写真で、2 列目は影なしの写真である。3 列目は DeshadowNet の出力結果である。各写真中の左上にある緑色の値は RMSE を表している。左から、影部分、影部分以外、および画像全体の RMSE となっている。

ST-CGAN

ST-CGAN (Wang et al, 2017) は、写真中の影領域を検出し、影を除去するフレームワークである。影検出用の conditional generative adversarial network (CGAN) と影除去用の CGAN を繋げて、影検出と影除去を同時に行えるようにした。ST-CGAN のソースコードは、作者らのラボの GitHub ページで公開されている。

ST-CGAN の学習には 3 種類の画像を必要とする。影入りの画像、影なしの画像、および影のマスク画像の 3 種類である。学習において、まず、影入りの画像を shadow detection generator に入力し、偽の影マスク画像を得る。続いて、「影入り写真と偽の影マスク画像」のペアと「影入り写真と(本物の)影マスク画像」のペアを shadow detection discriminator に入力して学習を進める。次に、shadow detection generator により生成された偽の影マスク画像を、shadow removal generator に入力し、偽の影なしの画像を得る。続いて「影入り写真、偽の影なし画像と偽の影マスク画像」の 3 点セットと「影入り写真、(本物の)影なし画像と(本物の)影マスク画像」の 3 点セットを shadow removal discriminator に入力し学習を進める。他のアルゴリズムでは、影入りの画像と影なしの画像のペアがあれば学習を進めることができるのに対して、ST-CGAN では影入りの画像、影なしの画像、および影のマスク画像の 3 種類を必要とする。

次の画像は、Wang et al, 2017 論文中の Figure 5 を改変した画像である。1 列目は影入りの写真で、2 列目は G1 ニューラルネットワークにより出力された影領域であり、3 列目は影を除去した画像となっている。画像から確認できるように、影が正確に除去されているのを確認できる。

DSC / DSC+

DSC (Hu et al, 2018) は、画像中の影領域を検出および除去するフレームワークである。DSC のソースコードは著者の一人である Hu の GitHub で公開されている。

画像の中から影の領域を検出するのは決して簡単なことではない。写真中の一部の情報だけを使って影領域を検出しようとすると、影でない部分も影として検出される可能性がある。例えば、白黒の格子状の床に立っている人の影を検出しようとして、局所的な情報だけを使うと、床の黒格子の部分も影として認識されてしまうかもしれない。そのため、影を検出するには、画像全体から情報を抽出して判断する必要がある。例えば、画像を上下左右の 4 つの方向で総合的に情報を抽出することで、影領域の検出がより正確になる。

Direction-aware spatial context (DSC) のフレームワークでは、2 次元の画像を上から下、下から上、左から右、右から左の 4 つの方向で recurrent neural network (RNN) を使用して情報を抽出する。抽出された情報にウェイトをかけて、CNN に入力して、影領域の検出を行う。学習は、影あり画像と影なし画像がペアとして進められる。影あり画像と影なし画像のペアで、影のない領域の RGB 輝度が必ずしも一致しない。そのため、影あり画像と影なし画像の差分は、実質的に影以外の影響も含まれている。そこで作者らは、影なし画像の輝度を、影あり画像に変換する関数を用意した。次に彼らは、影あり画像と色彩変換関数によって変換された影なし画像を使っても、学習を試みた。調整済み影なし画像を使って学習して得られたフレームワークは、論文中では DSC+ としている。

次の画像は Hu et al, 2018 論文中の Figure 12 である。1 列目は影入り写真で、2 列目は影なし写真(grand truth)である。3 列目と 4 列目はそれぞれ DSC+ と DSC による画像除去後の画像である。

scGAN

scGAN (Nguyen et al, 2017) は画像から影領域を検出するフレームワークである。論文を見る限り、scGAN は影を除去する機能はないようである。scGAN は conditional generative adversarial network (cGAN) をベースとしている。

これまでの cGAN をベースとした影領域検出フレームワークは、一度学習が済めば、パラメーターを変更できなくなる。対策として、感度の異なる cGAN フレームワークを複数作り、ベストなものを選ぶという選択肢が考えられるが、これには計算コストが高すぎる。そのため、従来の cGAN ベースのフレームワークでは、影の濃さ加減にうまく対応できていなかった。そこで著者らは、パラメーターを変更できるような cGAN ベースのフレームワーク scGAN を作成した。scGAN では、影入りの画像の他に、影の加減を表すパラメーター w をも cGAN の generator に入力して、学習を進めている。

Fast Shadow Detection

Fast Shadow Detection (Hosseinzadeh et al, 2017) は SVM と CNN を組み合わせた影検出ソフトウェアである。入力画像に対して、セグメンテーションを行い、次に各セグメントから計算した特徴量を SVM に入れて shadow prior map を得る。つぎに、この shadow prior とRGB 画像を重ね合わせて patched CNN に入力して、影検出を行う。

References

  • L. Qu, J. Tian, S. He, Y. Tang and R. W. Lau. DeshadowNet: A Multi-context Embedding Deep Network for Shadow Removal. IEEE Conference on Computer Vision and Pattern Recognition (CVPR). 2017, 2308-16. DOI: 10.1109/CVPR.2017.248
  • J. Wang, X. Li, L. Hui, J. Yang Stacked Conditional Generative Adversarial Networks for Jointly Learning Shadow Detection and Shadow Removal. arXiv 2017, 1712.02478.
  • X. Hu, C. Fu, L. Zhu, J. Qin, P Heng. Direction-aware Spatial Context Features for Shadow Detection and Removal. arXiv 2017, 1805.04635.
  • V. Nguyen, T. F, Y. Vicente, M Zhao, M. Hoai, D. Samaras. Shadow Detection with Conditional Generative Adversarial Networks. IEEE Conference on Computer Vision and Pattern Recognition (CVPR). 2017, 2308-16. DOI: 10.1109/ICCV.2017.483
  • S. Hosseinzadeh, M. Shakeri, H. Zhang. Fast Shadow Detection from a Single Image Using a Patched Convolutional Neural Network. arXiv 2017, 1709.09283.