【Stable Diffusion】web UI拡張機能で簡単ディープフェイク

【Stable Diffusion】web UI拡張機能で簡単ディープフェイク ツール

「指定した顔で画像生成を行いたい」
「ディープフェイク(Deepfake)を試してみたい」

このような場合には、roop for StableDiffusionがオススメです。
この記事では、web UIで簡単にディープフェイクを試せる方法を解説しています。

本記事の内容

  • roop for StableDiffusionとは?
  • roop for StableDiffusionのインストール
  • roop for StableDiffusionの動作確認

それでは、上記に沿って解説していきます。

roop for StableDiffusionとは?

GitHub - s0md3v/sd-webui-roop: roop extension for StableDiffusion web-ui
roop extension for StableDiffusion web-ui. Contribute to s0md3v/sd-webui-roop development by creating an account on GitHub.

roop for StableDiffusionとは、画像の顔置換(フェイススワップ)が可能なweb UIのエクステンションです。
次の画像を見れば、どのようなことが可能であるかがわかるでしょう。

生成される画像では、オードリー・ヘプバーンの顔画像に置き換わっています。
95%ぐらいまでは、置き換える前の顔で画像が生成されます。

そして、最後にアップロードした画像の顔に置き換えられる仕組みになっています。
もちろん、アップロードした顔をプロンプトで様々な表情や見た目に変更できます。

これは、完全にディープフェイクですね。
ただ、ディープフェイクは既存の画像や動画を対象に顔置換が実行されていました。

それに対して、roop for StableDiffusionは新たに画像を作り出しています。
それもプロンプトで比較的自由に画像を制御できます。
このことが、既存のディープフェイクとは異なるように感じます。

技術的には、roopという技術をベースに顔置換を実現しています。
roopは、この拡張機能の開発者が進めている顔置換技術のプロジェクトです。

さらに説明すると、顔認識のためにInsightFaceという技術が用いられています。
InsightFaceについては、次の記事で説明しています。

roop for StableDiffusionは、なかなか手が込んだ拡張機能と言えます。
そのため、若干インストールで頑張る必要があります。

なお、roop for StableDiffusionには予防措置が取られています。
非倫理的(NSFW)な画像を生成できないようしてあります。

つまり、有名女優の顔でNSFWコンテンツを生成することはできないということです。
試したところ、顔画像が置き換わらずにそのまま画像が生成されます。

ただし、10枚に1枚程度の確率で予防措置が機能しない場合があるようです。
その辺は、今後の改善に期待というところでしょうね。

以上、roop for StableDiffusionについて説明しました。
次は、roop for StableDiffusionのインストールを説明します。

roop for StableDiffusionのインストール

roop for StableDiffusionのインストールを説明します。
その前提として、AUTOMATIC1111版web UIのインストールは必須です。

そして、拡張機能をインストールする前にInsightFaceをインストールしておく必要があります。
そのInsightFaceをインストールするには、Windowsの場合はVisual Studioが必要だと公式では記載されています。

Visual Studioと言っても、範囲が広すぎます。

基本的には、上記記事通りにインストールすれば大丈夫なはずです。
とりあえず、「where cl」コマンドで次のように表示されれば準備はOKと言えます。

>where cl
C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.29.30133\bin\Hostx86\x86\cl.exe

このコマンドは、PowerShellやコマンドプロンプトで確認可能です。
ここまで確認できれば、InsightFaceをインストールします。

web UIがインストールされている環境において、次のコマンドを実行します。

pip install insightface==0.7.3

バージョンが指定されていることに注意しましょう。
InsightFaceがインストールできれば、あとはもう簡単です。

普通に拡張機能をインストールする手順となります。
まずは、「Extensions」タブをクリック。

そして、「Extensions」内の「Install from URL」タブを開きます。

「URL for extension’s git repository」に次のURLを入力します。

 https://github.com/s0md3v/sd-webui-roop

入力できたら、「Install」ボタンをクリック。
この処理には、結構時間がかかります。
処理が完了したら、「Extensions」内の「Installed」タブをクリック。

sd-webui-roopがインストールされていることを確認できます。
確認できたら、「Apply and restart UI」ボタンをクリック。

これで、roop for StableDiffusionのインストールは完了です。

追記 2023年9月3日
2023年8月下旬頃からエラーが出るようになっています。
そのエラーの解消についてまとめています。

以上、roop for StableDiffusionのインストールを説明しました。
次は、roop for StableDiffusionの動作確認を説明します。

roop for StableDiffusionの動作確認

roop for StableDiffusionの動作確認を行います。
「txt2img」と「img2img」の両方で利用可能です。

今回は、「txt2img」で動作を確認します。
「txt2img」タブを開いて、画面下部を確認しましょう。

ControlNetをインストール済みなら、その下に確認できます。
クリックして次の画面を表示させます。

ここでのポイントは、下線を引いた3つ。
画像をアップロードして、「Enable」にチェックを入れることは必須です。

Upscalerに関しては、設定した方が綺麗な画像が出力されるとのこと。
設定した場合は、「Upscaler scale」も2以上を設定すべきでしょうね。

あと、「txt2img」の設定では「Restore faces」を有効にすることも触れられています。

ただ、これは顔が破綻する場合に利用した方が良さそうです。
これが有効であるために、逆に顔が崩れる場合もあります。

動作確認では、次のように設定を行います。

「Restore faces」は、そのときの状況によってオン・オフを設定します。
プロンプトには、「a man」とだけ入力しています。

以下のモデルで検証します。

  • Western Animation Diffusion
  • Reliberate
  • MeinaMix

それぞれの結果は、以下。

Western Animation Diffusion

「Restore faces」はオフ。

Reliberate

「Restore faces」はオフ。

MeinaMix

「Restore faces」はオン。

3つのモデルしか試していませんが、どのモデルでも機能しています。
結果に関しては、スゴイとしか言いようがありません。

以上、roop for StableDiffusionの動作確認を説明しました。

タイトルとURLをコピーしました