1枚の画像から同一人物の画像を様々なパターンで生成したいと思ったことはないでしょうか?
その願望をかなえる機能がControlNet reference onlyです。
この手法を使うことで背景、ポーズ、服装などを変換することが可能になります。
本記事ではインストール方法、具体的な使い方、検証結果、詳細設定までを解説します。本記事を読むことでControlNet reference onlyのことが一通り理解することができます。
ControlNet reference onlyとは?
ControlNet reference only(リファレンス オンリー)とは、スタイル転送を行う技術です。かみ砕いた言い方をすると「呪文(プロンプト)で指定した特徴」以外の特徴を保持したまま画像の変換や生成を行う機能です。例えば顔をそのままにして、服装や背景などを呪文(プロンプト)で指定して画像に変更を加えることができます。つまり1枚の画像から呪文(プロンプト)で表現されうる条件を反映して画像を作り変えることができます。
基本的なimg2imgとの違い
同じようなことはimg2imgでも可能ですが、異なる点としてはControlNetを使うことで元の画像の特徴をより正確に保持することができます。特に顔の特徴などはimg2imgでは変わってしまいやすいですがContronNet reference onlyを使うことで保持できます。
ControlNet referenceでできること
ControlNet referenceのできることを挙げると
- 服装変換
- 背景変換
- ポーズ変換
- 実写化、アニメ化
- …
このようにできることはきりがありません。使い方は、あなたの想像したいで無限大です。ただし、reference only自体は、まだ新しい技術で、安定性に欠ける部分もあります。そこで今回は、様々なパターンでreference onlyを使うことで、有効性について検証していきます。
ControlNet Referenceの使い方
ControlNetをインストール
ControlNet ReferenceはStable Diffusion Web UIの拡張機能、ControlNetの機能の1つです。そのため、ControlNet Referenceを利用するためには、ControlNetがインストールされている必要があります。もし、インストールしていない場合は以下の記事を参考にControlNetをインストールしましょう。
ControlNet Referenceはモデル不要
ControlNetの機能というとモデルのダウンロードが必要になることが多いですがControlNet Referenceについてはモデルのダウンロードは不要です。
WEB UIでの利用手順
controlnet reference onlyで服装変換
呪文(プロンプト): 1girl, a 20 years old pretty Japanese girl in classroom. blackboard, t-shirts
を指定して制服からtシャツへの変換を行いました。顔の特徴を維持しながら服装が変換されていることがわかります。
controlnet reference onlyで背景変換
呪文(プロンプト): 1girl, a 20 years old pretty Japanese girl on the street.school uniform
を指定して背景を教室から通りへ編刻しました。
呪文(プロンプト): 1girl, a 20 years old pretty Japanese girl on the beach.white bikini
を指定して背景を教室からビーチへ変更、服装を制服からビキニへ変更しました。
controlnet reference onlyでポーズ変換
呪文(プロンプト): 1girl, a 20 years old pretty Japanese girl on the beach.white bikini, arms up
を指定して背景をビーチにして服装をビキニ、ポーズを腕上げポーズに変更してみました。
controlnet reference onlyでアニメ化
呪文(プロンプト)だけではなくモデルの変更をして実写をアニメ化することも可能です。
モデル: AnythingV5Ink_ink
呪文(プロンプト):1girl, a 20 years old pretty Japanese girl in classroom.school uniform,blackboard
に変更して、再度、画像を生成します。
たしかにアニメ化しても面影が残っていますね。
controlnet reference onlyで実写化
AnythingV5Ink_ink
で元画像を生成してControlNetにセットしてreference_onlyの設定を行います。
その後、モデルをbeautifulRealistic_brav5に変更して画像を生成します。
実写化はされていますが、少し不自然ですね。Control Modeを”My prompt is more important”に変更します。
結果は
あまり変わらないようです。
ControlNet reference onlyの各種設定の解説
Style Fidelity
Style Fidelityとはスタイルへの忠実度を表します。Style Fidelityが大きいと参照画像の影響を大きく受けて、呪文(プロンプト)の影響が小さくなります。一方でStyle Fidelityが小さいと参照画像の影響が小さくなる代わりに呪文(プロンプト)の影響度が強くなります。この数値はControl Modeが”Balancedの”ときのみ有効です。
Preprocessorについて
reference onlyのPreprocessorは次の3つが用意されています。
- reference_only(attn)
- reference_adain(adain)
- reference_adain+attn(adain + attn)
デフォルトで使っているのがreference_onlyです。reference_adainとは以下の最新の研究が元になって追加されたPreprocessorです。
どれを使えば良いか迷いますが作者のメッセージを引用すると
In our test:
https://github.com/Mikubill/sd-webui-controlnet/discussions/1280#discussioncomment-5901251
- “reference_adain+attn, Style Fidelity=1.0″ is the current state-of-the-art best method but it is sometimes too strong and we do not recommend to use it as default.
- we still recommend to use “reference_only + Style Fidelity=0.5″ as default since it is very robust.
訳すと
- “reference_adain+attn, Style Fidelity=1.0″ は最新手法だが、影響が強すぎるためデフォルトとして使うのはおすすめしない。
- “reference_only + Style Fidelity=0.5″ をデフォルトとして利用するのが安定するのでおすすめ。
ということです。つまりデフォルト値のまま使うのが安定するとのことです。たしかに私も試してみたのですが、デフォルト値のまま使うのが良い気がしています。
Preprocessor
先ほどの例でデフォルト値と最新手法を比較してみます。
左:参照画像、真ん中: “reference_only + Style Fidelity=0.5″、右: “reference_adain+attn, Style Fidelity=1.0”
最新手法については、若干ですが元画像の特徴は保持しているものの、少し異なる画像になってしまいました。
コメント