Stable Diffusionで線画を作る方法【白紙i2i】

Stable Diffusionで線画を作る方法【白紙i2i】

Stable Diffusionで線画を作りたいのに、絵の一部に色がついてしまったりして困ることはないでしょうか?今回はそんなときに便利な【白紙i2i】というテクニックをご紹介します。

この記事はStable Diffusionの経験者向けの内容です。用語等の詳しい説明は割愛しています。

白紙i2iとは?

白紙i2iとは何か?

白紙i2iとは何か?

白紙i2iとは、白黒の線画を生成するときのテクニックです。なお、もともと線画を綺麗に生成できるモデルであれば必要ありません。

AIマンガ家のヒツジ先生(@jikutakatsuo)が開発された手法です。

通常の生成(t2i)との違い

生成に使用するモデルによって違いますが、通常は線画を生成しようとしても、肌の色が塗られてしまったり、グレースケールの画像になったりすることがあります。白紙i2iではそういった問題を起こしにくくすることができます。

線画LoRAとの違い

LoRAはモデルによって効きが違うことがありますが、白紙i2iであればモデルを問わずに使うことができます。また、LoRAは線のタッチが固定されるため融通は効きにくいかもしれません。生成時の手間は白紙i2iの方がかかるので、LoRAを使用する方が簡単です。

t2i・線画LoRA・白紙i2iの比較表

項目通常の生成(t2i)線画LoRA(t2i)白紙i2i
線のタッチモデル依存LoRA依存モデル依存
汎用性どのモデルでもOKモデルとの相性ありどのモデルでもOK
手間簡単適用するだけでOK設定が多い
安定性低い高い高い

※モデル…生成するときに使うベースモデル(checkpoint)のことをここでは指しています。

4つのモデルによる線画生成の比較

使用した線画LoRAモデルのリンク

Animagine XL V3.1

Animagine XL V3.1
  • t2i:グレーが多めにのってます。これを線画として使うのは苦しいかも。
  • 線画LoRA:LoRAがすごくよく効いてて非常に綺麗です。LoRAの影響で、t2iより線が均一になっています。
  • 白紙i2i:一部グレーがのってますが、はっきり白黒になっています。線にもタッチがありますね。

1girl, lineart, monochrome

Negative prompt: nsfw, lowres, (bad), text, error, fewer, extra, missing, worst quality, jpeg artifacts, low quality, watermark, unfinished, displeasing, oldest, early, chromatic aberration, signature, extra digits, artistic error, username, scan, [abstract]

Steps: 20, Sampler: DPM++ 2M SDE, Schedule type: Karras, CFG scale: 5, Seed: 2218966790, Size: 896×1152, Model hash: cedf157a80, Model: animagineXLV31_v31, Version: f2.0.1v1.10.1-previous-657-g4f825bc0

上記はt2iで使用したものです。これを基本に、線画LoRAはプロンプト末尾に<lora:test-sdxl-lineart-11:1>を追加、白紙i2iはDenoising strengthを1にしました。

Animagine XL V4.0

Animagine XL V4.0
  • t2i:紙に描いたペン画を写真で撮ったような画像になりました。
  • 線画LoRA:LoRAの効果で線は均一になっていますが、紙(?)の色が残りがちです。
  • 白紙i2i:白黒の線画になりました。

1girl, lineart, monochrome

Negative prompt: lowres, bad anatomy, bad hands, text, error, missing finger, extra digits, fewer digits, cropped, worst quality, low quality, low score, bad score, average score, signature, watermark, username, blurry

Steps: 20, Sampler: DPM++ 2M SDE, Schedule type: Karras, CFG scale: 5, Seed: 2218966790, Size: 896×1152, Model hash: f89defff2a, Model: animagineXL40_v40, Version: f2.0.1v1.10.1-previous-657-g4f825bc0

上記はt2iで使用したものです。これを基本に、線画LoRAはプロンプト末尾に<lora:test-sdxl-lineart-11:1>を追加、白紙i2iはDenoising strengthを1にしました。

ちなみにwhite backgroundを入れるとこうなる

ちなみにwhite backgroundを入れるとこうなる

プロンプトにwhite backgroundを入れると、紙(?)は白くなるのですが、背景っぽいものは生成しづらくなります。

WAI-NSFW-illustrious-SDXL

WAI-NSFW-illustrious-SDXL
  • t2i:やけに背景が暗いです。monochromeを唱えているにも関わらず赤め。
  • 線画LoRA:新しめのモデルだからか効きが悪いかも?線は綺麗なので加工すれば使えそう。
  • 白紙i2i:白黒の線画になりました。

1girl, lineart, monochrome

Negative prompt: bad quality,worst quality,worst detail,sketch,censor,

Steps: 20, Sampler: DPM++ 2M SDE, Schedule type: Karras, CFG scale: 5, Seed: 2218966790, Size: 896×1152, Model hash: 178fc987b2, Model: waiNSFWIllustrious_v90, Version: f2.0.1v1.10.1-previous-657-g4f825bc0

上記はt2iで使用したものです。これを基本に、線画LoRAはプロンプト末尾に<lora:test-sdxl-lineart-11:1>を追加、白紙i2iはDenoising strengthを1にしました。

