【Stable Diffusion】人間をリアルに描く混合モデル

【Stable Diffusion】人間をリアルに描く混合モデル 機械学習

「モデルが多すぎて何を使っていいのかわからない・・・」
「人間を綺麗に描くモデルを探している・・・」

このような場合には、Hyperanatomy MegaMergeがオススメです。
この記事では、Hyperanatomy MegaMergeについて解説しています。

本記事の内容

  • Hyperanatomy MegaMergeとは?
  • Hyperanatomy MegaMergeの利用方法

それでは、上記に沿って解説していきます。

Hyperanatomy MegaMergeとは?

Hyperanatomy MegaMergeは、Stable Diffusion用のモデルです。
主に、解剖学ベースの特徴を表現できるモデルとして公開されています。

ぶっちゃけ、NSFWのコンテンツを生成するモデルです。
そのモデルは、Civitai上で公開されています。

Hyperanatomy MegaMerge | Civitai
https://civitai.com/models/3241/hyperanatomy-megamerge

NSFWと判定されるコンテンツがあるので、ページを開くのは注意してください。
学校や職場では開かないように注意が必要です。

このモデルを忌み嫌って使わないのは、非常に損をすることになります。
Hyperanatomy MegaMergeを利用すると、次のような画像を生成できるのです。

これを見ると、解剖学に強いモデルの影響が出ていると言えますね。
手が綺麗に出ています。

Hyperanatomy MegaMergeは、一体どんなモデルを結合しているのでしょうか?
以下の3つのモデルを結合しているようです。

  • HassanBlend
  • PFG
  • PurePornPlus

HassanBlendは、次の記事で解説しています。

PFGについても、次の記事で取り上げています。

PurePornPlusについては、知りませんでした。
これらは、すべて解剖学ベースのモデルと言われています。

要するに、人体を描画するのが上手いモデルということです。
そして、その利用目的は主にNSFWなコンテンツ生成になります。

もちろん、それを目的に利用するのもありでしょう。
しかし、ここではそれらのモデルの副産物に注目します。

副産物とは、生成される女性が美しいということです。
その理由については、別の機会があれば語ってみたいと思います。

とにかく、解剖学ベースのモデルでは美しい女性の画像を生成できるのです。
その確率が高いと言った方が、適切かもしれません。

以下は、実際にHyperanatomy MegaMergeで作成した画像です。

このような画像が、簡単に作成できます。
それも、顔に偏りがあまりないんですよね。
これが、混合モデルの良さなのかもしれません。

以上、Hyperanatomy MegaMergeについて説明しました。
次は、Hyperanatomy MegaMergeの利用方法を説明します。

Hyperanatomy MegaMergeの利用方法

Stable Diffusionを動かせる環境が、大前提となります。
Google Colabではなくローカル環境で動かす場合は、次の記事が参考になります。

上記記事に従えば、自ずとDiffusersをインストールすることになります。

この記事では、Diffusersでの利用を対象としています。
Stable Diffusion web UI(AUTOMATIC1111版)だと、ファイルを設置するだけです。

まずは、モデルのダウンロードが必要となります。
そのために、Civitai上の公式ページにアクセスする必要があります。

Hyperanatomy MegaMergeについては、ダウンロードにアカウントが必要です。
詳細は、次のページを参考にしてください。

ログインすると、ページ上のダウンロードボタンを確認できます。

モデルは、Safetensor形式で配布されています。
Safetensor形式のcheckpointをDiffusersで利用するためには、工夫が必要です。

その工夫については、次の記事で解説しています。

変換には、次のコマンドを用いました。

python convert_diffusers20_original_sd.py ..\..\ckpt\hyperanatomyMegaMerg_hyperanatomyMegaMerg.safetensors  ..\..\model\hMM   --v1 --reference_model runwayml/stable-diffusion-v1-5

変換したモデルを利用するには、モデルのパスを指定します。

from diffusers import StableDiffusionPipeline, EulerAncestralDiscreteScheduler

model_id = "./model/hMM"
device = "cuda"

pipe = StableDiffusionPipeline.from_pretrained(model_id, custom_pipeline="lpw_stable_diffusion")
pipe.scheduler = EulerAncestralDiscreteScheduler.from_config(pipe.scheduler.config)
pipe = pipe.to(device)

prompt = "(insanely detailed, bloom:1.5), ((solo)), (highest quality, Alessandro Casagrande, Greg Rutkowski, Sally Mann, concept art, 4k), (colourful), (high sharpness), ((detailed pupils)), red eyes, ((painting:1.1)), (digital painting:1.1), detailed face and eyes,Masterpiece, best quality, highly detailed photo:1, 8k, detailed face,photorealistic, (black Hair,ponytail hair cut, ecstatic:1.1),(18yo woman:1),By jeremy mann, by sandra chevrier, by maciej kuciara, sharp, ((perfect body)), realistic, real shadow, 3d, ((silver jacket)), ((black leather skirt)), (black sexy obsessive bra), ((full body)), ((cyberpunk night city background)), (by Michelangelo)"
negative_prompt = " (bad art, low detail, pencil drawing, old, mature:1.6), (plain background, grainy, low quality, mutated hands and fingers:1.5), (watermark, thin lines:1.3), (deformed, signature:1.2), (big nipples, blurry, ugly, bad anatomy, extra limbs, undersaturated, low resolution), disfigured, deformations, out of frame, amputee, bad proportions, extra limb, missing limbs, distortion, floating limbs, out of frame, poorly drawn face, poorly drawn hands, text, malformed, error, missing fingers, cropped, jpeg artifacts, teeth, unsharp, breasts out, nipples"

image = pipe(
    prompt,
    num_inference_steps=30,
    guidance_scale=7,
    width=512,
    height=704,
    negative_prompt=negative_prompt,
    max_embeddings_multiples=2
).images[0]

image.save("test.png")

上記を実行すると、次のような画像が生成されます。

上記のプロンプトは、Redditのスレッドで公開されていたモノを利用しています。
VAEを使うと、画質が上がります。

また、プロンプトが長いため「lpw_stable_diffusion」を利用しています。
この辺については、次の記事で解説しています。

以上、Hyperanatomy MegaMergeの利用方法を説明しました。

タイトルとURLをコピーしました