【Stable Diffusion】HentaiDiffusionを使う方法

【Stable Diffusion】HentaiDiffusionを使う方法 機械学習

「ckptをモデルとして読み込む方法がわからない・・・」
「HentaiDiffusionの情報が少なくて困っている・・・」

このような場合には、この記事の内容が参考になります。
この記事では、HentaiDiffusionを使う方法を解説しています。

本記事の内容

  • HentaiDiffusionとは?
  • HentaiDiffusionの効果
  • HentaiDiffusionの利用方法
  • HentaiDiffusionの呪文

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

HentaiDiffusionとは?

追記 2022年11月25日
Hentai Diffusion 17については、次の記事で説明しています。

HentaiDiffusionは、Stable Diffusionのモデルです。
そして、HentaiDiffusionはWaifu Diffusion 1.2をベースに作られています。

Waifu Diffusionについては、次の記事で解説しています。

HentaiDiffusionについては、もう公式と言えるものがありません。
GitHubでは、利用規約違反で削除されたようです。

GitHub上の元ページ
https://github.com/Delcos/HentaiDiffusion

ただし、Googleのキャッシュがまだ利用できます。
(※今後、キャッシュが消える可能性は多いにあり)

折角なので、モデルの説明を翻訳しておきましょう。

このモデルは、Waifu Diffusion 1.2をベースに、R34とgelbooruの15万枚の画像で学習させたものです。 
しゃがむ、顔を背けるなど、よりわかりにくいポーズを重点的に学習させ、手の改良にも力を入れています。 
プロンプトにサイト内のタグを使用することが推奨されています。プロンプトの最初に1girlを追加すると、より良い結果を得ることができます。

つまり、Waifu Diffusion 1.2とHentaiDiffusionとの違いは15万枚の画像ということです。
その15万枚は、次のサイトから取得したと記載されています。

サイトURL
R34https://rule34.xxx/
gelbooruhttps://gelbooru.com/

これらのサイトは、「Hentai」度合が強いのでしょう。
わざわざモデルの名称に付けるぐらいですからね。

このように、モデルは派生的に変化していくのでしょう。
結果的に、HentaiDiffusionはWaifu DiffusionにNSFWの要素を加えています。
そのような過激な2次元画像を求める場合には、HentaiDiffusionが効果的となると思われます。

以上、HentaiDiffusionについて説明しました。
次は、HentaiDiffusionの効果を説明します。

HentaiDiffusionの効果

HentaiDiffusionの効果を確認していきます。
その前に、Waifu DiffusionとStable Diffusionの違いを確認しておきましょう。

左が、ノーマルのStable Diffusionで作成した画像です。
右が、Waifu Diffusionで作成した画像になります。

それぞれ、GFPGANによって高画質化しています。

HentaiDiffusionでも同じ条件によって画像を作成してみましょう。
用いたプロンプト(呪文)は、以下。

cute girl with pink hair | | very very anime!!!, fine - face, symmetry face, fine details. anime. realistic shaded lighting poster by sakimichan, kidmo, trending on pixiv, magali villeneuve, artgerm, jeremy lipkin and michael garmash and rob rey

上記の呪文で30枚ほど作成しました。

大崩れした画像は、1枚だけでした。
それ以外では、微妙なものを数枚削除したぐらいです。

この中から、2枚だけピックアップしたのが以下。
個人的に「Hentai」を表していると感じたモノです。

明らかに、Waifu DiffusionともStable Diffusionとも表情が異なります。
同じ呪文であるにも関わらずにです。

以上、HentaiDiffusionの効果を説明しました。
次は、HentaiDiffusionの利用方法を説明します。

HentaiDiffusionの利用方法

利用方法は、若干面倒です
Waifu Diffusionの場合は、モデル名を変更するだけで済みました。

しかし、HentaiDiffusionにはDiffusers用のモデルが用意されていません。
そのため、自分でckptから変換してDiffusers用モデルを作成する必要があります。

