私的AI研究会 > Diffusion > Diffusion_ext
「Stable Diffusion」拡張機能「ControlNet」 †
「Stable-Diffusion」拡張機能を検証する
※ 最終更新:2025/02/22
「Stable Diffusion」ControlNet †
概要 †
- 「Stable Diffusion」拡張機能の中で最重要となる『ControlNet』は、新たな条件を指定することで細かなイラストの描写を可能にする
プロンプトでは指示しきれないポーズや構図の指定などができる
- 2023年2月ハンドルネームlllyasviel 氏により関連論文を発表後、2週間程度で 「Stable Diffusion Web UI」の拡張機能に組み込まれた
ControlNetは、重みを学習可能なコピーとロックされたコピーに分け、ロックされたコピーは元の重みを保持し、学習可能なコピーは、タスク固有のデータセットで条件付きな制御を学習する。ControlNetでは、畳み込み層を使用し、生成可能な重みを保存することで、異なる規模のデータセットで学習を行うことができ、zero convolutionと呼ばれる独自のタイプの畳み込み層を使用して、拡散モデルをfine-tuningするのと同じくらい速く学習することができる。 |
ControlNet の構造(下記論文公式実装より)
- 論文「ControlNet」
「ControlNet」の導入 †
- 「ControlNet」をインストールする
①「Extention」タブを選択
② URLを入力 https://github.com/Mikubill/sd-webui-controlnet
③「Install」ボタンを押す(※ 時間を要する)
④「Installed」タブを選択
⑤ sd-webui-controlnet の表示を確認
⑥「Apply and restart」ボタンを押す(※ 時間を要する)
再表示された画面に「ControlNet XXXX」パネルの追加を確認
- 「ControlNet OpenPose Editer」をインストールする(現在は「ControlNet」に統合されているので必ずしも必要ではない)
①「Extention」タブを選択
② URLを入力 https://github.com/fkunn1326/OpenPose-editor.git
③「Install」ボタンを押す(※ 時間を要する)
④「Installed」タブを選択
⑤ sd-webui-controlnet の表示を確認
⑥「Apply and restart」ボタンを押す(※ 時間を要する)
「OpenPose Editer」タブが追加されたことを確認する
テスト画像の生成 †
- ポートレート写真
→ プロンプトのヒント
プロンプト Prompt |
P1 | best quality,masterpiece,ultra high res,(photorealistic:1.4),RAW photo,a beautiful japanese woman,20yo,portrait,standing,looking at viewer,smile, t-shirt, in garden |
最高品質、傑作、超高解像度、(フォトリアリスティック: 1.4)、RAW写真、美しい日本人女性、20歳、ポートレート、立っている、見る者を見て、笑顔、Tシャツ、庭で |
P2 | a woman in a dress posing for a picture in front of a store front window with a flowered dress on, Du Qiong, japanese, a stock photo, arabesque |
花柄のドレスを着た店先の窓の前で写真を撮るドレスを着た女性、杜瓊、日本人、ストックフォト、アラベスク |
ネガティブ・プロンプト Negative prompt |
N1 | illustration, 3d, sepia, (painting), cartoons, sketch, (worst quality:2), (backlight:1.2), bad anatomy, bad hands, double navel, collapsed eyeshadow, multiple eyebrows, freckles, signature, logo, 2faces, |
イラスト、3D、セピア、(絵画)、漫画、スケッチ、(最悪の品質:2)、(バックライト:1.2)、悪い解剖学、悪い手、二重のおへそ、崩れたアイシャドウ、複数の眉毛、そばかす、署名、ロゴ、2つの顔、 |
Steps: 20, Sampler: DPM++ 2M, CFG scale: 7, Size: 512x768 |
beautifulRealistic_brav5 |
P1 / N1 |
3121207779 | 1060854947 | 347323778 | 3942056630 | 3769875612 | 420168976 |
 |  |  |  |  |  |
P2 / N1 |
3162210832 | 342925754 | 828776891 | 3772621761 | 20043391 | 1293786218 |
 |  |  |  |  |  |
