ControlNetは機能が多すぎて、どれを使って良いかわからないですよね。そんな人の悩みを解決するためにControlNetの実用例を解説しています。今回、取り上げるのはControlNet Scribbleです。本記事を読むことで次のような疑問が解消されるでしょう。
- ControlNet Scribbleって何?
- ControlNet Scribbleの具体的な実用例は?
- ControlNet Lineart, SoftEdge, Cannyなどの類似手法との違いを知りたい。
ControlNet Scribbleとは?
ControlNet Scribbleは、ControlNetのモデルの一つで、大まかな輪郭やスケッチを抽出するアルゴリズムを用いて特徴を抽出して画像生成の制御を行います。Scribbleには様々なパターンで線画を抽出することができるので選択肢が多いのが特徴です。細部の線は検出しないので大まかな構図を保ちたい場合に有効です。
「呪文(プロンプト)から画像を生成する」と「ControlNet Scribble」を使用する場合の違い
呪文(プロンプト)から画像を生成する場合は、テキスト入力に基づいて画像が生成されます。
一方、ControlNet Scribbleを使用する場合は、元画像の輪郭やスケッチ情報を抽出し、その輪郭の中身を埋めるように、画像を生成するので大まかな構造を保ったまま画像が生成されます。
そのため構図や形状を意図した通りにコントロールできるので、何度も画像を生成しなおす手間が省けて便利です。
ControlNet Scribbleでできること
- 質感やテクスチャ、色の変更
- 実写画像のイラスト化、イラストの実写化
- 線画の色塗り
質感やテクスチャ、色の変更
左が参照画像、右がそれをScribbleを使ってテクスチャを変更した画像です。肌を日焼けさせるプロンプトを指定しました。
実写画像のイラスト化、イラストの実写化
左が参照画像、右がそれをScribbleを使ってイラスト化した画像です。
左が参照画像、右がそれをScribbleを使って実写化した画像です。
線画の色塗り
左が参照画像、右がそれをScribbleを使って実写化した画像です。
ControlNet Scribbleの利用方法
ControlNet Scribbleの事前準備
ControlNet ScribbleはStable Diffusion Web UIの拡張機能、ControlNetの機能の1つです。 そのため、ControlNet Scribbleを利用するためには、ControlNetがインストールされている必要があります。 もし、インストールしていない場合は以下の記事を参考にControlNetをインストールしましょう。
ControlNet Scribbleのインストール方法
ControlNet Scribbleの利用にはControlNet Modelが必要となります。以下のリンクから次の2つのファイルをダウンロードしてstable-diffusion-webui/models/ControlNetへ配置してください。
- control_v11p_sd15_scribble.pth
- control_v11p_sd15_scribble.yaml
ControlNet Scribbleの使い方
ControlNetのメニューを次の手順にしたがって設定します。
- 生成する画像のプロンプトを入力します。
- 「▼」をクリックしてControlNetのメニューを開きます。
- 参照画像をControlNetのメニュー画面にセットします。
- ControlNetを有効にするため”Enable”にチェックを入れます。
- Control Typeで”Scribble/Sketch”(バージョンによっては”Scribble”)を選択します。これでPreprocessor(前処理)とControlNet Modelが設定されます。
- 特徴抽出ボタン「💥」をクリックして特徴抽出します。前処理が適用されて特徴抽出の結果が表示されます。
- これでControlNet Scribbleが適用されるので、”Generate”をクリックして画像を生成します。
ControlNet Scribbleの具体的な使い方
それでは「ControlNet Scribbleでできること」で紹介した例の具体的な手順について紹介します。
質感やテクスチャ、色の変更
ControlNet Scribbleを使うことで質感やテクスチャの変更ができます。例えば肌の質感を変更することができます。生成した画像で肌が汚いケースでは美肌に修正したり、肌の色を変えてみたり、汗をかかせたりすることができます。
今回は肌を日焼けさせてみます。
ControlNetのメニュー画面に次のような設定を入力します。
- 画像をControlNetのメニュー画面にドラッグ&ドロップします。
- “Enable”にチェックを入れます。
- Control Typeの”Scribble/Sketch”(バージョンによっては”Scribble”)を選択
- 特徴抽出ボタン「💥」をクリックして特徴抽出。
後は生成する画像の呪文(プロンプト)を入力します。
プロンプト: (brown skin, tanned skin: 2), 1girl, a 20 years old pretty Japanese girl in classroom.school uniform,blackboard
もし画像サイズなど他にも画像生成の設定したい事項があれば変更してください。
以下は生成した画像です。日焼けしていることがわかります。
実写画像のイラスト化、イラストの実写化
実写画像をイラストへ変換する。
次に実写画像をイラストにしてみます。ControlNetの設定は先ほどと同じです。
- 今回はイラスト化なので、モデルをイラスト系モデルに切り替えます。
- 生成する画像の呪文(プロンプト)を入力します。
- 画像を生成します。
モデル: AnythingV5Ink_ink.safetensors [a1535d0a42]
プロンプト: 1girl, a 20 years old pretty Japanese girl in classroom.school uniform,blackboard
もし画像サイズなど他にも画像生成の設定したい事項があれば変更してください。
生成した画像は次の通りです。
イラストを実写画像に変換する。
次はイラストを実写化してみます。ControlNetのメニューですが今までと設定値が違うので注意してください。以下のとおりにControlNetで設定と特徴抽出を行います。
- 画像をControlNetのメニュー画面にドラッグ&ドロップします。
- “Enable”にチェックを入れます。
- Control Typeの”Scribble/Sketch”(バージョンによっては”Scribble”)を選択
- 特徴抽出ボタン「💥」をクリックして特徴抽出。
- Control ModeでMy Prompt is more importantを選択。これは線画に忠実に画像を生成すると、顔と体のバランスが悪くなるので、プロンプトに重きを置くように設定するためです。
次に画像生成の設定を行います。
- 実写画像なので、モデルを実写画像系モデルに切り替えます。
- 生成する画像の呪文(プロンプト)を入力します。
- 画像を生成します。
モデル: beautifulRealistic_brav5.safetensors [ac68270450]
プロンプト: 1girl, a 20 years old pretty Japanese girl in classroom.school uniform,blackboard
もし画像サイズなど他にも画像生成の設定したい事項があれば変更してください。
生成した画像は次の通りです。
線画の色塗り
次は線画の色塗りについて紹介します。線画(白と黒)を塗る際にはPreprocessorとして”invert(from white bg & black line)”を利用することができます。これは線画の白黒を反転させるだけの前処理です。ただし、白と黒の判定は厳しく、人の目には真っ黒に見えててもわずかに明るかったりしたら線画が認識されないので注意が必要です。
- 画像をControlNetのメニュー画面にドラッグ&ドロップします。
- “Enable”にチェックを入れます。
- Control Typeの”Scribble/Sketch”(バージョンによっては”Scribble”)を選択
- Preprocessorを”invert(from white bg & black line)”に設定。
- 特徴抽出ボタン「💥」をクリックして特徴抽出。
次に画像生成の方の設定を調整します。
- モデルをイラスト系モデルに切り替えます。
- 生成する画像の呪文(プロンプト)を入力します。
- 画像を生成します。
モデル: AnythingV5Ink_ink.safetensors [a1535d0a42]
プロンプト: 1girl, suits, question
もし画像サイズなど他にも画像生成の設定したい事項があれば変更してください。
結果は次の通りです。
ControlNet Scribbleの設定について
Preprocessorについて
- scribble_hed: Holistically-Nested Edge Detection (HED)は、人が描くような輪郭を生成するのに適したエッジ検出器です。HEDは、画像の再着色やスタイル変更に適しています。
- scribble_pidinet: Pixel Difference Network (Pidinet)は、曲線や直線のエッジを検出します。HEDに似ていますが、通常は詳細が少ないクリーンな線が得られます。
- scribble_xdog: EXtended Difference of Gaussian (XDoG)は、エッジ検出方法です。XDoGのしきい値を調整し、Preprocessorの出力を観察することが重要です。
- t2ia_sketch_pidi: このPreprocessorはscribble_pidinetの派生です。scribble_pidinetに比べて大まかな線画を抽出できます。
- invert (from white bg & black line): このPreprocessorは、白い背景と黒い線の画像を反転させます。白黒の線画を直接入力画像としてつかう場合にはこのPreprocessorを選択します。
FAQ
ControlNet Scribbleに似た手法があるけど何が違うの?
ControlNet Scribble以外にもControlNetには次のような類似する手法があります。
- ControlNet Canny: ControlNet Cannyは、ControlNetのモデルの一つで、画像からCanny Edge Detectoinでエッジ検出することができます。画像の細かい線を抽出することができます。
- ControlNet Lineart: ControlNet Lineartは、ControlNetのモデルの一つで、画像から線画を抽出することができます。線画は、ある程度強い線以外は無視されるため、重要な線を取捨選択して抽出できます。
- ControlNet SoftEdge: ControlNet SoftEdgeは、ControlNetのモデルの一つで、ソフトな輪郭を使って画像を生成することができます。ディテールを維持するのが得意で、色変更などに活用するとよいとされています。
- ControlNet Scribble: ControlNet Scribbleは、ControlNetのモデルの一部で、ラフなスケッチやざっくりしたイラストから、より完成度の高いイラストレーションを生成することができます。粗いイラストや棒人間からもモデルに合わせたイラストを制作してくれます。
どれも線を抽出する手法ですが線の細かさに差があります。Canny, Lineart, SoftEdge, Scribbleの順で線が細かいです。以下は先ほどの実写画像をCanny, Lineart, SoftEdge, Scribbleの順で抽出した線です。
画像の線のどこを意識したいかによって使い分けると良いでしょう。
コメント