その方法は、次の記事でわかりやすく説明しています。

また、HentaiDiffusionのckptはHugging Face上で配布されています。
https://huggingface.co/Deltaadams/Hentai-Diffusion/tree/main

追記 2022年10月12日
リポジトリのバージョンが変わったようですね。
以下のURLから、過去バージョンのckptがダウンロード可能です。
https://huggingface.co/Deltaadams/Hentai-Diffusion/tree/8397ec1f41aeb904c9c3de8164fec8383abe0559

それぞれの違いは、よくわかりません。
違いについての記述は、どこにも見当たりませんでした。

とりあえず、GitHub上でも公開された「RD1212.ckpt」をダウンロードすればよいでしょう。
Diffusers用のモデルが作成できたら、次のコードで画像が作成可能です。

import torch
from diffusers import StableDiffusionPipeline
from torch import autocast

MODEL_PATH = "./model/hentai" 
DEVICE = "cuda"

pipe = StableDiffusionPipeline.from_pretrained(MODEL_PATH, torch_dtype=torch.float16)
pipe.to(DEVICE)

prompt = "cute girl with pink hair | | very very anime!!!, fine - face, symmetry face, fine details. anime. realistic shaded lighting poster by sakimichan, kidmo, trending on pixiv, magali villeneuve, artgerm, jeremy lipkin and michael garmash and rob rey"


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


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

with autocast(DEVICE):
    image = pipe(prompt, guidance_scale=7.5)["sample"][0]
    image.save("test.png")

なお、NSFWフィルターを回避するために工夫をしています。
NSFWフィルターを回避する方法については、次の記事で解説しています。

以上、HentaiDiffusionの利用方法を説明しました。
最後に、HentaiDiffusionの呪文を説明しておきます。

HentaiDiffusionの呪文

消えたGitHubのページでは、11枚の画像が公開されていました。
自主規制で加工しています。

画像はここから確認

もちろん、HentaiDiffusionで作成したとのことです。
では、その呪文は?となりますよね。

Stable Diffusionでは、モデル毎に呪文のクセがあると言われています。
そのため、HentaiDiffusionでの呪文も知っておきたいところです。

どうやらaltにそれっぽいモノが記載されていました。
そこでGoogleキャッシュの機能を活かして、altをあぶり出しましょう。

「テキストのみのバージョン」をクリック。
以下が11枚の画像のaltになります。

どこからが呪文なのでしょうかね?
そう言えば、HentaiDiffusionのGitHub上の説明には次の文言がありました。

プロンプトの最初に1girlを追加すると、より良い結果を得ることができます。

この文言によると、1girl以降が呪文になるのでしょう。
つまり、二つ目の「‐」以降がプロンプトということになります。

呪文として利用されたと思われるプロンプトを以下に載せておきます。

yorha cute face wearing a kawaii hat sitting on a jack-o-lantern 
nude 1girl anime squatting 
yorha 1girl nude squatting 
1girl antenna_hair backpack bag bikini blush breasts bridal_gauntlets bright_pupils choker collarbone condom condom_in_clothes c 
1girl anime nude (public_use) public_humiliation bondage (forced) (hearts added for Github happiness and not in the generation) 
1girl antenna_hair backpack bag bikini blush breasts bridal_gauntlets bright_pupils choker collarbone condom condom_in_clothes c 
1girl antenna_hair backpack bag bikini blush breasts bridal_gauntlets bright_pupils choker collarbone condom condom_in_clothes c 
((Monika)) DDLC, 1girl alternate_costume bangs blue_eyes blue_hair blush_stickers border character_name hat hood hoodie looking_ 
1girl, ass_visible_through_thighs, cow_print, ear_tag 
catgirl nudewith light blue ((fluffy)) hair, (hime cut), with large light blue ((cat ears)) 
anime 1girl miniskirt pussy

ところで、前の数字は何を意味しているのでしょうかね?
それが気になって仕方がありません。

以上、HentaiDiffusionの呪文を説明しました。

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