見出し画像

StableDiffusionのBracingEvoMixとBRAV6を比較する

先日、Pythonの開発環境を最新版にするついでに紹介してきたPythonコードが動くか確認したところ、StableDiffusionの内容がかなり古く、動かなくなっていました。そこで学習モデルをBracingEvoMixに差し替えて作り直しましたところ、とんでもなく進化していることを実感しました。

そこで今回は2023/7/7にリリースされたばかりの学習モデルであるBRAV6も試したいと思います。BRAV6というのはBeautiful Realistic Asians version 6の略だそうです。アジア系の人物画像の生成を得意としているということでしょう。

2023/7下旬にStableDiffusion自体がStableDiffusionXLにアップデートされるということで、この1年で凄まじい成長を見せてきた各種学習モデルの対応も気になるところです。しかし、まさにいまがStableDiffusionとしては最も成熟されているのではないでしょうか。

今回は早速BracingEvoMixと同じパラメータを与えてBRAV6で画像生成し、どのような違いが出るか確認しました。

1. パソコンのセットアップ

StableDiffusionをパソコンで動かす設定は方法は、下記記事を参照いただけると幸いです。「4.パソコンを利用する」で紹介した手順でパソコンに設定すれば使うことができます。

2. BRAV6のダウンロード

BRAV6を以下のサイトからダウンロードします。ダウンロードしたBrav6.safetensorsはPythonコードと同じフォルダにコピーします。

3. BRAV6で画像生成する

以下のPythonコードで画像生成します。BracingEvoMixを使った画像生成との違いは、model_idにBrav6.safetensorsを指定する部分のみです。

from diffusers import StableDiffusionPipeline, EulerAncestralDiscreteScheduler
import torch

seed = 123
steps = 35
scale = 7.0

model_id = "Brav6.safetensors"

pipe = StableDiffusionPipeline.from_ckpt(model_id, load_safety_checker = False, extract_ema = True, torch_dtype = torch.float16)
pipe.scheduler = EulerAncestralDiscreteScheduler.from_config(pipe.scheduler.config)
pipe.load_textual_inversion("sayakpaul/EasyNegative-test",weight_name="EasyNegative.safetensors", token="EasyNegative")
pipe.to("cuda")

prompt = "((masterpiece:1.4, best quality)), ((masterpiece, best quality)),  (photo realistic:1.4), woman, female, Beautiful face, happy, smile, bright eyes,"
negative_prompt = "Easy Negative (worst quality:2) (low quality:2) (normal quality:2) lowers normal quality ((monochrome)) ((grayscale)),nsfw, flat color, flat shading,retro style, poor quality, bad face, bad fingers, bad anatomy, missing fingers, low res, cropped, signature, watermark, username, artist name, text"
generator = torch.Generator(device="cuda").manual_seed(seed)

image = pipe(prompt = prompt, negative_prompt = negative_prompt, generator = generator, num_inference_steps = steps, guidance_scale = scale, width = 768,height = 768,).images[0]
image.save(f"./step{steps}_seed{seed}.png")

学習モデル以外の設定はすべて同じ設定で画像生成しました。どちらも素晴らしい完成度だと思います。まだBRAV6で多く生成していないので言いきれないところはありますが、BRAV6の方がタッチが軽い感じがあります。

(左)BRAV6 (右)BracingEvoMix

その後、プロンプトを変えながら画像を生成しましたが、私の指定が細やかでないこともあると思いますが、BRAV6はプロンプトを追加すると、すぐにヨーロッパ系の顔立ちに変わる印象を受けました。このあたりはBracingEvoMixの方が要求を汲んでくれる印象があります。

いいなと思ったら応援しよう!