見出し画像

「LECO」学習で、細身からぽっちゃりまで、こだわりの体型を再現する

 ちまたで話題の「LECO」を使って、女の子の見た目を調整しまくるのが楽しくて止まりません。困った。

 LECOとは Stable Diffusion の新しい学習方法で、既存の概念=プロンプト の効果を変更するLORAを作成するというもの。
 通常のLORAのように、作成したファイルを読み込むことで概念の変更が行えます。

 おもに「概念の消去(erase)」が注目されていますが、その逆の「概念を追加・増幅(enhance)」することもできます。
 設定ファイルをちょっと書き換えるだけで学習できるので、さっそく両方ためしてみました。

導入のTIPS

 導入にちょっと手間取ったので、その辺の対処方を簡単に。

1:インストール

 とりあえず、解説ページだけじゃなくて、大元のGithubページも見ましょう。
 基本は「Github優先。分からなければ解説ページで補足」。
 解説ページだと基本的な部分をスルーしてることもあるので、大元のページで網羅的にチェックしたほうがいいです。


2:condaじゃなくてvenvでインストールした

 公式だとconda使ってインストールしてますが、conda入れてPython全体の環境をいじるのが嫌だったので、venv使いました。
 venv使う場合は


  • git cloneして「LECO」ディレクトリつくる。

  • LECOディレクトリでコンソール開いて「python -m venv venv」でvenv構築。

  • venvをactivate。

  • 公式などを参照して「torch」「xformers」インストール。

  • 「pip install -r requirements.txt」で各種ライブラリをインストール。


 これでインストールは完了です。


3:動作確認&設定

 LECOはスムーズに動作しないことがあるため「問題が出る場所」をハッキリさせるために、動作チェックを段階的におこなっていくのがおすすめ。
 まずは、「そもそも動くか」をチェックするため、最初から用意されている「example」フォルダーのサンプルファイルを実行する。

 LECOディレクトリでコンソール開いて下記入力して、学習がはじまるかどうかをチェック(学習が始まったらCTRL+ZからのReturnで中断してOK)。

python ./train_lora.py --config_file "./examples/cat_ears_config.yaml"

 エラーが出たらインストールやりなおし。
 動いたら、トラブルが発生しやすい「ベースモデル」の設定を最初に行っておくといい。

 動作チェックに使ったcat_earのファイルをコピペして中身を修正。(トラブったときように、オリジナル保持推薦)。
 モデル指定での注意点は下記のとおり。


  1. パス指定は「¥」じゃなくて「/」を使う。

  2. それでも読み込まないときは、モデルをLECOフォルダにコピって「●●●●.safetensors」とファイル名だけで指定する。

  3. それでも読み込まないときは、webui1111のextension「stable-diffusion-model-toolkit」を使ってcleaningする。


 モデルを読み込めたら、残る設定へ。
 具体的設定例は解説サイトでの確認推薦。
 注意点は


  • v2用オプションは「false」に変更。

  • 「”1girl, curvy"」のようにカンマ区切りで複数概念を羅列できる。

  • BFloat16は3060以上用。使えないときはFloat16かFloat32と指定するらしい(未確認)。

  • エラーメッセージの「TRION~」は無視していい。

  • エラーメッセージに「CUDA]とか「MEMORY」みたいなワードがあるときはGPUメモリが足りてない。


スライダー系LORAが簡単につくれる

 やっと本題です(笑)

 LECOでは概念の「enhance(強化)」と「erase(削除)」が行えます。

 enhanceは、あるプロンプトで特定の概念を強調するのに使います。
 例えば「1girl」で「large breasts」をenhanceすると、「1girl」というプロンプトだけで、胸の大きな女性が出るようになります。
 マイナス指定も可能で、その場合は反対の意味となる「胸の小さな女性」が出力されます。

 複数概念を組み合わせることもできて、例えば「1girl」に「animal ears, small breasts」をenhanceすると、1girlで「胸の小さなケモ耳少女」がでてきます。

 eraseは概念削除で、例えば「LOLI」という概念そのものを消したり、「LOLI」から「LARGE EYE」要素を消したりします。
 こちらもマイナス指定が可能で、キャラクターからロリ分を削除したり、逆にロリ分を盛ったりできます。


 ひとつの概念の強度をマイナスも含めて簡単に操作できるということは、差分抽出系LORAが得意だった「スライダーLORA」が簡単につくれます。

 というわけで、いくつか実際に作ってみました。

「LOLI」削除

「LOLI」と「FLAT CHEST」を削除。マイナス指定でツルペタロリ少女。プラス指定で大人に。

胸をデカくしてクビれを作る

large breastsとskinnyをエンハンスしてグラマラスガールに。マイナス適用でツルペタに。

手足を細くする

1girlにthin armとlegをエンハンス。マイナス強度+4とかでぽっちゃり系もいける。

 まじで簡単にできるw
 というか、これスライダー系作り放題じゃないですかね…。
 年齢スライダーなら「loli」とか「mature」、目のサイズなら「large eyes」、目の細さなら「thin eyes」、肌の色なら「tan」などなど…。
 「loli large breasts」とか「thin arms, thick waists」のような、従来は反発していた概念を詰め込むのも、おもしろそうです。

 作ったLECOを有料部分で配布しておきます。
 基本的に上で説明したとおりなので、自分で学習すれば似たようなものが作れるはずです。
 学習環境の構築が面倒だったり、諸事情で学習できない方の作成代行みたいなものと思っていたければ。
 ただし、動作を保証するものではないので、その点についてはご了承のうえ、お進みください。

ここから先は

368字 / 3ファイル

¥ 300

この記事が気に入ったらサポートをしてみませんか?