定期配信者のTwitch議事録ブログ

Twitch関連をまとめるページ

実写風の画像生成(Stable Diffusion)

前回

初めてのStable Diffusion操作について

sandboxmatsu.hatenablog.com

前提条件・知識

git
フォルダ構成の知識
Version: v1.2.1

きっかけ

某元大統領をモデルにした逮捕劇をAIで作成してしまうこともできる記事を目にして
前回のアニメ風からよりリアルな人間味を出す画像生成について調べてみた。
有識者であるskywindさんへ最近話題のリアルな生成モデルがないか相談したところ
いろんなモデルやツールを紹介してもらいました。
いつもありがとうございます。

先に生成データの紹介を行い後に、ダウンロードデータの配置や
生成方法の順番で記載します。

紹介

モデル

  • RealDosMix

実写風でよく使われるAIモデル
https://civitai.com/models/6925/realdosmix

  • Good Asian Girl Face

アジア人に近い傾向を出すモデル
https://civitai.com/models/5726/good-asian-girl-face

ツール

  • VAE(vae-ft-mse-840000-ema-pruned)

https://huggingface.co/stabilityai/sd-vae-ft-mse-original/blob/main/vae-ft-mse-840000-ema-pruned.ckpt

この3つを用意することでリアルな画像生成ができるとのこと。
とりあえず、これらをモデル「単体」で動かしてみるとこうなる。

RealDosMix

Good Asian Girl Face

すでに単体だけでもクオリティの高い画像生成ができるのでこれで満足してしまう。

似た構図で出力できる理由について

Stable Diffusionはガチャ要素があるため、同じ構図を出力するのはとても難しいのですが、
画像から画像を生成する「img2img」で出力するとある程度同じ構図で画像生成をすることが可能です。

似た構図の作成方法
モデルをRealDosMixにしてテキストから画像を生成する「txt2img」で出力。
これで元画像が生成される。
モデルをGood Asian Girl Faceにして画像から画像を生成する 「img2img」で出力。
これで違うモデルでも同じ構図で画像が生成できる。

少し調べ

VAE(vae-ft-mse-840000-ema-pruned)・・・?

VAEとはなんぞ?

様々な動画や記事で調べると・・・
VAE(Variational Autoencoder)は、生成モデルの一種で、データの潜在表現を学習するための手法である。
データを低次元の特殊な表現に変換し、それから元のデータを再構築することで学習を行い、
エンコーダーデコーダーと呼ばれる2つの部分から構成される。

エンコーダー:データを特殊な表現に変換する役割を持つ。
   この特殊な表現は、潜在空間と呼ばれる低次元の確率分布で表現される。
デコーダー:潜在空間から元のデータを再構築するために使用される。

その他、VAEは確率的な要素を組み込んでおり、
エンコーダーが特殊な表現を生成するときにランダム性を持ち
データの圧縮や異常検知、画像生成などの様々なタスクに使われます。
また、機械学習ディープラーニングの分野で広く研究、応用され
VAEを使うと、新しいデータを生成することも可能である。

正直よくわからん。

多分だけど・・・

ぼんやりですが、普段私たちが思う「可愛い、キレイ、リアル」などの感性を
このエンコーダーデコーダーで数値化を行い表現をしやすくさせる。
この数値化の方法もいくつか種類がありそれらを組み合わせることで より鮮明な画像生成や音楽、物体を予想させるなどを行う補助ツールではなかろうかと予想。

モデルをマージ(融合)して画像生成

先程の画像生成で単体でもとてもよい画像が生成できるのですが、 これらをより一層、磨きや質を上げる方法として
各モデル同士とツールをマージ(融合)させることで質の高い画像生成ができる。
マージについては「PNG info」の右にある「Checkpoint Merger」タブがそれにあたる。
※Stable Diffusionのバージョンが低い場合、タブがないのでgit pullにてバージョンアップが必要。

merge結果

さすがリアル志向というか単体モデルとはだいぶ違い、
先程のモデルとツールを組み合わせることで色味や表現が結構変わってくる。
RealDosMix「実写風」+Good Asian Girl Face「アジア人」+VAE(vae-ft-mse-840000-ema-pruned)
すごすぎるよAI・・・何でもできるやん。

各モデル配置とマージ方法

ここからは実用的な導入とマージ方法

ダウンロードした3つのモデルとツールを以下の場所に配置する
 Stable Diffusionのルート配下
 models
  ├Stable-diffusion
  │ ├realdosmix_.safetensors
  │ └goodAsianGirlFace_goodAsianGirlFaceV12.safetensors
  └VAE
    └vae-ft-mse-840000-ema-pruned.ckpt

マージ設定を行う

 ・Primary model(A)に「realdosmix_」を選択
 ・Secondary model(B)に「goodAsianGirlFace_goodAsianGirlFaceV12」を選択
 ・Bake in VAEに「vae-ft-mse-840000-ema-pruned」を選択
 ・Checkpointo formatは「safetensors」を選択

 ※上記以外は触らなくてもOK

⑧Mergeを実行  5分ほど時間かかります

⑨完了したら「txt2img」のチェックポイントをマージしたファイルに変更して画像生成

▼画像生成時の参考パラメータ

Sampler:DPM++ SDE Karras

プロンプト  
best quality, ultra high res, (photorealistic:1.4), close up viewer, 1 girl, (ulzzang-6500:1.0), (style-keta:0.8)  


ベストクオリティ画質の品質を保つ、超解像度、実写的1.4強調、顔をアップ、一人の女、韓国風美女、スタイル?

ネガティブプロンプト
paintings, sketches, (worst quality:2), (low quality:2), (normal quality:2), lowres, normal quality, ((monochrome)), ((grayscale)), skin spots, acnes, skin blemishes, age spot, (outdoor:1.6), bad anatomy, muscularity, muscular  


絵画、スケッチ、最悪なクオリティ、低いクオリティ、ノーマルクオリティ、モノクロ、グレースケール、にきび、肌荒れ、加齢によるシミ、アウトドア?

オススメのプロンプトとネガティブプロンプトである。
半分わかり応用が効きそう、半分意味がわからない。

ここまでが実用的な導入です。

最後に

導入方法について教えていただいたので、まだまだわからないことだらけ。
Stable Diffusion内のSampling methodの指定があるので これはどういう意味であるのか、またLoRaという追加学習ツールについても 興味があるので、これも次回の学習、調べ物として取り上げるのも良さそう。

多分、LoRaはより細部な修正箇所を手掛けることができ、プロンプトの強調部分、
数値を変更させることでいかんなくその能力を発揮できるのではないかと予想している。
指定ポージングを取らせるのは何か写真撮影をしてそれを参考にさせたほうが結構時間短縮でもあることに気づく。
MMDでポージングとカメラ配置決めれば最初からいい感じに画像生成出来そう。

AIの発展はまだまだこれから、波に乗り遅れずどんどんやっていこう。