IP AdapterとStable Diffusion WebUIを使用してキャラクターを固定した画像を生成する
IP AdapterとStable Diffusion WebUIを使用してキャラクターを固定した画像を生成する方法を解説します。
IP Adapterの概要
IP Adapterは、キャラクターなどを固定した画像を生成する新しい手法になります。2023年8月にTencentにより発表されました。画像を入力として、画像を表すPromptを内部的に生成することで、1枚の参照画像を入力して、Reference Onlyよりも忠実度の高い画像を出力することが可能です。
LoRAやReference Onlyとの違い
キャラクターを固定する方法として、従来、LoRAやReference Onlyが使用されていました。LoRAは少数の画像で再学習することで、キャラクターを固定します。Reference OnlyはControlNetに1枚の画像を与えることで、キャラクターを固定します。
CLIPのテキストプロンプトのEmbeddingがCross Attention LayerのKeyとValueに入力されるように、Stable Diffusionの画風はAttention LayerのKeyとValueにどのような値を入れるかで決まります。
Attention LayerのKeyとValueはテーブル参照のようなもので、QueryとKeyを内積したものにValueを乗算するので、QueryとKeyの距離が近いものに対応するValueが出力されます。これは、Queryを入力としてValueを出力するテーブル参照のようなものです。そのため、Valueを特定のキャラクターの画像の特徴ベクトルの集合のようなものにすれば、特定のキャラクターが生成されやすくなります。
LoRAはAttention LayerのKeyとValueを学習で書き換えることで、キャラクターを固定します。Reference Onlyは、入力画像を推論した際のSelf Attention LayerのKeyとValueを、ターゲットのSelf Attention LayerのKeyとValueを上書きすることで、キャラクターを固定します。
今回のIP Adapterは、従来、テキストのPromptを入力して、テキストをEmbeddingして、Cross Attention LayerのKeyとValueに与えていたところを、画像を入力して、画像をEmbeddingして、Cross Attention LayerのKeyとValueに変換する仕組みになっています。
実体としては、画像に対応する正確なテキストのPromptを出力していることと等価になります。おそらく、IP AdapterのIはImageで、PはPromptを示しているものと思われます。IP AdapterとIP Adapter Plusの違いは、画像のEmbeddingのネットワークの違いになります。Plusの方が、より深いネットワークになっています。
Stable Diffusionにおいて、各モジュールがどのように作用するかについて、下記のBLOGが非常にまとまっています。
IP Adapterのインストール
StableDiffusionWebUIのExtensionを最新版にアップデートします。
https://github.com/Mikubill/sd-webui-controlnet
main
7a4805c8
Fri Sep 22 18:13:48 2023
モデルをダウンロードし、models/ControlNetフォルダに配置します。
ip-adapter_sd15.pth
ip-adapter_sd15_plus.pth
IP Adapterの利用
ControlNetでIP-Adapterを選択し、参照画像を設定します。
今回はimg2imgで生成します。
img2imgの入力画像です。
IP Adapterの参照画像です。この画像からテキストPromptが内部的に生成されるイメージです。
出力画像です。img2imgの入力画像の特徴を残しつつ、IP Adapterで指定したキャラクターが出力されます。
比較用にReferenceOnlyを使用した場合の出力画像です。ReferenceOnlyよりも、IP Adapterの方が忠実度が高いことがわかります。
まとめ
IP Adapterを使用することで、Reference Onlyよりも高精度にキャラクターを固定できることを確認しました。
ax株式会社はAIを実用化する会社として、クロスプラットフォームでGPUを使用した高速な推論を行うことができるailia SDKを開発しています。ax株式会社ではコンサルティングからモデル作成、SDKの提供、AIを利用したアプリ・システム開発、サポートまで、 AIに関するトータルソリューションを提供していますのでお気軽にお問い合わせください。