スポンサーリンク
画像生成AIの火付け役になったStable Diffusion の派生ソフトウェアの、アニメ調の静止画を作成するAimagine XL 3.0を試してみた。
画像生成AIについてのまとめはこちら。
Animagine XL 3.0は静止画を生成するAIブームの火付けになったStable Diffusionをベースに、アニメ調の静止画を生成するAIだ。
動画生成AIほどのリソースを要求しないので、PCにRTX3060を載せたシステムで十分使い物になる。
Stable Diffusion XL同様にプロンプトをインプットとして、期待するような画像を生成してくれる。ただ、思ったような画像にするにはプロンプトに工夫が必要だ。
プロンプトでいろいろな画像ができるが、このAnimagine XL 3.0の特徴は、作品のキャラ名や時代を指定することでそのキャラに似た人物像を描いたり、時代に合わせた作風にできる。
以前のCALM2と似ているので参考に。
すでにインストールしている場合は省略できる。
Pythonのインストール方法は、上述のCALM2の記事を参照。
どこでもいいのだが、仮想環境はいくつもつくると思うので、今回はこうした。
まずコマンドプロンプトを開く。
C:\にPython フォルダを作成する。
c:
cd \
mkdir python
cd python
以下のコマンドで仮想環境を作る。
python3 -m venv Animaginexl3
「Animaginexl3」の個所はどういう名前でも構わない。
仮想環境ができたので、有効にする。
cd Animaginexl3\Scripts
activate
プロンプトに(Animaginexl3)と仮想環境の名称が先頭につく。
公式ページの指示に従って、pipコマンドを使ってpythonのライブラリをダウンロードする。
pip install diffusers –upgrade
pip install transformers accelerate safetensors
この辺り試行錯誤したので誤っているかもしれないが、Stable Diffusion XLをインストールしている環境なら追加でダウンロードは不要のようだ。
CALM2やMagicAnimateのような、アプリを起動したらWEBが表示されてここで操作できるというUIは用意されていない。
先の公式ページにあるのは簡単なプログラムだ。
WEBに書かれているコードをベースに、プロンプトはそのままで作ってみた。最近のアニメのキャラ、Vサインなどがプロンプトに入っている。
プログラムはファイルにセーブする処理が書かれてないので、前回のOPEN DALLEのときと同様に処理を追加した。
import torch
from diffusers import (
StableDiffusionXLPipeline,
EulerAncestralDiscreteScheduler,
AutoencoderKL
)
import datetime
# Load VAE component
vae = AutoencoderKL.from_pretrained(
"madebyollin/sdxl-vae-fp16-fix",
torch_dtype=torch.float16
)
# Configure the pipeline
pipe = StableDiffusionXLPipeline.from_pretrained(
"cagliostrolab/animagine-xl-3.0",
vae=vae,
torch_dtype=torch.float16,
use_safetensors=True,
)
pipe.scheduler = EulerAncestralDiscreteScheduler.from_config(pipe.scheduler.config)
pipe.to('cuda')
# Define prompts and generate image
prompt = "1girl, arima kana, oshi no ko, solo, upper body, v, smile, looking at viewer, outdoors, night"
negative_prompt = "nsfw, lowres, bad anatomy, bad hands, text, error, missing fingers, extra digit, fewer digits, cropped, worst quality, low quality, normal quality, jpeg artifacts, signature, watermark, username, blurry, artist name"
Loop = 20
image = pipe(
prompt,
negative_prompt=negative_prompt,
width=832,
height=1216,
guidance_scale=7,
num_inference_steps=28
).images[0]
for loop in range(Loop) :
image = pipe(prompt,
negative_prompt=negative_prompt,
width=832,
height=1216,
guidance_scale=7,
num_inference_steps=28
).images[0]
image.show()
dt_now = datetime.datetime.now()
month = "00"+str(dt_now.month)
day = "00" + str(dt_now.day)
hour = "00" + str(dt_now.hour)
min = "00" + str(dt_now.minute)
sec = "00" + str(dt_now.second)
filename = str(dt_now.year)+month[-2:] + day[-2:] + hour[-2:] + min[-2:] + sec[-2:]
image.save(filename + ".png")
※CSSの設定により段落ごとに字下げになっていますが、コピー&ペーストすれば字下げは反映されないことに注意。
公式ページに掲載のサンプルのプロンプトで作った画像に1つがこれ。
このままではStable Diffusionと同じなのだが、ユニークな機能があるので紹介する。
プロンプトに時代を示すキーワードを入れる。キーワードはWEBに書かれている。
Year Tag | Year Range |
---|---|
newest | 2022 to 2023 |
late | 2019 to 2021 |
mid | 2015 to 2018 |
early | 2011 to 2014 |
oldest | 2005 to 2010 |
一番古い、oldestとram-chanをプロンプトに入れてみた。
できた絵はこちら。うーん、角があるところかな。鬼というより羊だが。
プロンプトを女の子ではなく、ガンダムあたりにしたらどうだろう。
勇ましいガンダムの絵ができるかと思ったら、女の子がガンダムの鎧を着た、どこかで見たことがあるようなものになった。
そうか。確かにガンダムチックではあるが。
Stable Diffusion XLベースで美少女アニメ調の画像を作る人には向いたものだ。
ちょっと自分の趣味ではなかったかな。この調子でアメコミ調のもの、北斗の拳調のもの、なんかが出てくるのかな。
PR