ControlNet『Canny/Depth』 †
- 機能
Canny | 元画像から線画を抽出して、異なる画風の画像を生成する |
Depth | 元画像から深度情報を抽出して別画像を生成する |
- 処理画像
プロンプト Prompt |
best quality,masterpiece,ultra high res,(photorealistic:1.4),RAW photo,a beautiful japanese woman,20yo,portrait,standing,looking at viewer,smile, white t-shirt, in beach |
最高品質、傑作、超高解像度、(フォトリアリスティック: 1.4)、RAW写真、美しい日本人女性、20歳、ポートレート、立っている、見る人を見て、笑顔、白いTシャツ、ビーチで |
ネガティブ・プロンプト Negative prompt |
illustration, 3d, sepia, (painting), cartoons, sketch, (worst quality:2), (backlight:1.2), bad anatomy, bad hands, double navel, collapsed eyeshadow, multiple eyebrows, freckles, signature, logo, 2faces, |
イラスト、3D、セピア、(絵画)、漫画、スケッチ、(最悪の品質:2)、(バックライト:1.2)、悪い解剖学、悪い手、二重のおへそ、崩れたアイシャドウ、複数の眉毛、そばかす、署名、ロゴ、2つの顔、 |
beautifulRealistic_brav5 |
元画像 | Canny |
Preprocessor | 2625769635 | 527248194 | 744579673 | 1466607026 |
 |  |  |  |  |  |
元画像 | Depth |
Preprocessor | 2296455097 | 3752337337 | 1074232506 | 2476462450 |
 |  |  |  |  |  |
- 『Canny/Depth』使い方
←
①「ControlNet XXXX」パネルを開く
② 元になる画像をドラッグ&ドロップ(処理済み画像を入力することもできる)
③「ControlNet」機能を有効にする(緑のサインが表示される)
④ Canny または Depth を選択
⑤ Canny または Depth の表示を確認(②で処理済み画像を入力した場合は None にする)
⑥ Canny/Depth のモデルを確認(Control Type と一致させること)
control_v11p_sd15_canny_fp16 / control_v11f1p_sd15_depth_fp16
⑦ 処理を開始する(②で処理済み画像を入力した場合はパスする)
→
⑧ プロンプトを入力
⑨ ネガティブ・プロンプトを入力
⑩ Generate ボタンを押して生成開始
⑪ 生成画像が表示される
ControlNet『Inpaint』 †
- 機能
Inpaint | 画像の一部を修正する。画像の 1部分を指定して修正することができる |
- 処理画像
プロンプト Prompt |
black short hair |
黒髪のショートヘア |
ネガティブ・プロンプト Negative prompt |
illustration, 3d, sepia, (painting), cartoons, sketch, (worst quality:2), (backlight:1.2), bad anatomy, bad hands, double navel, collapsed eyeshadow, multiple eyebrows, freckles, signature, logo, 2faces, |
イラスト、3D、セピア、(絵画)、漫画、スケッチ、(最悪の品質:2)、(バックライト:1.2)、悪い解剖学、悪い手、二重のおへそ、崩れたアイシャドウ、複数の眉毛、そばかす、署名、ロゴ、2つの顔、 |
beautifulRealistic_brav5 |
元画像 | Inpaint |
Preprocessor | 420168976 | 336291090 | 2188126305 | 3848374851 |
 |  |  |  |  |  |
- 『Inpaint』使い方
←
①「ControlNet XXXX」パネルを開く
② 元になる画像をドラッグ&ドロップ(処理済み画像を入力することもできる)
③ マウスで修正箇所をドラッグして指定する
④「ControlNet」機能を有効にする(緑のサインが表示される)
⑤ inpaint を選択
⑥ inpaint_only の表示を確認
⑦ inpaint のモデルを確認(Control Type と一致させること)
control_v11p_sd15_lineart_fp16
⑧ 処理を開始する(②で処理済み画像を入力した場合はパスする)
→
⑨ プロンプトを入力
⑩ ネガティブ・プロンプトを入力
⑪ Generate ボタンを押して生成開始
⑫ 生成画像が表示される
ControlNet『OpenPose』 †
- 機能
OpenPose | 元画像や棒人間から人物のポーズを検出し、そのポーズを元に画像を生成する |
- 処理画像
プロンプト Prompt |
best quality,masterpiece,ultra high res,(photorealistic:1.4),RAW photo,a beautiful japanese woman,20yo,portrait,standing,looking at viewer,smile, t-shirt, in garden |
最高品質、傑作、超高解像度、(フォトリアリスティック: 1.4)、RAW 写真、美しい日本人女性、20 歳、ポートレート、立っている、見る人を見て、笑顔、T シャツ、庭で |
ネガティブ・プロンプト Negative prompt |
illustration, 3d, sepia, (painting), cartoons, sketch, (worst quality:2), (backlight:1.2), bad anatomy, bad hands, double navel, collapsed eyeshadow, multiple eyebrows, freckles, signature, logo, 2faces, |
イラスト、3D、セピア、(絵画)、漫画、スケッチ、(最悪の品質:2)、(バックライト:1.2)、悪い解剖学、悪い手、二重のおへそ、崩れたアイシャドウ、複数の眉毛、そばかす、署名、ロゴ、2つの顔、 |
beautifulRealistic_brav5 |
元画像 | Open Pose |
Preprocessor | 420168976 | 584105828 | 1284772924 | 2499502535 |
 |  |  |  |  |  |
