はじめに
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を導入しておくこと。
ソース入手
以下の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を扱う方の助けになればと思います。