まあ、バズるかは置いといて、クオリティは任せて笑
AIを使った画像生成に興味があり、特に話題のStable Diffusionを試しているという方は多いのではないでしょうか。 今回は、そんなStable Diffusion WebUIユーザー必見の拡張機能ReActorの使い方を初心者から上級者まで分かりやすく解説します。
ReActorを使えば、画像内の顔を指定した別の顔画像に高速かつ高精度に入れ替えることができます。 ディープフェイク動画の作成などにも応用できる非常に優れた拡張機能なので、ぜひ最後までチェックしてみてください。
ReActorの特徴と魅力
- 高速かつ高精度に顔の入れ替えができる
- 元の顔の表情を考慮し、違和感のない自然な仕上がりに調整される
- text2img、img2img、mov2movに対応
- 複数人の顔を一度に入れ替えられる
- 性別を検出して同性の顔同士を自然に入れ替えてくれる
- 顔の輪郭周りのピクセル化も自動補正され、なめらかに仕上がる
- 入れ替え前後の画像を比較できるよう自動で保存してくれる機能も
ReActorは、既存の類似拡張機能の中でも群を抜いて優秀な性能を誇ります。 プログラミングなどの専門知識がなくても、GUIの簡単な操作だけで驚くほどクオリティの高いディープフェイク画像が誰でも作れてしまうのが大きな魅力です。
ReActorの導入手順
それではReActorの導入手順を見ていきましょう。 事前にAuto1111版のStable Diffusion WebUIが動作する環境が必要です。
ReActorの拡張機能をインストール
ReActorを最大限活用するには、以下の3つの拡張機能が必要です。
- ReActor
- mov2mov
- ControlNet
ます、Extensions > Install from URLを開いてください。
以下の2つのURLについて、それぞれ、URL for extension’s git repositoryに入力してInstallをクリックします。
https://github.com/Gourieff/sd-webui-reactor.git
https://github.com/Scholar01/sd-webui-mov2mov
https://github.com/Mikubill/sd-webui-controlnet
3つの拡張機能をインストールしたら、次に、Stable Diffusionを再起動します。以下のボタンをクリックしてください。
これでインストールは完了です!
ReActorの基本的な使い方
導入できたら、実際に顔の入れ替えをしてみましょう。 使い方自体は本当にシンプルです。
- ReActorにチェックを入れて機能をONにします
- Single Source Imageに入れ替えたい顔の画像をアップロード
- あとはtext2imgやimg2imgで画像生成するだけ!
たったこれだけで、アップロードした顔画像を使ったディープフェイク画像が完成します。 text2imgやimg2imgと組み合わせれば、既存の画像を題材にして別人の顔を違和感なく合成することも可能です。
text2imgの場合
ふつうに生成すると以下のような顔になるのですが、これをモナ・リザに変換してみましょう。
手順は上記の通り、ReActorをONにして、Single Source Imageにモナ・リザの画像をアップロードしただけです。
img2imgの場合
基本的にtext2imgと同じです。ただ、img2imgを使う場合はReActor以外での画像の変更が起こらないように、Denoising strengthを0にします。(また、画像サイズも元の画像に合わせましょう)
手順は上記の通り、ReActorをONにして、Single Source Imageにモナ・リザの画像をアップロードしただけです。
mov2movで動画もディープフェイクする!
いよいよ動画もReActorを使って顔変換を行っていきましょう。
まずは、mov2movのタブを開いてください。
mov2movのタブが表示されない??
最近、mov2movのタブが表示されない/消えたという事例があるようです。
そんな方は以下の記事を参考にすれば直ります!
次に、mov2movの設定を行います。
動画のサイズを確認しましょう。
Stable Diffusionでそれぞれのサイズを入力してから、Denoising strengthを0にします。
最後に、ReActorで変換したい顔をアップロードします
あとは、Generateボタンを押して実行するだけです!
ディープフェイクのクオリティを上げる
うーん…
とりあえず作ってみたけど…
外国人だといい感じだけど、日本人だとクオリティ微妙じゃない?
そうなんよねーーなんか全部同じ感じの顔になるよねーー
どうしたらいいか教えて?
工夫すれば、日本人系の顔でもいい感じにディープフェイクできるよ!
そう!!これつくりたい!!
簡単にできるよ~以下の記事を参考にしてみて!
↓ よりクオリティの高い、日本人のディープフェイクを作成するための記事はこちらをご覧ください!!
ReActorの各種パラメータの解説
ReActorにはいくつか設定できるオプションがあります。 用途に合わせて変更することで、より細かい調整が可能になります。 主なパラメータを解説しますので、状況に応じて使い分けてみてください。
Mainタブ
Select Source
Imageは画像をアップロードします。そのままですね。
Face ModelはToolsタブで作成したモデルを選択することができます。
Foldersは画像が入っているフォルダーを指定するのですが、例えば、5枚のSource Imageにいれたとき、5枚のディープフェイク画像ができるだけであって、5枚を混ぜ合わせたものができるわけではないということです。一気に作りたいとき用ですね。
複数枚を混ぜ合わせたい場合は、ToolsタブでつくるFace Modelを使用してください。
Single Source Image / Multiple Source Image
ReActorではMultiple Source Imagesを使って複数枚の画像を使用してディープフェイクすることができます。
Select Sourceと同じく、例えば、5枚のSource Imageにいれたとき、5枚のディープフェイクができるだけであって、5枚を混ぜ合わせたものができるわけではないということです。一気に作りたいとき用です。
複数枚を混ぜ合わせたい場合は、ToolsタブでつくるFace Modelを使用してください。
Save Original (Swap in generated only)
Save Originalでは、スワップ前の元画像を保存するかどうかを選択します。オンにすると、スワップ前後の比較ができるようになります。
Face Mask Correction
Face Mask Correctionでは顔の輪郭周りのピクセル化を補正する機能です。より自然な仕上がりになります。顔の輪郭周りにピクセル化が見られる場合に適用することをお勧めします。
Source Image (above) / Target Image (result):
交換する顔の画像、または顔交換対象の画像に複数人写っている場合があると思います。
その場合、どの顔をどこにディープフェイクするかを指定することができます。
Comma separated face number(s)では、画像内の顔には左上から右下に向かって0から始まる番号が振られます。このオプションでは、カンマ区切りで置換したい顔の番号を指定します。
例えば、「0,2,1」と入力すると、1番目、3番目、2番目の顔が選択されます。
Source Imageで「0,1」、Target Imageで「1,0」と指定すれば、Source画像の1番目の顔がTarget画像の2番目の顔に、Source画像の2番目の顔がTarget画像の1番目の顔に入れ替わります。
Gender Detectionは画像内で検出する顔の性別を指定できるオプションです。No(性別問わず)、Female Only(女性のみ)、Male Only(男性のみ)から選択します。
例えばSource画像はFemale Only、Target画像はMale Onlyに設定すると、Source画像の女性の顔がTarget画像の男性の顔に置換されるようになります。
Restore Face
スワップ後の顔を復元するオプションです。ぼやけた顔を鮮明化することができます。CodeFormerのままで大丈夫です。
Restore Face Visibility
Restore Face Visibilityは顔がはっきりと認識できるように調整するパラメータです。
0では、顔の可視性の修正を行わないことを意味します。
1では、顔の可視性が最大限に強化されます。
CodeFormer Weight (Fidelity)
CodeFormer Weightは、画像内の顔のリストレーションに影響を与えるパラメータです。0から1の間の値を設定できます。
0は元の画像とはかけ離れた最大限の修復をします。(修復過多)
1は元の画像に近い最小限の修復です。(ほとんど修復しないためぼやける)
Swap in source image / Swap in generated image
Swap in source imageを有効にすると、ソース画像に対して顔交換が適用されます。つまり、入力したソース画像内の顔が、指定した別の顔に置き換えられた状態で、画像生成処理(ディフュージョン)が始まります。
ソース画像をベースに、顔交換後の画像をさらに変化させたい場合に便利です。
Swap in generated imageを有効にすると、画像生成処理が完了した後の画像に対して、顔交換が適用されます。ディフュージョンによって生成された画像内の顔を、指定した別の顔に置き換えることができます。
画像生成のベースは元のソース画像のままで、完成した画像に顔交換を行いたい場合に使用します。
Detectionタブ
Threshold
Thresholdは顔検出アルゴリズムが画像内のある領域を「顔である」と判定するための閾値を設定します。 デフォルト値は0.5で、0から1の間の値を取ります。
値を大きくするほど、顔と判定されるための条件が厳しくなり、検出感度が下がります。 逆に値を小さくすると、顔として検出されやすくなりますが、同時に誤検出も増える可能性があります。 画像の特性や用途に合わせて適切な値を設定することが大切です。
Max Faces
Max Facesは画像内で検出する顔の最大数を指定するオプションです。 デフォルト値は0で、これは「無制限」を意味します。
例えば、値を1に設定すると、検出される顔の数が1つに制限されます。 複数人が写り込んでいる画像で、特定の人物の顔だけを交換したい場合などに活用できます。
Upscaleタブ
Postprocessing Order
Postprocessing Orderは顔の復元処理とアップスケール処理の実行順序を制御するパラメータです。 デフォルトでは、「1. Restore Face -> 2. Upscale」の順に処理が行われます。 つまり、まず顔の復元が適用され、その後アップスケールが実行されます。
チェックを外すと、アップスケールが先に行われ、その後に顔の復元が適用される順序に変更されます。 一般的には、デフォルトの順序(復元→アップスケール)の方が自然な仕上がりになることが多いですが、 画像の種類や目的に応じて順序を変更すると良い結果が得られる場合もあります。
Upscale anyway – even if no face found
Upscale anywayは顔が検出されなかった場合でもアップスケールを実行するかどうかを選択するオプションです。 有効にすると、顔が見つからない画像に対してもアップスケールが適用されます。
Force Upscale
Force Upscaleはアップスケールを強制的に実行するためのオプションです。 通常、img2imgで「Swap in Source」を選択した場合、アップスケールは適用されません。 ただし、Force Upscaleを有効にすると、この場合でもアップスケールが実行されるようになります。
Upscaler
Upscalerは使用するアップスケールアルゴリズムを選択するパラメータです。 リストから目的に応じたアップスケーラーを選択してください。 ただし、img2imgで「Swap in Source」を選択した場合、アップスケールは1倍に制限され、 テクスチャリングやノイズ除去などの後処理のみが適用されます。
Scale by
Scale byは、アップスケールの倍率を指定するオプションです。 1から4の間の値を設定でき、大きいほど高解像度になりますが、処理時間も長くなります。
Upscaler Visibility (if scale = 1)
Upscaler Visibilityはアップスケール倍率が1倍の場合の、アップスケーラーの効果の強さを調整するパラメータです。 0から1の間の値を取り、大きいほどアップスケーラーの効果が強く表れます。 アップスケールを行わない場合でも、アップスケーラーの特性を画像に反映させることができます。
Toolsタブ
Face Modelsでは、顔交換の元となる顔モデルを作成することができます。
- 顔モデルのベースとなる画像をアップロードします。画像には1人の人物が写っている必要があります。(Blendタブからだと複数枚をアップロードできます)
- Face Model Nameに、作成するモデルの名前を入力します。
- Build and Saveボタンをクリックすると、モデルが構築され、保存されます。
保存されたモデルは、models/reactor/facesディレクトリに格納されます。 これらのモデルは、ReActorの顔交換処理で使用することができます。
Settingsタブ
Execution Provider
Execution Providerでは、ReActorの処理を実行するためのプロバイダを選択します。以下の2つのオプションから選択できます。
- CPU : CPUを使用して処理を実行します。
- CUDA : NVIDIA GPUを使用して処理を実行します。CUDAを選択するには、NVIDIA GPUとCUDAツールキットが必要です。
選択後、Saveボタンをクリックして設定を適用します。既に画像生成を実行している場合は、再起動が必要になります。 A1111の場合は、ExtensionsタブからApply and restart UIを実行してください。
Model
Modelでは、使用する顔交換用のモデルを選択します。 デフォルトでは、ReActorに同梱されているモデルが選択されています。 ドロップダウンリストから別のモデルを選択することもできます。
Console Log Level
Console Log LevelではReActorの処理ログの出力レベルを選択します。以下の3つのオプションから選択できます。
- No log : ログを出力しません。
- Minimum : 最小限のログを出力します。
- Default : デフォルトのログを出力します。
詳細なログが必要な場合は、Default を選択してください。 ログを最小限に抑えたい場合やログが不要な場合は、Minimum や No log を選択してください。
Source Image Hash Check
Source Image Hash Checkではソース画像のハッシュチェックを有効にするかどうかを選択します。 有効にすると、同じソース画像を使用した場合の処理が高速化されます。 Extras タブや img2img で Swap in source image のみを使用する場合に影響します。 特に理由がない限り、有効にしておくことをお勧めします。
Target Image Hash Check
Target Image Hash Checkではターゲット画像のハッシュチェックを有効にするかどうかを選択します。
実験場アーカイブ
すべてデフォルトの場合
Face Mask Correction: ON
顔周りが変わる、OFFのほうがいい気がする。
Restore Face
Noneだとぼやけるけど、顔はソース画像に近い
Restore Face Visibility
同じくぼやけるけどソース画像に近くなる
CodeFormer Weight
Weightを0にすると完全に別人
Swap in source image: ON、Swap in generated image: ON
よりターゲット画像に近づいた気がする。
ディープフェイク×ダンスでTikTokバズりたい!!!