BASEプロダクトチームブログ

ネットショップ作成サービス「BASE ( https://thebase.in )」、ショッピングアプリ「BASE ( https://thebase.in/sp )」のプロダクトチームによるブログです。

拡散モデルを用いた2Dバーチャル試着技術について

はじめに

こんにちは。BASEのデータ分析チーム(Data Strategy Team)で不正対策を行ったり、機械学習モデルを触ったりしている竹内です。

先日チーム内の論文読み会でニューラルネットを用いた画像合成によるバーチャル試着技術というトピックに触れる機会があったので、その最近のトレンドについて改めてブログという形でまとめてみました。

バーチャル試着は画像生成モデルの実用的なユースケースの一つとして今現在データセットの拡充やアーキテクチャの検証が進んでいる分野の一つであり、個人的には非常にアツいトピックだと感じています。

バーチャル試着とは

バーチャル試着(Virtual Try On)とは、ある人物がある衣服を着用した状態を画像や3Dモデルなどの情報をもとに仮想的に実現し、どのように見えるか可視化する技術のことです。

ネットショップの普及により、店頭に出向かずともPCやスマートフォンから簡単に多種多様なファッション商品を購入することができるようになって久しい昨今ですが、その一方でオンラインではどうしても購入前に試着することで見た目やサイズ感を確かめることができないという課題を抱えています。バーチャル試着を利用することで、直接店頭へ出向かずに着用した際のイメージを得ることができるため、購入者においては誤って購入してしまうリスクを、ショップにおいては返品のリスクを減らすことが可能になります。

また、ネットショップの商品ページにおいては、扱っている商品単体の画像だけでなく、ファッションモデルがそれを着用した際のイメージ画像もよく利用されています。しかしながら、日々変化するトレンドの中で、商品が多種多様化し、ショップの規模もさまざまある中で、すべての商品においてファッションモデルを利用したイメージ画像を用意することは難しい場合があります。これについてもバーチャル試着を活用することで、多様なファッションモデルがさまざまなポーズで着用したイメージ画像を簡単に用意することが可能となります。

ニューラルネットを用いたバーチャル試着技術

バーチャル試着の実現においては3Dモデルの利用やAR技術、身体計測専用のスーツの利用など、さまざまな手法が検証されていますが、中でも昨今のニューラルネットを活用した条件付き画像生成技術の進歩により、入出力に画像を使用した分野においては目覚ましい進歩を遂げています。

ARやボディスーツなどと比較して入出力に画像を使用する場合は、カメラなどのデバイスの操作やスーツの着用といった手間がなく、またさまざまなポーズに対して自然な見え方が検証できるという利点があります。

ニューラルネットを利用したバーチャル試着モデルのイメージ(1より作成)

画像生成モデルによるバーチャル試着の登場

ニューラルネットによる画像生成手法としては、長らくGANやVAEを利用したものが主流であり、バーチャル試着への応用についても当初はそれらの技術をベースとしたものが考えられていました。

2017年に発表されたCAGAN2という手法はその中の1つであり、その名の通りGANをベースとした手法です。

Generatorは人物画像とその人物が着用している服画像、合成対象の服画像の3つを入力として合成画像を出力し、Discriminatorは与えられた画像がデータセットからのサンプルなのか、あるいはGeneratorの出力なのかを識別します。

この時GeneratorはDiscriminatorに当てられないように出力し、Discriminatorは出力を正しく識別できるように学習を行います。

CAGANではGeneratorの出力を安定させるために2つの服画像をスワップさせながら2回Generatorに通すことで元の人物画像をどれだけ復元できるかをLossに含めている点が特徴的であり、一般的な条件付き画像生成と比較して出力の安定性を追求している点が伺えます。

スワップを利用したGeneratorの出力([^2]より)

Discriminatorは正例と負例を正しく識別できるように学習する

GANから拡散モデルへ

2021年あたりから従来のGANやVAEではなく拡散モデルをベースとした手法が台頭しはじめ、それ以降、条件付き画像生成モデルの学習の安定性や出力のクオリティは格段に上がりました。

バーチャル試着においてもその恩恵は大きく、拡散モデルを採用することによって格段に正確な画像を高い解像度で生成できるようになっています。

拡散モデルを使用したバーチャル技術に関する論文はいくつかありますが、今回はその中でも特徴的なTryOnDiffusion3とOOTDiffusion[^1]の2つを取り上げたいと思います。

先にCAGAN、TryOnDiffusion、OOTDiffusionによる出力例をそれぞれの論文内から抜粋し、比較しておきます。

後者2つが拡散モデルベースの出力となりますが、再現度や解像度の面で大きな改善が見られていることがわかります。

CAGANによる出力例(入力画像)
CAGANによる出力例(出力画像)

TryOnDiffusionによる出力例

OOTDiffusionによる出力例

TryOnDiffusion

タイトル: TryOnDiffusion: A Tale of Two UNets

arxivリンク: https://arxiv.org/abs/2306.08276

2023年にワシントン大学とGoogle Researchのメンバーによって発表された論文です。

TryOnDiffusionはParallel-UNetと呼ばれる2つのUNetを使用し、一方へはターゲットなる人物にノイズを付与した画像と元画像の服部分をマスクした画像をconcatしたもの、もう一方へは試着対象の服画像を入力し、ノイズを除去するプロセスを繰り返すことで、出力画像を1024×1024という高い解像度で生成することに成功しています。

服の画像単体ではなく、ターゲットとなる人物の画像と、試着対象の服を着た別の人物の画像の2つを入力として使用している点が特徴的です。

TryOnDiffusionのネットワークの全体図([^3]より)

TryOnDiffusionでは2つのUNetの出力をcross-attentionを使用することで組み合わせています。(図の黄緑色のブロック)

1つのUNetにノイズ画像と服画像をconcatしたものを入力とする方法をとっていない理由として、服画像を人物画像にフィットさせる際形状を大きく歪める複雑な変形が必要となりますが、UNetで採用されている畳み込みとself-attentionのようなピクセル単位での強いバイアスがかかる機構はそれに適さないと言及されています。これについてはablation studyとして2つのアーキテクチャを比較した検証もなされていますが、単純なconcatと比較して細部のテクスチャにおいて違いが出ていることがわかります。

cross-attentionとconcatとの比較([^3]より)

1つのDiffusionモデルの学習には32基のTPU-v4を使用しており、データセットとしては同じ人物が同じ服を別のポーズで着た画像ペアを400万ペア使用しています。

バッチサイズ256で50万ステップ回すのにだいたい3日かかると記載されており、かなり大掛かりなモデルであることがわかります。

ちなみにこのTryOnDiffusionを使用したバーチャル試着システムは2023年の6月からプロダクトとしてリリースされており、 Google’s Shopping Graphと呼ばれるGoogleの保有している商品データセットの一部ファッション商品を対象に、スキントーンや体型の異なるさまざまなファッションモデルが着用したイメージを取得し、購入の参考にすることができます。(現在は米国限定のようです。)

https://blog.google/products/shopping/ai-virtual-try-on-google-shopping/

また、このモデルについてはデータセットやモデルパラメータは公開されていません。

OOTDiffusion

タイトル: OOTDiffusion: Outfitting Fusion based Latent Diffusion for Controllable Virtual Try-on

arxivリンク: https://arxiv.org/abs/2403.01779

OOTDiffusionは中国の大手AI企業Xiao-iのリサーチチームによって比較的最近公開されたバーチャル試着モデルであり、LDMを使用することで計算コストを削減しながら出力のクオリティの高さを維持しつつ、トップスだけでなく、ボトムスやワンピースなど、さまざまなカテゴリに対応している点が特徴です。

ネットワークのアーキテクチャについてはTryOnDiffusionと同様に衣服部分をマスクした人物画像を入力とするUNetと服画像を入力とするUNetの2つを使用し、UNet内のself-attention層の前でconcatするOutfitting fusionと呼ばれる手法で2つのUNetを繋げています。

OOTDiffusionのアーキテクチャ([^1]より)

先ほどのTryOnDiffusionと大きく異なる点として、Stable Diffusionなどでも採用されているVAE encoderを使用して潜在空間上でノイズ除去を行うLatent Diffusionベースのアーキテクチャを採用しており、このため一般的なGPU一基で推論を動かすことができます。(さながらTryOnDiffusionのLDMバージョンといった感じでしょうか。)学習時のUNetの重みの初期値としてもStable Diffusion v1.5のものをそのまま使用していると記載されています。

また、全身に対応したバージョンにおいてはCLIPを使用しており、試着を行う部位に関して(”upper body”など)テキストでのガイドを入れることで、出力を安定化する工夫も入れられています。

OOTDiffusionについてはGithubでソースコードが、Hugging Face Hubでモデルパラメータが公開されているため、計算環境があればすぐに手元で検証することができます。(ライセンスはcc-by-nc-sa-4.0なので、そのまま商用利用はできない点は注意が必要です。)

https://huggingface.co/levihsu/OOTDiffusion/tree/main/checkpoints

学習においては上半身限定のモデルにはオープンデータセットのVITON-HDを、全身に対応したモデルにはオープンデータセットのDress Codeを使用し、バッチサイズ64(高解像度のものは16)で36000ステップの学習をA100一基で行っています。

TryOnDiffusionと比較してもかなり軽量なモデルであることがわかります。

ちなみに、TryOnDiffusionとOOTDiffusionを含めた最近のニューラルネットベースのバーチャル試着モデルでは、ターゲットとなる人物の画像の服の部分をマスクする前処理を行うことがほぼスタンダード化しており、OOTDiffsuionでは姿勢推定モデルのopenposeとセグメンテーションモデルのhumanparsingの2つを組み合わせたパイプラインが利用されています。

バーチャル試着モデルに用いられるオープンデータセット

少し脇道に逸れますが、こうしたバーチャル試着モデルの学習やテストによく使用されているオープンデータセットについても触れておきます。

バーチャル試着モデルの性能の向上については、モデルアーキテクチャやアルゴリズムの改善と並行して高品質かつサイズの大きなデータセットの拡充も後押ししています。(そこまでメジャーとは言えないタスクの割には利用しやすいデータセットが複数存在するため、研究や検証のテーマとしては案外取り組みやすい印象です。)

また、これらのデータセットについては基本的には研究用途でのみ使用できるライセンスが設定されています。

VITON-HD

KAISTによって公開されているデータセットで、複数の論文でベンチマークとしてもよく使用されている印象です。 1024 x 768の高画質な人物画像と服画像のペアが、学習用が11647セット、テスト用が2032セット含まれています。 また、それぞれの人物画像に対してpose推定やdense推定など処理済みのデータも含まれています。

https://github.com/shadow2496/VITON-HD

FashionTryOn

山東大学によって公開されているデータセットであり、VITON-HDより大規模なデータセットになります。 服画像と異なるポーズの人物画像2ポーズ分の3点を1セットとして28714セット含まれています。

https://fashiontryon.wixsite.com/fashiontryon

DressCode

イタリアのモデナ・レッジョ・エミリア大学とイタリアの大手EC企業YOOX社によって公開されているデータセットであり、バーチャル試着モデルのデータセットとしては最大規模のサイズのものとなります。また、データセットに含まれるファッション画像はトップスだけにとどまらず、ボトムスやアクセサリなど、さまざまなカテゴリーのものが含まれている点が特徴です。

OOTDiffusionの全身モデルの学習にも使用されています。

https://github.com/aimagelab/dress-code

データセットの規模の比較(4より)

課題

上記の論文以外にも拡散モデルを利用したバーチャル試着を検証した論文はいくつかあり、いずれにおいても従来のモデルと比較してKIDなどの指標において高い数値を出すことに成功しており、定性的にもクオリティの高い出力を得ることができていますが、まだ改善の余地もあります。

上記の論文で課題として挙げられている点としては、

  • 入力画像の背景が複雑な場合に出力にどのような影響があるか不明である。
  • 人物画像と服の画像のカテゴリが異なる場合、例えばTシャツを着ている人物にワンピースを、ズボンを履いている人にスカートを合わせる場合は期待した出力が得られない場合がある。
  • 服部分をマスクする際に人物の肌の情報(筋肉の状態やタトゥーなどの特徴)が欠損する。

といったものがあります。

1つ目に関しては、人物と背景を分けるセグメンテーションを前処理に挟むことで背景に対してある程度背景に頑健なパイプラインを組むこと自体は可能に思えます。

2つ目に関しては、データセットにそういったサンプルがないためであると考えられ、データセットのバリエーションを増やすことによってある程度改善できる可能性があると述べられています。

3つ目については、2つの論文で共通して挙げられている課題であり、こちらも前処理でセグメンテーションを行う範囲をより限定することができれば、ある程度改善できそうです。しかしながら長袖→半袖のような入出力を考える場合は情報が足りないため、その場合はそれを補うような入力を追加する必要がありそうです。

また、そもそも入出力に画像を利用している以上、オーバーサイズやタイトめなどといったサイズ感やシルエットについては正確な情報を反映しづらいという点があるというのは実際に動かしてみて私が実感した課題です。

まとめ

ニューラルネットを使用したバーチャル試着技術について紹介しました。

画像生成においてバーチャル試着というユースケースについては、StableDiffusionなどでプロンプトからオリジナルの画像を生成する用途などと異なり、クエリとなる画像から期待される出力が非常に限定されるため、少しでも歪んでしまったり服の柄が変わってしまうだけで利用価値が大きく損なわれることになります。

逆に言えば、モデルの性能やデータセットのバリエーションの向上に合わせて一気にその実用性が高まっていくような分野でもあるため、今後の技術的な進歩や実際のサービスへ導入などへの期待が高まります。

最後となりますが、弊社では一緒に働いてくださる方を広く募集しております!ご興味のある方は下記のリンクからお気軽にご応募ください!

https://binc.jp/jobs


  1. Xu, Yuhao, et al. "Ootdiffusion: Outfitting fusion based latent diffusion for controllable virtual try-on." arXiv preprint arXiv:2403.01779 (2024). https://arxiv.org/abs/2403.01779
  2. Jetchev, Nikolay, and Urs Bergmann. "The conditional analogy gan: Swapping fashion articles on people images." Proceedings of the IEEE international conference on computer vision workshops. 2017. https://arxiv.org/abs/1709.04695
  3. Zhu, Luyang, et al. "Tryondiffusion: A tale of two unets." Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2023. https://arxiv.org/abs/2306.08276
  4. https://github.com/aimagelab/dress-code