InstantIDはStable Diffusionを拡張する手法の一つであり、顔画像を入力することで出力される人物の顔を固定することができます。今回の記事ではこのInstantIDをComfyUIで使用する方法を解説します。
作業の流れ
1. ComfyUIの導入と最新版へのアップデート
以下のどちらかの方法でComfyUIを導入します。導入済の方もComfyUIを最新版にアップデートしてください。
方法1:ComfyUIを直接導入する
初めての方はこちらで良いと思います。 otama-playground.com
方法2:StabilityMatrix(統合環境)経由でインストールする
2. 拡張のインストール
以下の拡張をインストールします。
3. ライブラリの手動インストール
InstantIDに必要なpythonライブラリ(insightface)が一部エラーでインストールされないので、手動でインストールします。(毎度のことながらinsightface周りのあれこれは直して欲しいですね...)
下のリンクからinsightfaceのwheelをダウンロードしてから、pipでインストールコマンドを叩いてください。
Assets/Insightface at main · Gourieff/Assets · GitHub
python -m pip install (ダウンロードしたwhlのパス) onnxruntime onnxruntime-gpu
standalone版の場合はpythonコマンドをpythonの実行バイナリへのパスで置き換えます。以下あたりにpython.exeが配置されているはずです。
- Comfyui-Standaloneの場合は
python-embedded
ディレクトリ内 - StabilityMatrixの場合は
Data/Packages/{パッケージ名}/venv/Scripts
ディレクトリ内
4. モデルのダウンロードと配置
まずantelopev2をダウンロード+解凍してComfyUI/models/insightface/models/antelopev2
に配置。↓のどちらかで入手できます。
次にInstantIDのメインモデルをComfyUI/models/instantid
に配置。
最後にcontrolnetのモデルをcontrolnetのディレクトリに追加します。
5. ワークフローのインポート
exampleのワークフローがあるのでそれを使用します。
6. 生成する
モデルを先ほど配置したモデルに変更し、最後に顔画像とプロンプトを指定して生成します。
生成結果
モデルはAnimagine XLを使用しました。
最後に
生成結果から、入力した顔画像に沿って画像が生成されることが感じられたと思います。InstantIDを使用することで、生成する顔をコントロールすることができるようになり、画像生成の幅が広がります。(肖像権には注意してください)
今回はInstantIDのみを使用しましたが、ControlNetと組み合わせることで、姿勢・構図なども制御可能になるらしいです。ここら辺は応用の話になるのでこの記事では触れませんが、気になる方は以下の記事とワークフローを参考にしながら組み合わせてみると良いと思います。