stable diffusion は、モデルによって顔立ちの傾向はあるものの、毎回異なった顔が生成されてしまいます。これを解決するため、顔の特徴を引き継ぐControlNetやLoRAという方法が用いられるのですが、新たに roop という方法が使えるようになりました。
そこで、今回は stable diffusion web ui で roopを使えるようにするためのインストール方法と使い方について紹介したいと思います。
インストール方法
インストールするには次の3つの手順が必要になります。
Visual Studio 2022 Community版のインストール
insightface をインストールするためには Visual Studio Build Tool というツールが必要なので、Visual Studio 2022 Community 版のインストーラーを使ってインストールします。
はじめに、下記の公式サイトのリンクをクリックして下さい。クリックすると同時に、インストーラーがダウンロードされます。
https://visualstudio.microsoft.com/ja/thank-you-downloading-visual-studio/?sku=BuildTools&rel=16
先頭が vs_buildtools から始まるEXEファイルがダウンロードされますので、ダウンロード後ダブルクリックにより実行して下さい。
vs_buildtools__b2532f2ab3dc4394b1315c9bde8f4fab.exe
実行するとインストーラーが起動します。「C++によるデスクトップ開発」「Visual Studio拡張機能の開発」にチェックを入れます。
ちなみに、既にPythonが入っていることが前提ですので、まだの方は「Python開発」にもチェックを入れるか、もしくは個別にPythonをインストールして下さい。
チェックを入れたら「ダウンロードしながらインストールする」をクリックします。
インストール中は下記の画面が表示されます。インストールが終了したら、インストーラーを終了させて下さい。
insightface のインストール
次に insightface をインストールします。pip コマンドを使いますので、Pythonが実行できるコマンドプロンプトを起動します。
Pythonをどうインストールしたかによって変わりますのが、下記を目安にしてください。
Pythonのインストール元 | Pythonが使えるコマンドプロンプトの例 |
---|---|
Python公式サイト | Python Prompt |
anaconda | anaconda Prompt |
「WinPython+PortableGit」環境 | CommandPrompt.bat |
コマンドプロンプトで実行するコマンドは次の通りです。
1 |
pip install insightface==0.7.3 |
インストールの実行時は、下記のような画面が数分間表示されますので、終了するまで少々お待ちください。
sd-webui-roopのインストール
最後に、stable diffusion web ui を起動し、Extensionsタブ→install from URLタブを選択します。
そして、URL for extension's git repository 欄に下記のURLを張り付けて下さい。
1 |
https://github.com/s0md3v/sd-webui-roop |
最後にinstallボタンを実行します。
インストールはすぐに完了しますので、Installタブを選択し、Apply and restart UI ボタンをクリックして下さい。
txt2img タブを選択すると、 roop v0.0.2が表示されているはずです。もし表示されていない場合、stable diffusion web ui を一旦終了してから、再起動して下さい。
roop を使う場合は、下図の通り roop v0.0.2をクリックし、Enable にチェックを入れるだけです。
roopの画面説明
2023年7月時点のループ( roop v0.0.2 )には次の項目が用意されています。
項目 | 説明 |
---|---|
①反映元の画像置き場 | ここに画像をドラッグ&ドロップすることで roop が 顔の特徴を読み取ります。 |
②roopの有効/無効 | roopを使いたい場合はチェックを入れてください。 |
③顔の指定 | 反映先の画像に複数の人物が存在する場合、 左から何番目に人物に特徴を反映するかを指定します。 0からスタートします。 |
④顔を綺麗に整える アルゴリズム | 顔を綺麗に整えるためのアルゴリズムを指定します。 Noneでも問題ないことが多いです。 |
⑤画像の拡大に用いる アルゴリズム | 画像を拡大する際に使うアルゴリズムを指定します。 実写系の場合、ESRGAN_4x あたりが良いと思います。 |
⑥画質の鮮明度 | 1が鮮明で0になるほど輪郭がぼやけます。 通常は1(初期値)に設定しておきます。 |
⑦画像の拡大倍率 | 生成画像の拡大倍率です。例えば4を指定すると 512X512の画像が 2048X2048に拡大されます。 |
⑧Upscalerの可視性 | ⑤が1(拡大しない)場合に有効になる数値です。 どのような効果があるのか分かりませんが、0の方が 微妙に良い気がします。 通常は0(初期値)で問題ありません。 |
⑨roopで用いるモデル | 現時点では1つしか選べません。 |
下記が Upscaler visibility が1と0の比較画像です。
roopの使い方
roop は txt2img から使う方法と、img2imgの inpaint から使う場合の2通りあります。
txt2img は通常の画像生成の最後に、顔の特徴を反映してくれます。
img2imgの場合、inpaint で顔を塗りつぶすことで、既存の画像の顔だけに特徴を反映してくれます。これにより、同一人物に対して、ダイナミックに服や背景、ポーズを変更することが可能になります。
txt2img による画像生成
roop に特徴を抽出したい写真をドラッグ&ドロップし、Genarateボタンをクリックするだけです。
結果は以下の通りになりました。顔の特徴が引き継がれていることが分かります。
img2imgによる画像生成
img2img の inpaint を選択し、顔の特徴を反映させたい画像をドラッグ&ドロップします。次に、roop側に顔の特徴を抽出したい画像をドラッグ&ドロップします。
そして、顔の部分を黒く塗りつぶした後で、Genarateボタンをクリックするだけです。
実行した結果、下記の様になりました。こちらもちゃんと顔の特徴が引き継がれていますね。
まとめ
今回は stable diffusion の新たな拡張機能 roop を使って、顔の特徴を引き継ぐ方法について解説しました。
stable diffusion に限らず、AIによる画像生成は、どんなにプロンプトに注意を払っても、背景、ポーズ、衣装、人物、表情が毎回変わるため、全ての要望を満たす画像を生成することは非常に困難でした。
最近、人物の顔を固定したり、特徴を引き継ぐ拡張機能があいついで登場してきており、その1つとして roop が注目されています。
AIによる生成画像はガチャだと言われていますが、すこしでもガチャの回数を減らすため、この記事がお役に立てれば幸いです。
コメント