機械学習とかコンピュータビジョンとか

CVやMLに関する勉強のメモ書き。

Unsupervised Part-Based Disentangling of Object Shape and Appearanceを読んだのでメモ.

はじめに

Unsupervised Part-Based Disentangling of Object Shape and Appearanceを読んだのでメモ.

気持ち

教師なしで物体(主に人)のshapeとappearanceに関する表現を獲得しようというもの.このような表現を獲得することでポーズを変えたり見えの一部を変更(着せ替えなど)が可能になる.

手法

物体のappearanceとshapeは独立かつ,shapeは関節(part)ごとに独立という考えに基づいて,入力xに関するpartごとのappearanceの特徴ベクトル\alpha_i(x)\in\mathbb{R}^nとpart activation map\sigma_i(x):\Lambda\rightarrow\mathbb{R}^+の獲得を目標とする.基本的なアプローチは,上記の考え方を取り入れた自己符号化器によって表現を学習する.

モデルの構成としてはpart shapeを出力するモデル(hourglass network)とappearanceを出力するモデル(hourglass network?)と,二つを入力として元の画像を復元するモデル(U-Net)の3つからなる.part shapeはappearance不変のため,appearanceを変えた入力a(x)を,part appearanceはpart shape不変なため空間的な変換(アフィン変換など)をした入力x\circ sを入力として,それぞれpart shape\sigma_i(a(x)),part appearances\alpha_i(x\circ s)を出力する.decoder(復元モデル)は推定されたpart shapeとpart appearanceを入力として元画像x(appearanceもshapeも変更していない画像)を復元する.

損失関数はxと復元された画像\hat{x}のL1誤差として以下のように定義される.

\displaystyle
\mathcal{L}_{rec}=\left\|x-D\left(\left[\alpha_i(x\circ s),\sigma_i(a(x))\right]_{i=1,\dots}\right)\right\|_1

また,part shapeはdeformationに関して不変であってほしいため,\sigma_i(a(x))\sigma_i(x\circ s)間に\sigma_i(x\circ s)[u]-\sigma_i(x)[s(u)]=0という関係が成り立つことが好ましい(ただし,uは画像上の画素の位置を表す).ただし,これを単純に制約として与えるのは実験的に不安定だったため,次のように修正して損失とした.

\displaystyle
\mathcal{L}_{equiv}=\sum_i\lambda_\mu\|\mu[\sigma_i(x\circ s)]-\mu[\sigma_i(a(x))\circ s]\|_2+\lambda_\Sigma\|\Sigma[\sigma_i(x\circ s)]-\Sigma[\sigma_i(a(x))\circ s]\|_1

ただし,\mu[\sigma_i(x)],\Sigma[\sigma_i(x)]\sigma_i(x)の座標における平均と共分散.要は,単純に座標毎に一致する様に制約を課すのではなく,大まかな位置があってれば良しとしたいということ.

その他decoderに入力する際の\alpha_i(x\circ s)\sigma_i(a(x))の計算方法などあるが今回は割愛.

まとめ

教師なしの割に綺麗に推定できている印象.GANなどでposeを条件として色々なappearanceの画像を生成するような研究があったが,単純な回帰問題の学習でほぼ似たようなことができている.特に,pose推定器など使わず真に教師なしに人物のpartが推定できているのは驚き.