MENU

【2023年5月】AUTOMATIC1111版Stable Diffusion Web UIの拡張ツールControlNetの取り込み方【GPU(mps)対応】

標準ツールである本体でできること

それが実写であるかアニメタッチであるかは別として。テキスト文からそれを表す画像生成するのが本体アプリの仕事でした。もしも標準ツール部分で動作に不安がある場合は先にそちらを解消しておくことを強くオススメします。

MacBookのGPU Appleシリコン(M1/M2)の使い方

#launch.pyファイルに以下を追加する。
#追加1
import torch
#追加1終わり
def webui():
    launch_api = cmd_opts.api
    initialize()
    #追加2
    torch.device('mps')
    if str(torch.device('mps')) == 'mps':
     print('デバイスは',torch.device('mps'),'を使用します。')
    else:
     print('デバイスはCPUを使用します。') 
   #追加2終わり

以下のように書き込むとGPUが適用になるようです。
ターミナルでも適用されたことが表示で分かります。

目次

ControlNetとは?

ここからはこちらも画像を用意して、それを手がかりにした画像生成させられるツールとしてControlNetなのです。おそらくより目的に近い画像を作成するためのオプションなのだと思います。

実例として日本の江戸時代の侍で腕組みをした絵をこのツールで描かせてみようと思います。

結果的にガチャみたいなもので毎回仕上がりの結果が違うようです。目的のものを得るために何回もガチャる必要があり、ステップの途中で中断させることも可能です。

そのためいかに気に入った部分は継承して気に入らない部分のみ変更できるかが鍵のようです。

導入方法と疑問点

scribble機能(書き殴り図から作図する方法)

この拡張機能を使うためには、必要なファイルはsafetensorsファイルと同名の拡張子yamlファイルとセットであるようなのです。それをstable-diffusion-webui/models/ControlNet/のフォルダにダウンロードして移動させると使えるようになります。

リンク先を入力するだけで使えるような説明もあるかもしれませんが、その場所に必要なファイルがダウンロードされているかはチェックする必要があります。

モデルpth/safetensorsファイル入手先

webUI用に以下配布があります。

https://huggingface.co/webui/ControlNet-modules-safetensors/tree/main

control_scribble-fp16.safetensorsのようにfp16はついています。
まずは拡張子safetensorsを一式ダウンロードしてmodels以下に移動させます。
もしくはpthファイルを一式ダウンロードします。
またmodels/ControlNet以下もしくはextentions/sd-webui-controlnet/models以下どちらに移動させても良いらしいです。ファイルは同名のyamlファイルとペアで1つとして使うようです。どれがどれに対応しているのかを確認する必要があるようです。ただモデルファイルであるものは一箇所に固めて管理した方が分かりやすいかもしれません。何かのバグや不具合でダウンロードされていない場合は個別にダウンロードして移動させておくと良いです。
逆に同名のものが混ざるとバグるかもしれないので管理には気をつけましょう。


yamlファイル入手先

ControlNet-v1-1では以下、yamlファイルとpthファイルのみが配布されています。

https://huggingface.co/lllyasviel/ControlNet-v1-1/tree/main

以下でも上と同一のものcontrol_v11p_sd15_scribble.yamlみたいにv11p_sd15がついているのが特徴ですがyamlファイルを配布しています。

https://github.com/Mikubill/sd-webui-controlnet/tree/main/models

これらをどう組み合わせるのかいまいちよく分からないのですが、正しくインストールできていれば、text2img欄にControlNetの操作欄が出てきます。

そして有効化(Enable)をチェックして動作させることは分かっていて、参照画像を使うとより目的の画像が得やすくなることも試してみて分かりました。プリプロセッサとモデルも対応のものを選びます。

疑問点としてはセットで必要となるファイルの対応がまだわかり辛いことです。ただしこのscribbleを使うと書き殴り程度の絵からでも構図を汲み取ってAI技術で作画や写真を作成することが可能です。

画像作成の具体例


上は画像作成のために手描きでラフに描いたものになります。
ただし髪型の再現はかなり大変だと思いました。

a yang japanese reliable samurai man with folded arms to wear a japanese sword on left side and hakama with chonmage hair with the only top of the head is shaved.

それよりも背景を変えられるので色々試すのが良さそうです。

a yang japanese reliable samurai man with folded arms to wear a japanese sword on left side.You can see a castle surrounded by a moat in the background

Pose(3D人形図から作画する方法)

人体の姿勢を検出して画像変換することができるツールのようです。出力に棒人形も作られます。

アプリスタートする時に今度は拡張子をつけてください。もしもつけ忘れるとエラー出てアプリが終了してしまいます。

% ./webui.sh --no-half

そしてプリプロセッサをopenposeを選び、モデルをcontrol_openpose-fp16を選びます。