- 『OpenPose』使い方
←
①「ControlNet XXXX」パネルを開く
② 元になる画像をドラッグ&ドロップ(処理済み画像を入力することもできる)
③「ControlNet」機能を有効にする(緑のサインが表示される)
④ OpenPose を選択
⑤ OpenPose full の表示を確認(②で処理済み画像を入力した場合は None にする)
⑥ OpenPose のモデルを確認(Control Type と一致させること)
control_v11p_sd15_openpose_fp16
⑦ 処理を開始する(②で処理済み画像を入力した場合はパスする)
→
⑧ プロンプトを入力
⑨ ネガティブ・プロンプトを入力
⑩ Generate ボタンを押して生成開始
⑪ 生成画像が表示される
ControlNet『Reference』 †
- 機能
OpenPose | 元画像の特徴を含んだ画像を生成する。元画像の特徴を継承しながら、服装や背景、画風の変更が可能 |
- 処理画像
プロンプト Prompt |
P1 | best quality,masterpiece,ultra high res,(photorealistic:1.4),RAW photo,a beautiful japanese woman,20yo,portrait,standing,looking at viewer,smile, dress shirt, in garden |
最高品質、傑作、超高解像度、(フォトリアリスティック: 1.4)、RAW写真、美しい日本人女性、20歳、ポートレート、立っている、見る人を見る、笑顔、ワイシャツ、庭で |
P2 | best quality,masterpiece,ultra high res,(photorealistic:1.4),RAW photo,a beautiful japanese woman,20yo,portrait,standing,looking at viewer,smile, blouse, in cafe |
最高品質、傑作、超高解像度、(フォトリアリスティック: 1.4)、RAW写真、美しい日本人女性、20歳、ポートレート、立っている、見る人を見る、笑顔、ブラウス、カフェで |
ネガティブ・プロンプト Negative prompt |
illustration, 3d, sepia, (painting), cartoons, sketch, (worst quality:2), (backlight:1.2), bad anatomy, bad hands, double navel, collapsed eyeshadow, multiple eyebrows, freckles, signature, logo, 2faces, |
:イラスト、3D、セピア、(絵画)、漫画、スケッチ、(最悪の品質:2)、(バックライト:1.2)、悪い解剖学、悪い手、二重のおへそ、崩れたアイシャドウ、複数の眉毛、そばかす、署名、ロゴ、2つの顔、 |
beautifulRealistic_brav5 |
元画像 | Reference P1 / N1 |
2526028515 | 592240752 | 3130592015 | 3455993254 | 816277885 |
 |  |  |  |  |  |
Reference P2 / N1 |
2821657758 | 3674644842 | 803535471 | 2335211818 | 4194942258 | 1496357612 |
 |  |  |  |  |  |
