イラストから形状を大きく変えずに線画の画像を出力する - Stable Diffusion
Stable Diffustionを利用して、イラストから形状を大きく変えずに線画の画像を出力する手順を紹介します。
概要
イラストから形状は変えずに線画の画像を作成したいことがあります。
この記事では、イラストを入力して、Stable Diffusionで線画を作成する手順を紹介します。
事前準備
Stable Diffusion と ControlNet をインストールします。Stable DiffusionはStable Diffusion Web UIを利用します。
また、Anime Lineart LoRA をインストールします。
- Stable Diffusion Web UIのインストール手順はこちらの記事を参照してください。
- ControlNet のインストール手順はこちらの記事を参照してください。
- Anime Lineart LoRA のインストール手順はこちらの記事を参照してください。
入力画像の準備
今回は下図の画像を入力します。この画像を大きく変化させずに線画にします。
手順:Anime Lineart LoRAを利用する場合
Stable Diffusion Web UIにアクセスします。[txt2img]のタブを選択します。
下にスクロールし、[ContorlNet]の枠を開きます。[Single Image]のタブの[Image]の枠に画像をドラッグするか、クリックしてファイル選択ダイアログを
表示し設定したい画像を選択してアップロードします。
画像がアップロードできました。
画像の枠の下部の[Enable]チェックボックスをクリックしてチェックをつけます。
[Preprocessor]のドロップダウンリストボックスをクリックします。ドロップダウンリストが表示されますので、
[lineart_realistic]の項目をクリックして選択します。
[Model]のドロップダウンリストボックスをクリックします。
ドロップダウンリストが表示されますので、[control_v11p_sd15_lineart]のモデルをクリックして選択します。
[Preprocessor]のドロップダウンリストボックスの右側の[Run preprocessor]のボタンをクリックします。
プリプロセッサが実行され、プリプロセッサ処理後のプレビューが画像の右側に表示されます。
元の画像の輪郭が検出できていることを確認します。
[Control Weight]の値を変更します。今回は元画像の輪郭にできるだけ忠実な画像を作成したいので、最大値の"2"を設定します。
[Starting Control Step]は"0" [Ending Control Step]には"0.5"を設定します。これは、前半部分でControlNetの設定を適用し、構図を固め、
後半はテキストのプロンプトやAnime Lineart LoRAの描画を優先させたいため、処理の後半は、ControlNetの適用を無くす動作とします。
(実際にはStarting Control Stepを0、Ending Control Stepを1にしても結果はあまり変わらず、同様の画像が生成されます。)
プロンプトを設定します。Anime Lineart LoRAを適用するため、以下のプロンプトになります。
Prompt
white background, comic, manga, flat tone, <lora:animeoutlineV4_16:1>
[Sampling method]のドロップダウンリストボックスをクリックします。ドロップダウンリストが開きますので、
"DDIM"のサンプリングメソッドを選択します。
デフォルトの "Eular a" の場合はステップごとに画像の変動が大きいため、
前半で確定させた入力画像を"lineart_realistic"で検出したキャラクターの外形が後半のステップで大きく変化してしまいます。
DDIMはステップごとに画像が大きく変化しないため、今回はDDIMを選択しています。
[Generate]ボタンをクリックします。下図の画像が生成されます。
線画が生成できました。元のカラー画像の形状と比較しても大きな変化は出ていないことが確認できます。
white background, comic, manga, flat tone, <lora:animeoutlineV4_16:1>
Negative prompt: color
Steps: 20, Sampler: DDIM, CFG scale: 7, Seed: 1778617206, Size: 512x512, Model hash: db6cd0a62d, Model: Counterfeit-V3.0, ControlNet: "preprocessor: lineart_realistic, model: control_v11p_sd15_lineart [43d4be0d], weight: 2, starting/ending: (0, 0.5), resize mode: Crop and Resize, pixel perfect: False, control mode: Balanced, preprocessor params: (512, 0.5, 64)"
Seedの値が変わると微妙に線が変わりますので、何度か実行して一番良いものを選択します。
例2
別の画像での出力結果も確認します。
下図の画像を入力画像に設定します。
プロンプトは変えません。
Prompt
white background, comic, manga, flat tone, <lora:animeoutlineV4_16:1>
実行します。
画像の生成結果は下図になります。画像の形状とほぼ同じ状態の線画が作成できています。
もう少し細かく線を出したい場合は、アップスケーリングすると対応可能です。若干色がついてしまいましたので、
画像編集で、2値化またはグレースケール処理が必要そうです。
white background, comic, manga, flat tone, <lora:animeoutlineV4_16:1>
Negative prompt: color
Steps: 20, Sampler: DDIM, CFG scale: 7, Seed: 3154872134, Size: 768x512, Model hash: db6cd0a62d, Model: Counterfeit-V3.0, Denoising strength: 0.7, ControlNet: "preprocessor: lineart_realistic, model: control_v11p_sd15_lineart [43d4be0d], weight: 2, starting/ending: (0, 0.5), resize mode: Crop and Resize, pixel perfect: False, control mode: Balanced, preprocessor params: (512, 64, 64)", Hires upscale: 2, Hires upscaler: Latent
著者
iPentecのメインデザイナー
Webページ、Webクリエイティブのデザインを担当。PhotoshopやIllustratorの作業もする。