クラウドソーシングなどでもリアルな人物を要求するクライアントが多く、現在ゲームやアプリの広告などにもリアル系のAI画像が使われています。
ただ具体的にどうやって作ればいいのか、わからない方も多いのではないでしょうか?
今回はリアルな人物の生成方法について、具体的なレシピをご紹介します。
※Stable Diffusion Web UIをインストールしている方に向けた記事になります。
Stable Diffusionで生成できるリアルな人物とは?
この記事を読んで生成できるようになる画像はこちらです。
左はただhires.fixを使用して生成したもの、右は今回ご紹介するLoRAやControlNetの処理を加えたものです。
髪の毛や服のペタっとした質感が消え、髪の毛一本一本や光の描写など、リアルさが増してなるように感じないでしょうか?
好みはあると思いますが、「リアルさ」だけであれば右の方が上かと思われます。
今回はこちらの画像を生成する方法についてご紹介します。
リアルな人物を生成するために必要なもの
上記の画像を生成するには以下4つが必要です。
- モデル
- LoRA
- embeddings
- ControlNet
リアルな人物が生成できるモデル
上記の画像はLoRAとControlNetの処理を加えていますが、モデルとの相性もあります。
今回使用したモデルを含め、比較的相性が良かったモデルを複数ご紹介します。
BracingEvoMix
上記の画像を生成しているのはこちらのモデルで、現状一番リアルな人物を生成できるモデルとして有力です。
23年11月現在v1、v2がありますが、リアルさだけならv1の方が再現率は高い印象。
こちらはchilled_remixとBRAの開発者さんが話し合ってマージした低リスクモデルで、画像生成AI界隈のコンテンツに幅広く使用されています。
BRA(Beautiful Realistic Asians)
次点でBRAが挙げられます。
BRAはリアルな人物の生成モデルとして有名ですが、verによってプロンプトの効きやすさが異なります。
例えばv5は比較的さまざまなプロンプトに対応していますが、v6以降はportrait(肖像画)が生成されやすく、全身や脚までの画像生成が少し困難です。
また、人物もアジア人に特化しているため、似たような顔になってしまうことが多く、外人・ハーフなどはなかなか生成できません。
素晴らしいモデルではありますが、生成しやすさなどを総合的に見ると、BracingEvoMixの方に軍配が上がります。
kisaragiMix・chilled_remix・majicmixRealistic
これらは全てchill系モデルの特徴が濃く再現されます。
表現が難しいのですが、二次元と三次元の間のような画像が生成できるモデルです。
後述するやり方でリアル感は出せますが、BracingEvoMixやBRAには少し劣るかなという印象。
ただ生成できる人物はそれぞれ特徴があり、人によって好みも分かれると思うので、用途によって使い分けるのが良いと思います。
個人的にリアルさはBRAの方が上だと思いますが、人物はkisaragiMixの方が可愛らしく綺麗な人物が生成できるという印象です。
・kisaragiMix:https://civitai.com/models/45757
・chilled_remix:https://huggingface.co/sazyou-roukaku/chilled_remix
・majicmixRealistic:https://civitai.com/models/43331
一応全て商用利用可能となっていますが、気になる方はサイト上のライセンスをご確認ください。
LoRAは「doll-likeness-series」シリーズを使用
上記の画像生成で使用しているLoRAは、Kbrlorasさんという方が提供している「doll-likeness-series」シリーズです。
doll-likeness-seriesはリアルなアジア人を生成できるLoRAで、現在以下の種類があります。
- KoreanDollLikeness
- JapaneseDollLikeness
- TaiwanDollLikeness
- ChinaDollLikeness
- ThaiDollLikeness
リアルなアジア人が生成できるとして有名なLoRAですが、重みや組み合わせなどでリアル感が異なります。
今回は「japaneseDollLikeness_v15」と「koreanDollLikeness_v20」を併用しているので、真似したい方はそちらの2つをダウンロードしてください。
上記サイトの「Files and versions」から矢印アイコンクリックでダウンロードできます。
ダウンロードしたファイルは、以下のパスに移動してください。
stable-diffusion-webui\models\Lora
embeddingは「EasyNegative」を使用
EasyNegativeは、よく入力されるネガティブプロンプトを「EasyNegative」と入力するだけで反映できるembeddingです。
なおStable Diffusion Web UI上だとTextual Inversionと表示されていますが、モデルデータを置くフォルダ名がembeddingとなっているため、Textual Inversion=embeddingという形で使用することがあります。
こちらは必須ではありませんが、比較的クオリティの高い画像が生成されやすくなり、ネガティブプロンプトを入力する手間も省けます。
特に強いこだわりなどがなければ「EasyNegative」を使用してみてください。
こちらからダウンロードできます。
EasyNegative - EasyNegative | Stable Diffusion Embedding | Civitai
ダウンロードしたファイルは以下のパスに移動させます。
stable-diffusion-webui\embeddings
ControlNetのtileを使用
ControlNetはStable Diffusion Web UIの拡張機能で、画像からさまざまな情報を抽出し、それを元に再生成できる機能です。
抽出するためにプリプロセッサが必要で、プリプロセッサにはさまざまな種類が存在します。
今回使用するのは「tile」というプリプロセッサです。
tileは簡単に言えば高画質化できる機能で、画像の解像度をタイル(ピクセル)ごとに変化させて、再度サンプリングができます。
導入方法を全部説明すると長くなってしまうので、簡単に必要なもののインストール方法のみご紹介します。
まずStable Diffusion Web UIを開き、Extensions→Install from URL→URL for extension's git repositoryに以下のURLを入力してインストールしてください。
https://github.com/Mikubill/sd-webui-controlnet.git
続いてtileのプリプロセッサをダウンロードします。
下記リンクから「control_v11f1e_sd15_tile.pth」をダウンロードしてください。
lllyasviel/ControlNet-v1-1 at main
ダウンロードしたファイルは以下のパスに移動します。
stable-diffusion-webui\models\ControlNet
これで準備は完了です。
他の機能やまとめてプリプロセッサをダウンロードする方法については、こちらの記事を参考にしてください。
なお、新しい拡張機能をインストールしたときは機能を反映させるため、Stable Diffusion Web UIを再起動しておいてください。
リスタートだと上手く反映されない可能性があるので、再起動がおすすめです。
リアルな画像を生成する具体的な手順
最初にLoRAとEasynegativeを使用して画像を生成します。
高画質化するときにhires.fixやtileを使用するため、最初は高画質化処理を行いません。
上記画像を生成したときのプロンプトやパラーメータは以下の通りです。
・プロンプト
1girl, solo, (8k, RAW photo, highest quality, masterpiece),(realistic, photo realism:1. 37), BREAK,
(businesssuit:1.3), (office:1.2) (cowboyshot:1.2), (smile:1.2), BREAK, <lora:koreanDollLikeness_v20:0.2>, <lora:JapaneseDollLikeness_v15:0.5>
・ネガティブプロンプト
EasyNegative, (worst quality:2), (low quality:2), (normal quality:2), lowres, normal quality, ((monochrome)), ((grayscale)),paintings, sketches, nsfw
・その他パラメーター
- Steps: 30
- Sampler: DPM++ 2M Karras,
- CFG scale: 7
- Seed: 3969692041
- Size: 400x640
- Model: BracingEvoMix_v1
- VAE: vae-ft-mse-840000-ema-pruned.safetensors
- Clip skip: 2
VAEやClip skipの設定をしていない方は、こちらの記事を参考にしてください。
この状態で生成したら、次に高画質化処理を行います。
まずhires.fixをオンにして、Upscalerは「R-ESRGAN 4x+」、Denoising strengthは「0.55」にします。
次にControlNetを操作します。
txt2imgにControlNetのメニューが追加されているので、クリックして開いてください。
先ほど生成した画像をドラッグ、または選択して取り込み、以下のように設定します。
- Enble:チェック
- Low VRAM:VRAM8GB以下ならチェック推奨
- Pixel Perfect:取り込んだ画像と同じサイズで生成するもの
- Tile/Blur:チェック
Tileを選択すると自動的にプリプロセッサや出力モデルも設定されるので、この状態で生成すると以下の画像が生成できます。
一括でリアルな人物を生成する方法
ControlNetにはループバック機能があるため、それをオンにすると生成した画像に対してtile処理を行うことができます。
画像を取り込まずにループバックをオンにするだけです。
追記:以下のボタンはアップデートでなくなりました。
この状態でBatch countを増やせば、生成した画像全てに対して高画質化処理も同時に行えます。
ただこの方法だと描写が崩れた画像も高画質化処理されるため、厳選してから行いたい場合は、img2imgのバッチ機能がおすすめです。
詳しくはこちらの記事をご確認ください。
なお、ループバックとimg2imgの処理だと、クオリティに微妙な違いがあります。
おそらく画質はループバックでやった方が綺麗なので、クオリティ重視したい方はループバックがおすすめです。
リアルな人物を生成するためのポイント
上記の画像生成において、プロンプトやパラーメータの設定について、ポイントとなる部分をいくつかご紹介します。
プロンプトはほどほどに
高画質系やリアルな人物を生成するためのプロンプトに「masterpiece」「photo realism」「photo realstic」などがよく使われます。
しかし、これらはhires.fixなどの高画質化処理をする場合、ほとんど影響がありません。
左の画像は上記で生成した画像から、以下のプロンプトを除去してhires.fixを使用した画像です。
除去したもの:(8k, RAW photo, highest quality, masterpiece),(realistic, photo realism:1. 37)
プロンプトが変化したことで人物が変わっていますが、画質や鮮明さにについて具体的な違いはわかりますでしょうか?
私個人としてはhires.fixなど高画質化処理をする場合、これらのプロンプトによる影響はそこまで大きくないと考えています。
プロンプトを入れ過ぎると逆に他の要素が反映しにくくなるというデメリットもあるので、おまじない程度に考えておくのがおすすめです。
なお、二次元モデルの場合、「photo realstic」は画風に影響します。
・同モデル・シード値で生成
Denoising strengthの値
Denoising strengthはノイズ除去強度で、高くするとより画像は鮮明になりますが、上げ過ぎると画像が崩れてしまう可能性が高くなります。
私の場合はいろいろ試した結果、あまり崩れることなく綺麗に仕上げられる値が0.55でした。
ただ被写体の顔が遠くにある画像は、0.6~0.7(場合によってはもっと上)で調整した方が綺麗に仕上がる可能性が高いです。
一括処理だと画像ごとに値は変えられないため、全体的にバランス良く仕上げるという意味でも0.55にしています。
LoRAの重み
LoRAの重みは、値で影響力を調整できるものです。
値が高すぎると描写崩れを起こしてしまう可能性があり、値が低すぎるとリアル感が出せません。
またLoRAが強いと、他のプロンプトが反映されにくくなる場合もあります。
目安としてLoRAを1つ使用する場合は0.4~0.5、組み合わせる場合は、合計値が0.6~0.8くらいの間が無難かと思われます。
これについてはしっかり検証したわけではなく、私の経験則です。
またこれはdoll-likeness-seriesに関するもので、他のLoRAについてはそれぞれ仕様が異なります。
自分で良いと思う値があれば、そちらを使用してください。
tileの影響
titleの高画質化は人によって好みがわかれます。
やり過ぎるとテカテカした印象を持つ方もおり、万人受けする処理というわけではないようです。
そういった場合は、「Control Weight」で調整できます。
プロンプトやLoRAの重みと一緒で、tileの影響力を調整できるものです。
X/Y/Z plotを使えば値ごとに変化を確認できるので、一度生成して自分好みの質感がどの値で出せるか探してみてください。
リアルな人物を生成するデメリット
まず1つは人物が似てしまうことです。
LoRAの影響もあり、生成される人物が似てしまうことがあります。
対策の1つとして重みを調整する方法がありますが、1枚ずつ調整するのは手間がかかります。
そういった場合は、範囲を絞ってランダム生成するのがおすすめです。
例えばDynamic Promptsを導入すれば、以下のように書くことが可能です。
<lora:koreanDollLikeness_v20:0.{1|2|3}>, <lora:JapaneseDollLikeness_v15:0.{2|3|4|5}>
波括弧内で値やプロンプトを「|(バーティカルバー)」で区切ると、その中からランダムで値や要素を採用できます。
波括弧のランダムはいろいろなシーンで使える機能なので、興味があればぜひ使ってみてください。
もう1つはtile処理をすると人にバレます。
何のLoRAを使っているかは重みが調整できるのであまり分かる人はいないと思いますが、tileは独特な質感がでるため、Stable Diffusionを利用している方には「この画像tile使ってるな」とバレる可能性が高いです。
バレたところで特にデメリットにはならないのですが、一応わかる人にはわかってしまうというのは覚えておいた方が良いかもしれません。
リアルな人物を生成する方法まとめ
今回はリアルな人物の生成方法について、ご紹介しました。
リアルな人物が生成できるモデルはBracingEvoMixが有力
LoRAはdoll-likeness-seriesを使用
ControlNetではTileを使用
embeddingでEasyNegativeを使用
プロンプトや値はお好みで
SD1.5~2.0の中では、比較的リアルな人物を生成できるレシピの1つかと思われます。
ただし、SDXLというか画像生成AI界隈全体の進化が本当に速いので、そのうち今回紹介した方法よりリアルで簡単に生成する方法が誕生するかもしれません。
一応現状でもこのくらいリアルな人物を生成することは可能なので、興味がある方は試してみてください。