Like AC/DC
This is a tool to generate ControllNet materials. This tool is a mod of Koikatsu Sunshine.
It differs from its predecessor's great tool in the following ways
- It can take multiple (color, canny, normal, depth) screenshots at the same time.
- It runs in FreeH mode.
- It does not have OpenPose and hand functionality.
- It does not work with anything other than KKS right now.
This tool is in beta.
It works for now, so I released it to the public.
How to use:
Copy the attached DLL to [illusion\KoikatsuSunshine\BepInEx\plugins].
Search for [KKS_ControlNetMaterialGenerator] in plugin/mod settings
Assign [Toggle GUI Window] to any key. Assign [Screen shot] if necessary.
Take a screen shot while tweaking the settings.
man with tattoos on face
safetensors 文件的 metadata 字段可能保存了模型的训练数据,包括学习率、数据集重复次数等参数,使用本脚本可以直接从 civitai.com 的模型页面导出模型的 metadata。
This is a simple script that allows you to export the metadata of .safetensors files on civitai.com. The metadata may include some training parameters such as learning rate and dataset repetition etc and you can use these parameters for your project or anywhere you want.
使用方法 / Usage
1. 安装油猴扩展 / Install Tampermonkey
2. 从 GreasyFork 或者 Github 安装脚本 / Install my script from GreasyFork or Github
3. 刷新网页,进入一个模型页面 / Refresh the page and go to a model page
在按钮旁边应该有个复制按钮 / You can see there is a copying button alongside the download button
4. 点击该按钮即可导出模型的 metadata / Click the copying button and then you can export the metadata of the model
5. metadata 中可能有用的 keys / useful keys of metadata
"ss_learning_rate": 学习率,控制模型训练时权重更新的速度。
"ss_num_epochs": 训练的总 epoch 数,指定模型将对数据集进行多少次完整的训练循环。
"ss_num_train_images": 训练图像数,指定用于训练的图像数量。
"ss_text_encoder_lr": 文本编码器学习率,控制文本编码器网络在训练过程中的权重更新速度。
and more!
如果你觉得这个脚本对你有帮助的话可以点个 star / Please give me a star if you think this script is useful :).
从其它网站读取 .safetensors 文件的 metadata
见 SafetensorsHeaderReader 类
Voice model for so-vits-svc of Sergey Shnoorov
Voice model of Valery Kipelov
I spent quite a while toiling over calculations for how many steps it would take for my LoRAs to cook and, by extension, how long it would be, until I decided to make a sheet for it and then, I realized how useful it would be to share it with others. So, here you all go!
These nodes were made for use in the Comfyroll Template Workflows.
https://civitai.com/models/59806/comfyroll-template-workflows https://civitai.com/models/85619/comfyroll-pro-template
They can be used in any ComfyUI workflow.
Install from Download
Place the zip file in \ComfyUI\custom_nodes\ and unzip
Move the zip file to an archive folder
Restart ComfyUI
Install from Git
cd custom_nodes
git clone https://github.com/RockOfFire/ComfyUI_Comfyroll_CustomNodes.git
Restart ComfyUI
Logic
CR Image Input Switch
CR Image Input Switch (4 way)
CR Latent Input Switch
CR Conditioning Input Switch
CR Clip Input Switch
CR Model Input Switch
CR ControlNet Input Switch
IO
CR Load LoRA
CR Image Size
Maths
CR Integer Multiple
Number
CR Seed to Int
comfyanonymous/ComfyUI - A powerful and modular stable diffusion GUI.
WASasquatch/was-node-suite-comfyui - A powerful custom node extensions of ComfyUI.
更新中のため記述に誤りがあるかもしれません
AI素人です
知識はそんなに深くないので難しい事はあまり書かないです
download数が増えるとたぬきが喜びます good(💛)が増えるとたぬきのHPが回復します
rating(☆)が増えるとたぬきのモチベーションが上がります
LLMのfinetuning(LoRA)にも手を付けましたが環境構築で躓いたので
ここにガイド?メモ?でも書こうかと思いました。
拡張は需要あるかなあ?controlnetとかは他の人のが詳しいし
使う予定が無いのです。
tiled diffusionとかはやってみたいですけど時間が掛かるから
それほど多用出来ないなあという印象です。
ざっくりとした説明
stablediffuisonというソフトで使われている学習済モデル(pretraind model 5GBくらい)そのままでは新しい絵が出せないので追加で学習させたい。
でもデータ全体が変更される学習方法だとすごく大変なのでLoRAっていう限定的な学習方法で現実的なコスト(データ量・計算時間)で出来るようになったよ!
新しい絵を学習させて、それが使えるようになるという理解。
https://qiita.com/ps010/items/ea4e8ddeff4de62d1ab1
Stable Diffusionの特徴は、次の3つです。
Stable Diffusionは、最近流行の Diffusion Model(拡散モデル)をベースとしたtext-to-imageの画像生成モデルです
VAEでピクセル画像を潜在表現に変換することで、モデルの軽量化に成功しました
U-Netを用いた画像生成の条件づけにText EncoderのCLIPを使用します
https://dosuex.com/entry/2023/03/30/115101
近年、LLM(大規模言語モデル)が多くの自然言語処理タスクで顕著な成果を上げています。一般的に、これらのモデルは非常に多くのパラメータを持っており、特定のドメインやタスクへの適応を行う際には、大量のデータと計算リソースが必要となることが課題となっています。また、モデルのサイズが大きくなることで、デバイスのメモリや計算能力が制約される環境での使用が困難になる場合もあります。
LoRA(Low-Rank Adaptation)は、この課題に取り組むためにMicrosoftによって開発されました。LoRAの目標は、LLMのパラメータを低ランク行列で近似することにより、適応の際に必要な計算量とメモリ使用量を大幅に削減し、タスクやドメイン固有のデータで迅速かつ効率的にモデルを微調整することができるようにすることです。これにより、LLMをより実用的で効果的なツールに進化させることが期待されています。
元々LLMの学習コストを下げる為に考えられた方法をstablediffusionに応用したという感じ?
------------------------------------------------------------------------------------------------------
閑話休題
学習する為のPCの推奨
OS Win11
CPU 最近のならなんでもよい
RAM 32GBくらいあれば動くはず
SSD 読み書きが早くなります
GPU GeforceRTX VRAM8GBが最低ライン、6GBは設定を突き詰めれば?、12GB以上あると安心?
Webブラウザ firefoxとchromeとEdgeの最新バージョン
https://www.nvidia.com/ja-jp/geforce/geforce-experience/
git
ダウンロードして実行してインストール
設定は弄らずにそのままでいけた筈
インストール後
パワーシェルで
git
インストールされているのを確認
python
python3.10.6をインストール
https://www.python.org/downloads/windows/
最近のWin11機であれば64bitだと思います。32bitで動かしているのは知らないです。
anaconda3やminicondaはインストールしない想定で書いています。
Windowsストアからもアプリ版のpythonが入れられるようですが確認していません。
解説サイトでも扱いが無いのであまりおすすめ出来ないです。
インストール後、Windowsの検索からpowershellを検索し実行
パワーシェルで
python -V
を実行、バージョンが表示されていればインストールされています。
インストールしてもpythonが見つからない場合はパスの設定がおかしいです。
この場合はPython 3.10.10が入っていますが特に問題無く動いています。
バージョンがだいたいあっていればだいたい動くし動かない事もある
webuiでもsd-scriptでも3.10.6バージョンが安定しているようです。
コマンドプロンプトとパワーシェルは別環境なので、パワーシェルに読み替えて下さい。
コマンドプロンプトを管理者として実行:
PyTorch のページを確認
PyTorch のページ: https://pytorch.org/index.html
次のようなコマンドを実行(実行するコマンドは,PyTorch のページの表示されるコマンドを使う).
次のコマンドは, PyTorch 2.0 (NVIDIA CUDA 11.8 用) をインストールする.
事前に NVIDIA CUDA のバージョンを確認しておくこと(ここでは,NVIDIA CUDA ツールキット 11.8 が前もってインストール済みであるとする).
https://developer.nvidia.com/cuda-11-8-0-download-archive
Windows x86_64 11 exe(local)を選択、赤矢印にダウンロードリンクが出るので落とす
そして実行する
一行ずつ実行していってね!
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
python -c "import torch; print(torch.__version__, torch.cuda.is_available())"
pip installするとだーっと進捗が表示されて終わったらpython -cでtorchがインストールされているのか確認します
torchのバージョン1.13とか1.12とか2.0が表示されたら入っていると思います
エクスプローラーで導入したい場所のフォルダを右クリックして
ターミナルで開く を実行
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git
webui-user.bat
をエクスプローラーから実行
1.をパワーシェルにコピペして実行
処理が終わるとフォルダにwebui-user.batが作られているので実行する
webブラウザから http://127.0.0.1:7860 を開く(http://localhost:7860 でもokな筈)
(設定で自動でブラウザで開くようにも出来ます。)
導入以降はwebui-user.batを実行するようになります。
web-user.batの中身
@echo off
set PYTHON=
set GIT=
set VENV_DIR=
set COMMANDLINE_ARGS=
call webui.bat
VRAM4GB以下向けオプション
VRAM消費量を低減する代わりに速度が犠牲になるとのこと。
set COMMANDLINE_ARGS=--medvram
↑で out of memory が出た場合
set COMMANDLINE_ARGS=--medvram --opt-split-attention
↑でもまだ out of memory が出た場合
set COMMANDLINE_ARGS=--lowvram --always-batch-cond-uncond --opt-split-attention
その他のオプション
--xformers (高速化/VRAM消費減)
torch2.0なら無くても良い 環境による
--opt-channelslast (高速化)
1111のWikiによると、Tensor Coreを搭載したNVIDIA製GPU(GTX16以上)で高速化が期待できるとのこと。
--no-half-vae (画像真っ黒対策)
真っ黒になった時に
--ckpt-dir(モデルの保存先を指定する。)
保存先を変えたい時に
--autolaunch (自動的にブラウザを立ち上げる)
いちいちWebブラウザにアドレスを入れるのが面倒な時に
--opt-sdp-no-mem-attention または --opt-sdp-attention
(Torch2限定
xformersと同じく20%前後高速化し、出力にわずかな揺らぎが生じる。VRAM消費が多くなる可能性がある。
AMD Radeon,Intel Arcでも使える。)
--device-id 0 (複数枚GPUが刺さっている場合に指定する、0から始まる。デフォルトでは0を使う。)
set PYTORCH_CUDA_ALLOC_CONF=garbage_collection_threshold:0.6,max_split_size_mb:24
PytorchでCUDAがメモリを使う時の設定
閾値6割メモリが使われたら 24MB単位でGarbageCollectionするよ(メモリ上の使われていないデータを掃除、消費メモリが減る。のでCUDAがOutOfMemoryを表示して落ちなくなる・・・という願い。)
拡張機能によっては相性が悪かったりするのでreadmeをよく読んで使って下さい!
初期設定で起動すると自動でckptをダウンロードするのでしばらく時間が掛かります
パワーシェルでコマンドが実行出来るように権限を設定
管理者権限でパワーシェルを開く
Set-ExecutionPolicy Unrestricted
と入力しAを打つ
パワーシェルを閉じる
powershellをスタートメニューから検索して右クリックして管理者として実行をクリックしてください
パワーシェルを開いて以下を一行ずつ実行
git clone https://github.com/kohya-ss/sd-scripts.git
cd sd-scripts
python -m venv venv
.\venv\Scripts\activate
pip install torch==1.12.1+cu116 torchvision==0.13.1+cu116 --extra-index-url https://download.pytorch.org/whl/cu116
pip install --upgrade -r requirements.txt
pip install -U -I --no-deps https://github.com/C43H66N12O12S2/stable-diffusion-webui/releases/download/f/xformers-0.0.14.dev0-cp310-cp310-win_amd64.whl
cp .\bitsandbytes_windows\*.dll .\venv\Lib\site-packages\bitsandbytes\
cp .\bitsandbytes_windows\cextension.py .\venv\Lib\site-packages\bitsandbytes\cextension.py
cp .\bitsandbytes_windows\main.py .\venv\Lib\site-packages\bitsandbytes\cuda_setup\main.py
accelerate config
v5以前の場合
https://github.com/derrian-distro/LoRA_Easy_Training_Scripts/releases
.batをダウンロードして配置したいフォルダで実行する
v6の場合
Release installers v6 · derrian-distro/LoRA_Easy_Training_Scripts (github.com)
installer.pyを導入したいフォルダに配置して
ターミナルを開いてパワーシェルで
python installer.py を打ち込み実行
途中色々ダウンロードされるので待ちます
Do you want to install the optional cudnn1.8 for faster training on high end 30X0 and 40X0 cards? [Y,N]?
と聞かれるので30x0/40x0シリーズのグラボを使っている場合はYを入力、それ以外のグラボはNを入力してください
sd-scriptが入りますが設定が終わっていないので
パワーシェルで一行ずつ実行してください
cd sd-scripts
venv\Scripts\activate
accelerate config
共通
accelerate configで次のように答えて下さい
- This machine
- No distributed training
- NO
- NO
- NO
- all
- fp16 (数字キーの1を押してリターンで選びます、矢印キーで操作しようとするとエラーで落ちます)
https://github.com/AUTOMATIC1111/stable-diffusion-webui/releases/tag/v1.0.0-pre
The webui.zip is a binary distribution for people who can't install python and git.
Everything is included - just double click run.bat to launch.
No requirements apart from Windows 10. NVIDIA only.
After running once, should be possible to copy the installation to another computer and launch there offline.
webui.zip は、python と git をインストールできない人向けの環境です。
すべてが含まれています - run.bat をダブルクリックして起動するだけです。
Windows 10 以外の要件はありません。
NVIDIA のみ。
一度実行した後、インストールを別のコンピューターにコピーして、オフラインで起動できるはずです。
使っていないので解説出来ませんが、お手軽そうですね。
Win10の環境が無いので検証できませんので他の方の記事を参考にして下さい。
階層見本
stable-diffusion-webui
┗models
┗lora この中に使用したい学習データを保管します。
LoRAで使用可能なデータは「.safetensors」「.ckpt」の拡張子です。
識別子を使用する場合、プロンプトに識別子を記述することを忘れないようにしましょう。
例:キャラクターを「shs」、クラスを「1girl」として学習させたLoRAファイル「lora_chara1.safetensors」の場合、「 <lora:lora_chara1:1> shs」というように記述します。
識別子の有無や使用する文字は学習データごとに異なるので、必要に応じて適用してください。
CIVITAIではpnginfoのLoRAファイル名とダウンロードされるLoRAファイル名が異なるので
自分で書き換える作業が必要になるかと思います。
ファイル名書き換えるか、プロンプトの方を書き換えるかです。
1.DreamBooth、class+identifier方式(正則化画像使用可)
フォルダ名にclass+identifier
繰り返し数を10にしたい場合は
10_class_identifier とする
classは概念?dogとか1girlとか
identifierは使うときに呼び出すトリガーワードみたいなもの
正則化画像を用意する
無くても学習できる
--train_data_dir= 学習用画像のフォルダ
--reg_data_dir= 正則化画像のフォルダ
2.DreamBooth、キャプション方式(正則化画像使用可)
学習用画像のフォルダに、
画像と同じファイル名で、拡張子 .caption
(設定で変えられます)のファイルを置く
それぞれのファイルは1行のみ。エンコーディングは UTF-8
。
notepadでUTF-8を指定して保存すれば良い。
--train_data_dir= 学習用画像のフォルダ
--reg_data_dir= 正則化画像のフォルダ
50枚画像があると50個書かなければならないのでwebuiでタグを付けるのがいいと思う
(やった事が無いのでわかりません、すいません。)
3.fine tuning方式(正則化画像使用不可)
教師画像と.jsonファイルを使う(wd1.4taggerで.txtファイルを作って.jsonファイルにコンバートする)
この下に書いてあるやり方。
--train_data_dir= 学習用画像のフォルダ
--in_json= .jsonファイルを指定する
3.の作り方で説明をしていると思ってください
あとパスはc:/にしてありますが、各々の環境に読み替えてね!
画像を用意する
1.自分で描く
2.インターネットから拾って来る
a.gallery-dlというソフトを使うと色々な投稿サイトから画像を拾って来る事が出来るようです
https://gigazine.net/news/20201205-gallery-dl/
pip install gallery-dl
gallery-dl URL
URLを指定するとカレントディレクトリ下にgallery-dlフォルダを作ってその下に
1.twtitter
2.danbooru
3.pixiv
等のフォルダの下に検索ワード名のフォルダを作り、画像が保存されるようです。
大量の画像がHITする場合は全てDLされるまで終了出来ないようですので注意して下さい
b.youtube-dlというソフトを使うとyoutubeから動画を拾って来るようです
https://gigazine.net/news/20220101-yt-dlp/
ffmpegというソフトを使うと動画から連番静止画ファイルを作れるようです
ffmpeg -i input.mp4 -vcodec png -r 10 image_%04d.png
オプション 値 機能
-i input.mp4 入力ファイルを指定する
-vcodec png コーデックを指定する
-r 10 静止画にするフレームレート(1秒間に何枚か)を指定する
image_%04d.png 出力ファイル名を指定する。
%04dでゼロフィル4桁の連番画像が出力される
(画像が少なければ反転・切り取りなどを駆使)極論すれば一枚あればどうにか出来るらしい?
ファイルをフォルダに配置する。(正則化画像は説明がめんどくさいのでいつか書く)
targetが学習させたいものの名称だと思って下さいね
ファインチューン向けメタデータの作成方法
(jsonファイルを読み込んで学習させる場合)
kyousi(フォルダ)
target(フォルダ)
target000.jpg(画像ファイル)
target001.jpg(画像ファイル)
webui automatic1111の拡張機能のwd1.4taggerでタグ付けバッチ処理をする
(他の使った事無いのでベストかどうかは分からない)
バッチ処理の入力フォルダの画像を読み込んで、出力フォルダに画像枚数だけ.txtファイルを書きだす。
ディレクトリ一括処理 タブを選んで
入力ディレクトリにtargetを指定
出力ディレクトリにtargetを指定
重複するタグを削除(としあき製のタグクリーナーを使う場合は✅要らない)
JSONで保存(としあき製のタグクリーナーを使う場合は✅要らない)
インタロゲーターを指定できますがデフォルトのを使用しているので違いは良く分かりません
インタロゲートのボタンを押すとバッチ処理が始まり、CMD窓(webui-user.batを実行すると開く窓)に進捗が表示され全て終了すると all done :) が表示されます。
Dataset Tag Editorでは
Wd1.4 taggerで作った.txtファイルや.jsonファイルを指定してタグを編集出来るようです。
ファインチューン用jsonファイル作成バッチ
wikiで書かれている作成バッチのテキストをnotepadにコピペしてmake_json.batとか適当に名前を付けて保存
taggerで作られた.txtファイルを.jsonファイルにする。
rem ----ここから自分の環境に合わせて書き換える----------------------------------
rem sd-scriptsの場所
set sd_path="C:\LoRA_Easy_Training_Scripts\sd_scripts"
rem 学習画像フォルダ
set image_path="C:\train\kyousi\"
rem ----書き換えここまで--------------------------------------------------------
.batをnotepadで開いてフォルダの場所だけ書き換えます。
そして.batを実行
メタデータにキャプションがありませんと表示されますが気にしません(メタデータとかキャプションについてはよくわかりません)
merge_clearn.jsonの内容を編集します
.jsonファイルの内容を見てトリガーワード(にしたいタグ)があったらそのまま、無ければ一番最初の位置に追加する(--keep_tokens=1と--shuffle_captionを指定する為)。
"C:\\Users\\watah\\Downloads\\kyousi\\siranami ramune\\100741149_p0.jpg": {
"tags": "siranami ramune,1girl, virtual youtuber, solo, v, fang, multicolored hair, blue jacket, blue hair, choker, hair behind ear, smile, crop top, bangs, streaked hair, hair ornament, jewelry, looking at viewer, earrings"
},
サンプルです。
.jsonファイルは上のような3行1セットな書き方をされています。画像ファイルの数だけセットがあると思って下さい。
”画像ファイルのパス”:{
”tags”:”token1,token2,,,,,,(略)”
},
token1でトリガーワードにしたいタグ(ややこしいですね)を入れます。
私はテキストエディアの置換で全部書き換えています。
置換元 -> 置換先
"tags": " -> "tags": "トリガーワード,
--shuffle_caption
これは各タグをシャッフルしてタグの重みを分散させる効果があるのだとか。
--keep_tokens=1
1番目のタグまでを保持(この場合は1番目にあるtoken1)にします。
トリガーワードを1つで強く効かせたいのでこのような設定をしています。
理論的な解説は他の方におまかせします。
sd-scriptで学習を実行。
venvの仮想環境に入ってコマンド直打ち、もしくはtoml設定ファイルを使用する。
sd-scriptのフォルダを右クリックしてターミナルを開く
venv/Scripts/activateと入力してvenv(仮想環境)に入る
コマンドをコピペして実行
(改行を入れない、使いまわししてる設定は見やすくするために改行を入れています。また設定値は適宜変更して下さい。)
コピペして実行すると流れてくるのはこんな感じ
画像枚数 x 繰り返し回数 x 総epoch / バッチサイズ = 総ステップ数
経過時間 残り時間 処理速度 it/s loss
lossはよくわかりません監視しても意味が無いというのを見かけましたが諸説あると思います。
logging_dirオプションにログ保存先フォルダを指定してください。TensorBoard形式のログが保存されます。
たとえば--logging_dir=logsと指定すると、作業フォルダにlogsフォルダが作成され、その中の日時フォルダにログが保存されます。
また--log_prefixオプションを指定すると、日時の前に指定した文字列が追加されます。「--logging_dir=logs --log_prefix=fine_tune_style1」などとして識別用にお使いください。
TensorBoardでログを確認するには、別のコマンドプロンプトを開き、作業フォルダで以下のように入力します(tensorboardはDiffusersのインストール時にあわせてインストールされると思いますが、もし入っていないならpip install tensorboardで入れてください)。
tensorboard --logdir=logs
(tensorboardは環境整備時にあわせてインストールされると思いますが、もし入っていないなら pip install tensorboard
で入れてください。)
その後ブラウザを開き、http://localhost:6006/ へアクセスすると表示されます。
(LoRAの場合)ステップ数4000-6000くらいになるようにepochとrepeatを適当に弄る。
特に根拠はありません。最適な数値は自分で模索しましょう。
私の環境では所要時間一時間弱。だいたい 1.80it/sくらいの速度。
出来上がったLoRAをwebuiのLoRAフォルダに入れてwebuiを立ち上げる。
lokrは4000ステップくらいで回してますけどベストかどうかはよくわからないです・・・・誰か教えて
出来たLoRAの設置場所
インストール先で変わってくると思いますが多分ここら辺
C:\stable-diffusion-webui\models\Lora
にLoRA(拡張子.safetensorファイル)を設置してください
webui-user.batを選んでダブルクリック
何事も無ければRunnning on local URL: http://127.0.0.1:7860 と最後に表示されます
webuiは拡張機能により日本語化されています
設定値をマニュアルで弄る方法もあります
☠加筆修正中☠
日本語化拡張適用済
・サンプリング方法
サンプリングアルゴリズム
個人的にはDPM++ 2Mが早くて良い感じに描いてくれる気がする、諸説ある。
・サンプリングステップ数
20-50の間くらいで、大きい数字入れてもクオリティが比例して上がるわけではないし時間が掛かる。諸説ある。
・高解像度補助(hires.fix)
高解像度にする時に画像が崩れるのを防ぐ
・アップスケーラー
拡大するアルゴリズム
アニメ系はR-ESRGAN 4x+ Anime6Bがいいらしい。諸説ある。
・アップスケール比率
拡大倍率
・高解像度でのステップ数
高解像度でどのくらいステップ数を使って再描画するか
迷ったらサンプリングステップ数と同じにしたらどうかな
・ノイズ除去強度
・バッチ回数
合計何枚の絵を一度に作るのか
・バッチサイズ
一度に作る画像の数 VRAM少ないなら1でいい、多いなら4とか?
・幅
作りたい画像の横のサイズ
・高さ
作りたい画像の縦のサイズ
・CFGスケール
高いほどpromptの内容に忠実に従うような動きをする
・シード
同じseed値を使うと同じ画像が作成される
気が付かずに何枚も似たような絵が出てきてようやく気が付く
-1でランダム
png内部の情報をsend2でtxt2imgで開いた時は固定値になるので気を付けようね!(絵を再現する為)
・ポジティブプロンプト
こうやって欲しいという指示を,で区切って指定する
・ネガティブプロンプト
こういうのは嫌という指示を,で区切って指定する
・生成
絵を生成するよ
Lora の最適な使用方法を見つけるための簡単なワークフローは次のとおりです。
最終的な Lora を 0.7 または 1 のウェイトでプロンプトに入れ、ガイドのタグ付け部分で見た最も一般的なタグのいくつかを含めます。
うまくいけば、トレーニングしようとしたものと同様の明確な効果が見られるはずです。満足するか、それ以上良くならないように見えるまで、プロンプトを調整します。
X/Y/Z プロットを使用して、異なるエポックを比較します。
これは webui の組み込み機能です。生成パラメーターの一番下に移動し、スクリプトを選択します。
プロンプトに最初のエポックの Lora を入力し (「<lora:projectname-01:0.7>」など)、スクリプトの X 値に「-01、-02、-03」などのように書き込みます。
X 値は「Prompt S/R」モードです。
これらはプロンプトで置換を実行し、異なる数のロラを通過させて、それらの品質を比較できるようにします。
時間を節約したい場合は、最初に 2 エポックごとまたは 5 エポックごとに比較できます。より公平に比較するには、理想的には画像のバッチを実行する必要があります。
お気に入りのエポックを見つけたら、最適なウェイトを見つけてみてください。
X/Y/Z プロットをもう一度実行します。
今度は X 値を "0.5>, 0.6>, 0.7>, 0.8>, 0.9>, 1>" のようにします。
プロンプトのごく一部を置き換えて、さまざまなローラの重みを調べます。
繰り返しますが、バッチで比較することをお勧めします。
画像を歪ませることなく、最高のディテールが得られるウェイトを探しています。
必要に応じて、ステップ 2 と 3 を X/Y として一緒に実行できます。時間はかかりますが、より徹底的になります。
気に入った結果が見つかった場合は、おめでとうございます。さまざまな状況、角度、服装などをテストし続けて、あなたの Lora が創造性を発揮し、トレーニング データにないことを実行できるかどうかを確認してください。
こうすると
プロンプトで-1の部分を置き換えて絵を生成していく
hogehoge,<lora:hogehoge-1:1.0>
hogehoge,<lora:hogehoge-2:1.0>
hogehoge,<lora:hogehoge-3:1.0>
hogehoge,<lora:hogehoge-4:1.0>
hogehoge,<lora:hogehoge-5:1.0>
hogehoge,<lora:hogehoge-6:1.0>
epochごとに同じプロンプトで表示させてどれがいいのかを調べられる
また重み1.0を0.9,0.8,0.7,0.6,0.5のように書き換えていってどの重み付けがいいのかも調べられる
プロンプトを調整する。
この辺りはCIVITAIで投稿されている画像から知恵を拝借するといいかも
複数枚絵を生成して出来栄えが良い物を選別する。
バッチ数を8枚くらいにしてしばし待つ
どうしても結果が芳しくない場合はLoRAのepochの小さいものを使うか、
さらにLoRAに学習を続ける。
sd-scriptで学習する時に --save_every_n_epochs=1 とすると1epochごとにセーブされるます
通常last.safetensorから試しますが過学習かな?となった時に小さい数値のepochで試していくというやり方をしています
コピペ直打ちする時に--network_weights="hogehoge.safetensor"で指定するとLoRAファイルにさらに学習させられます。
学習が足りないかな?というときに
waifu diffusion1.5beta2-aesthetic導入メモ
https://huggingface.co/waifu-diffusion/wd-1-5-beta/blob/main/checkpoints/wd15-beta1-fp16.safetensors
https://huggingface.co/waifu-diffusion/wd-1-5-beta/blob/main/checkpoints/wd15-beta1-fp16.yaml
https://huggingface.co/waifu-diffusion/wd-1-5-beta/blob/main/checkpoints/wd15-beta1-fp32.safetensors
https://huggingface.co/waifu-diffusion/wd-1-5-beta/blob/main/checkpoints/wd15-beta1-fp32.yaml
https://huggingface.co/waifu-diffusion/wd-1-5-beta/blob/main/embeddings/wdbadprompt.pt
https://huggingface.co/waifu-diffusion/wd-1-5-beta/blob/main/embeddings/wdgoodprompt.bin
stable-diffusion-webui
|-- embeddings
| |-- wdbadprompt.pt
| `-- wdgoodprompt.bin
|-- models
| `-- Stable-diffusion
| |-- wd-1-5-beta2-aesthetic-fp16.safetensors
| `-- wd-1-5-beta2-aesthetic-fp16.yaml
`-- 〜省略〜
ファイルの設置はこれで良い筈
そして満足いく結果が得られたらいよいよCIVITAIに投稿です!
たしか登録しないと投稿出来なかった筈
discoad
github
アカウント連携で登録できたと思います
四つの内どれかのアカウントあればそのアカウントで認証出来ます
無くても新規登録は出来た筈
登録終わってloginしていると想定して話を進めます
さっそくモデルを投稿していきたいと思います(80回目)
なまえ
公開する時に表示されるなまえ
ファイルタイプ
LoRAとかLyCORIS(Locon/LoHA)とか選べます
付与するタグ
+を押して付けたい単語を入力します
無ければ新規に作って登録します
モデル説明
モデルがどういうものかを説明すればいいと思います
商業利用
下の方に説明があります スクロールして読んでください
現実に実在する人物か?
実在する人物は肖像権の関係があります
Is intended to produce mature themes only
多分だけど成人した人物のみを扱いますとかそんな感じだと思う。
FBIに通報されるようなデータを作らないでね
左のを意訳
このモデルを使う時にユーザー許可する内容
私の名前(この場合watahanを)を表記しなくていいです
このモデルのマージを共有してください
マージには異なる許可を使用する
右のを意訳
商業利用
全部禁止
生成した絵を販売する
AI絵生成サービスで使用する
このモデルまたはマージしたものを販売する
二次創作は二次創作ガイドラインがある場合、規約に従ってください。
モデルのタイトルにUnOfficialと必ず入れているのは公式だと誤認させない為です。
バージョン
好きなように付けて下さい
アーリーアクセス
早期アクセスよくわからないけど公開するまでの日数が設定出来るぽい
ベースモデル
SDのどのバージョン系列かを選ぶ
分からない場合はotherにする
トリガーワード
LoRAを使う時に使うトリガーワードを書いてください
無いとDLした人が使う時に困ります
学習時のepoch
学習させたときのepoch数を入力
学習時の総ステップ数
学習させたときの総ステップ数を入力
ckpt pt safetensor bin zipなどの拡張子のファイルがアップロードできます
クリックして開くかドロップする
アップロードするファイル名
ローカルのファイル名が表示されます 違うファイルを選んだときはゴミ箱アイコンで削除出来ます
ファイルタイプ
選んでください
アップロードを始める
実際にファイルをアップロードします
投稿する画像ファイルをここから開くかドロップしてね
投稿するタグは必ず一つは設定しないと公開できないので+Tagで追加してください
既存に無ければ新規にタグを作ります
最後にpublish押して公開されます
これでCIVITAIのみんなにあなたの作ったLoRAファイルが公開されましたね
pnginfoは編集しないでそのまま載せてるのでLoRAファイル名を弄るだけで再現出来る筈(CIVITAIがファイル名を変更している為)。
ToME入れてるので背景のディテールが違う?xformersとかでも微妙に違って来るらしいがよくわかりません
VAEファイルを入れるとまた変わってくると思います よく使われるのにEasyNegativeとかあります
https://github.com/kohya-ss/sd-scripts/blob/main/train_README-ja.md
LoRA以外にも追加学習について書かれています。一読しましょう。
https://scrapbox.io/work4ai/LoCon
LoRAは緑の部分しか学習していないが、LoConは黄色の部分を学習できるので、合わせてほぼすべてのレイヤーをカバーできる
上の図はConv2d-3x3拡張とはまた別なのだろうか?
https://scrapbox.io/work4ai/LyCORIS
左の図が2R個のランク1行列(縦ベクトルと横ベクトルの積)の総和になるのに対し、右の図はRの2乗個のランク1行列の総和になるので同じパラメータ数でランクを大きくできるらしい。
[(IA)^3]
This algo produce very tiny file(about 200~300KB)
実装 : [. https://github.com/tripplyons/sd-ia3]
>[LoRA]との大きな違いは、(IA)^3はパラメータの使用量がかなり少ないことです。一般的には、高速化・小型化される可能性が高いが、表現力は劣る。
lokr
LyCORIS/Kronecker.md at b0d125cf573c99908c32c71a262ea8711f95b7f1 · KohakuBlueleaf/LyCORIS (github.com)
クロッカー積を使うのでLoHAみたいに効率が良いらしい
Dylora
https://github.com/kohya-ss/sd-scripts/blob/main/train_network_README-ja.md#dylora
同時にrankを学習していいのを選べるらしい・・・(ざっくりした理解)
学習後のLoRAは互換性があるとの事
詳しくはreadmeを読んだ方がいいです
--network_module=networks.lora を --network_module=networks.dylora
network_dimとconv_dimの数値を合わせる
--network_dim=32
--network_args "conv_dim=32" "conv_alpha=16" "unit=8"
--network_args "conv_dim=32" "conv_alpha=16" "unit=4"
dimの数値を区切る数値をunitで指定する
学習後にrankごとに抽出する
python networks\extract_lora_from_dylora.py --model "C:\train\outputs\hogehoge.safetensors" --save_to "C:\train\outputs\dylora-model-split.safetensors" --unit 4
loading Model...
Splitting Model...
Max rank: 32
Splitting rank 4
Splitting rank 8
Splitting rank 12
Splitting rank 16
Splitting rank 20
Splitting rank 24
Splitting rank 28
saving model to: C:\train\outputs\dylora-model-split-0004.safetensors
saving model to: C:\train\outputs\dylora-model-split-0008.safetensors
saving model to: C:\train\outputs\dylora-model-split-0012.safetensors
saving model to: C:\train\outputs\dylora-model-split-0016.safetensors
saving model to: C:\train\outputs\dylora-model-split-0020.safetensors
saving model to: C:\train\outputs\dylora-model-split-0024.safetensors
saving model to: C:\train\outputs\dylora-model-split-0028.safetensors
なんか沢山出てくるのでLoRAフォルダに入れて、xyz plotでまとめて同じプロンプトでどういう絵が生成されるのかを比較する
LoRA-LierLa : (LoRA for Li n e a r La yers、リエラと読みます)
Linear 層およびカーネルサイズ 1x1 の Conv2d 層に適用されるLoRA
LoRA-C3Lier : (LoRA for C olutional layers with 3 x3 Kernel and Li n e a r layers、セリアと読みます)
1.に加え、カーネルサイズ 3x3 の Conv2d 層に適用されるLoRA
LoRA-LierLa はWeb UI向け拡張、またはAUTOMATIC1111氏のWeb UIのLoRA機能(最初から内蔵されてるやつ)で使用することができます。
LoRA-C3Liarを使いWeb UIで生成するには拡張を使用してください。
LoCon から Conv レイヤーの実装をした
設定
dim <= 64
alpha = 1 以下, 0.3とか
Ref: FedPara Low-Rank Hadamard Product For Communication-Efficient Federated Learning
パラメーター効率の良い微調整に適しているはずです。
LoRAのrankにに換算すると二乗で効いてくる
Conventional LoRA is rank<=dim
recommended settings
dim <= 32
alpha = 1 以下
警告: LoHa で dim>64 を使用することは想定されていません。これは、SD のほとんどすべてのレイヤーで sqrt(original_dim) を超えています。
不安定な損失を引き起こすか、単に NaN になる可能性があります。
高いdimのLoHaを使用したい場合は、低いlrを使用してください
再度の警告: パラメータ効率の良いアルゴリズムをパラメータ効率の悪い方法で使用するのは得策ではありません
参照: 少数ショットのパラメーター効率的な微調整は、コンテキスト内学習よりも優れている。
algo=ia3 を設定できます。
このアルゴリズムには、より高い lr (約 5e-3~1e-2) が必要です。
このアルゴリズムはスタイルの学習には適していますが、移行するのは困難です (トレーニングしたモデルでのみ妥当な結果を得ることができます)。
このアルゴリズムは非常に小さなファイル (約 200 ~ 300 KB) を生成します。
基本的には LoHA と同じ考え方ですが、クロネッカー積を使用します
このアルゴはlrを調整する必要がある場合があります
このアルゴは性格もスタイルも学習できますが、サイズが小さい(オートファクター、フルランク、2.5MB)ため、転送も大変です。
このアルゴリズムは比較的小さいファイルを生成します (自動係数: 900~2500KB)
より小さい係数を使用すると、より大きなファイルが生成されます。2.5MB のフル ランクが十分ではないと思われる場合は、調整できます。
a1111-sd-webui-locon:[lora]フォルダにある Lycoris (Locon)ファイルを判別、処理する。
<lora:MODEL:WEIGHT>
a1111-sd-webui-lycoris:[Lycoris]フォルダにある Lycoris (Locon)ファイルを処理する。プロンプトから重みづけ指定が可能。
<lyco:MODEL:TE_WEIGHT:UNET_WEIGHT>
Model名とTextEncoderのweightとu-netのweightを設定してやらないといけないのですね
LoRAのリサイズ、階層別マージも時間があればやりたい。
(この設定値は二次元キャラのLoRAを作るのが前提なので実写系はもっと数値が高いと思います。)
LoCon使う時
--network_module lycoris.kohya
--network_dim=16
--network_alpha=8
--network_args "conv_dim=8" "conv_alpha=1" "dropout=0.05" "algo=lora"
LoHA使う時
--network_module lycoris.kohya
--network_dim=8
--network_alpha=4
--network_args "conv_dim=4" "conv_alpha=1" "dropout=0.05" "algo=loha"
ia3使う時(検証してない)
--network_module = lycoris.kohya
--network_dim = 32
--network_alpha=16
--network_args = "conv_rank=32", "conv_alpha=4", "algo=ia3"
--learning_rate = 1e-3
lokr使う時
--network_module lycoris.kohya
--network_dim=8
--network_alpha=4
--network_args = "conv_rank=4", "conv_alpha=1", "algo=lokr",”decompose_both=True”,”factor=-1”
--unet_lr=3.0e-4
--text_encoder_lr=1.5e-4
消費メモリの削減
--gradient_checkpointingオプションを付けると学習速度が遅くなる代わりに消費メモリが減る。
消費メモリが減った分バッチサイズを増やせば全体の学習時間は速くなる。
公式のドキュメントにはオンオフは学習の精度には影響しないとあるため、
VRAMが少ない環境では学習速度の改善には--gradient_checkpointingオプションを追加してバッチサイズを増やすのが有効。
参考
VRAM8G、LoHa、512 x 512の場合、バッチサイズ15まで動作できることを確認。
VRAM8G、LoHa、768 x 768の場合、バッチサイズ5まで動作できることを確認。
--v2
--v_parameterization
--resolution=768,768
768サイズで学習させているベースモデルなので
追加学習時に解像度を768設定してみます
新しい投稿からlokrに切り替えてみました。
1.13it/s --optimizer_type lion
1.33it/s --use_8bit_adamW
どうも学習が上手く行かないのでLoRAに戻してみます、lokrはちょっとピーキーな感じがする・・・。
optimizerにlion使うには
sd-scriptフォルダを右クリックでターミナルで開くを選び
venv/Scripts/activate
pip install lion-pytorch
で導入しておきます
https://github.com/lucidrains/lion-pytorch
--optimizer_type lion
tomlファイル使うと楽になるらしいです
--config_file
で .toml
ファイルを指定してください。ファイルは key=value
形式の行で指定し、key はコマンドラインオプションと同じです。詳細は #241 をご覧ください。
ファイル内のサブセクションはすべて無視されます。
省略した引数はコマンドライン引数のデフォルト値になります。
コマンドライン引数で .toml
の設定を上書きできます。
--output_config
オプションを指定すると、現在のコマンドライン引数を--config_file
オプションで指定した .toml
ファイルに出力します。ひな形としてご利用ください。
ふたば may AIに絵を描いてもらって適当に貼って適当に雑談するスレ 不定期
としあきwiki 上のスレのまとめ
なんJ なんか便利なAI部 5ch
/vtai/ - VTuber AI-generated Art 4ch
くろくまそふと
経済的生活日誌
Gigazine
原神LoRA作成メモ・検証
AIものづくり研究会@ディスコード
[Guide] Make your own Loras, easy and free@CIVITAI
githubのreadme sd-scriptとLyCorisとautomatic1111辺り 細かい設定や変更点・バグなどがあるので検索だけでは分からない事があります
--max_train_epochs --dataset_repeats --train_data_dirだけ変えています。
accelerate launch --num_cpu_threads_per_process 16 train_network.py
--pretrained_model_name_or_path=C:\stable-diffusion-webui\models\Stable-diffusion\hogehoge.safetensors
--train_data_dir=C:\train\kyousi\
--output_dir=C:\train\outputs
--reg_data_dir=C:\train\seisoku
--resolution=512,512
--save_every_n_epochs=1
--save_model_as=safetensors
--clip_skip=2
--seed=42
--network_module=networks.lora
--caption_extension=.txt
--mixed_precision=fp16
--xformers
--color_aug
--min_bucket_reso=320
--max_bucket_reso=512
--train_batch_size=1
--max_train_epochs=15
--network_dim=32
--network_alpha=16
--learning_rate=1e-4
--use_8bit_adam
--lr_scheduler=cosine_with_restarts
--lr_scheduler_num_cycles=4
--shuffle_caption
--keep_tokens=1
--caption_dropout_rate=0.05
--lr_warmup_steps=1000
--enable_bucket
--bucket_no_upscale
--in_json="C:\train\marge_clean.json"
--dataset_repeats=5
--min_snr_gamma=5
accelerate launch --num_cpu_threads_per_process 16 train_network.py
--pretrained_model_name_or_path=C:\stable-diffusion-webui\models\Stable-diffusion\hogehoge.safetensors
--train_data_dir=C:\train\kyousi\
--output_dir=C:\train\outputs
--reg_data_dir=C:\train\seisoku
--resolution=512,512
--save_every_n_epochs=1
--save_model_as=safetensors
--clip_skip=2
--seed=42
--network_module=networks.dylora
--caption_extension=.txt
--mixed_precision=fp16
--xformers
--color_aug
--min_bucket_reso=320
--max_bucket_reso=512
--gradient_checkpointing
--train_batch_size=15
--max_train_epochs=15
--network_dim=32
--network_alpha=16
--network_args "conv_dim=32" "conv_alpha=16" "unit=8"
--learning_rate=1e-4
--use_8bit_adam
--lr_scheduler=cosine_with_restarts
--lr_scheduler_num_cycles=4
--shuffle_caption
--keep_tokens=1
--caption_dropout_rate=0.05
--lr_warmup_steps=1000
--enable_bucket
--bucket_no_upscale
--in_json="C:\train\marge_clean.json"
--dataset_repeats=2
--min_snr_gamma=5
accelerate launch --num_cpu_threads_per_process 16 train_network.py
--pretrained_model_name_or_path=C:\stable-diffusion-webui\models\Stable-diffusion\hogehoge.safetensors
--train_data_dir=C:\kyousi\
--output_dir=C:\train\outputs
--reg_data_dir=C:\train\seisoku
--resolution=512,512
--save_every_n_epochs=5
--save_model_as=safetensors
--clip_skip=2
--seed=42
--network_module lycoris.kohya
--network_args "conv_dim=4" "conv_alpha=1" "dropout=0.05" "algo=loha"
--caption_extension=.txt
--mixed_precision=fp16
--xformers
--color_aug
--min_bucket_reso=320
--max_bucket_reso=512
--gradient_checkpointing
--train_batch_size=15
--max_train_epochs=15
--network_dim=8
--network_alpha=4
--learning_rate=1e-4
--use_8bit_adam
--lr_scheduler=cosine_with_restarts
--lr_scheduler_num_cycles=4
--shuffle_caption
--keep_tokens=1
--caption_dropout_rate=0.05
--lr_warmup_steps=100
--enable_bucket
--bucket_no_upscale
--in_json="C:\train\marge_clean.json"
--dataset_repeats=2
--min_snr_gamma=5
--logging_dir=logs
学習時のベースモデルはAOM2を使っています
いわゆる1.4系?ですけど使用モデルをotherにしています
絵を生成する時は
1.AOM2
2.AOM3
3.Counterfeit-V2.5
4.Defmix-v2.0
5.hassakuHentai
6.SukiAniMix
7.QuinceMix
8.yabalMix
9.breakdo
10.Counterfeit-V3
辺りの相性は良さそうです
個人の好みの話になってくると思いますので好きなモデルでお試しください
XYZ plotでモデルを一通り試すといいかもしれません
※1引用元
https://www.kkaneko.jp/ai/win/stablediffusion.html より引用致しました
使用マシン
OS Win11
CPU Ryzen9 5950x
RAM DDR4 128GB
GPU 3060 VRAM 12GB/4070 VRAM 12GB
ストレージ HDD何台かとNVMeを二台
webui automatic1111の日本語化拡張レポジトリの方が書いた大変分かり易いcolabの解説記事があったので
紹介します。
Linaqruf/kohya-trainer | GenerativeAI Wiki (katsuyuki-karasawa.github.io)
----------------------------------------
そして
「オレはようやくのぼりはじめたばかりだからな、このはてしなく遠いAI絵坂をよ…」
----------------------------------------
【AI】生成AIを利用する場合に気を付けなければならない著作権の知識|福岡真之介|note
①合法
②合法
③プロンプトの内容によっては「著作権者の利益を不当に害する場合」にあたる場合もある。
④著作権侵害は、アウトプットが、他人の著作物に依拠し、他人の著作物と類似性がある場合に成立します。
このように生成AIを利用するにあたっては、著作権や商標権に注意する必要があります。日本では、機械学習のための著作物の利用が比較的自由であるといえますが、全く自由というわけではなく、「著作権者を不当に害する場合」などは著作権侵害になることは注意が必要です。
もっとも、「著作権者を不当に害する場合」が曖昧なので、今後はガイドラインなどが作成され、明確化されることが望ましいといえます。
本来は裁判例の蓄積を待つべきですが、裁判例が蓄積するには10年単位の時間がかかるので、AIの技術進歩の速さを考えるとあまりにも長すぎるといえるでしょう。
----------------------------------------
大阪大学の 生成AI(GenerativeAI)の倫理的・法的・社会的課題(ELSI)の論点の概観
https://elsi.osaka-u.ac.jp/system/wp-content/uploads/2023/04/ELSI_NOTE_26_2023_230410.pdf
大変分かりやすくまとまっていると思います