2
2

StableDiffusion APIから画像生成してみる。

Last updated at Posted at 2024-03-17

はじめに

naritomoと申します。

本職はインフラエンジニアを行っています。

最近生成AI(StableDiffusion)にハマり、外部PCからAPIをキックし画像入手するプログラムを作ってみました。

概要

StableDiffusion APIから画像を入手するためのプログラムを動かす。

必要なソースは以下にまとめてあります。

参考URL

Stable Diffusion (AUTOMATIC1111) をAPIで操作する ~WEB UI不要で任意のサービスと連携~

事前作業

StableDiffusionインストール

以下のサイトを参考にローカルPCへStableDiffusionを導入する。

【Stable Diffusion Web UI】Windowsにダウンロード・インストールする方法

  • RTX3060導入WindowsPC利用をおすすめします

StableDiffusion使い方

Stable Diffusionでアニメ系美少女を作る方法!呪文(プロンプト)やモデルも

  • あらかじめここで操作方法の理解をすることをおすすめします

API有効化

【Stable Diffusion】API経由で画像を大量に生成する方法

  • Stable Diffusion web UI を起動するの起動オプションに"--api"をつける

ローカルネットワーク上のAUTOMATIC1111に別マシンからアクセスする

  • Stable Diffusion web UI を起動するの起動オプションに"--listen"をつける

SDXL利用方法(こちらの利用をおすすめします。)

Stable Diffusionの新モデル『SDXL』の使い方!導入方法も紹介

  • Stable Diffusion XL(高解像度画像生成AI)使用方法になります

使用方法

事前作業ができればどこのPCから操作しても問題ありません。

python,requestsを導入しておくこと。

Pythonのインストール方法

【Python】Requestsをインストールする方法

ソース入手

以下のgitコマンドで入手する。

git clone https://github.com/naritomo08/CreateAI_API.git
cd CreateAI
rm -rf .git

URL設定

以下のファイルを開き、最初にある以下の行のIPアドレスをStableDiffusionが動いているPCIPに変更する。

vi vae_check.py
vi model_check.py

url = "http://IPアドレス:7860"
→上記のIPアドレスを変更する。

利用モデル確認

以下のコマンドを入力し、モデル情報,VAE情報を確認する。

python3 model_check.py
cat output/sd_model.txt
→使用するモデルの行を控える。

python3 vae_check.py
cat sd_vae.txt
→使用するvaeの行を控える

画像生成プログラム準備

以下のコマンドを入力し、準備を行う。

vi script_SD/base.py
vi script_SDXL/base.py
→StableDiffusion(SD)用、StableDiffusionXL(SDXL)用でそれぞれ編集する。

url = "http://IPアドレス:7860"
→IPアドレスはStableDiffusionが動いているPCのIPを指定すること。

vae = "vae名(前項で調べた対象VAE名)"
→使用するVAE名を控える。

model = "モデル名(前項で調べた対象モデル名)"
modelname = "モデル名(ファイル名に記載する適当なモデル名)"
→前の手順で控えたモデル名を貼り付ける。

script = "(score_9, score_8_up, score_7_up, BREAK source_anime, rating_explicit), (best quality, masterpiece, uncensored, high quality, ultra detailed, extremely detailed CG,beautiful face, beautiful eyes, beautiful hair, kawaii),(1girl,solo), blue hair,long hair,straight hair,red eyes,long eyelashes,drooping eyes,mediun breasts,school_uniform,skirt,street,full body,standing"

negative = "(zPDXL,score_4,score_5,score_6,source_pony),(source_furry,source_cartoon,lowres,bad anatomy,bad hands,censored,text,error,missing fingers,extra digit,fewer digits,cropped,worst quality,low quality,normal quality,jpeg artifacts,signature,watermark,username,blurry,artist name,messy color,deformed fingers,bad,distracted,hyper realistic),(nsfw,nude,nippless,public hair,revealing clothes,bed,on bed,bed room,private parts,take off clothes)"

→必要に応じ、上記生成パラメータを変更する。

上記以外にパラメータはあるが必要に応じ、変更してください。

画像生成プログラム稼働

以下のコマンドを入力し、画像生成する。

python3 script_SD/create_capt.py (出力したい画像枚数)
python3 script_SDXL/create_capt.py (出力したい画像枚数)

指定しない場合1枚出力されます。

ls output/yyyy-mm-dd/
→画像ファイルが出力されていることを確認する。

絵の構図を変えずに細かい状態を変えたい場合

画像生成してくると、絵の構図を変えずに服装など変えたくなる場合、
seed値を取得したくなるかと思いますが、簡単な方法として
ブラウザでhttps://ローカルIP:7860に移動して生成AI
Web画面から確認できます。

ただし、PNGファイルでのみ可能。

Stable DiffusionでSeedの使い方について分かりやすく解説!

PNGからjpgへの変換

PNGだとファイル容量が大きいため、JPEGへ変換したい際は以下の手順で変換できる。

以下のコマンドで必要モジュールを導入する。

pip3 install pillow

変換したいファイルをoutput/pngフォルダへ保管する。

変換を実施すると元ファイルを削除してしまうため注意。

以下のコマンドを入力し変換を行う。

python3 convert_jpg.py
ls output/jpg
→変換した画像ファイルが出力されていることを確認する。

おわりに

この記事がStableDiffusionを扱う方の助けになればと思います。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2