筆者が思うオーソドックスな呪文
モデル | 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
Controlnet導入
Haggingface
Openposeのmodelの箇所で先ほどDLしたファイルが扱えることを確認
ポージングしている画像を試しにドロップ
-
Enable
にチェック -
Preprocessor
でopenpose
選択 -
Model
でcontrol_openpose...
を選択
これでいつも通り画像を生成してみる。
ポージングしている女性と、
棒人間みたいな画像が生成される。
手をクロスしている画像はAIにとっては難しいかな?
openpose_full
顔や指まで表現しようとしている。
こちらのほうが有能なのかな?
canny
線画生成ね
openpose-Editor
インストール
初期状態こんな感じ
Detect from Image
を押下したら画像選択タブが開くので、
先ほどの手クロス画像をインポートしてみよう
棒人間が画像を検出してくれた!
ここから微調整
こんな感じか。PresetをSaveしておく。
Send to txt2img
か...
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方式
学習素材の内容を特定のワードに紐づけするやり方
含まれた全要素を機械的に学習してしまう。
→着せ替えやシチュエーションの融通が利きにくくなる。
素材を置くフォルダに特殊な命名規則があるので、
その仕組みを理解する必要がある。
DB(DreamBooth) キャプション方式
素材に加えてその内容を記したテキストファイルを添付する方法
記述する内容によってどこまで学習させるかを調整できるため、
融通が利くのが特徴。
要素に合わせて、服装LoRAや、顔LoRAなど、
素材から何を学習させるかを調整しやすい。
ファインチューニング方式
作ったキャプションからさらにメタデータを作成する
上級者的なやり方らしい。。。
キャプション方式での強化学習
キャプション方式に必要なもの
- 学習素材(教師画像)
- 正則化画像(必要な場合のみ)
target_model = 女性
女性 ≠ target_model
ナースのモデルをプロンプトに記載すると
ナースが生成されるけど、
「女性」ってプロンプトで記載しても
ナースを生成するのは違うよ、ってこと。
"ナース"ではない画像を生成する場合は、
LoRAを外してしまえばいいので、不要な場合が多い。
- キャプション(テキスト)
サイズは512~1024あたりが無難
素材置き場を設定
ドライブ内にLoRAファイル置き場を作成。
フォルダ×3
テキスト×2
を新規作成
素材画像をsozai
フォルダに入れ、
01, 02, 03...と連番で命名する
画像からプロンプトを生成する
動画では古いVerのリポジトリが紹介されていた。
上記リポジトリを拡張機能としてインストール
するとtagger
というタブが新規でできる。
Batch from Directory
を選択
この箇所に、読み込むファイルと
LoRAをoutputするファイルを入力する。
ダブルクォーテーションは不要
Additional tags
の箇所にトリガー
となる単語を入力する。
Interrogate
クリック!
outputフォルダを確認すると...
キャプション方式で使用するキャプションが作成される!
キャプションの編集
一つキャプションを開いてみる。
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_dir
をsozai画像フォルダのパス
に書き換える。
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パス |
必要項目を修正したら、以下のようにファイルを修正
- 改行をとって一行文に
- コマンド間はスペースで区切る
こんな感じ
いよいよ、LoRA作成
git-clone で作成したsd-scripts
を開く
sd-scriptsをルートとしてpowershellを開く
シェルを開いたら以下コマンドを実行
./venv/scripts/activate
pip install -r requirements.txt
pip install bitsandbytes-windows
仮想環境がアクティベートされたらcommandline.txt
に
入力した文字列をコピペする。
動画ではpyパッケージのインストール
や
bitsandbytes-windows
のインストールが抜けていたので
pip install
から始まる2行を実行する。
実行、Enter
完了
無事ファイルが作成された。
これが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 |
流石に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 |
↓
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 |
これはなかなかの出来?
20枚くらいでできた。
藤田ニ〇ルみたいな