PR

Google ColabでDeep Fake:好みの顔に差し替える Stable Diffusionの拡張機能「roop」の導入方法

アフィリエイト広告を利用しています
GitHub ダウンロード 雑記
スポンサーリンク

Amazon 商品案内

 

今回はStable Diffusionの拡張機能「roop」を使用して顔を入れ替える(スワップする)方法を紹介します。

導入に関してはGoogleColabを使用したのでそれほど手間はかかりませんでした。

まず最初に今回の「roop」導入方法についてですが、自分はPCに関する事はまったくの素人で、プログラミングの知識もありませんしPythonの知識も皆無です。

なので内容に間違いや勘違いもあるかもしれないという事をあらかじめご理解ください。

ほぼネットの検索やMicrosoft Bing(現在はCopilot)、そしてGoogle Bard(現在はGemini)で調べたりして導入したということを申し上げておきます。

 

尚、この記事は2023年8月時点での情報となります。将来的にアップデートなどで変更があったり動作に不具合が生じる可能性があるかもしれないということをご了承ください。

ちなみに今回の記事はGoogleColabでの導入となるので、ローカル環境で導入する場合はまたひと手間かかります。後半に簡単に導入方法を載せておきます。

プログラミング学習の一環として利用してくださるよう、お願いします。

!注意!悪用厳禁・・・これはあくまで個人的に利用するものであり、決して悪意を持った利用はしないで下さい。法律を遵守し、常識や道徳的な観点から適切な利用をして下さるようお願いします。当ブログを参考に画像生成等を行い、罪に問われたとしても当ブログは一切責任を負いません。(もし仮にフェイク画像、フェイクポルノ作成等で告訴された場合、名誉毀損罪、著作権法違反、わいせつ物頒布等の罪のいずれかに該当する可能性があります)

■ ! Note! Abuse is strictly prohibited…This is for personal use only, and please do not use it for malicious purposes. We ask that you comply with the law and use this site appropriately from a common sense and moral perspective. This blog does not take any responsibility even if you create images using this blog as a reference and are accused of a crime.

 

*注 2023年8月31日にStable Diffusion web UI Ver.1.6.0がリリースされました。画面UIが変更され、新しいサンプラーの追加、Hires.fixやRefinerも仕様変更されてます。

Release 1.6.0 · AUTOMATIC1111/stable-diffusion-webui
Features: refiner support #12371 add NV option for Random number generator source setting, which allows to generate same...
スポンサーリンク

顔をスワップする「roop」を使用するには

Google Colabの場合ですが、Stable Diffusionに拡張機能の「roop」をインストールします。

そして「insight face 0.7.3」をインストールする必要があります。

 

「roop」のインストールの方法はStable Diffusion web uiからインストールします。

まずは普通にGoogleColabからStable Diffusionを起動してweb uiを表示させます。

Webui画面 Extensions

【Extensions】から「Install from URL」タブを開き、URL for extension’s git repositoryの欄にGitHubからコピーした「roop」のURLを貼り付けます。

 

URL入力欄

とりあえずgithubのサイト検索から一番最初に表示されているURLを載せておきます。

GitHub - s0md3v/roop: one-click face swap
one-click face swap. Contribute to s0md3v/roop development by creating an account on GitHub.

↓Roopの改良版。

GitHub - P2Enjoy/sd-webui-roop-uncensored: uncensored roop extension for StableDiffusion web-ui
uncensored roop extension for StableDiffusion web-ui - P2Enjoy/sd-webui-roop-uncensored

↓ReActor ●この拡張機能は、性別の検出、複数の顔に対応可能、NSFWのフィルターが無いことなどが挙げられます。

GitHub - Gourieff/sd-webui-reactor: Fast and Simple Face Swap Extension for StableDiffusion WebUI (A1111 SD WebUI, SD WebUI Forge, SD.Next, Cagliostro)
Fast and Simple Face Swap Extension for StableDiffusion WebUI (A1111 SD WebUI, SD WebUI Forge, SD.Next, Cagliostro) - Go...

 

