VToonify - [シーグラフアジア2022]VToonify:制御可能な高解像度ポートレートビデオスタイル転送

([SIGGRAPH Asia 2022] VToonify: Controllable High-Resolution Portrait Video Style Transfer)

Created at: 2022-09-09 11:15:37
Language: Jupyter Notebook
License: NOASSERTION

VToonify - 公式の PyTorch 実装

https://user-images.githubusercontent.com/18130694/189483939-0fc4a358-fb34-43cc-811a-b22adb820d57.mp4

このリポジトリは、次のペーパーの正式な PyTorch 実装を提供します。

VToonify:制御可能な高解像度ポートレートビデオスタイルの転送
シュアイヤン、リミンジャンツィウェイリウチェンチェンジ
ロイACM TOG(シーグラフアジアの議事録)、2022年。
プロジェクトページ||補足ビデオ|入力データとビデオの結果

グーグルコラボ ロゴ ハグフェイススペース 訪問 者

要約:高品質の芸術的ポートレートビデオを生成することは、コンピュータグラフィックスとビジョンにおいて重要かつ望ましいタスクです。 強力なStyleGAN上に構築された一連の成功したポートレート画像トゥーニフィケーションモデルが提案されていますが、 これらの画像指向の方法は、固定フレームサイズ、顔の位置合わせの要件、顔以外の詳細の欠落、時間的不一致など、ビデオに適用すると明らかな制限があります。 本研究では、新しいVToonifyフレームワークを導入することにより、制御可能な高解像度ポートレートビデオスタイルの転送を困難に調査します。 具体的には、VToonifyはStyleGANの中解像度および高解像度レイヤーを活用して、エンコーダーによって抽出されたマルチスケールコンテンツ機能に基づいて高品質の芸術的なポートレートをレンダリングし、フレームの詳細をより適切に保持します。結果として得られる完全畳み込みアーキテクチャは、可変サイズのビデオ内の整列されていない顔を入力として受け入れ、出力に自然な動きを持つ完全な顔領域に貢献します。 私たちのフレームワークは、既存のStyleGANベースの画像トゥーニフィケーションモデルと互換性があり、それらをビデオトゥーニフィケーションに拡張し、色と強度の柔軟なスタイル制御のためにこれらのモデルの魅力的な機能を継承しています。 この作品では、コレクションベースと模範ベースのポートレートビデオスタイル転送のために、それぞれToonifyとDualStyleGANに基づいて構築されたVToonifyの2つのインスタンス化を提示します。 広範な実験結果は、柔軟なスタイルコントロールを備えた高品質で時間的に一貫性のある芸術的なポートレートビデオを生成する上で、既存の方法に対する提案されたVToonifyフレームワークの有効性を示しています。

特徴:
高解像度ビデオ(>1024、整列していない面をサポート)|データフレンドリー(実際のトレーニングデータなし)|スタイル コントロール

概要

最新情報

  • [10/2022] GradioインターフェイスをColabノートブックに統合します。ウェブデモをお楽しみください!
  • [10/2022] ハグ顔に🤗統合。ウェブデモをお楽しみください!
  • [09/2022] 入力動画と動画結果を公開しました。
  • [09/2022] 論文を公開しました.
  • [09/2022] コードが公開されました。
  • [09/2022] ホームページを作成しました。

ウェブデモ

グラジオを使用してハギングフェイススペース🤗に統合されました。ウェブデモを試すハグフェイススペース

取り付け

このリポジトリを複製します。

git clone https://github.com/williamyang1991/VToonify.git
cd VToonify

依存 関係:

以下でテストしました。

  • CUDA 10.1
  • パイトーチ1.7.0
  • 枕8.3.1;Matplotlib 3.3.4;opencv-python 4.5.3;ファイス1.7.1;TQDM 4.61.2;忍者1.10.2

