Pose Guided Person Image Generation
5/25 arXivに投稿された,Pose Guided Person Image Generation という論文を読みました.
[1705.09368] Pose Guided Person Image Generation
Pose Guided Person Generation Network
服や人の情報を残して,任意のポーズを取った,人の画像を生成したい.
・ Network は,2つのステージで構成される.
一つ目のステージ
同一人物のポーズを変えた,ぼんやりとした画像を生成
2つ目のステージ
ぼんやりとした画像を高精度にするためのconditional GAN
・ネットワークの構造
ステージ1:
Generator1:encoder-decoder U-netに似ている.
encoderやdecoderの各層はResidual Block になっている.
encoderとdecoderの間には全結合層がある.
ステージ2:
GAN
Generator2:encoder-decoder U-netに似た構造.
encoderやdecoderの各層はResidual Block になっている.
encoderとdecoderの間には全結合層がない.
Discriminator: DCGANのDisciminator
・Loss関数
ステージ1:poseMaskLoss ( L1損失関数+poseMask )
poseMaskによって,ターゲットにしているポーズの位置の損失を強調する.
ステージ2:
Generator2の損失関数は,
Discriminatorが real 画像だと判定したかどうか
→ ラベル1とDの出力値の binary cross-entropy
さらに,poseMaskLossも加える.
Discriminatorは,
real 画像が入力された時には,1
fake 画像が入力された時には,0が出力されているかどうかで
binary cross-entropy
・データセット
Market-1501 http://www.liangzheng.org/Project/project_reid.html
re-identification のデータセット
DeepFashion http://mmlab.ie.cuhk.edu.hk/projects/DeepFashion.html
服などのデータセット
poseMaskLossは背景変化の影響の低減のため,人物の体に注目するようにするための工夫.
したがって,DeepFashionのように白背景の場合は大きな効果は得られないようだ.
・データの前処理
pose-estimationをして,18点の,関節や頭の位置を示した18 x 1chの白黒画像を作る
論文中には state of the art な手法で推定したとあり,
を使っている.しかし今はもうOpenPoseが state of the art ?
・実装
U-net like なネットワーク構造で,https://arxiv.org/pdf/1612.05360 で提案されているU-net 風のものを使っているようだ.
U-net との違いは,skip-connectionをconcatではなく,要素ごとの和にしている点.
論文中には,ダウンサンプリングやアップサンプリングの手段が載っていなかったので,自分の実装では,
Conv2d stride=2 でダウンサンプリング.
ConvTranspose2d stride=2 でアップサンプリング.
また,encoder側のResidual Blockのどの位置からskip connectionを作り,どのいちでdecoder側に足しこむのかに関しては明らかになっていない.
論文中のNetwork architectureの図にはいくつか間違いが含まれているので,その部分のアップデートと共により詳しい構造について述べられるのを期待したい.
・結果
(学習中)
・コード (ここ)
DeepFashion用.
データの前処理として,Pose-estimationが必要.
変数 dataloader にバッチごとの画像をだすイテレーターを設定しないと動かない.