AI画像生成

Stable Diffusion web UIのControlNet

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

下記サイトの通りに修正するとエラー回避できました。

 

 

モデルのインストール

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へアップロードすると数十秒でおわる ← 推奨!

詳細は以下のサイトをご参照ください。

以下、概要です。

  1. control_v11p_sd15_scribble.pthファイルをGoogle Driveにアップロードする(数十秒)
    1. ファイルIDをどこかに保存しておく(例. file_id.txt)
    2. 「共有」を「リンクを知っている全員」にする
  2. PaperspaceにログインしGPUを選択する
  3. JupyterLab – Launcher – Notebookにある「Python3(ipykernel)」アイコンをクリックする
  4. Untitled1.ipynbファイルが開く → 再利用するので、gdown.ipynbなどにrenameする
  5. 以下のコマンドを打ち込み、Runボタン(▶)を押す
    1. %pwd
  6. 今のディレクトリーが、/notebooks/stable-diffusion-webuiであることを確認する
  7. 以下のコマンドを打ち込み、Runボタン(▶)を押す
    1. !pip install gdown
    2. !pip install –upgrade gdown
  8. gdownのインストールとアップグレード: Warningがでても気にしない
  9. 以下のコマンドを打ち込み、Runボタン(▶)を押す
    1. %cd /notebooks/stable-diffusion-webui/extensions/sd-webui-controlnet/models
    2. %pwd
  10. 今のディレクトリーが、/notebooks/stable-diffusion-webui/extensions/sd-webui-controlnet/modelsであることを確認する
  11. 以下のコマンドを打ち込み、Runボタン(▶)を押す
    1. %ls -la *scribble*
  12. yamlファイル(control_v11f1e_sd15_scribble.yaml)の存在を確認する
  13. 以下のコマンドを打ち込み、Runボタン(▶)を押す
    1. !gdown “http://drive.google.com/uc?export=download&id=abcdefghijklmn123456789
  14. abcdefghijklmn123456789の所は、ファイルIDに置き換えて実行する(アップロード:数十秒)
  15. 以下のコマンドを打ち込み、Runボタン(▶)を押す
    1. %ls -la *scribble*
  16. pthファイル(1.45GB)を確認する:ファイルサイズは1.3GBと表示される
  17. 以下のコマンドを打ち込み、Runボタン(▶)を押す
    1. %cd /notebooks/stable-diffusion-webui/
    2. %pwd
  18. 今のディレクトリーが、/notebooks/stable-diffusion-webui/であることを確認する
gdownエラー

gdownで「Access denied with the following error」で使えないときがあります。

その場合は、gdownをアップグレードすると使えるようになります。

  1. PaperspaceにログインしGPUを選択する
  2. JupyterLab – Launcher – Notebookにある「Python3(ipykernel)」アイコンをクリックする
  3. Untitled1.ipynbファイルが開く ← もしくは先ほど作成したgdown.ipynbを利用する
  4. 以下のコマンドを打ち込み、Runボタン(▶)を押す
    1. %pwd
  5. 今のディレクトリーが、/notebooks/stable-diffusion-webuiであることを確認する
  6. 以下のコマンドを打ち込み、Runボタン(▶)を押す
    1. !pip install –upgrade gdown
  7. gdownのアップグレード: Warningがでても気にしない

その他の対応法は、下記サイトをご参照ください。

 

 

ControlNet:Scribble

落書きがある場合、ControlNet:Scribbleを使うと「構図を保った」画像を生成できます。

  • 生成画像は「落書きの構図」が保たれる

ControlNetとimg2imgとは使い分けるといいでしょう。

  • 構図を崩したくない:ControlNet
  • 構図を崩してもいい:img2img

 

操作方法

操作は元画像を入力してモデルを選ぶだけでとても簡単です。

操作方法の詳細は以下のサイト、動画で詳しく図解されていますので、ご参照ください。

 

操作例を紹介します。

 

海に浮かぶ船

江ノ島の沖合に釣り船とボートが浮かんでいる。季節は夏。快晴。

  • prompt:ship on the Shonan Sea, Blue sky, Summer, clear sky, (12:00 noon:1.2), Fine day
  • negative promptbad_prompt_version2, wood

※bad_prompt_version2はTextual Inversionです

  • Single Image:船のスケッチをドラッグ&ドロップする
  • Enable:チェック(✔)をいれる
  • Model:control_v11p_sd15_scribbleを選択する
ControlNet
ControlNet
ControlNet 1
ControlNet 1

元画像(スケッチ)の構図が保たれた画像が生成されています。

  • 構図:水平線の位置、船の位置・向き・大きさ、など

構図を崩したくない場合、img2imgで試行錯誤するよりControlNetを使った方がいろいろと節約になるでしょう。

  • 節約:作業時間、計算機資源、気力、体力、など

 

船の向きを整える

画像を生成していると「船の向き」が微妙に横を向いていたりします。

そのときは、Preprocessorのscribble_xdogを試してみてください。

  • Preprocessor:scribble_xdog
scribble_xdog
scribble_xdog

 

 

 

参考

 

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です