Stable Diffusion web UIのControlNet
Contents
Paperspace上のStable Diffusion web UIにControlNetをインストールしました。
ControlNetはimg2imgの進化版ということで動かしてみました。
ControlNetを使うとimg2imgのときよりも更に試行錯誤の回数が減りそうです。
生成したい画像によって使い分けるといいでしょう。
- 元画像がない場合:tex2img
- 元画像がある場合:
- 構図を崩してもいい:img2img
- 構図を崩したくない:ControlNet
※元画像:img2imgやControlNetの入力画像:スケッチ・イラスト・写真など
動作環境はPaperspaceのProです。
- 料金:月額$8.00
- Strage:15GB ← 少ないので工夫が必要
- GPU:Free-P5000, Free-RTX4000, Free-RTX5000, Free-A4000, etc. ← 空いていれば使える
PaperspaceのProに関しては、別記事に詳細がありますのでご参照ください。
ControlNetのインストール
準備
Stable Diffusion web UI
ControlNetはStable Diffusion web UI(AUTOMATIC1111)上にインストールします。
インストールがまだの人は、下記サイトをご参照ください。
Textual Inversion
Textual Inversionを使うと、プロンプトが豊富になり画像が綺麗になります。
これは入れても入れなくてもControlNetの挙動に関係ないのですが興味があれば前回記事をご参照ください。
ControlNetのインストール用URL
ControlNetはStable Diffusion web UIの「Extensions」に下記インストール用URLを指定します。
詳しい方法は、以下のサイトをご参照ください。図解がとても分かり易いです。
Extensionsインストールのエラー
PaperspaceでExtensionsでインストール用URLを指定して「Install」をクリックするとエラーになります。
- AssertionError: extension access disabled because of command line flags
下記サイトの通りに修正するとエラー回避できました。
- Stable Diffusion web UIの起動コマンドに「–enable-insecure-extension-access」を指定する
- PaperspaceでのAUTOMATIC1111を使う方法を解説 | 定額制サーバーでStableDiffusionを動かす
モデルのインストール
ControlNetを使うにはモデルが必要です。モデルは以下のページにあります。
詳しい方法は、やはり先ほどのサイトをご参照ください。
Scribble(落書き)
ControlNet v1.1ではモデルが14個あるのですが、Paperspace Proの場合は全部入れることはできません。
- Paperspace Proで使えるStrageは15GBなので・・・
今回は、スケッチなどの落書きを元画像として使う際のモデル(Scribble)だけにしました。
- control_v11p_sd15_scribble.pth ← 1.45GB
アップロード
control_v11p_sd15_scribble.pthをPaperspaceにアップロードします。
アップロード先は以下のフォルダーです。
- stable-diffusion-webui/extensions/sd-webui-controlnet/models
アップロードの詳細はやはり前述のサイトで詳しく図解されています。
時間がかかる
1.45GBのファイルを手元のPCからドラッグ&ドロップでアップロードしたら1時間を要しました。
- 手元PCからPaperspaceへ、ドラッグ&ドロップでアップロードすると1時間かかる! ← これでもOK!
時間がかかっても、アップロードできたら完成です!
gdown
Google Drive専用ダウンローダーを使うと、pthファイル(1.45GB)のアップロードが数十秒でできました!
- Google DriveからPaperspaceへアップロードすると数十秒でおわる ← 推奨!
詳細は以下のサイトをご参照ください。
以下、概要です。
- control_v11p_sd15_scribble.pthファイルをGoogle Driveにアップロードする(数十秒)
- ファイルIDをどこかに保存しておく(例. file_id.txt)
- 「共有」を「リンクを知っている全員」にする
- PaperspaceにログインしGPUを選択する
- JupyterLab – Launcher – Notebookにある「Python3(ipykernel)」アイコンをクリックする
- Untitled1.ipynbファイルが開く → 再利用するので、gdown.ipynbなどにrenameする
- 以下のコマンドを打ち込み、Runボタン(▶)を押す
- %pwd
- 今のディレクトリーが、/notebooks/stable-diffusion-webuiであることを確認する
- 以下のコマンドを打ち込み、Runボタン(▶)を押す
- !pip install gdown
- !pip install –upgrade gdown
- gdownのインストールとアップグレード: Warningがでても気にしない
- 以下のコマンドを打ち込み、Runボタン(▶)を押す
- %cd /notebooks/stable-diffusion-webui/extensions/sd-webui-controlnet/models
- %pwd
- 今のディレクトリーが、/notebooks/stable-diffusion-webui/extensions/sd-webui-controlnet/modelsであることを確認する
- 以下のコマンドを打ち込み、Runボタン(▶)を押す
- %ls -la *scribble*
- yamlファイル(control_v11f1e_sd15_scribble.yaml)の存在を確認する
- 以下のコマンドを打ち込み、Runボタン(▶)を押す
- !gdown “http://drive.google.com/uc?export=download&id=abcdefghijklmn123456789“
- abcdefghijklmn123456789の所は、ファイルIDに置き換えて実行する(アップロード:数十秒)
- 以下のコマンドを打ち込み、Runボタン(▶)を押す
- %ls -la *scribble*
- pthファイル(1.45GB)を確認する:ファイルサイズは1.3GBと表示される
- 以下のコマンドを打ち込み、Runボタン(▶)を押す
- %cd /notebooks/stable-diffusion-webui/
- %pwd
- 今のディレクトリーが、/notebooks/stable-diffusion-webui/であることを確認する
gdownエラー
gdownで「Access denied with the following error」で使えないときがあります。
その場合は、gdownをアップグレードすると使えるようになります。
- PaperspaceにログインしGPUを選択する
- JupyterLab – Launcher – Notebookにある「Python3(ipykernel)」アイコンをクリックする
- Untitled1.ipynbファイルが開く ← もしくは先ほど作成したgdown.ipynbを利用する
- 以下のコマンドを打ち込み、Runボタン(▶)を押す
- %pwd
- 今のディレクトリーが、/notebooks/stable-diffusion-webuiであることを確認する
- 以下のコマンドを打ち込み、Runボタン(▶)を押す
- !pip install –upgrade gdown
- gdownのアップグレード: Warningがでても気にしない
その他の対応法は、下記サイトをご参照ください。
ControlNet:Scribble
落書きがある場合、ControlNet:Scribbleを使うと「構図を保った」画像を生成できます。
- 生成画像は「落書きの構図」が保たれる
ControlNetとimg2imgとは使い分けるといいでしょう。
- 構図を崩したくない:ControlNet
- 構図を崩してもいい:img2img
操作方法
操作は元画像を入力してモデルを選ぶだけでとても簡単です。
操作方法の詳細は以下のサイト、動画で詳しく図解されていますので、ご参照ください。
- ラフ画から詳細な線画、カラーイラスト画像を作成する (Stable Diffusion Tips)
- YouTube:画像生成AIをコントロールするAI ControlNetの使い方【Stable Diffusion Extension sd-webui-controlnet 】
操作例を紹介します。
海に浮かぶ船
江ノ島の沖合に釣り船とボートが浮かんでいる。季節は夏。快晴。
- prompt:ship on the Shonan Sea, Blue sky, Summer, clear sky, (12:00 noon:1.2), Fine day
- negative prompt:bad_prompt_version2, wood
※bad_prompt_version2はTextual Inversionです
- Single Image:船のスケッチをドラッグ&ドロップする
- Enable:チェック(✔)をいれる
- Model:control_v11p_sd15_scribbleを選択する
元画像(スケッチ)の構図が保たれた画像が生成されています。
- 構図:水平線の位置、船の位置・向き・大きさ、など
構図を崩したくない場合、img2imgで試行錯誤するよりControlNetを使った方がいろいろと節約になるでしょう。
- 節約:作業時間、計算機資源、気力、体力、など
船の向きを整える
画像を生成していると「船の向き」が微妙に横を向いていたりします。
そのときは、Preprocessorのscribble_xdogを試してみてください。
- Preprocessor:scribble_xdog
参考
- PaperspaceでのAUTOMATIC1111を使う方法を解説 | 定額制サーバーでStableDiffusionを動かす
- ControlNet(コントロールネット)とは?導入、ダウンロード、設定方法!StableDiffusion
- ラフ画から詳細な線画、カラーイラスト画像を作成する (Stable Diffusion Tips)
- YouTube:画像生成AIをコントロールするAI ControlNetの使い方【Stable Diffusion Extension sd-webui-controlnet 】
- 追記あり【AIイラスト】stable diffusionの追加学習をpaperspaceで月額たった8ドルで行う為のweb-ui導入方法【DreamBooth】
- [gdown] “Access denied with the following error:”でファイルがダウンロードできない際の対処法