環境を定義するためのすべての依存関係については、 を参照してください。 このリポジトリは Anaconda を使用して実行することをお勧めします (https://pytorch.org/ に続いて、独自の CUDA バージョンに一致する PyTorch をインストールするには、変更が必要になる場合があります)。

environment/vtoonify_env.yaml
vtoonify_env.yaml

conda env create -f ./environment/vtoonify_env.yaml

☞ cpp拡張(fusedおよびupfirdn2d)に問題がある場合、またはGPUが利用できない場合は、CPU互換バージョンを参照してください。


(1) 画像/動画のトゥーニフィケーションの推論

推論ノートブック


ユーザーが使い始めるのを助けるために、VToonifyのパフォーマンスを視覚化できるJupyterノートブックを提供しています。 ノートブックは、必要な事前トレーニング済みモデルをダウンロードし、 で見つかった画像に対して推論を実行します。

./notebooks/inference_playground.ipynb
./data/

事前トレーニング済みモデル

事前トレーニング済みのモデルは、Google ドライブBaidu Cloud(アクセス コード: sigg)、または Hugging Face からダウンロードできます。

背骨 モデル 形容
デュアルスタイルガン カートゥーン 事前トレーニング済みのVToonify-Dモデルと317の漫画スタイルコード
戯画 事前トレーニング済みのVToonify-Dモデルと199の似顔絵スタイルコード
秘儀 事前トレーニング済みのVToonify-Dモデルと100の難解なスタイルコード
漫画 事前トレーニング済みのVToonify-Dモデルと101のコミックスタイルコード
ピクサー 事前トレーニング済みのVToonify-Dモデルと122のピクサースタイルコード
事前トレーニング済みのVToonify-Dモデルと156のイラストスタイルコード
トゥーニファイ カートゥーン 事前トレーニング済みの VToonify-T モデル
戯画 事前トレーニング済みの VToonify-T モデル
秘儀 事前トレーニング済みの VToonify-T モデル
漫画 事前トレーニング済みの VToonify-T モデル
ピクサー 事前トレーニング済みの VToonify-T モデル
サポートモデル
encoder.pt Pixel2style2ピクセルエンコーダーは、実際の顔をスタイルGANのZ +空間にマッピングします
フェイスパーシング.pth 顔解析から顔解析のためのBiSeNet。パイトーチ

ダウンロードしたモデルは、このフォルダ構造に配置することをお勧めします。

VToonify-D モデルには、設定を示すサフィックスが付いた名前が付けられています。

  • _sXXX
    : このスタイルのインデックスを持つ固定スタイルを 1 つだけサポートします。
    XXX
    • _s
      手段がない場合、モデルはサンプルベースのスタイル転送をサポートします
      XXX
  • _dXXX
    : の固定スタイル次数のみをサポートします。
    XXX
    • _d
      手段がない場合、モデルは 0 から 1 の範囲のスタイル角度をサポートします
      XXX
  • _c
    :カラー転送をサポートします。

VToonify-Dによるスタイル転送

クイックスタートはこちら

デフォルトの漫画スタイルをデフォルトの顔画像に転送する:

./data/077436.jpg

python style_transfer.py --scale_image

結果はフォルダに保存されます ここで、 は VToonify に合わせて再スケーリングされた入力イメージです (このイメージは なしで入力として使用できます ) であり、 は結果です。

./output/
077436_input.jpg
--scale_image
077436_vtoonify_d.jpg

077436_overview

コンテンツ画像とモデルを指定し、次のオプションでスタイルを制御します。

  • --content
    :ターゲット顔の画像またはビデオへのパス
  • --style_id
    :スタイル画像のインデックス(インデックスとスタイルイメージのマッピングはここで見つけてください)。
  • --style_degree
    (デフォルト: 0.5): スタイルの次数を調整します。
  • --color_transfer
    (デフォルト: False): VToonify-Dsdc モデルをロードする場合にカラー転送を実行します。
  • --ckpt
    : VToonify-D モデルのパス。デフォルトでは、漫画スタイルでトレーニングされたVToonify-Dsdがロードされます。
  • --exstyle_path
    : 外部スタイルコードのパス。デフォルトでは、と同じディレクトリ内のコードがロードされます。
    --ckpt
  • --scale_image
    :VToonifyに合わせて入力画像/ビデオを再スケーリングします(強くお勧めします)。
  • --padding
    (デフォルト:200、200、200、200):目の中心への左、右、上、下のパディング。

難解なスタイルの転送の例を次に示します。

python style_transfer.py --content ./data/038648.jpg \
       --scale_image --style_id 77 --style_degree 0.5 \
       --ckpt ./checkpoint/vtoonify_d_arcane/vtoonify_s_d.pt \
       --padding 600 600 600 600     # use large padding to avoid cropping the image

秘儀

ビデオのトゥーニフィケーションを実行するように指定します。

--video

python style_transfer.py --scale_image --content ./data/YOUR_VIDEO.mp4 --video

上記のスタイルコントロールオプション(、、)はビデオでも機能します。

--style_id
--style_degree
--color_transfer

VToonify-Tによるスタイル転送

VToonify-T モデルをロードして使用するには、''toonify'' を指定します。

--backbone

python style_transfer.py --content ./data/038648.jpg \
       --scale_image --backbone toonify \
       --ckpt ./checkpoint/vtoonify_t_arcane/vtoonify.pt \
       --padding 600 600 600 600     # use large padding to avoid cropping the image

アーケイン2

VToonify-T では、、、 は使用されません。

--style_id
--style_degree
--color_transfer
--exstyle_path

VToonify-D と同様に、ビデオのトゥーニフィケーションを実行するように指定します。

--video


(2)トレーニングVToonify

サポート モデルをフォルダーにダウンロードし、次のフォルダー構造に配置します。

./checkpoint/

モデル 形容
stylegan2-ffhq-config-f.pt ロジナリティから取得したFFHQでトレーニングされたスタイルGANモデル
encoder.pt Pixel2style2ピクセルエンコーダーは、FFHQ画像をStyleGAN2 Z+潜在コードに埋め込む
フェイスパーシング.pth 顔解析から顔解析のためのBiSeNet。パイトーチ
道順.npy 顔属性を編集するためのLowRankGANから取得したベクターの編集
|をトゥーニファイデュアルスタイルガン 事前トレーニング済みの StyleGAN ベースのトゥーニフィケーションモデル

独自のスタイルをカスタマイズするには、ここに続いて新しいToonify/DualStyleGANモデルをトレーニングする必要がある場合があります。

トレインVToonify-D

デフォルトのフォルダ構造に配置されたサポートモデルを考えると、エンコーダーを事前にトレーニングし、VToonify-D全体をトレーニングするだけで済みます。

# for pre-training the encoder
python -m torch.distributed.launch --nproc_per_node=N_GPU --master_port=PORT train_vtoonify_d.py \
       --iter ITERATIONS --stylegan_path DUALSTYLEGAN_PATH --exstyle_path EXSTYLE_CODE_PATH \
       --batch BATCH_SIZE --name SAVE_NAME --pretrain
# for training VToonify-D given the pre-trained encoder
python -m torch.distributed.launch --nproc_per_node=N_GPU --master_port=PORT train_vtoonify_d.py \
       --iter ITERATIONS --stylegan_path DUALSTYLEGAN_PATH --exstyle_path EXSTYLE_CODE_PATH \
       --batch BATCH_SIZE --name SAVE_NAME                  # + ADDITIONAL STYLE CONTROL OPTIONS

モデルと中間結果は、それぞれ と に保存されます。

./checkpoint/SAVE_NAME/
./log/SAVE_NAME/

VToonify-D には、以下のスタイル制御オプションがあります。

  • --fix_degree
    : 指定した場合、モデルは固定スタイルの次数でトレーニングされます (次数調整なし)。
  • --fix_style
    : 指定した場合、モデルは固定スタイル イメージでトレーニングされます (例ベースのスタイル転送なし)
  • --fix_color
    : 指定した場合、モデルは色保持 (色転送なし) でトレーニングされます。
  • --style_id
    :スタイル画像のインデックス(インデックスとスタイルイメージのマッピングはここで見つけてください)。
  • --style_degree
    (デフォルト: 0.5): スタイルの度合い。

以下は、漫画スタイルでVToonify-Dsdを再現し、26番目の漫画スタイルで穏やかなトゥーニフィケーションに特化したVToonify-Dを再現する例です。

python -m torch.distributed.launch --nproc_per_node=8 --master_port=8765 train_vtoonify_d.py \
       --iter 30000 --stylegan_path ./checkpoint/cartoon/generator.pt --exstyle_path ./checkpoint/cartoon/refined_exstyle_code.npy \
       --batch 1 --name vtoonify_d_cartoon --pretrain      
python -m torch.distributed.launch --nproc_per_node=8 --master_port=8765 train_vtoonify_d.py \
       --iter 2000 --stylegan_path ./checkpoint/cartoon/generator.pt --exstyle_path ./checkpoint/cartoon/refined_exstyle_code.npy \
       --batch 4 --name vtoonify_d_cartoon --fix_color 
python -m torch.distributed.launch --nproc_per_node=8 --master_port=8765 train_vtoonify_d.py \
       --iter 2000 --stylegan_path ./checkpoint/cartoon/generator.pt --exstyle_path ./checkpoint/cartoon/refined_exstyle_code.npy \
       --batch 4 --name vtoonify_d_cartoon --fix_color --fix_degree --style_degree 0.5 --fix_style --style_id 26

Note that the pre-trained encoder is shared by different STYLE CONTROL OPTIONS. VToonify-D only needs to pre-train the encoder once for each DualStyleGAN model. Eight GPUs are not necessary, one can train the model with a single GPU with larger .

--iter

Tips: [how to find an ideal model] we can first train a versatile model VToonify-Dsd, and navigate around different styles and degrees. After finding the ideal setting, we can then train the model specialized in that setting for high-quality stylization.

Train VToonify-T

The training of VToonify-T is similar to VToonify-D,

# for pre-training the encoder
python -m torch.distributed.launch --nproc_per_node=N_GPU --master_port=PORT train_vtoonify_t.py \
       --iter ITERATIONS --finetunegan_path FINETUNED_MODEL_PATH \
       --batch BATCH_SIZE --name SAVE_NAME --pretrain       # + ADDITIONAL STYLE CONTROL OPTION
# for training VToonify-T given the pre-trained encoder
python -m torch.distributed.launch --nproc_per_node=N_GPU --master_port=PORT train_vtoonify_t.py \
       --iter ITERATIONS --finetunegan_path FINETUNED_MODEL_PATH \
       --batch BATCH_SIZE --name SAVE_NAME                  # + ADDITIONAL STYLE CONTROL OPTION

VToonify-T only has one STYLE CONTROL OPTION:

  • --weight
    (default: 1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0): 18 numbers indicate how the 18 layers of the ffhq stylegan model and the finetuned model are blended to obtain the final Toonify model. Here is the we use in the paper for different styles. Please refer to toonify for the details.
    --weight

Here is an example to reproduce the VToonify-T model on Arcane style:

python -m torch.distributed.launch --nproc_per_node=8 --master_port=8765 train_vtoonify_t.py \
       --iter 30000 --finetunegan_path ./checkpoint/arcane/finetune-000600.pt \
       --batch 1 --name vtoonify_t_arcane --pretrain --weight 0.5 0.5 0.5 0.5 0.5 0.5 0.5 1 1 1 1 1 1 1 1 1 1 1
python -m torch.distributed.launch --nproc_per_node=8 --master_port=8765 train_vtoonify_t.py \
       --iter 2000 --finetunegan_path ./checkpoint/arcane/finetune-000600.pt \
       --batch 4 --name vtoonify_t_arcane --weight 0.5 0.5 0.5 0.5 0.5 0.5 0.5 1 1 1 1 1 1 1 1 1 1 1

(3)成果

私たちのフレームワークは、既存のStyleGANベースの画像トゥーニフィケーションモデルと互換性があり、それらをビデオトゥーニフィケーションに拡張し、柔軟なスタイル制御のための魅力的な機能を継承しています。デュアルスタイルGANをバックボーンとして、当社のVToonifyは、さまざまな参照画像のスタイルを転送し、1つのモデルでスタイルの程度を調整することができます。

https://user-images.githubusercontent.com/18130694/189510094-4378caca-e8d9-48e1-9e5d-c8ec038e4bc5.mp4

これは、アーケイン、ピクサー、コミックスタイルでのVToonify-DとVToonify-Dcの色補間結果です。

https://user-images.githubusercontent.com/18130694/189510233-b4e3b4f7-5a37-4e0c-9821-a8049ce5f781.mp4

引用

この研究があなたの研究に役立つと思うなら、私たちの論文を引用することを検討してください:

@article{yang2022Vtoonify,
  title={VToonify: Controllable High-Resolution Portrait Video Style Transfer},
  author={Yang, Shuai and Jiang, Liming and Liu, Ziwei and Loy, Chen Change},
  journal={ACM Transactions on Graphics (TOG)},
  volume={41},
  number={6},
  articleno={203},
  pages={1--15},
  year={2022},
  publisher={ACM New York, NY, USA},
  doi={10.1145/3550454.3555437},
}

確認

このコードは主にstylegan2-pytorchpixel2style2pixelDualStyleGANに基づいて開発されています。