AI 画像生成

Stable Diffusion web UI 新拡張機能「ControlNet」

ついにポーズから画像を生成することが出来るweb UIの拡張機能が追加されました

何でも論文発表から3日程度で実装されたらしいですね
マジで何者だよって思います

理屈は良くわからないので、実際のインストール方法と使い方を解説します

インストール方法

https://github.com/Mikubill/sd-webui-controlnet

GitHubのリンクは貼って置きますが今回リンク先から直接ダウンロードすることはありません

必要ファイル(モジュール)のインストール

Controlnetをインストールする前に必要ファイル(モジュール)をインストールしておきます
先にControlnetをインストールしても良いけどね

まずはPowerShellをStable Diffusion web UIがインストールされているフォルダで開きます

Windows ターミナルが入っていればファルダ内の適当な所で右クリックすれば、「ターミナルで開く」があるので簡単ですけど、無ければshift+右クリックで「PowerShellウィンドウをここで開く」があります

PowerShellが開けたら下のコードを入力してください

pip install opencv-python
pip install prettytable

正常にインストール出来れば「successfully installed」と表示されます

Windows ターミナルは結構便利そうなのでインストールしておくと良いかもしれません
ただインストールしても再起動しないと使えないので注意してください
マイクロソフトストアから無料でインストール出来ます

https://apps.microsoft.com/store/detail/windows-terminal/9N0DX20HK701?hl=ja-jp&gl=jp&rtc=1

Controlnetのインストール

Controlnetはweb UIからURLで拡張機能をインストールします

「Extensions」→「Available」→「Load from」をクリックすると
インストール可能な機能の一覧が表示されます
その中の「sd-webui-controlnet」をクリックしてインストールしてください
一覧に無かったらweb UIのバージョンアップが必要です

「Installed」に「sd-webui-controlnet」があれば成功です

モデルのダウンロード

Controlnetには専用のモデルが必要になるのでダウンロードします

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

種類が沢山ありますけど、
とりあえず今回はcontrol_normal-fp16とcontrol_openpose-fp16.safetensors
をダウンロードしました

Controlnetのモデルは通常のモデルとは違い
「stable-diffusion-webui\extensions\sd-webui-controlnet\models」に放り込みます
「extensions」というフォルダを探してください
yamlファイルは最初から入っていました

棒人間作成用データ

posexというものを使うとブラウザ上で棒人間を作成出来ます

https://github.com/hnmr293/posex

gitクローンでも出来るようですけど
僕は上手くいきませんでしたのでzipファイルをダウンロードしました

上のリンク先にあるcodeをクリックして1番したのDownload ZIPをクリックします

ダウンロードしたファイルを解凍して最初と同じようにPowerShellを開きます
そうしたら下のコマンドを入力してください

pip install -r requirements.txt
python app.py

成功するとweb UIのようにURLが表示されるのでブラウザにコピペしてください

下のようなページが表示されます

あとは関節部分をグリグリ動かして好きなポーズを取らせてください
画像には表示されていませんが関節部分にカーソルを合わせると「右肘」のように表示されます

最後はsaveで保存出来ます

簡単操作で棒人間が作れて画像生成でも使いやすいんですけど
何故かposexを閉じるとブラウザがフリーズしてしまいます
おま環かもしれませんけどね

なので「Blender」や「DesignDoll」等のソフトで簡単にモデルを作ったんですけど
画像生成では上手く読み取ってくれませんでした
単純な棒人間で良いならいけるかと思ったんですけどね
多分画像データをカラフル棒人間に変換してるのかなーってところでしょうね

追記
Blenderで簡単に作れるアドオンがありました
ControlNetで使うカラフル棒人間を簡単に作れる Blenderアドオン 導入&使用方法紹介

どうやら色分けにも意味があるらしいです

Controlnetの使用方法

設定

txt2imgかimg2imgを開くと下の方にControlnetがあるので展開します

設定画面はこんな感じです
「Enable」にチェックを入れて「Preprocessor」、「Model」を選択します
真ん中に画像をドロップするのも忘れないでください

「Preprocessor」は各モデル毎にあるようです

基本的にはモデルと同じ名前のものを選択すればOKですが、棒人間の場合はnoneになります

他の「Preprocessor」、「Model」はまた別の機会に試してみます

画像生成

使用したモデルは3つ

「Blender」ボーン

Blenderで作成したボーンモデルです

こちらはopenposeでは読み取ってくれませんでしたが、normal_mapなら読み取ってくれました

うーんギリ人ってところですね
何故か僕の作る画像には魚のようなものが写りガチです

同時に出力されるnomal_map?はこれです
次回以降はこの画像を入れれば同じ画像が生成出来るという訳ですね

この画像の保存先はStable Diffusionのフォルダ内には無く
「C:\Users\名前\AppDate\Local\Temp」に入っています

「DesignDoll」マネキン

次はDesignDollで作成したマネキンです
呼び方がわからないのでマネキン呼びですが、多分違うと思います
こっちはopenposeも大丈夫でした

まずはopneposeから

良い感じの芋ジャージ姿になっていますね

棒人間はこんな感じです
何でこれであんな画像になるのか意味不明ですね

nomal_mapです

セーターですね

そこそこ忠実みたいです

棒人間

3つ目は棒人間から作ってみます

多分これが主流だと思います

どうでしょう?
右腕の位置はおかしいけど、良い感じにダッサイポーズになったと思います

やっぱり棒人間から作るのが良いのかもしれませんね

その他

公式のGitHubにあった座りポーズとフリー画像から作った画像です

やっぱり元になった画像次第ってところでしょうか

多分自撮り写真を使うのが1番手軽で確実だと思います

Create blank canvas

最後にCreate blank canvasの紹介を簡単にします

Create blank canvasをクリックすると画像をドロップするところに白いキャンバスが出来ます
あとは適当に落書きをすればOKです
画像は落書きしたあとですね

こちらもopneposeでは読み込んでくれませんでした

読み込まれていない状態で出来た画像がこちらです
何か1番出来が良いかもしれません

nomal_mapだとこんな感じになりました

良いですね
サイコな映画のパッケージのようです、完璧かもしれません

長々とありがとうございました、これで終わりです。

他のモデルを試したらまた記事を作ると思います

-AI, 画像生成