0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

StableDiffusionでいろいろ試してみる

Last updated at Posted at 2024-02-06

筆者が思うオーソドックスな呪文

モデル Beautiful Realistic Asians
positive (8k, RAW photo, best quality, masterpiece:1.2), (realistic, photo-realistic:1.4) japanese beautiful model upper body 28 years old wearing dress
negative EasyNegative, (worst quality, low quality: 2.0), normal quality, ugly face, unclear eyes, bad mouth, bad anatomy, extra legs, beach, bad anatomy

Real-X

image.png

Controlnet導入

Haggingface

ひとまずcannyopenposeだけ
image.png
↑画像移動先

image.png

Openposeのmodelの箇所で先ほどDLしたファイルが扱えることを確認

image.png

ポージングしている画像を試しにドロップ

image.png

  • Enableにチェック
  • Preprocessoropenpose選択
  • Modelcontrol_openpose...を選択

これでいつも通り画像を生成してみる。

image.png

image.png

ポージングしている女性と、
棒人間みたいな画像が生成される。

手をクロスしている画像はAIにとっては難しいかな?

openpose_full

image.png

プリプロセッサでopenpose_fullを選択してみる
image.png

image.png

顔や指まで表現しようとしている。
こちらのほうが有能なのかな?

canny

image.png

image.png

image.png

線画生成ね

openpose-Editor

image.png

インストール

image.png

初期状態こんな感じ

Detect from Imageを押下したら画像選択タブが開くので、
先ほどの手クロス画像をインポートしてみよう

image.png

棒人間が画像を検出してくれた!
ここから微調整

image.png

こんな感じか。PresetをSaveしておく。

image.png

Send to txt2imgか...

image.png

txt2imgタブからControlNetをEnableにしていないと正しく機能しないかもしれない

Openposeを使って微調整
→微調整をした棒人間をもとに画像を生成する詳しい方法がよくわからない

いろんなポーズのフリー素材まとめサイト
https://www.pakutaso.com/whiteposevol1.html

LoRA 導入

参考
https://www.youtube.com/watch?v=N1tXVR9lplM&t=61s

実行ポリシーの変更

  • windows + R
  • powerchellと入力
  • Ctrl + Shift + Enterで管理者実行
こちらを実行
set-executionpolicy remotesigned

git-clone

こちらを実行
git clone https://github.com/kohya-ss/sd-scripts.git
cd sd-scripts

python -m venv venv
.\venv\Scripts\activate

pip install torch==2.0.1+cu118 torchvision==0.15.2+cu118 --index-url https://download.pytorch.org/whl/cu118
pip install --upgrade -r requirements.txt
pip install xformers==0.0.20

accelerate config

accelerate configコマンドの箇所で注意事項(選択時にカーソルキーを使ってはいけない)などあるので、
上記のGit、README.mdを確認

学習の実行方式の種類

  • DB Class-ID方式
  • DB キャプション方式
  • ファインチューニング方式

参考

DB(DreamBooth) Class-ID方式

学習素材の内容を特定のワードに紐づけするやり方

image.png

含まれた全要素を機械的に学習してしまう。
→着せ替えやシチュエーションの融通が利きにくくなる。

素材を置くフォルダに特殊な命名規則があるので、
その仕組みを理解する必要がある。

DB(DreamBooth) キャプション方式

素材に加えてその内容を記したテキストファイルを添付する方法

image.png

記述する内容によってどこまで学習させるかを調整できるため、
融通が利くのが特徴。

要素に合わせて、服装LoRAや、顔LoRAなど、
素材から何を学習させるかを調整しやすい。

ファインチューニング方式

作ったキャプションからさらにメタデータを作成する

image.png

上級者的なやり方らしい。。。

キャプション方式での強化学習

キャプション方式に必要なもの

  1. 学習素材(教師画像)
  2. 正則化画像(必要な場合のみ)

target_model = 女性
女性 ≠ target_model

ナースのモデルをプロンプトに記載すると
ナースが生成されるけど、
「女性」ってプロンプトで記載しても
ナースを生成するのは違うよ、ってこと。

"ナース"ではない画像を生成する場合は、
LoRAを外してしまえばいいので、不要な場合が多い。

  1. キャプション(テキスト)

サイズは512~1024あたりが無難

素材置き場を設定

ドライブ内にLoRAファイル置き場を作成。
フォルダ×3
テキスト×2
を新規作成

image.png

素材画像をsozaiフォルダに入れ、
01, 02, 03...と連番で命名する

image.png

画像からプロンプトを生成する

動画では古いVerのリポジトリが紹介されていた。
上記リポジトリを拡張機能としてインストール

image.png

するとtaggerというタブが新規でできる。

Batch from Directoryを選択

image.png

この箇所に、読み込むファイルと
LoRAをoutputするファイルを入力する。
ダブルクォーテーションは不要

image.png

Additional tagsの箇所にトリガーとなる単語を入力する。

Interrogateクリック!

outputフォルダを確認すると...
キャプション方式で使用するキャプションが作成される!

キャプションの編集

一つキャプションを開いてみる。

image.png

taggerが画像を分析して、関連する要素をプロンプトに変換してくれた。
この中から 学習させたい要素を削除する

DBキャプション方式ではキャプションから削除した内容が
トリガーに関連付けられて学習される。

素材画像 - キャプション = 学習データ

削除した要素が学習データになるので注意

今回は顔を学習させたいので、
首から上に関連する要素を削除。

animal ears, green hair, glasses, green eyes, cat ears, short hair, hair between eyes...

キャプションを編集し終えたら下記2点をチェック

  • トリガーワードが先頭
  • 改行の無い一行文