画像はCLIP STUDIO PAINTの新規作成して3D素材から3Dデッサン人形-Ver.2をドラッグ&ドロップしてきて適当にくねくねさせた画像をjpg出力して入力に使います。今回は腕組み模型を作って使いました。意外と手間がかかるので、殴り描きの方がこの構図は作りやすいかもしれません。


そして有効化のチェックも忘れずにつけて「a boy with folded arms」とテキスト文を書いて画像生成すると

のような画像が生成されます。

Pose(棒人形から作図する方法)

以下拡張機能からURLで入手します。

 https://github.com/fkunn1326/openpose-editor.git

しかしながらhttps関係のエラーが出て動かない時があります。その場合は以下の対応をすると解決できます。

% cd stable-diffusion-webui
% git reset --hard 64b7e83

するとアプリの中でOpenPose Editorを選ぶようにできるようになります。
この棒人形をマウスドラッグで操作して形を変えるとそれに合わせたポーズの人物を作成できるようになります。
ただし仕上がり画質はあまり良くありません。ポーズができたらtxt2imageに転送のボタンで送ります。。

その後プリプロセッサはなしにモデルはcontrol_openpose-fp16を選びます。すると逆立ちの少年の画像が出来ました。

なお

a stylish slender cute boy doing handstand wearing a baseball jersey

とテキスト文は作りました。

Canny(写真やイラストから輪郭線を抽出してそれをもとに作画する)

ここでは宇宙戦艦ヤマトのデスラー総統?のざっくりとした絵を使ってAIにその線画を引き継がせ、作画させてみます。

プリプロセッサをキャニー法、モデルをcontrol_canny-fp16を選びます。

a elegant ambitious intellectual but ruthless charismatic long-narrow-blue-eyed light-blue-color-based-skinned man with blond gorgeous shiny thin delicate hair, wearing white military jacket with red collar and he wear a black cloak over it.He is in a dim luxury green-color-based room with blurred light from diagonally above. His face with deep moat. He is on the bridge as both commander and king in a space battle ship.

その時色々テキスト文はこんな感じでした。もっと工夫すればもっと良くできるかもしれません。
予想外に水色の肌を再現することが難しかったこととバックの色合いをコントロールすることが難しかったです。

そして真田志郎の作画も行ってみました。

その時のテキスト文は以下のようになります。

a ambitious elite genius intellectual japanese man with a very short‐cropped head on the bridge in space ship.He is thinking with his's arms folded and there is dimly lit room without slight lighting.And there are many monitors and instruments.

面倒かもしれませんが、一度線画にしてから描き直すほうがクオリティは上がるようです。

Tile(元のモデルと相性が悪いLoraの組み合わせで実質アップスケール目的で)

以下からcontrol_v11f1e_sd15_tile.pthと同じファイル名のyamlをダウンロードします。

https://huggingface.co/lllyasviel/ControlNet-v1-1/tree/main

controlnetがextention(拡張)でインストールされている前提で上をControlNetフォルダに入れます。

そしてモデルからcontrol_v11f1e_sd15_tileを選びます。

そしてControlNetでEnable(有効化)しPixel PerfectとTile/Blurをチェックします。

そうすると512×512で出力した以下の絵が

以下の絵に綺麗にアップスケール出来ました。(もちろん細かい部分は思い通りではないためレタッチが必要になることには変わらないです。)

相性が悪いの意味は、通常の512×512の出力に対して1024×1024の出力にしようとしたりアップスケールをかけて1024×1024で出力しようとすると人物が2人入ってしまったり、人物の描かれたパーツの比率が変わって画風も意図せず変わってしまうようなケースです。

そういう場合は粗く出力してTileで実質アップスケールするとサイズが崩れずに直しやすいかもです。

2つの課題点

より意図した目的に沿った作画をすること

それなりに形あるそこそこの画像は作画できるが、ここぞと言うところで歯痒い残念な使い方にとどまっているのが感想です。

そのため、今度はそこそこの完成度がある作画が作成された場合は、毎回ガチャのように作成するのではなく、それを元により完成度をあげられるように、もしくは意図した着色や表情などを変化させられるような使い方に取り組む必要があることです。

そのため3つ目の記事はそう言う意図で執筆しようと思います。

作画の質を下げているかもしれない?エラーの正体を突き止めること

例えば名前の対応の不一致からか、もしくは登録したリンク先から拾い出せていないためなのか、yamlファイルが間違っていたり、読み込みに失敗したなどのエラー文が出ることがあります。

それらの正しい対応について書いてある参考になりそうな資料にありつけていないことも使いこなせていないところなのです。なんとなくこれでいいだろうという勘で推し進めているところもあるからです。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
Subscribe
Notify of
guest

CAPTCHA


0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
目次