noob_v_pencil-XL

noob_v_pencil-XL
  • t2i:1枚青い線になってるけど、おおむね綺麗にできました。線が細いから溶けがち。
  • 線画LoRA:ちゃんとLoRAが効いてます。t2iで細かった線が、LoRAで均一化されたことで見やすくなりました。
  • 白紙i2i:t2iとほとんど変わらない結果でした。

1girl, lineart, monochrome

Negative prompt: worst quality, bad quality, old, early

Steps: 20, Sampler: Euler, Schedule type: Automatic, CFG scale: 5, Seed: 2218966790, Size: 896×1152, Model hash: 225d608699, Model: noobVPencilXL_v051, Noise Schedule: Default, Version: f2.0.1v1.10.1-previous-657-g4f825bc0

上記はt2iで使用したものです。これを基本に、線画LoRAはプロンプト末尾に<lora:test-sdxl-lineart-11:1>を追加、白紙i2iはDenoising strengthを1にしました。

【基本】白紙i2iで線画を生成する方法

ステップ1:白紙の画像を準備する

白紙の画像を用意します。私は1024×1024のPNG画像を使用しています。

ステップ2:Stable Diffusionでi2iを実行する

上の画像のように、白紙画像をi2i元として設定します。

重要なのは以下の3点だけ

  • プロンプトに「lineart, monochrome」等、線画になりそうなプロンプトを入れる。
  • 白紙の画像をi2iする。
  • Denoising strengthを1にする。

もしグレーになってしまう箇所があれば、プロンプトで「white ○○(任意の単語)」等を指定すれば打率が上がります。

【応用1】白紙i2iでフルカラー画像を線画化する方法

フルカラーの画像から線画を生成したい場合は、【基本】のステップに加えて、ControlNetに元となる画像を入力します。形状が維持できるモデルなら何でもいいと思いますが、私はいつもanytest v4を使っています。

ControlNetの設定

上の画像のように、元にしたい画像をControlNetに設定します。i2i元は白紙画像です。

生成結果

フルカラー画像を線画化

kataragi-lineartはpreprocessorを使うので、それによっても多少結果が変わると思います。

今回の画像の設定

  • anytest v4:Module: None, Model: CN-anytest_v4-marged_am_dim256 [49b6c950]
  • kataragi-lineart:Module: lineart_anime, Model: Kataragi_lineartXL-lora128 [0598262f]

その他のパラメーターは先に貼った設定画像の通りです。Weight1、End1、バランスモード。

使用したControlNetモデルのリンク

【応用2】白紙i2iで下描きやラフを線画化する方法

【応用1】でご紹介したのと、やり方はほぼ同じです。ただし、プロンプトで再現できる絵か、手持ちのLoRAで再現できる絵か、どちらかである必要があります。手描きの絵で、複雑なデザインのキャラとかだと難しいです。

別記事で紹介していますので、ご興味のある方はご覧ください。(以下の記事の「手法2」「手法3」というセクションです。)

白紙i2iを手描きの制作にどうやって活かす?

バケツ塗りからの囲い塗りからの手塗り

t2i、線画LoRA、白紙i2i、どの方法で線画を作っても、AI生成画像はバケツツールがかなり使いにくいです。ピクセルが荒れがちなのと、線が閉じてなかったりして…。なので、バケツツールであらかた塗ってしまったあとに、囲って塗る系のツールで細かい部分を埋め、それでも塗れなかった部分だけ手で微調整すると良いかと思います。

また、今回は効果が分かりやすいように別々に生成しましたが、線画LoRAと白紙i2iは併用するのが良いと思います。併用すると線画LoRAの強度を下げられるので、線画のスタイルの調整もできます。

まとめ

白紙i2iは、Stable Diffusionで線画を作るための強力な手法です。通常のプロンプトによる生成では、意図せず色がついたり、グレースケールになったりすることがありますが、白紙i2iを活用すれば、よりクリアな線画を得ることができます。また、線画LoRAと比較すると、線画LoRAのスタイルの影響を受けず自由度が高い一方で、手間がかかる点が特徴です。線画LoRAと白紙i2iを併用することで、線画LoRAの強度を弱めても綺麗な線画を生成することができるので、線画のスタイルの調整が可能になります。

どの方法を選ぶかは、「手軽さ」 と 「自由度」 のどちらを優先するかによります。LoRAは適用するだけで安定した線画を作れますが、スタイルの固定化が避けられません。一方で白紙i2iなら、プロンプト次第で幅広い線画表現が可能です。

この記事を通じて、「自分の制作スタイルに合った線画生成法」 を見つける手助けができたなら嬉しいです。ぜひ試して、自分に合った活用法を見つけてください!

この記事を書いた人

令五(れいご)
AIと手描きを組み合わせたイラスト・漫画制作を探求中!
「AIはツールとして活かすべき!」をモットーに、Stable DiffusionやCopainterを活用しながら、手描きの可能性を広げる方法を発信中。
イラスト制作の効率化やクリエイターの負担軽減を目指し、AI活用のヒントをブログで紹介しています。

その他SDXL系

Posted by 令五