接地セグメントの何でもで IDM-VTON の汎用性を拡張
導入
私たちはここ数年、テキストから画像への生成の黄金時代を生きてきました。 Stable Diffusion がオープン ソース コミュニティに最初にリリースされて以来、革新的なコンピュータ ビジョン モデルを活用するために、ますます多様なパイプラインに統合され、このテクノロジの機能は爆発的に向上しました。 ControlNet から LoRA、ガウス スプラッティング、瞬時のスタイル キャプチャに至るまで、このイノベーションの範囲は今後も爆発的に拡大し続けることは明らかです。
この記事では、エキサイティングな新しいプロジェクト「本物の仮想試着のための拡散モデルの改善」または IDM-VTON について見ていきます。このプロジェクトは、クリエイティブなモデルのための現実世界のユーティリティ、つまり衣装の試着を作成するための、最新かつ最高の安定拡散ベースのパイプラインの 1 つです。驚異的なパイプラインのおかげで、ほぼあらゆる人物を想像できるほぼすべての衣服で飾ることが可能になりました。近い将来、ショッピングが驚異的な AI によって進化するにつれて、あらゆる小売ウェブサイトでこのテクノロジーが見られるようになることが予想されます。
もう少し進んで、パイプラインを大まかに紹介した後、マスキング パイプラインにグラウンデッド セグメント Anything を追加することで、パイプラインに行った新しい改善も紹介したいと思います。
前提条件
- ML の基本知識: セグメンテーションやバウンディング ボックスなどのコンピューター ビジョンの概念についての理解。
- Python と PyTorch: Python プログラミングとモデル実装のための PyTorch に関する知識。
- 依存関係:
torch
、torchvision
、segment-anything
などのライブラリをインストールします (提供されている場合)。 - データセットの準備: セグメンテーション タスク用のラベル付きまたはラベルなしの画像データセットへのアクセス。
- ハードウェア: 効率的なトレーニングと推論のための GPU 対応システム。
IDM-VTONとは何ですか?
IDM-VTON の核心は、2 つの画像を使用してフィギュアに仮想的に衣服を着せるためのパイプラインです。彼ら自身の言葉によれば、バーチャル試着は「人物と衣服をそれぞれ描いた一対の画像が与えられた場合、厳選された衣服を着ている人の画像をレンダリングする」(出典)。
上の図でモデル アーキテクチャを確認できます。これは、2 つのカスタマイズされた Diffusion UNet、TyonNet と GarmentNet の並列パイプラインと、イメージ プロンプト アダプター (IP アダプター) モジュールで構成されます。 TryonNet は人物画像を処理する主要な UNet です。一方、IP アダプターは、後で TryonNet で使用される衣服画像の高レベルのセマンティクスをエンコードします。また同時に、GarmentNet は衣服画像の低レベルの特徴をエンコードします。
TryonNet UNet への入力として、モデルは人間モデルのノイズ付き潜在を、衣服から抽出されたマスクと DensePose 表現と連結します。 TryonNet は、ユーザーが提供した詳細な衣服キャプション [V] と連結された潜在を TryonNet への入力として使用します。並行して、GarmentNet は詳細なキャプションのみを入力として受け取ります。
最終出力を達成するために、TryonNet の拡散ステップの途中で、パイプラインは TryonNet と GarmentNet の中間機能を連結してセルフアテンション層に渡します。最終出力は、テキスト エンコーダーと IP アダプターからの機能をクロスアテンション層と融合した後に受信されます。
IDM-VTON によって何ができるようになるのでしょうか?
つまり、IDM-VTONを使えば仮想的に服を試着することができます。このプロセスは信じられないほど堅牢で多用途であり、基本的にあらゆる上半身の衣類 (シャツ、ブラウスなど) をあらゆる体型に適用できます。上で説明した複雑なパイプラインのおかげで、入力された被写体の元のポーズと一般的な特徴が新しい衣服の下に保持されます。拡散モデリングの計算要件のおかげで、このプロセスは依然として非常に遅いですが、それでも物理的に服を試着することに代わる素晴らしい代替手段となります。ランニングコストが時間の経過とともに低下するため、このテクノロジーが小売文化で普及することが予想されます。
IDM-VTONの改善
このデモでは、IDM-VTON Gradio アプリケーションに追加したいくつかの小さな改善を紹介したいと思います。具体的には、靴と帽子を除いて、俳優に上半身だけでなく全身に服を着せることができるモデルの機能を拡張しました。
これを可能にするために、私たちは IDM-VTON を素晴らしい Ground Segment Anything プロジェクトと統合しました。このプロジェクトでは、GroundingDINO と Segment Anything を使用して、テキスト プロンプトだけを使用して画像内のあらゆるものをセグメント化し、マスクし、検出できるようにします。
実際には、Grounded Segment Anything を使用すると、自動マスキングの対象範囲を身体上のすべての衣服に拡張することで、人々の下半身に自動的に衣服を着せることができます。 IDM-VTON で使用されている独自のマスキング方法は上半身をマスクするだけであり、人物の輪郭とどの程度一致するかという点でかなり損失が大きくなります。接地されたセグメントのマスキングは、ボディの忠実度が大幅に高く、正確です。
デモでは、元のマスキング方法で動作するように、Grounded Segment Anything を追加しました。デモの実行時にアプリケーションの左下にある「Grounded Segment Anything」トグルを使用してオンにします。
IDM-VTON デモ
設定
マシンが起動したら、環境のセットアップを開始できます。まず、次のセルから各行を個別にコピーして端末に貼り付けます。これは環境変数を設定するために必要です。
export AM_I_DOCKER=False
export BUILD_WITH_CUDA=True
export CUDA_HOME=/usr/local/cuda-11.6/
その後、次のコード ブロック全体をコピーし、ターミナルに貼り付けます。これにより、このアプリケーションの実行に必要なライブラリがすべてインストールされ、必要なチェックポイントのいくつかがダウンロードされます。
## Install packages
pip uninstall -y jax jaxlib tensorflow
git clone https://github.com/IDEA-Research/Grounded-Segment-Anything
cp -r Grounded-Segment-Anything/segment_anything ./
cp -r Grounded-Segment-Anything/GroundingDino ./
python -m pip install -e segment_anything
pip install --no-build-isolation -e GroundingDINO
pip install -r requirements.txt
## Get models
wget https://huggingface.co/spaces/abhishek/StableSAM/resolve/main/sam_vit_h_4b8939.pth
wget -qq -O ckpt/densepose/model_final_162be9.pkl https://huggingface.co/spaces/yisol/IDM-VTON/resolve/main/ckpt/densepose/model_final_162be9.pkl
wget -qq -O ckpt/humanparsing/parsing_atr.onnx https://huggingface.co/spaces/yisol/IDM-VTON/resolve/main/ckpt/humanparsing/parsing_atr.onnx
wget -qq -O ckpt/humanparsing/parsing_lip.onnx https://huggingface.co/spaces/yisol/IDM-VTON/resolve/main/ckpt/humanparsing/parsing_lip.onnx
wget -O ckpt/openpose/ckpts/body_pose_model.pth https://huggingface.co/spaces/yisol/IDM-VTON/resolve/main/ckpt/openpose/ckpts/body_pose_model.pth
これらの実行が完了したら、アプリケーションの実行を開始できます。
IDM-VTON アプリケーションのデモ
デモの実行は、コード セルまたはこれまで使用してきたのと同じ端末で次の呼び出しを使用して実行できます。ノートブック内のコード セルはすでに入力されているため、それを実行して続行できます。
!python app.py
共有 Gradio リンクをクリックして、Web ページでアプリケーションを開きます。ここから、衣服と人物の画像をページにアップロードして、IDM-VTON を実行できるようになります。注意すべき点の 1 つは、デフォルト設定を元のリリースから少し変更したことです。特に、推論ステップを下げ、Grounded Segment Anything のオプションを追加し、描画するボディ上の追加の位置を探すようになりました。 Ground Segment Anything により、モデルの機能が対象者の全身に拡張され、対象者にさまざまな衣服を着せることができるようになります。以下は、オリジナルのデモで提供されたサンプル画像を使用して、不条理な衣装の選択であるピエロの衣装を見つけるために作成した例です。
IDM-VTON とグラウンデッド セグメント Anything で作成されたサンプル ギャラリー
ぜひさまざまなポーズや体型に試してみてください。信じられないほど多用途です。
最後に
IDM-VTON の大きな可能性はすぐにわかります。購入前にどんな服装でも事実上試着できる日が急速に近づいており、このテクノロジーはその発展に向けた注目すべき一歩です。今後も同様のプロジェクトでさらに多くの取り組みが行われることを楽しみにしています。