最近のファッション系人物画像生成まとめ

 

 

 

含まれる論文(7つ)

f:id:akmtn:20180106162404p:plain

f:id:akmtn:20180106162445p:plain

f:id:akmtn:20180106162604p:plain

f:id:akmtn:20180106162637p:plain

f:id:akmtn:20180106162742p:plain

f:id:akmtn:20180106162817p:plain

f:id:akmtn:20180106162940p:plain

 

 

 なぜ人物の画像を生成するのか?

各論文中での研究背景や応用先についての記述から,人物の画像を生成する理由として考えられるのは,

・データセットの拡張

  ・image editing

  ・re-ID(人物再同定)

  ・in-painting(画像補完)

  ・synthesizing video(動作の生成)

 珍しいポーズや珍しい見え方の人物の画像を生成することができれば,各タスクをこなす機械学習モデルの性能をさらに向上させることができると考えられる.

 

・仮想試着(virtual try-on)

 画像中の服装を自在に変化させることができれば,ファッション系のオンラインサイトで,検討中の服がどのようなコーディネートになるか試すことができる.

f:id:akmtn:20180106165012j:plain

(例 TriMirror http://www.trimirror.com/en/about/から)

 

 

 

 

3D vs 2D

 服の着せ替えなどは,Computer Graphicsの領域で研究されていた.しかしながら,服の変形のシミュレーション,テクスチャーのマッピングレンダリングは難しい方法であり,さらに仮想試着を考えると,利用者本人の3Dスキャンデータを用意することは困難である.

 一方で,Computer Visionの分野では,GANやVAEを使って画像を生成する研究が急速に進み,大量に存在する2Dのデータを用いて,データドリブンなアプローチで人物画像を生成することが考えられている.

 実際,ファッション画像は,多くのECサイトSNSでアップロードされており,着用済みの画像や,服やアイテムのみの画像などを低コストで収集することができる.3Dデータに比べると,2Dのデータは安価で,そして大量に集めることができると言える.

 

f:id:akmtn:20180106170834p:plain

(例 ZOZOTOWN)

 

 

 

ポーズ変化と服装変化

ポーズの変化とは,

f:id:akmtn:20180106180136p:plain

このように,同じ服装で様々なポーズの画像を生成できることを指す.

服装の変化とは,

f:id:akmtn:20180106180316p:plain

このように,同じポーズで様々な服装の画像を生成できることを指す.

 

f:id:akmtn:20180106172749p:plain

最近出たこれらの論文は大まかに二分できると考えられ,ポーズを変化させる手法と,服装を変化させる手法の二つである. 

 ポーズ変化 → re-ID

 服装変化 → virtual try-on

として,利用される傾向にある.ポーズ変化の手法では,ファッション系のデータセットだけでなく,re-IDのデータセットも用いられている.

f:id:akmtn:20180106175943p:plain

 

 

 

 

データセット

f:id:akmtn:20180106174541p:plain

青文字がre-ID用のデータセット

赤文字はファッション系のデータセット

 

f:id:akmtn:20180106175003p:plain

上の画像は,Market-1501(link)

f:id:akmtn:20180106175154p:plain

上の画像は,DeepFashion(link)

 

 

 

 

 人物画像の生成は何が難しいのか?

 人物画像や服の画像を生成するときの課題は何か.

 

・様々な構成要素(pose, appearence, shape)

・色,テクスチャーだけでなくlogoや刺繍の複雑さ

・服の変形のしやすさ(同じ服でも様々な形になる)

  →VITON

・人物の姿勢変化,見えの変化のしやすさ

  →Disentangled PIG, Deformable GAN

・空間的に直線的でない,マッピングしづらい

  →Deformable GAN

・生成結果の操作性(欲しい画像が生成できるか)

  →Disentangled PIG

・腕が隠れているなど(オクルージョン)

・解像度

 

矢印で示しているのは,その課題に対してアプローチしている手法である.

任意の人物の画像を生成することはチャレンジングなタスクであり,さらに多くの課題がある.

 

 

 

 

それぞれの手法について

それぞれの手法について概説し,その後まとめる.

f:id:akmtn:20180106183932p:plain

2ステージで構成されている.まず,conditional VAEでセグメンテーションマップを自在に生成できるように準備する.その後,セグメンテーションマップからrealな人物画像を生成する.skip-connectionをもつencoder-decoderネットはGANで学習する.

f:id:akmtn:20180106184228p:plain

関節位置の推定や3Dモデルへのフィッティングを行い条件画像を生成している.

 

f:id:akmtn:20180106184519p:plain

2ステージで構成されている.まず,ブラーな画像を生成した後,2つ目のネットワークでrefineするためのdifference mapを出力する.

関節点を条件として入力することを行った.この関節点に当てはまるポーズの画像を生成する.

ステージ1のネットワークはL1学習し,ステージ2のネットワークは,GANの手続きで,識別器と共に学習する.

 

 

f:id:akmtn:20180106185414p:plainf:id:akmtn:20180106185426p:plain

学習データとして,服のみの画像とその服を着用している画像のペアを用意する.

上の図のように,ペアを入力して,U-netによって服が’交換’された画像を出力する.

右図のように生成を繰り返しcycle型にすることで,end-to-endの学習を可能にした.

 

f:id:akmtn:20180106185236p:plain

stack構造になっており,2つの生成ステップがある.まず,画像と文章(例:The lady was wearing a multicolored long- sleeved coat.)を入力とし,人物の特徴と服装をエンコードした特徴ベクトルと,解像度を下げたセグメンテーションマップから,出力したいshapeのセグメンテーションマップを作成.次のステップで,作成されたセグメンテーションマップと特徴ベクトルからリアルな画像を生成する.

 

f:id:akmtn:20180106191221p:plain

2つのステージで構成されている.ステージ1の出力は,服の領域がブラーな画像と,服のマスクの2つである.出力されたマスクMと入力に使った服cのshapeが同じになるように服cを変形して,服c’を作成する.次のステージでは,この服c’とブラーな画像を入力として,一度マスク画像を生成してからrefineされた結果を生成する.

服を変形するところがポイント.

これらの中だと,VITONのみGANを利用していない.

 

f:id:akmtn:20180106192601p:plain

この論文は,上のPose Guided Person Image Generationと同じ著者であり,よく似ている.

'Disentangled’とは人物画像を,ポーズ,前景(服装),背景の3つの要素に分解し,別々に操作して画像を生成できるようにしたということを言っている.

2つのステージからなる.1つ目のステージでは,特徴のembeddingを行い.2つ目のステージで,そのembedding featureの分布を模倣できるように,マッピング関数をGANの手続きで作成する.

f:id:akmtn:20180106193906p:plain

入力には1枚の画像があればよく,ペア画像は必要ない.関節位置をopenposeなどで抽出し,関節位置のヒートマップとマスクを生成しておく.マスクをうまく使うことで,前景や背景を切り出し,それぞれ専用のencoderで特徴をembeddingする.

ステージ2では,ガウス分布をある関数でマッピングしたものがステージ1で得られたembedding featureの分布に近くなるように学習することで,ガウス分布からサンプリングしたベクトルとその関数を使うことで,生成したい画像のembedding特徴を操作的に作ることができるようになる.そのembedding特徴から再構成することで人物の画像をポーズ,前景,背景を操作して生成することができる.

 

f:id:akmtn:20180106194831p:plain

ポーズを変えた画像を生成するときには,画像中で体のパーツの位置は変わるので,素直にskip-connectionを使うと違う位置に色情報などをスキップすることになる.そこで,新たに'deformable skip-connection'を提案.その中身は簡単で,例えば元画像の右足太もものパーツが生成する画像ではどこに位置するかを求めて,feature mapをアフィン変換するだけ.アフィン変換の関数を求めるために,関節位置を利用する.(下図)

f:id:akmtn:20180106200108p:plain

これにより,元画像から色やテクスチャーを新しいポーズの画像にうまく移すことができている.

同じ人物であり違うポーズのペア画像を用意する必要があるが,GANを用いて,end-to-endで学習することができる.

 

 

 

end-to-endか2ステージか

end-to-endの方が優れているようにも思えるが,2ステージにすることでクオリティーが出るならばそちらでも良いと勝手に思う.

f:id:akmtn:20180106202143p:plain

Deformable GANの論文中の主張では,deformable skip-connection によって,end-to-endの学習を行えるようになったという.というのも,下図の右のように,形状が変化するタスクにおいては従来のskip-connectionは画像中の位置が対応しないため使いづらい.左のように,空間的な位置が変わらないタスクではskip-connectionが有効である.

f:id:akmtn:20180106202619p:plain

Deformable GAN以外の手法では,従来のskip-connectionを使う代わりに,一旦ブラーな画像生成し,次のステージでrefineするというような2ステージの手法を取ることが多い.

  

 

 

何を出力するか?

f:id:akmtn:20180106210750p:plain

 

 

 

 

入力の面白い工夫

それぞれの手法が,データセットを工夫しうまく利用している.

・SoTA手法で自動的にアノテーションを行う(セグメンテーション,関節位置推定)

・ 一枚の画像を分解,再構成する

 

 A Generative Model of People in Clothingでは,3Dモデルにフィットさせていたり,そのために関節位置を推定したりしている.

f:id:akmtn:20180106184228p:plain

 Pose Guided Person Image GenerationVITON: An Image-based Virtual Try-on NetworkDisentangled Person Image GenerationDeformable GANs for Pose-based Human Image Generationでは,OpenPoseなどを利用してあらかじめ関節位置を取得し,条件として入力に利用している.

f:id:akmtn:20180106212911p:plain

 FashionGANでは,human parsingでセグメンテーションを行って利用している.

f:id:akmtn:20180106213310p:plain

このように,手持ちのデータセットに対して,最新の手法を利用して追加のアノテーションを獲得し,それを条件として利用している.今後,さらにCV技術が発展し,一枚の画像から多くの情報を抽出できるようになれば,今後のファッション系の画像生成の条件として利用されていくことが考えられる.例えば,安価に3Dの姿勢が推定できれば,ポーズの情報としてはリッチなので画像生成の質も高まるかもしれない.

 

 

 

 

データの用意

手法によって,どのようなデータを用意しなければならないかが変わる.

f:id:akmtn:20180106215326p:plain

 

CAGANはテスト時にも服と着用のペア画像を用意しないといけないため,仮想試着のアプリケーションへの応用を考えた時に,ユーザーにとって不便である.一方,VITONは訓練時のみ服と着用のペアが必要で,テスト時にはペアは必要ないのでアプリケーションにしやすい.

 

 

 

おわりに

CV系の会議でファッション関連の研究がブームになって来ているような気がするので,今後もっと加速していく気がします.楽しみです.