一旦素材ファイルとキャプションファイルを
同じフォルダにまとめておく。

datasetconfig を開く

detasetconfig.txtを開く

[general]
[[datasets]]
[[datasets.subsets]]
image_dir = '{sozai画像フォルダのパス}'
caption_extension = '.txt'
num_repeats = 1

image_dirsozai画像フォルダのパスに書き換える。
num_repeatsは繰り返し回数。
素材を何回繰り返し学習するか。

保存時に文字コードUTF8であることを確認する。

保存が終わったらdetasetconfig.txtの拡張子を
tomlに書き換える

commandline を作成

accelerate launch --num_cpu_threads_per_process 1 train_network.py
--pretrained_model_name_or_path={学習に使用するA1111のモデルパス}
--output_dir={outputフォルダパス}
--output_name={outputするファイルの名前}
--dataset_config={detasetconfig.tomlパス}
--train_batch_size=1
--max_train_epochs=10
--resolution=512,512
--optimizer_type=AdamW8bit
--learning_rate=1e-4
--network_dim=128
--network_alpha=64
--enable_bucket
--bucket_no_upscale
--lr_scheduler=cosine_with_restarts
--lr_scheduler_num_cycles=4
--lr_warmup_steps=500
--keep_tokens=1
--shuffle_caption
--caption_dropout_rate=0.05
--save_model_as=safetensors
--clip_skip=2
--seed=42
--color_aug
--xformers
--mixed_precision=fp16
--network_module=networks.lora
--persistent_data_loader_workers

変数 説明
--pretrained_model_name_or_path 学習に使用するA1111のモデルパス
例) C:\StableDiffusion\stable-diffusion-webui\models\Stable-diffusion\beautifulRealistic_v7.safetensors 
--output_dir outputフォルダパス
--dataset_config detasetconfig.tomlパス

必要項目を修正したら、以下のようにファイルを修正

  • 改行をとって一行文に
  • コマンド間はスペースで区切る

image.png

こんな感じ

いよいよ、LoRA作成

git-clone で作成したsd-scriptsを開く
sd-scriptsをルートとしてpowershellを開く

image.png

シェルを開いたら以下コマンドを実行

./venv/scripts/activate
pip install -r requirements.txt
pip install bitsandbytes-windows

仮想環境がアクティベートされたらcommandline.txt
入力した文字列をコピペする。

動画ではpyパッケージのインストール
bitsandbytes-windowsのインストールが抜けていたので
pip installから始まる2行を実行する。

image.png

実行、Enter

image.png

完了

image.png

無事ファイルが作成された。
これがLoRAファイル

このファイルをモデルフォルダに配置し、
プロンプトにトリガーワードを含めて実行してみる。

モデル lora-ja-actress-model(自作)
positive (8k, RAW photo, best quality, masterpiece:1.2), (realistic, photo-realistic:1.4) japanese beautiful model upper body 20 years old wearing dress, lora-ja-actress
negative EasyNegative, (worst quality, low quality: 2.0), normal quality, ugly face, unclear eyes, bad mouth, bad anatomy, extra legs, beach, bad anatomy

image.png

流石に5枚+1回強化学習では上手くいかないね💦

別記事でLoRAで遊んでみる。

過学習

同じような素材を学習しすぎるとべたべたになってしまう。

素材枚数 × 繰り返し回数 × エポック(周)

エポック…素材フォルダを何周するか。
例) 5 * 10 * 10
5枚の素材の学習を10回繰り返し
そのセットを10周するという意味。

ステップ
= (素材枚数 × 繰り返し回数 × エポック) / バッチサイズ

最初は300~500ステップを目安に生成してみるのがおすすめとのこと。

マシンパワーがあり、学習強度を上げたい場合

  • 繰り返し回数&エポック ↑
  • --save_every_n_epochs=N
    エポック毎書き出し?

適当に呪文を唱えて遊んでみる

このモデル。
個人的に色合いとかが好きで、本物の人みたい。

モデル Beautiful Realistic Asians
DL URL https://civitai.com/models/25494/beautiful-realistic-asians?modelVersionId=177164
positive Cinematic Photo of a beautiful korean fashion model bokeh train
negative (worst_quality:2.0) (MajicNegative_V2:0.8) BadNegAnatomyV1-neg bradhands cartoon, cgi, render, illustration, painting, drawing

korean → 日本人に変えてうまくやりたい

「最強呪文」と調べてみて、いろいろ試してみた

参考

プロンプト
positive (8k, RAW photo, best quality, masterpiece:1.2), (realistic, photo-realistic:1.4), (extremely detailed 8k wallpaper), sharp focus, depth of field, blur background, bokeh, cinematic lighting, night, upper body, 30 years old cute actress, short hair, smile
negative EasyNegative, (worst quality, low quality: 2.0), normal quality, ugly face, unclear eyes, bad mouth, bad anatomy, extra legs, beach, bad anatomy

image.png

50枚目くらいで港区OLみたいなのができた。

next...

プロンプト
positive (8k, RAW photo, best quality, masterpiece:1.2), (realistic, photo-realistic:1.4), (extremely detailed 8k wallpaper), sharp focus, depth of field, blur background, bokeh, cinematic lighting, night, upper body shot, 25 years old cute japanese actress, long hair, smile with a cat
negative EasyNegative, (worst quality, low quality: 2.0), normal quality, ugly face, unclear eyes, bad mouth, bad anatomy, extra legs, beach, bad anatomy

image.png

これはなかなかの出来?
20枚くらいでできた。
藤田ニ〇ルみたいな

0
1
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
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?