- 『Reference』使い方
←
①「ControlNet XXXX」パネルを開く
② 元になる画像をドラッグ&ドロップ
③「ControlNet」機能を有効にする(緑のサインが表示される)
④ Reference を選択
⑤ Reference_only の表示を確認
⑥ 画像の特徴を抽出する
⑦ 処理結果を表示する
→
⑧ プロンプトを入力
⑨ ネガティブ・プロンプトを入力
⑩ Generate ボタンを押して生成開始
⑪ 生成画像が表示される
ControlNet『Scribble』 †
- 機能
Scribble | 手書きの線からリアルな画像を生成する。元画像から手書きの線を抽出することもできる |
- プリプロセッサの種類(線の細かさや、顔のパーツまで線を含むかの違いがある)
scribble pidnet | 線粗め、顔のパーツを抽出 |
scribble xdog | 線細かい、顔のパーツを抽出 |
scribble hed | 線粗め、顔のパーツの線まで抽出 |
- 処理画像
プロンプト Prompt |
best quality,masterpiece,ultra high res,(photorealistic:1.4),RAW photo,a beautiful japanese woman,20yo,portrait,standing,looking at viewer,smile, t-shirt, in garden |
最高品質、傑作、超高解像度、(フォトリアリスティック: 1.4)、RAW 写真、美しい日本人女性、20 歳、ポートレート、立っている、見る人を見て、笑顔、T シャツ、庭で |
ネガティブ・プロンプト Negative prompt |
illustration, 3d, sepia, (painting), cartoons, sketch, (worst quality:2), (backlight:1.2), bad anatomy, bad hands, double navel, collapsed eyeshadow, multiple eyebrows, freckles, signature, logo, 2faces, |
イラスト、3D、セピア、(絵画)、漫画、スケッチ、(最悪の品質:2)、(バックライト:1.2)、悪い解剖学、悪い手、二重のおへそ、崩れたアイシャドウ、複数の眉毛、そばかす、署名、ロゴ、2つの顔、 |
元画像 | Scribble |
Preprocessor | Ether Blu Mix | Disney Pixar Cartoon Type A |
pidinet | 420168976 | 218353019 | 420168976 | 3263334469 |
 |  |  |  |  |  |
元画像 | Scribble |
Preprocessor | Ether Blu Mix | Disney Pixar Cartoon Type A |
xdog | 420168976 | 1568779271 | 420168976 | 964606534 |
 |  |  |  |  |  |
元画像 | Scribble |
Preprocessor | Ether Blu Mix | Disney Pixar Cartoon Type A |
hed | 420168976 | 335761928 | 420168976 | 1474033167 |
 |  |  |  |  |  |
- 『Scribble』使い方
←
①「ControlNet XXXX」パネルを開く
② 元になる画像をドラッグ&ドロップ(処理済み画像を入力することもできる)
③「ControlNet」機能を有効にする(緑のサインが表示される)
④ Scribble を選択
⑤ Preprocessor を選択
⑥ Scribble のモデルを確認(Control Type と一致させること)
control_v11p_sd15_scribble_fp166
⑦ 処理を開始する
→
⑧ プロンプトを入力
⑨ ネガティブ・プロンプトを入力
⑩ Generate ボタンを押して生成開始
⑪ 生成画像が表示される
ControlNet 線画抽出を比較 †
- 線画抽出機能
Canny | 輪郭を細かくはっきりと抽出 |
Lineart | 輪郭をペンで描いたような線画として抽出 |
SoftEdge | Cannyより柔らかく自然な線を抽出 |
Scribble | 手早くスケッチしたような粗い線で抽出 |
- 処理画像
元画像 | Lineart |
lineart_standard | lineart_rialistic | lineart_coarse | lineart_anime_denoise | lineart_anime |
 |  |  |  |  |  |
SoftEdge |
softedge_pidinet | softedge_teed | softedge_pidisafe | softedge_hedsafe | softedge_hed | softedge_anyline |
 |  |  |  |  |  |
Canny | | SoftEdge | |
| | scribble_pidinet | scribble_xdog | scribble_hed | |
 | |  |  |  | |
忘備録 †
拡張機能の導入について †
ModuleNotFoundError: No module named 'basicsr' †
- 対処方法
・「venv」仮想環境で basicsr をインストールする
・「Ctrl + 'c'」で終了し、下記コマンドを入力
Windows
:
バッチ ジョブを終了しますか (Y/N)? y
(StableDiffusion) PS > . venv/Scripts/activate
(venv) (StableDiffusion) PS > pip install basicsr
Linux
:
バッチ ジョブを終了しますか (Y/N)? y
(StableDiffusion) $ . venv/bin/activate
(venv) (StableDiffusion) $ pip install basicsr
・ターミナルを終了して、再度「Stable Diffusion web UI」を起動する
更新履歴 †
参考資料 †
- Stable Diffusion ControlNet
- Stable Diffusion ControlNet <openPose>