MarblingTIXL - v2.0
推奨プロンプト
award-winning Art Nouveau xlmrblng15-1300, analog realistic colour photo of a Japanese mermaid sitting on a rock in the midst of crashing waves, very detailed
cybernetic nun, xlmrblng15-1300
fantasy winter landscape, xlmrblng15-1300
(__Art_Movements__:0.5) xlmrblng15-1300, mature __Nationalities__ (__Character_MF__) riding a __BW_Animals__ in a white-tinted __Landscapes__, __Metal_Color__ filigree inlay
very detailed, intricate
推奨パラメータ
samplers
steps
cfg
resolution
vae
other models
推奨ハイレゾパラメータ
upscaler
upscale
steps
denoising strength
ヒント
TIトークンの前に3~5トークン(例:「portrait of a woman, xlmrblng15-1300」)を入れると良い結果が得られます。
最良の結果は30〜45トークンのプロンプトでネガティブプロンプトなしです。
TIのトリガーワードはSDXLに既知の概念(例:「marbling」)と重複しないようにしてください。予期しない結果になります。
Dynamic Promptsのワイルドカードシステムを使って多様で創造的なプロンプトを作成しましょう。
kohya_ssでトレーニングする場合はinit wordの選択が重要です。繰り返しパターンを避けるには「pattern」を使うのが最適バランスです。
TIは8ベクターで構成されており、短く単純なプロンプトには強すぎます。
生成にはDPM++ 2M Karrasのサンプラーを、CFG7、40ステップで使ってください。
解像度は1MP近辺(1024x1024、960x1344、1344x960)が良質で、1344x960は7インチ×5インチ印刷に最適です。
バージョンのハイライト
これは現在のkohya_ss(執筆時のv22.6.0)で再トレーニングしたもので、古いバージョンの設定では同じ結果が出ません。興味がある方向けにトレーニングデータとメモを付けています。勾配蓄積は4で、500ステップはGAなしの2000ステップに相当します。
2024年1月31日
v2.0はMarblingTIXLのより良いバージョンではなく、単に異なるものです。v1.0もまだ問題なく動作します。
kohyaの変更により、v1で作成したこのTIはもはや機能しないか、少なくともあまり有用な成果が出ません。
このことを教えてくれた@rakenに感謝します。
私はまだSDXL埋め込みには大きな可能性があると考えているので、新しくkohya_ssをインストール(執筆時のv22.6.0)し、様々なパラメータや設定を試行錯誤して元のMarblingTIXLに近いものを作りました。
SDXLのTIに興味がある方のために、トレーニングデータとkohya_ssの設定JSONを含めました。役立つかもしれないメモもいくつかあります。
良い面として、このTIはより速くトレーニングできましたが、悪い面としては古いTIよりも一貫性がありません。あるいは私がまだ十分に試していないだけかもしれませんが。最先端の領域で誰に聞けばよいかわからないのです!
質問や意見、知見があればぜひコメントしてください。現時点でTIスタイルの作成に関する信頼できる情報はほとんどありません。矛盾した見解が多くありますが、できることは確かで、より良いTIが作れる余地があると思います。
LoRAと競合するもの?いいえ、そうではありません。LoRAはチェックポイントに何かを追加するもので、TIはすでにチェックポイントにあるものを活用します。私の理解が正しければ、TIはチェックポイントの可能性空間の中で一貫して到達しづらい領域にアクセス可能にします。つまり、TIとLoRAは異なる目的の異なるものですが、一緒に使うことができます。皆が幸せになれます:-)
TIとは何か、どのようにトレーニングすべきか、テキストエンコーダーに関する論文がいくつかありますが、私はほとんど読む途中で理解できなくなってしまいます :-(
現在のところkohya_ssはSDXLの最初のTE(テキストエンコーダー)だけをトレーニングしているように見えます。これはauto1111のSDXL生成で使えるはずのSD v1.xのTEですが、実際にはうまく行きません。(一部の報告ではSD v1.xのTIはComfyで動くようですが、体験はまちまちのようです)2つ目のTE(SD v2.x)はkohya_ssでトレーニングされていないようです。あるいはTE1のコピーかもしれません?
OneTrainer(両方のTEに対応)も試しましたが、数回の試行で成功しなかったため今はkohya_ssにしています。
参考までに、使用しているのはRTX-3060 12GB搭載の普通のPCです。kohya_ssの現在の実行はギリギリ12GBのVRAMを使い切り(サンプル生成時はさらに6GB必要)、LoRAよりもリソースを多く消費します。TIはもっと少ないか同程度のリソースで済むと思っていたので驚いています。TI向けに最適化の必要が感じられていないのかもしれませんね。
ここで使ったTIは以下でトレーニングしました:
sd_xl_base_1.0_0.9vae.safetensors
ショーケースの画像生成は:
crystalClearXL_ccxl.safetensors [0b76532e03]
で行いました。つまりベースのTIは他のチェックポイントでも使えます。
画像生成はa1111 v1.7.0を使い、Hires.fixのみ適用し、他の調整はしていません。
以下ギャラリーでは、TIなしの「xlmrblnh36-500」とTIありの「xlmrblng36-500」のペアでTIの効果を示しています。なるべくプロンプトは似せるようにしています。
興味があれば、トレーニングデータのzipには25ステップごと(4回の勾配蓄積=通常100ステップ間隔)の保存TIがすべて含まれています。
--------------------------------------------------------------------------------
注意:automatic1111のwebui現行バージョン(v1.6.0)にはSDXLでリファイナーチェックポイントを使うと埋め込みが消えるバグがあります。別のチェックポイントをロードして元に戻すかwebuiを再起動するまで埋め込みが読まれません。開発者に報告済みでバグとして認識されています:
https://github.com/AUTOMATIC1111/stable-diffusion-webui/issues/13117
--------------------------------------------------------------------------------
***概要***
この埋め込みは、ヴィンテージの大理石模様の紙にインスパイアされたシュール/ファンタジーな美学を適用します。効果の強弱はプロンプトがどれだけこの美学に近いかで変わります。
トレーニングデータにはアーティスト作品やタグは含まれていません。
ショーケース画像のプロンプトデータをコピーして好みで調整するか、どんなシードでも良い結果が出る以下のようなプロンプトから始めてみてください:
award-winning Art Nouveau xlmrblng15-1300, analog realistic colour photo of a Japanese mermaid sitting on a rock in the midst of crashing waves, very detailed
チェックポイント: crystalClearXL_ccxl.safetensors [0b76532e03]
サンプラー: DPM++ 2M Karras
ステップ数: 40
CFG: 7
高さ=幅=1024
あとはお好みで単語を変えてください。「xlmrblng15-1300」の前には3~5語程度入れると良いです。
試す価値のあるシンプルなプロンプト例:
cybernetic nun, xlmrblng15-1300
fantasy winter landscape, xlmrblng15-1300
ただし面白い結果を得るには一般的にもっと語数が必要です。
多くの実験の結果、30〜45トークンのプロンプトでネガティブプロンプトなしがベストでした。
以下の追加ギャラリーにビフォー・アフターの画像ペアを収録しています。
xlmrblnh15 = TIなし
xlmrblng15 = TIあり
ご覧の通り、このTIは単に大理石模様を加えるだけではありません :-)
--------------------------------------------------------------------------------
***詳細&トレーニング情報***
このTI(テキスト反転)埋め込みは、プロンプトに応じて大理石模様を加えたり大理石模様に向けて調整したりします。SDXLの仕組み上、長く複雑なプロンプトの場合は効果が構造的になることが多いです。
これは私のSD v1.5用MarblingTIのSDXL後継です:
https://civitai.com/models/69768/marblingti
SDXLの多数の変更点により20回以上の失敗を重ねましたが、新しいTIは古いものより実用的だと感じています。少なくとも私が好むシュールでイラストチックな作品ではそうです。
automatic1111からkohya_ssに変えるのは簡単ではありませんでした。以下に詳細を書きます。
このTIは8ベクター(8トークン分)で構成され、短く単純なプロンプトには強すぎます。これは意図的です。いくつか控えめなバージョンも試作しましたが、SDXLで使う長く複雑なプロンプトには役立ちませんでした。Stable Diffusionの理解では4ベクターで十分なはずですが、4ベクターでは一貫した結果が得られませんでした。
元素材はヴィンテージ大理石紙のスキャンや写真で、いくつかの前駆TIを作り、それらからハイブリッド画像を作成し、それがこのTIの入力になっています。
プロンプトは先頭に3~5トークン追加してください。
例:
portrait of a woman, xlmrblng15-1300
(先頭でなく)
xlmrblng15-1300, portrait of a woman
短く単純なプロンプトだと単なるヴィンテージ大理石模様になるだけで面白くありません。また短いプロンプトだと画像にわずかな緑色の被りが出ることがありますが、トレーニング画像には全体的な色被りはありません。
重み付けは0.81~1.33で用途に応じて使えますが、私は重み付けよりもTIトークンの位置を変えるほうが結果は安定する印象です。
画像生成はすべてautomatic1111 webui v1.6.0で行い、内蔵以外の拡張機能はDynamic Promptsのみ(拡張タブからインストール)です。Hires.fix、inpainting、detailers、他のTIやLoRAは使っていません。ショーケースやギャラリー画像から試す価値があるか判断してください。
https://github.com/AUTOMATIC1111/stable-diffusion-webui
https://github.com/adieyal/sd-dynamic-prompts
私は普段CrystalClearXLを使っています:
https://civitai.com/models/122822?modelVersionId=133832
またはSDXL FaeTastic:
https://civitai.com/models/129681?modelVersionId=157988
これらのチェックポイントは全てTIと互換性があります。
効果を比較したい場合は、トリガーワードだけを1文字変えると良いでしょう。
例:
あり: cybernetic nun, xlmrblng15-1300
なし: cybernetic nun, xlmrblnh15-1300
トリガーワードはsafetensorsファイルの名前を変えることで変更可能ですが、SDXLに存在する単語(例:marbling)にすると予期せぬ動作をします。新しい単語をつなげても、例えばnewmarblingならSDXLが「new」「marbling」に分解して反応するためです。
この名前はSDXLのTIで、大理石模様(mrblng)、バージョン15の1300ステップ目であることを示しています。
私のプロンプトは先頭にArt Nouveauのような美術運動を入れることが多いです。その際は元のままか、0.3~0.5の重みをつけます。美術運動の一覧参考URL:
https://ja.wikipedia.org/wiki/アート運動一覧
美術史の区分参考URL:
https://ja.wikipedia.org/wiki/西方芸術史の時代
プロンプトの純粋主義者向けでなければ、例えば「award-winning illustrative」のようにしてもよいでしょう。美術運動を入れると他の部分を細かくいじらなくても似た雰囲気を出せます。私は好きな美術運動をリスト化し、Dynamic Promptsのワイルドカードフォルダに入れて__Art_Movements__として使っています。
原則としてアーティスト名は使いませんが、稀に特殊な効果を狙う場合だけ故人の名前を使うことがあります。例:René Lalique
https://ja.wikipedia.org/wiki/レネ・ラリック
automatic1111はSDXLトレーニング追加予定がなさそうなので、TIトレーニングはkohya_ss(v21.8.9以降)に移行しました。
https://github.com/bmaltais/kohya_ss
kohya_ssは設定が非常に多く、半分以上意味不明ですが、SDXL TIスタイルをトレーニングしたい人向けに私の設定を共有します。SDXL TIオブジェクトは試しておらず、LoRAトレーニングは失敗続きで動作していません。
以下は私のPCで動作した設定ですが、似たスペックの他のPCにも参考になるかと思います。
私のPC:
Nvidia 3060/12GB(Ti版ではない)、MSI X570マザーボード、Ryzen 7-2700(8コア/16スレッド)、64GBメモリ、複数SSD、Windows 10 Pro。
フォルダ構成:
XLmrblng15
\--img
\--\--50_XLmrblng15 style
\--log
\--model
トレーニング画像:
1024x1024サイズの45枚を「50_XLmrblng15 style」フォルダに入れ、各画像に対応する.captionファイルを作成しました。例:
cliff with waterfall.png
cliff with waterfall.caption
.captionファイルはテキストファイルで、内容は次のパターンです:
xlmrblng15, cliff with waterfall
TI名、コンマ、スペース、説明的ファイル名の順です。
キャプション自動生成ツールは使っていません。
以下の設定で触れられていない項目は全てデフォルトのままです。
kohya_ssの「Textual Inversion」タブで:
ソースモデルタブ
Model Quick Pick = custom
Save trained model as = safetensors
Pretrained model name or path = G:/stable-diffusion-webui-master/webui/models/Stable-diffusion/SDXL/sd_xl_base_1.0_0.9vae.safetensors
SDXL model = チェックあり
フォルダタブ
Image folder = G:/KOHYA/TRAIN/XLmrblng15/img
Output folder = G:/KOHYA/TRAIN/XLmrblng15/model
Logging folder = G:/KOHYA/TRAIN/XLmrblng15/log
Model output name = xlmrblng15
パラメータ(基本)タブ
Token string = xlmrblng
Init word = pattern
Vectors = 8
Template = caption
Mixed precision = bf16
Save precision = bf16
Number of CPU threads per core = 1
Cache latents = チェックあり
Cache latents to disk = チェックあり
LR Scheduler = constant
Optimizer = AdamW8bit
Learning rate = 0.001
Max resolution = 1024,1024
No half VAE = チェックあり
パラメータ(詳細)タブ
VAE = G:/KOHYA/sdxl_vae.safetensors
Save every N steps = 100
Gradient checkpointing = チェックあり
Memory efficient attention = チェックあり
Max num workers for DataLoader = 4
パラメータ(サンプル)タブ
Sample every n steps = 100
Sample prompts =
an analog realistic photograph of a magnificent jug on a table with glass tumblers, very detailed, intricate, xlmrblng15 --w 1024 --h 1024
xlmrblng15, an analog realistic photograph of a magnificent English lady wearing a Victorian bathing dress, very detailed, intricate, --w 1024 --h 1024
これらの設定でトレーニング時間は約6秒/イテレーションでした。背景で他の簡単な作業もしているため変動します。xlmrblng15-1300は2時間10分程度の地点で生成されました。
トレーニング中のGPUメモリ使用量は私の3060の12GBにほぼ収まっていましたが、サンプル生成やTI保存時には追加で7GB(計19GB)が主にシステムRAMから共有GPUメモリとして使われました。
共有GPUメモリ使用時は10倍遅くなるため、非常に苦労しました :-(
kohyaのサンプル画像はautomatic1111 webuiのベースSDXLモデルの画像より劣っていますが、少なくともトレーニングが概ね正しい方向に進んでいるか確認できました。
トレーニングデータセットは非常に重要で、生成画像と実画像を色々組み合わせてこのTIを作りました。
45枚の画像をバッチサイズ1(デフォルト)で、「50_XLmrblng15 style」特殊フォルダ名で45回繰り返し処理。合計2250ステップ。100ステップごとの保存TIを試して最良だった1300ステップを採用しました。
基本パラメータタブの「Init word」はトレーニングに非常に強く影響します。今回「pattern」(1トークン)を使いました。理論的には8トークンのフレーズを使うべきですが(kohyaは警告を出します)、いくつか試したところ4ベクトルより多い面白いTIはできましたが私の狙いとは違いました。
「pattern」使用の欠点はプロンプトによってはパターンが繰り返され壁紙やラッピングペーパーのように見えることです。
「marblng」や「paper marbling」はSDv1.xと比べてSDXLがマーブリングをより深く理解しており、TIトレーニングでこれらを入れるとデータセットの効果ではなくSDXL内蔵のマーブリング効果が優先されてしまうので使えませんでした。
トルコのマーブリング「ebru」も試しましたがうまくいきませんでした。最終的に「pattern」が一番良い結果をもたらしました。
kohya_ssの基本パラメータに「style」テンプレートがありますが、いくつか非公開のSDXL TIで良い結果が出たものの、このマーブリング紙のTIには合いませんでした。
テキスト反転(TI) vs. LoRA
私は(a)LoRAはトレーニング完了できず、(b)SDXL内の内容を活かしたいのでTIに集中しています。LoRAを否定しているわけではなく、konyconi等のLoRAも非常に楽しく使っています。素晴らしい結果を得ています :-)
しかし今はTIにより親近感を持っています。TIは単純な言葉では届かないSDXLの領域へプロンプトで調整可能にし、LoRAはSDXLに新たな要素を追加してプロンプト経由で混ぜるものだと考えています。
単純化するとそういう違いですが、SDXLのサンプル空間と確率空間の関係やスーパーセット内で何が起きるかなどの議論は避けます。これは趣味なので:-)
最後に、私はDynamic Promptsのワイルドカードを多用しています。typicalなプロンプトは次のような形です:
(__Art_Movements__:0.5) xlmrblng15-1300, mature __Nationalities__ (__Character_MF__) riding a __BW_Animals__ in a white-tinted __Landscapes__, __Metal_Color__ filigree inlay
動的処理後のトークン数は通常30〜45の間です。
automatic1111 webuiの「PNG Info」タブに生成画像をドラッグすると、例えば34トークンになります:
(Surrealism:0.5) xlmrblng15-1300, mature Swedish (male vampire) riding a dalmation in a white-tinted mudflats with scarlet cranes, black filigree inlay
なぜ国籍を入れるかというと、SDXLは長いプロンプトでは国籍をあまり重視しませんが、国籍に関連した追加表現(例:スコットランドなら赤毛、エジプトならピラミッド、日本なら富士山)を付与する傾向があります。他のコンテクスト連鎖もv1.xより強く、抑制が難しいです :-(
SDXLの解像度は通常1024x1024、960x1344、1344x960を使います。ネット上で推奨される解像度は1MP(1024x1024)を基本に、1MPに近い縦横比を使うべきとあります。幅1344なら高さは768が正しいはずですが、1344x768では画質が1024x1024や1344x960より劣りました。1344x960は7インチ×5インチの写真用紙にぴったり合います。





