TryOnGAN
TryOnGAN: Body-Aware Try-On via Layered Interpolationに関する雑なメモ
問題設定:
- 2枚の入力画像が与えられる
- I^pには人物Aが服Bを着用した様子
- I^gには人物Cが服Dを着用した様子
- 人物Aが服Dを着用したphotorealisticな画像I^tを出力する
概要:
- photo-realismとhigh resolutionの性質を持つStyleGAN2をベースとして用いる
- 10万枚のunpairdな画像から学習
- これまでの手法には,学習にペアデータが必要なものがある
- 人物Aが服BをポーズC,D,E...で着用している画像
- 人物Aが服Bを着ている画像と,服B単体の画像
- ペアデータ不要な手法(O-VITON, Zanfir et al.)と比較して,photo-realismが増している
手法:
(1) pose-conditionedなStyleGAN2を学習
- ファッション画像についてStyleGAN2を学習
- 各解像度において,RGB画像に加えて,セグメンテーション画像も出力させる
識別器として,poseとsegmentationの正しさを判別するものも導入
潜在空間のポーズとスタイルのentanglementを防ぐため,StyleGAN2をポーズでconditiningして学習する
- StyleGAN本来の定数のlatentを,ポーズを表現する4x4のpose representationで置き換える
- posenetを用いて,17箇所のキーポイントを抽出
- この出力から64x64x17チャネルのヒートマップを作成する
- ヒートマップをさらにencoderに入力し,最終的に4x4のサイズまで圧縮する
(2) 各層でのinterpolation coefficientを探索する
- IpとIgについてのwを探索して,linear interpolationすることを目指す
- 各解像度でのスタイルの結合係数q_nをそれぞれ求めたい
- それぞれのq_nが収束するまで,L_localizationと2つのconsistencyの加重和を最小化する
- L_localizationは,興味のある領域についてのみスタイルの内挿をとりたい
- これはつまり,semantic segmentationした結果,衣服(segmentation i)に影響するようなwの一部分だけ内挿したい
- M^{CxK}は,どのチャネルがどのセグメントに影響するかの指標
- これを使って,衣服に関係あるiについて影響のあるチャネルだけを内挿するようにqを求める(詳細未理解)
- 2つのconsistency lossを採用
- IgとItにsegmentationマスクをかけ,衣服の部分だけを残す
- VGGのfeature上で,2枚が近づくような誤差を導入(Germent Loss)
- また,IpとItについて,顔と髪型の領域の特徴が近づくような誤差を導入(Identity Loss)
実験:
- Tesla V100 (FP32だと1080Tiと同程度?) x 8 で12日学習
感想:
- StyleGAN2という強力なモデルを用いて,スタイルの編集を通してVITONを実現するところがキモ
- 画像空間で編集してしまうとphotorealisticでないものが生成されがち.あくまで完成品の画像はStyleGANによって生成されるので,ここでphoto-realismが保証される