空飛ぶロボットのつくりかた

ロボットをつくるために必要な技術をまとめます。ロボットの未来についても考えたりします。

Sim2Real論文まとめ(2) - PixelDomainAdaptation

f:id:robonchu:20190303135127p:plain

やりたいこと

実データを取得するのが大変なので、限られたデータからDomain Adaptationがしたい。

そのために有用そうなUnsupervised Pixel-Level Domain Adaptation with GANを理解する。

論文について

arxiv.org

  • presented at CVPR 2017

  • Google Brainの論文

評価

☆☆☆☆(4/5)

ロス関数の作り方やGANを安定させるための工夫が参考になる。

内容まとめ

Abstract

  • 品質のいいアノテーション付きのデータセットを作るのはとても大変

  • 解決策として、人工的にデータによる自動アノテーションすることが考えられるが、生成モデルが現実世界に適合できないことも多い。

  • 本論文では、画像空間においてあるドメインから対象とするドメインに適応させる教師なしのGANのアプローチを提案する。

Introduction

  • ImageNetなどのアノテーション付き大規模データセットは認識技術の向上に大きく貢献した。

  • 一方でデータの作成がとても大変だという課題がある。

  • ここで、人口的に作成した画像で代替できればよいが、それだけで訓練したモデルでは実画像に対して適用できないことが多い。

  • ひとつの解決策として、教師なしのDomain Adaptationがある。

  • つまり、ラベル付けされたあるDomainからラベル付けされていない対象Domainへ学んだ知識を転移させたい。

  • 本論文では元の特徴量を保持しつつ、あるDomainの画像をまるで対象のDomainであるように見映を変化させるようなモデルを提案する。

  • Pixelレベルでの教師なしのDomain Adaptationであり、PixelDAと呼ぶ。既存技術に対し様々な利点がある。

f:id:robonchu:20190302232505p:plain

上図からわかるように対象Domainに近い見映の画像が生成さえれている。

以下に簡単に提案手法の特徴を述べる。

Decoupling from the Task-Specific Architecture
  • 一般的なDomain AdaptationではDomain Adaptationのプロセスとタスク(Classification or Detection etc ..)特有の構造が絡み合っている。

  • これに対してPixelDAではDomain Adaptationの構成を再学習することなしに、タスク特有の構造を変えることができる。

Generalization Across Label Spaces
  • PixelDAはタスク固有部分とdomain adaptation部を非干渉化できているので、訓練時とテスト時で異なるlabel spaceを扱うことができる
Training Stability
  • GANを利用したDomain Adaptationは初期状態に影響を受けやすい。

  • この対策として、ソース画像と生成画像を用いた損失関数による訓練とピクセル類似度による正則化によって安定性を向上させる。(詳細後述)

Data Augumentation
  • これまでの一般的なDomain Adaptationdeは有限のソースとターゲットデータからの学習に限られる。

  • 提案モデルはソースデータと確率ノイズベクターによる条件付けによって、制限なく仮想的にターゲットDomainから似た画像を生成することができる。

Model

  • PixelDAは汎用的に使用可能だが、説明のため画像の classificationを例に説明を行う。

  • この論文のゴールは、ソースDomainからターゲットDomainに対して汎化的なclassifierを訓練することである。

  • 提案モデルはタスク固有のclassificationからdomain adaptationのプロセスが分離されているので、1度adaptするとdomain adaptationすることなしに他のclassificationタスクへ適用(訓練)することができる。

  • 私たちはDomain間の差異はhigh-level(対象物のタイプや幾何的な変化etc...)というよりlow-level(ノイズや色、彩度etc...)な情報による影響が大きいと考えていることを強調したい。

  • 定式化すると

    f:id:robonchu:20190303135234p:plain

    はソースのデータセットを表現し、 xsはソース画像、ysはソースラベル。

    f:id:robonchu:20190303135259p:plain

    はGenerator functionを表し、θがパラメータでソース画像とnoise vectorであるzからfake imageであるxfを出力する。

    Generator function Gが求まると、以下のようにadaptされた新しいデータセットをつくることができる。

    f:id:robonchu:20190303135334p:plain

Learning
  • GをターゲットDomainに近い画像を生成できるようGANを用いる。

  • ソース画像xsとnoise vector zからadaptされた画像xfを生成するGを訓練する。

  • モデルは、ターゲットDomainからサンプルされた画像かどうかの尤度dを出力するdiscriminator func Dによって補強される。

  • Discriminatorはgeneratorから作られたfake画像かターゲットDomainからとってきたreal画像かを見分けようとする関数である。

  • ここで大事なことが、一般的なGANはnoise vectorのみに制限付けられているのに対して、提案モデルはnoise vectorとソースDomainからの画像の両方に制限付けられている、ということである。

  • なので、ゴールは以下のmin-max gameを最適化することである。

    f:id:robonchu:20190303135357p:plain

    αとβは重みで、LdはターゲットDomainに近づけるためにloss funcでLtはタスクをこなすためのloss funcである。

  • Ldは以下のようにかける。DとGのmin-max game。

    f:id:robonchu:20190303135413p:plain

  • Ltは以下のようにかける。classificationの場合の典型的なsoftmax cross-entropy lossを用いている。

    f:id:robonchu:20190303135437p:plain

    ここで、Gで生成した画像とソース画像の両方を用いてTを訓練しているのは訓練を安定させるため。これによって、初期値依存性が減り安定性が大きく向上した

    f:id:robonchu:20190303123809p:plain

    実装したモデルは上図参照。min-max gameでの最適化時は2つのステップに分かれている。

    1. generatorのθGを固定した状態で、discriminator とタスク特徴のパラメータθDとθTを更新する。

    2. パラメータθDとθTを固定した状態で、θGを更新する。

Content-similarity loss
  • low-levelの画像のadaptationについて、前景と後景に対して処理をするのが良いという知見がある。

  • そこでラベル付けされた情報の類似性を保つために前景と後景を切り分けるz-buffer maskを用いて工夫を行う。

  • その工夫とは前景のpixelのみソース画像とgenerate画像の間の大きな差異にペナルティを与えるlossを新たに追加するというものである。

  • これによって、min-max gameの最適化がより安定する。

  • まとめると以下のようにloss関数を表現できる。

    f:id:robonchu:20190303135508p:plain

    αとβとγは重みで、Lcは類似度を一定に保つようなcontent-similarity lossである。

  • このloss func Lcinputとoutputの全体の差ではなく、pixelごとの差に対してpenaltyを与えるmasked pairwise mean squared error(masked-PMSE)を用いる。以下のように表現でき、generateされた前景画像とソース前景画像に対して、計算される。

    f:id:robonchu:20190303135532p:plain

    mはbinary maskでkはkはinput xのpixle数でL2ノルㇺをとっている。

  • これによって対象物の全体の形状など再現するための情報を保つことができる。

Evaluation

ここからは画像ベースでPixelDAを使った例を貼り付けます。

MNISTの例

f:id:robonchu:20190303135554p:plain

Linemodeの例

f:id:robonchu:20190303135619p:plain

ラベリング情報は保ちつつlow-levelな情報が様々変化している画像が生成されていることがわかる。

所感

loss関数をうまく設計することで変化させたい情報とさせたくない情報を切り分けれるのは面白い。

Domain Adaptationにおいてlow-levelの情報に着目しているのは納得。

GANを安定化させるための共有要素/普遍的な方法を検討していきたい。