*このサイトの緑色のCode▼をクリックするとURLが表示されるので、その横のファイルのマークをクリックするとURLをコピーできます。

GitHub

GitHub

 

GitHubからコピーした「roop」のURLを貼り付けたら、下にあるオレンジ色のInstallボタンをクリックするとインストールが始まります。

しばらく待ってインストールが終了するとInstallボタンの下に 

Installed into/content/sd-webui/・・・・・ 

と表示が出ればインストールは完了してます。

Installed

インストールした後はwebuiの再起動が必要になります。(After installation, you will need to restart the webui)一旦閉じて再起動(Restart the program)します。

 

再起動後、webuiを下へスクロールして「roop v0.0.2」といった表示があればOKです。

Roop画面

(この画面では上記のroopとは違うものをインストールしているので表示が違いますが、とりあえずroopと表示されていれば正常にインストールされています。ちなみに自分はReActorを採用してます)

ちなみにこの拡張機能の「roop」を調べたところ、かなり複数のソースが上がってます。しかしそれほど違いはないように思います。

中には動画にも対応できるroopもあるようですが、まったく知識が無いのでそれぞれの違いは全然わかりません、すみません(汗

【画像生成AI】Stable DiffusionをGoogle Colaboratoryで使ってみた!巷で話題の素人レビュー
画像生成AIってどんなものだろう?ということで、試しに自分のPCで体験してみました。Google Colabを使用すればスペックの低いPCでもOKです。ただクセになって時間泥棒になるので注意。Colabの有料コースをオススメします。画像生成AIは画期的で面白いので是非体験して下さい。

 

Insight face 0.7.3のインストール

次に「Insight face 0.7.3」のインストールですが、GoogleColabの実行コマンドの中にコードセルを追加します。

コードセル

Colabのノートブックを開いて「+コード」をクリックすると、コマンドを入力する新しいテキストボックスが開くので、

実行コマンド

 !pip install insightface==0.7.3  という実行コマンドを入力します。

(このコマンドは特定のバージョンをインストールするコマンドです)

 

もしくは、

実行コマンド

 !pip install –upgrade insightface  でも良いです。

(このコマンドはinsight faceの最新バージョンをインストールしてほしいときのコマンドになります。) ハイフンは半角のハイフンが2つです。

※コマンドの最初の記号は「!」マーク(エクスクラメーションマーク)です。

コマンド、!pip install insightface==0.7.3 は、Pythonのパッケージマネージャ「pip」を使って「insightface」というライブラリの特定バージョン(0.7.3)をインストールするためのものです。ここで、! はJupyter Notebookなどのインタラクティブ環境でシェルコマンドを実行するための記号です。

 

あとはそれぞれの▶実行ボタンを押していき、public URLが表示されたらクリックしてwebuiを立ち上げてください。

GoogleColabでコマンドを実行

 

*上記の方法で確かに顔のスワップは出来ましたが、本当にこれで正しいのかどうか未だ確信が持てないのが正直な気持ちです。顔のスワップ自体は成功したので興味がある方は参考にして下さい。もし追加や補足などがあれば随時更新または訂正する予定です。
スポンサーリンク

実際に「roop」を使ってみた

まず最初は簡単な方法で顔をスワップしてみます。

txt2imgでの方法は、まず画像を生成する前にroopの設定のEnableにチェックを入れ、入れ替えたい顔の画像をアップします。

(Enableは”有効にする”という意味です。発音は英語だとイネイブルとかエネイブルと発音してます)

Roop機能 Enable

そのままGenerateボタンを押して画像生成します。そうするとアップした顔に入れ替わってます。

もしくは生成し終えた画像の顔をスワップしたい場合、生成後のseed値をコピーして貼り付け、roopに入れ替えたい顔をアップしてGenerateボタンを押せば顔をスワップすることができます。

 

他の方法はimg2imgを使用する方法で、img2imgの「inpaint」を使います。

Img2Img inpaint画面

「inpaint」に入れ替えたい画像をアップして、その画像の顔の部分だけ黒く塗り潰し、それから「roop」に入れ替えたい顔をアップします。

Generateボタンを押して画像を生成すれば、顔の部分だけroopで指定した顔に入れ替わります。

試した結果

見た目とか出来栄えですが、ある程度の試行回数が必要かもしれません。

まだこの「roop」の機能は完璧とは言えないまでも、アップした顔の特徴は掴めているようです。

しかし、違和感なく自然な感じでスワップされている画像もあれば、微妙に肌の色が変わっていたり顔がちょっと違うものが生成されることもありますので、上手くいくかどうかは運任せの部分が多少あります。

もしtxt2imgでroopが上手くいかない場合はimg2imgで顔を入れ替えて試してみてください。

ただimg2imgの場合、サンプル画像によっては顔が変わってしまったり顔が崩れることもあります。

この対策として、サンプル画像にもっと解像度の高い画像を使用するか、もう少し参考になりそうなサンプルの画像を集めて「roop」に画像を何度か入れ替えて試行回数を増やしてみます。

このあたりは技術的な部分もあり、使用する画像や各種パラメーターなどの数値も関係してくると思います。

しかしこの「roop」機能を使えばそれほど手間をかけずに顔のスワップが可能ですから、手軽に顔を入れ替えたりするための一つの手段として導入してみて下さい。

追加で補足説明します。

img2imgの「inpaint」を使ってroop機能を使用する際の注意点として、ベースとなる画像の対象のモデルの顔が横を向いていたり、寝そべっていたり、極端ですが顔が逆さになっていたりすると顔が崩れやすくなります。

これは、roopが顔の特徴を抽出するためにInsightfaceというライブラリを使用しているので、顔の向きや角度によっては検出する精度が変わってしまいます。顔が正面を向いていないとroopがうまく機能しない可能性が高くなります。

ベースになる画像のモデルはなるべく正面を向いた画像を使用して下さい。もしどうしてもその画像を使いたい場合は画像の角度を変えて、対象となるモデルがなるべく正面を向くように調整して下さい。

 

それともう一つ、img2imgの「inpaint」でroopを使用する場合は「Denoising strength」の数値を下げる方が良いと思います。

この機能については自分もよくわからないのですが、翻訳すると「ノイズ除去の強さ」を調整するようです。

img2imgにタブを切り替えると下の方に Denoising strength が表示されます。

デフォルトでは0.75という数値になっていますが、この値だとちょっと強めの調整になるので画像の細部や特徴が失われる可能性があり、顔が崩れることがあるようです。

またはスワップされた顔の特徴を掴んではいるが、あまり似ていない顔になったりすることがあります。

デノイジング ストレングス パラメータ

デフォルトでは0.75という数値になっていますが、このパラメータを低めに設定して下さい。目安は0.3を基準として、生成された画像を確認しながらパラメータを調整して下さい。

逆に弱めの調整だと画像が粗くなったり元の画像と変わらない可能性があります。

img2imgの「inpaint」でroopを使用する際には、この数値をデフォルトより下げるようにパラメータを調整して下さい。

だいたいの目安としては0.3ぐらいだと思います。このあたりは画像を確認しながらパラメータを調整して下さい。

 

ローカル環境でroopを導入する場合

GoogleColabのようなクラウドではなく、個人のPCでローカル環境でStable Diffusionを構築している場合は「roop」導入前にいくつかインストールする必要があります。

前提として、画像生成には最新のCPUと高性能なGPUが必要になります。どのようなPCが良いのかを下記のブログに掲載しています。↓↓↓

Stable Diffusionをローカル環境で快適に動作させるためのPCのスペックとは?
stable diffusionをローカル環境で動作させるためにはどのぐらいの性能のPCが必要か調べました。GPUがキモとなるためゲーミングPC並の性能は必要になってきます。オススメのPCを掲載したので購入予定の人は検討してみて下さい。

 

ローカル環境でSTABLE DIFFUSIONを構築している場合、Roop導入には、GITMicrosoft Visual Studio 、insight face 0.7.3 のインストールが必要になります。

Python 3.10.6に関しては、ユーザーがローカル環境でStable Diffusionを構築している時点でインストールされていると思います。

GITのインストール

ローカル環境でSTABLE DIFFUSIONを構築しているユーザーなら、「GIT」のインストールも済んでいるとは思いますが、念のため説明します。

GITは、ソースコードのバージョン管理システムです。STABLE DIFFUSIONのようなプロジェクトでは、以下の理由でGITが必要となります。

  1. プロジェクトのクローン: GITを使用すると、GitHubなどのリモートリポジトリからプロジェクトのソースコードをローカル環境にクローン(コピー)することができます。これにより、ユーザーは自分のマシン上でプロジェクトを構築し、実行することができます。

  2. 最新の変更を取得: プロジェクトは常に進化しており、新しい機能が追加されたり、バグが修正されたりします。GITを使用すると、これらの最新の変更を簡単に取得して、自分のローカル環境に反映することができます。

  3. バージョン管理: 何か問題が発生した場合や、特定のバージョンのコードを確認したい場合に、GITを使用して過去のバージョンに戻ることができます。

Git

以上の理由から、STABLE DIFFUSIONをローカル環境で構築する際には、Pythonと共にGITのインストールが必要となります。

これにより、プロジェクトのソースコードを効率的に管理し、最新の変更を追跡することができます。また必要に応じて過去のバージョンに戻ることも可能となります。

Microsoft Visual Studioのインストール

Visual Studio Tools のダウンロード - Windows、Mac、Linux 用の無料インストール
Visual Studio IDE または VS Code を無料でダウンロードします。 Windows、Mac で Visual Studio Professional または Enterprise エディションをお試しください。

Microsoft Visual Studio Windows版(Community 2022)をクリックするとインストーラがダウンロードされます。

ダウンロードしたらインストーラが準備されるので開きます。

インストールの項目ですが、

  • Python開発
  • C++によるデスクトップ開発
  • VisualStudio拡張機能開発

この3つにチェックを入れてインストールします。インストールに多少時間が掛かる場合があります。

サインインする画面が出るのでサインインします。サインインが完了したらウィンドウを閉じます。

insight face 0.7.3のインストール

「GIT」「Microsoft Visual Studio」それぞれのインストールを終えたら、自分のPCのコマンドプロンプトを開いてinsight face 0.7.3をインストールします。

PC コマンドプロンプト

pip install insightface==0.7.3 と入力します。

このインストールも少々時間が掛かるみたいです。

その後は上記のようにStable Diffusion Web UIから「roop」をダウンロードします。

 

ローカル環境で「roop」を導入するのは手間がかかる部分がありますが、自分でStable Diffusionを構築しているユーザーならそれほど難しくはないと思います。

*注 上記の内容はただネットで検索した内容なので、この方法が正しいかどうかはわかりません。この他にも設定項目や要らない項目があるかもしれないので、詳しいことはネットやYouTubeで検索するとかなりの確率でヒットするので調べてみて下さい。

まとめ

ただ顔を同じにするならControlNetの「Reference-only」を使えばいいのですが、顔を入れ替えるとなると「roop」は非常に役に立ちます。

完璧とはいかないまでもスワップ可能ですから、イラスト系などでは重宝する機能です。

この「roop」だけでも複数のソースが上がっていますから、細かな問題点は少しずつ解決していくと思います。

くどいようですがプログラミングに関してはまったくの素人ですから間違いや勘違いがあるかもしれません。

上記に挙げた方法で正しいかどうかはわかりませんが、なんとか導入して試すことはできたので興味がある方は参考にして下さい。

画像生成AIに関しては次々と新しいバージョンや機能が登場してますから、機能的な部分も徐々に改善されていくと思います。

また新しい機能や情報があれば発信していきます。