【Stable Diffusion】人体の描画に特化したF222モデル

【Stable Diffusion】人体の描画に特化したF222モデル 機械学習

「Stable Diffusionで人体を上手く描くようにしたい」
「現実にいるような美人の画像をStable Diffusionで生成したい」

このような場合には、F222モデルがオススメです。
この記事では、Stable DiffusionでF222モデルを利用する方法を解説しています。

本記事の内容

  • F222モデルとは?
  • F222モデルの利用方法

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

F222モデルとは?

F222とは、解剖学的に人体を上手く表現できるStable Diffusionモデルのことです。
主に、女性をベースにして学習が行われています。

そのため、F222モデルを使うと次のような画像を作成できます。

これだけではそこまで解剖学的に正しいかどうかはわかりません。
もっとわかりやすい画像は、note上のページで確認してください。

かなり解剖学的に人体に近いです。
つまり、より人間らしい画像を生成することが可能になります。

手についても、そこまで大崩れはしません。
気になる場合は、手だけ修正もありでしょう。

F222モデルの場合でも、プロンプトは重要です。
そうだとしても、素のStable Diffusionでこのレベルの画像は難しいかもしれません。

あと、F222モデルは他のモデルと結合する用途で利用されることがあります。
例えば、Waifu DiffusionとF222モデルを合体させるということです。

そうやって作成したモデルでは、人体をより描きやすくなります。

以上、F222モデルについて説明しました。
次は、F222モデルの利用方法を説明します。

F222モデルの利用方法

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

ここでは、AUTOMATIC1111のようなツールからの利用は対象にしていません。
Diffusersからの利用が対象となっています。

F222モデルは、次のサイトで配布されています。
モデルの作成元でもあるようです。

Zeipher AI – Dreambooth Models
https://ai.zeipher.com/

やや怪しいサイトで警戒してしまいます。
このサイトには、モデルのダウンロードページのリンクがあります。

しかし、ダウンロードページとなるMEGAのページがとても遅いです。
正直、全く使えません。

そのため、Hugging Face上のページを利用することをオススメします。
https://huggingface.co/Reachout/F222/tree/main
https://huggingface.co/acheong08/f222/tree/main

「f222.ckpt」が、F222モデルのファイルになります。
どちらをダウンロードしても構いません。

両方とも全く同じファイルになります。

ファイルがダウンロードできたら、次はDiffusersから利用できるように変換しましょう。
ckptファイルをDiffusersで利用するための方法は、次の記事で解説しています。

「f222.ckpt」の変換先は、次のようにしています。

ここまで準備できたら、次のコードを試しましょう。

from diffusers import StableDiffusionPipeline
import torch

model_id = "./model/f222"
pipe = StableDiffusionPipeline.from_pretrained(model_id, torch_dtype=torch.float16)
pipe = pipe.to("cuda")

# ====ここから====
def null_safety(images, **kwargs):
    return images, False


pipe.safety_checker = null_safety
# ====ここまで====

prompt = "highly detailed photography, spring, portrait of beautiful blonde woman standing in a park, ((top and miniskirt)), perfect face, perfect body, large breasts, slightly thin skin, ((sharp focus)), photo by Annie Leibovitz, intricate, natural lighting, high quality, 4k, cover photo"
negative_prompt = "((out of focus body)), ((out of focus face)), ((((ugly)))), (((duplicate))), ((morbid)), ((mutilated)), [out of frame], extra fingers, mutated hands, ((poorly drawn hands)), ((poorly drawn face)), (((mutation))), (((deformed))), ((ugly)), blurry, ((bad anatomy)), (((bad proportions))), ((extra limbs)), cloned face, (((disfigured))), out of frame, ugly, extra limbs, (bad anatomy), gross proportions, (malformed limbs), ((missing arms)), ((missing legs)), (((extra arms))), (((extra legs))), mutated hands, (fused fingers), (too many fingers), (((long neck)))"

image = pipe(
    prompt,
    num_inference_steps=50,
    guidance_scale=10,
    negative_prompt=negative_prompt,
    width=512,
    height=512
).images[0]

image.save("test.png")

プロンプトとネガティブプロンプトは、そこそこ長いです。
F222モデルでは、プロンプトをしっかり書く必要があります。

そうしないと、次のような美人を描いてくれません。
この画像は、上記コードを実行した結果です。

なお、上記コードではNSFWフィルターを回避するように工夫しています。
NSFWフィルターの回避については、次の記事をご覧ください。

以上、F222モデルの利用方法を説明しました。

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