顔のみにLoRAを適用して顔の絵柄を変更する - ADetailerを使用 - Stable Diffusion

Stable Diffusionで顔のみにLoRAを適用して顔の絵柄を変更する方法を紹介します。

概要

Stable Diffusionを利用していろいろな画像を生成できますが、人物型のキャラクターをイラスト形式で出力した場合、 絵柄を調整したい場合があります。多くの公開されているモデルでは、キャラクターに華があり、きらびやかで魅力的なキャラクターが出力されますが、 素材等で利用する場合には、もう少し地味なキャラクターで画像を生成したい場合があります。
この記事では、顔のみにLoRAを適用して、顔の絵柄を調整する手順を紹介します。

事前準備

Stable Diffusion WebUI

Stable DiffusionとWebUIを導入します。今回はSDXL環境で実施します。
(手順の詳細はこちらの記事を参照してください。)

ADetailer (After Detailer)

ADetailer (After Detailer)をインストールします。手順の詳細はこちらの記事を参照してください。

LoRAの作成

顔に適用するLoRAを作成します。変更したい顔の絵柄のキャラクターの画像でLoRAを作成します。
今回はこちらの記事で作成した、Epoch16のLoRAを利用します。過学習気味ですが、絵柄が強く出るのではとの期待があります。

手順

元の画像の生成

初めに作成したい画像を生成します。
今回は以下のプロンプトで作成します。
モデルはSDXLイラスト系のモデル"SDXL Yamer's Anime Unstable Illustrator Stage ENA" を利用しています。
プロンプト
Prompt:1girl, blue jacket, upper body, anime shading
Negative prompt:worst quality, low quality

画像を生成しました。


こちらの画像が生成できました。画像が変化しないようにSeedを固定します。

ADetailer (After Detailer)の設定

ADetailerのパネルを開き、[Enable ADetailer]のチェックボックスをクリックしてチェックをつけます。 ADetailer modelには顔検出の"face_yolov8n.pt"を選択します。 プロンプト欄には、作成したLoRAの呼び出しプロンプトを入力します。今回は、以下のプロンプトになりました。

ADetailerのプロンプト
Prompt:girl, <lora:作成したLoRA名:1>



ADetailerを有効にした状態で画像生成します。


LoRAの絵柄に似た顔になりました。


なお、ADetailerのプロンプトを以下のプロンプトに変更し、 LoRAの適用度合いを大きくすると輪郭が溶けてしまうため、適用度は強くし過ぎないほうが良いです。
ADetailerのプロンプト
Prompt:girl, <lora:作成したLoRA名:2>

調整

微調整して次のパラメータになりました。
顔の輪郭は元の画像の輪郭が強いため、"round face"を追加して、元の画像の顔を丸顔にしています。 また、まつ毛が残ってしまうため、ADetailerのNegative promptに"eyelashes"を追加しています。
プロンプト
Prompt:1girl, blue jacket, upper body, anime shading, round face,
Negative prompt:worst quality, low quality
ADetailerのプロンプト
Prompt:girl, closed mouth <lora:作成したLoRA名:0.6>
Negative prompt: eyelashes

修正途中



修正版



生成された画像をimg2imgへ送り、ADetailerを有効にし、もう一度同じ設定で画像生成します。画像が大きく変化しないよう "Denoising strength"は0.2まで下げています。


下図の画像が生成できました。2回適用するとLoRAの絵柄が強めに出てくる印象です。


ペイントソフトで口を描いてとりあえず完成です。顔のペイントに対して衣類のペイントの立体感が強すぎるなど、課題はいくつかありますが、 顔の絵柄をコントロールすることはできました。


今回は過学習のLoRAを利用しましたが、いろいろな表情を含めたLoRAを作成すれば、ADetailerのプロンプトで表情の変更も可能かもしれません。

参考:正面顔・横顔の他の角度での結果

正面顔

斜め顔1枚しかない過学習のLoRAを適用していますが、正面顔でもある程度までは絵柄を似せてくれます。
元の画像
元の画像

ADetailer適用
ADetailer適用

横顔

横顔は難しいと予想していましたが、こちらもLoRAに似せた絵柄での出力になりました。
元の画像
元の画像

ADetailer適用
ADetailer適用


1枚しかない画像のLoRAでも、それなりの結果が出力されました。

参考:Prodigyオプティマイザーで作成したLoRAを適用する

Prodigyオプティマイザーで過学習したLoRAを適用した場合の結果です。 ProdigyオプティマイザーでのLoRA作成はこちらの記事を参照してください。
今回はEpoch20のLoRAを利用します。


顔のみに適用した結果は下図です。どちらも0.6の重みで適用しています。(img2imgでの2回目の生成はしていない状態です。)
ProdigyのLoRAのほうが学習元の絵柄の特徴が強めに出る傾向がわかります。
Prodigy Epoch20 LoRA適用
Prodigy Epoch20 LoRA適用

AdamW Epoch16 LoRA適用
AdamW Epoch16 LoRA適用

元画像
元画像

著者
iPentecのメインデザイナー
Webページ、Webクリエイティブのデザインを担当。PhotoshopやIllustratorの作業もする。
掲載日: 2024-01-02
iPentec all rights reserverd.