この記事では、Stable Diffusion WebUI(AUTOMATIC1111)でIP-Adapter-FaceIDを使って、同じ顔の人物を生成する方法を具体的に説明します。
- IP-Adapter-FaceIDの導入方法
- IP-Adapter-FaceIDの使い方・同じ顔のキャラクターを生成する方法
IP-Adapter-FaceIDとは
IP-Adapter-FaceIDは、顔認識モデルからの顔ID埋め込みを使用し、さらに顔IDの一貫性を向上させるためにLoRAの技術を使用しています。
簡単にいってしまえば、参照画像の顔と同じような顔の画像を、高精度で生成することが可能になります。
IP-Adapter-FaceIDは、顔やキャラクターを固定して画像を生成できるControlnet Reference Onlyと比較すると一貫性が向上していますが、設定が少し難しいのがデメリットです。
Controlnet Reference Onlyについては以下の記事で紹介しています。
精度を高めたいならIP-Adapter-FaceIDを使って、手軽に使いたいならControlnet Reference Onlyを使うといいね!
IP-Adapter-FaceIDの導入方法
IP-Adapter-FaceIDは拡張機能「Controlnet」と必要なモデルをインストールすることで使用できます。
Controlnetのインストール
IP-Adapter-FaceIDではControlnetのインストールが必須です。
以下の記事を参考にインストールしましょう。
既にControlnetをインストール済みの方は、バージョンによってはIP-Adapter-FaceIDが使用できない可能性があります。
以下の記事を参考にControlnetの更新を実施しましょう。
IP-Adapter-FaceIDで使用するモデルデータのインストール
IP-Adapter-FaceIDではControlnetモデルと、そのモデルに対応したLoRAモデルを組み合わせて使用します。
使用するControlnetモデルと、LoRAモデルはHugging Faceからダウンロード可能です。
モデルの組み合わせは以下の通りです。
区分 | Controlnetモデル | LoRAモデル |
---|---|---|
sd1.5 | ip-adapter-faceid_sd15.bin | ip-adapter-faceid_sd15_lora.safetensors |
plus | sd1.5ip-adapter-faceid-plus_sd15.bin | ip-adapter-faceid-plus_sd15_lora.safetensors |
plus ver2 | sd1.5ip-adapter-faceid-plusv2_sd15.bin | ip-adapter-faceid-plusv2_sd15_lora.safetensors |
sdxl | ip-adapter-faceid_sdxl.bin | ip-adapter-faceid_sdxl_lora.safetensors |
plus ver2 | sdxlip-adapter-faceid-plusv2_sdxl.bin | ip-adapter-faceid-plusv2_sdxl_lora.safetensors |
SD1.5用は3種類あるので、以降のサンプル画像を見て好みのモデルを使ってみよう!
おすすめはplus ver2です!
- Controlnetモデルの保存フォルダ
-
「webui」→「extensions」→「sd-webui-controlnet」→「models」フォルダーにファイルを保存します。
(モデルの保存先は「webui」→「models」→「ControlNet」フォルダ内でも問題ありません) - LoRAモデルの保存フォルダ
-
「webui」→「models」→「Lora」フォルダにファイルを保存します。
IP-Adapter-FaceIDの使い方
必要となるモデルをインストールしたら、実際にIP-Adapter-FaceIDを使って、同じ顔のキャラクターを生成してみましょう。
キャラクターを固定するための参照画像を準備しましょう。
今回はStable Diffusionで生成した画像を使用してみます。
ControlnetのImage部に参照画像をドラッグ&ドロップするか、クリックしてロードします。
次に以下項目をチェックします。
- Enable 有効化
- Pixel Perfect 解像度を画像から取得
- Control TypeからIP-Adapterをチェック
次に使用するPreprocessorとModelを選択します。
Preprocessorは通常「ip-adapter_face_id」を選択し、Plusモデルを使用する場合には「ip-adapter_face_id_plus」を選択します。
ModelはPreprocessorに対応したモデルを選択します。
プロンプトにControlnetで選択したModelに対応したLoRAモデルを追加します。
あとはLoRAの重みを調整して画像生成するだけです。
プロンプトに生成したい呪文を指定すれば、同じ顔で違う服を着た人物などが生成可能です。
LoRA重みは0.6~0.8くらいがおすすめだよ
モデルの効果とLoRAの重みを比較
IP-Adapter-FaceIDのモデルの効果と、LoRAの重みが画像にどのように影響するのか確認してみます。
SD1.5用モデル
SD1.5用は3種類ありますが、どれも特徴がありますね。
特にPlusモデルは顔ではなく、明るさが変化しているので顔以外も影響しているようですね。
個人的には最新モデルのPlus Ver2がバランスよく感じます。
LoRAの重みについては低くなるほど、参照画像から離れていきますね。
SDXL用モデル
SDXL用も試してみましたが、現段階では微妙な仕上がりです。
IP-Adapter-FaceIDのFAQ
IP-Adapter-FaceIDはエラーが発生する可能性もあります。
何かトラブルが発生した場合はご参考ください。
「 AttributeError: module ‘torch.nn.functional’ has no attribute ‘scaled_dot_product_attention’」が表示されて画像生成できません。
この場合はPyTorchを更新することで、エラーが解消される可能性があります。
PyTorchの更新手順については、以下の記事で解説しています。
InsightFaceがインストールされない場合
FaceIDを使用するには「InsightFace」という機能が必要になります。
InsightFaceは、Stable Diffusion WebUIのControl Net最新版でインストールされるはずですが、何かの原因でインストールできない場合には、以下の記事をご参考ください。
まとめ
今回はStable Diffusion WebUI(AUTOMATIC1111)でIP-Adapter-FaceIDを使って、同じ顔の人物を生成する方法を解説しました。
Stable DiffusionとIP-Adapter-FaceIDを使えば、簡単に同じ顔の人物を生成できます。
今回の記事が、Stable DiffusionとIP-Adapter-FaceIDを使った人物画像生成に興味を持った方の参考になれば幸いです。
IP-Adapter-FaceIDの使い方について以下YouTube動画も投稿しています。
合わせてご参考下さい。
コメント
コメント一覧 (2件)
◾️Stable Diffusion WebUIでIP-Adapter-FaceIDを使って同じ顔の人物を生成する方法
以下のerrorが出て実行できないようでした。
AttributeError: module ‘torch.nn.functional’ has no attribute ‘scaled_dot_product_attention’
エラー文に書かれている通りですが、torchのバージョンが古いようなので更新してください。
恐らく上記対応で解消できるかと思います。