diff --git a/README-ja.md b/README-ja.md index fa0f892e..c661a168 100644 --- a/README-ja.md +++ b/README-ja.md @@ -20,6 +20,7 @@ GUIやPowerShellスクリプトなど、より使いやすくする機能が[bma * [fine-tuningのガイド](./fine_tune_README_ja.md): BLIPによるキャプショニングと、DeepDanbooruまたはWD14 taggerによるタグ付けを含みます * [LoRAの学習について](./train_network_README-ja.md) +* [Textual Inversionの学習について](./train_ti_README-ja.md) * note.com [画像生成スクリプト](https://note.com/kohya_ss/n/n2693183a798e) * note.com [モデル変換スクリプト](https://note.com/kohya_ss/n/n374f316fe4ad) diff --git a/README.md b/README.md index db03e215..6a5e928c 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,9 @@ __Stable Diffusion web UI now seems to support LoRA trained by ``sd-scripts``.__ Note: The LoRA models for SD 2.x is not supported too in Web UI. +- 26 Jan. 2023, 2023/1/26 + - Add Textual Inversion training. Documentation is [here](./train_ti_README-ja.md) (in Japanese.) + - Textual Inversionの学習をサポートしました。ドキュメントは[こちら](./train_ti_README-ja.md)。 - 24 Jan. 2023, 2023/1/24 - Change the default save format to ``.safetensors`` for ``train_network.py``. - Add ``--save_n_epoch_ratio`` option to specify how often to save. Thanks to forestsource! @@ -55,6 +58,7 @@ All documents are in Japanese currently, and CUI based. * [Step by Step fine-tuning guide](./fine_tune_README_ja.md): Including BLIP captioning and tagging by DeepDanbooru or WD14 tagger * [training LoRA](./train_network_README-ja.md) +* [training Textual Inversion](./train_ti_README-ja.md) * note.com [Image generation](https://note.com/kohya_ss/n/n2693183a798e) * note.com [Model conversion](https://note.com/kohya_ss/n/n374f316fe4ad) diff --git a/train_ti_README-ja.md b/train_ti_README-ja.md new file mode 100644 index 00000000..ee57c68b --- /dev/null +++ b/train_ti_README-ja.md @@ -0,0 +1,51 @@ +## Textual Inversionの学習について + +[Textual Inversion](https://textual-inversion.github.io/)です。実装に当たっては https://github.com/huggingface/diffusers/tree/main/examples/textual_inversion を大いに参考にしました。 + +学習したモデルはWeb UIでもそのまま使えます。 + +なお恐らくSD2.xにも対応していますが現時点では未テストです。 + +## 学習方法 + +``train_textual_inversion.py`` を用います。 + +データの準備については ``train_network.py`` と全く同じですので、[そちらのドキュメント](./train_network_README-ja.md)を参照してください。 + +## オプション + +以下はコマンドラインの例です(DreamBooth手法)。 + +``` +accelerate launch --num_cpu_threads_per_process 1 train_textual_inversion.py + --pretrained_model_name_or_path=..\models\model.ckpt + --train_data_dir=..\data\db\char1 --output_dir=..\ti_train1 + --reg_data_dir=..\data\db\reg1 --prior_loss_weight=1.0 + --resolution=448,640 --train_batch_size=1 --learning_rate=1e-4 + --max_train_steps=400 --use_8bit_adam --xformers --mixed_precision=fp16 + --save_every_n_epochs=1 --save_model_as=safetensors --clip_skip=2 --seed=42 --color_aug + --token_string=mychar4 --init_word=cute --num_vectors_per_token=4 +``` + +``--token_string`` に学習時のトークン文字列を指定します。学習時のプロンプトは、この文字列を含むようにしてください(token_stringがmychar4なら、``mychar4 1girl`` など)。プロンプトのこの文字列の部分が、Textual Inversionの新しいtokenに置換されて学習されます。 + +tokenizerがすでに持っている単語(一般的な単語)は使用できません。 + +``--init_word`` にembeddingsを初期化するときのコピー元トークンの文字列を指定します。学ばせたい概念が近いものを選ぶとよいようです。二つ以上のトークンになる文字列は指定できません。 + +``--num_vectors_per_token`` にいくつのトークンをこの学習で使うかを指定します。多いほうが表現力が増しますが、その分多くのトークンを消費します。たとえばnum_vectors_per_token=8の場合、指定したトークン文字列は(一般的なプロンプトの77トークン制限のうち)8トークンを消費します。 + + +その他、以下のオプションが指定できます。 + +* --weights + * 学習前に学習済みのembeddingsを読み込み、そこから追加で学習します。 +* --use_object_template + * キャプションではなく既定の物体用テンプレート文字列(``a photo of a {}``など)で学習します。公式実装と同じになります。キャプションは無視されます。 +* --use_style_template + * キャプションではなく既定のスタイル用テンプレート文字列で学習します(``a painting in the style of {}``など)。公式実装と同じになります。キャプションは無視されます。 + +## 当リポジトリ内の画像生成スクリプトで生成する + +gen_img_diffusers.pyに、``--textual_inversion_embeddings`` オプションで学習したembeddingsファイルを指定してください(複数可)。プロンプトでembeddingsファイルのファイル名(拡張子を除く)を使うと、そのembeddingsが適用されます。 +