エロ話を垂れ流すブログ。18歳未満閲覧禁止。
当サイトの記事にはアフィリエイト広告のリンクが含まれる場合があります

15分でLoRA学習してキャラクターの一貫性を保った動画を作る

今まで面倒くさがって避けてきたLoRA作成ですが、動画を作る際にどうしてもキャラクターの一貫性が必要になるため、重い腰を上げてチャレンジしてみました。

ChatGPTに聞いたら「RTX4070ならkohya_ss使って20分くらいでLoRA作成できるよ」と教えてもらったのも大きな理由のひとつ。…キャラLoRAの作成って、丸一日GPUぶんまわさないといけないのかと思ってた。

まず、このLoRA作成により、どんな動画が作れるようになったのか実例を掲載します。

野良のメスガキがあらわれた

音声ナシ

大した動画ではないのですが、しゃがみシーンから立ち上がってこちらに歩いてくるだけでも何も考えずに作ると普通は破綻します。

なぜなら最初のシーンがしゃがみ姿勢のため、Tシャツの柄が全ては映っておらず、Wan2.2は推測で描写し、高確率でハート柄以外になるからです。

破綻を避けるには、立ち絵としゃがみ絵の2つ用意する必要があり、今まではSDXL(Illustrious)で立ち絵生成→QIE-2511でしゃがみ絵を生成していました。

そこから更に騎乗位のようにまたがる絵を用意しようとすると難易度が跳ね上がります。

QIE-2511ではNSFWが出せないため、AIO版を使うとして、それでもポーズや構図を大きく変えるとキャラクターの一貫性が保てなくなります。目が大きくなったり、QIEが学習している絵柄で補完しようとするからです。

つまり、結局のところ、さまざまなポーズ、特にえっちな体位のシーンに移っても大きくキャラクターの特徴を変えないためにはキャラクターLoRAを作るしかない、と考えました。

教師画像はQIEのMultiangle LoRAで生成

まずはSDXL(Illustrious系)で一貫性を保ちたいキャラクターの立ち絵を1枚だけ生成。

教師画像は 1024x1024px で作るものと思っていたのですが、縦長でも構わんと聞いたので、今回は 832x1216px で作りました。

1girl,loli,
pink short hair, dip-dyed yellow tips, one side up,
jitome, purple eyes,
white oversized t-shirt with heart shape, black shoulder straps visible under shirt,
small pouch, cat hair accessories,pink skirt,
mismatched socks, black socks with heart shape, pink socks with star shape
standing,full body,lightgray background

次にその立ち絵を基に、QIE-2511のMultiangle LoRAで8方向から見た教師画像を作成。

これに加えて、上半身が大きく写っている絵と、下半身が大きく写っている絵を用意。

立ち絵を切り取って上下に分けてアップスケールすれば良いかと思ったのですが、上半身はそれでも良いけど、下半身は顔も入っているほうが望ましい、ということなのでこんな感じ。

そんな絵作るのむずいよ!という場合は、まず最初の8枚だけでLoRA作っちゃうのもアリ。実際ぼくは上の8枚だけでLoRA作った後に、そのLoRAを使って下2枚を作り、再度LoRAを作成しなおしました。

captionファイルの作成

教師画像を01.webp~10.webpまで10枚作ったとしたら、その画像を説明するためのcaptionファイル(テキストファイル)も01.txt~10.txtというように10個必要です。

要は1girlとかpink hairとかのタグですが、WD1.4 Taggerなどで画像からタグを抽出してcaptionファイルを自動作成する方法もある模様。

しかし今回は、トリガーワードで一貫したキャラクターを呼び出したいという理由でLoRAを作るため、01.txt~10.txtまで中身は全部 pink_char にしました。

…単に面倒くさがっただけとも言います。

kohya_ssのインストール

C:\home 以下に作る前提で解説。

# kohya_ssのインストール
cd C:\home
git clone https://github.com/bmaltais/kohya_ss.git
cd kohya_ss
setup.bat

ありがたいことに、git cloneしてsetup.batを叩くだけでセットアップがはじまります。

ただ、どえらい注意点があって、Pythonは3.10か3.11が入っている必要があり、Python 3.12だと100%失敗します。

ぼくはこれでハマりました。仕方なくPython 3.11を入れなおしたのですが、そうするとPython 3.12でvenvコンテナ作ったComfyUIは起動しなくなるわけで、ComfyUIまでインストールしなおすハメに…。

ともあれ、setup.batが正常に起動したら、下記のようなメニューが表示されるはずです。

Kohya_ss setup menu:

1. Install kohya_ss GUI
2. (Optional) Install CuDNN files (to use the latest supported CuDNN version)
3. (DANGER) Install Triton 2.1.0 for Windows... only do it if you know you need it... might break training...
4. (Optional) Install specific version of bitsandbytes
5. (Optional) Manually configure Accelerate
6. (Optional) Launch Kohya_ss GUI in browser
7. Exit Setup

Select an option:

ここで1を入力して[Enter]でインストール開始。たぶん30分以上かかります。

一見フリーズしたかと思うほどコマンドプロンプトの動きがないことがありますが、辛抱強く待ちましょう。

インストールが終わったら、kohya_ssディレクトリ直下にある gui.bat で見慣れた gradio UI のWebページが出るはずです。

LoRA設定に必要なのは7項目程度

画面を開くと設定項目の多さに面喰いますが、最低限入力しなければならない項目は7個程度。まずは画面上部のLoRAタブを開き、下記のように設定します。

  1. Pretrained model name or path: 生成に使うモデルを指定(wai-illustrious等)
  2. Trained Model output name: pink_char
  3. Image folder (containing training images subfolders): C:/home/kohya_ss/training_data
  4. Output directory for trained model: C:/home/kohya_ss/outputs
  5. Epoch: 10
  6. Network Rank (Dimension): 32
  7. Network Alpha: 16

うちの場合はマージモデルを使うため、kohya_ss/models の下にモデルファイルを置き、Pretrained model nameに指定しました。

Image folderは教師画像を置くフォルダーで、kohya_ssの下にtraining_dataというフォルダーを作成したのでそれを指定。

更に、training_dataの下に 10_pink_char というフォルダーを作成し、中に10個の教師画像と、10個のcaptionファイル(.txt)を配置

フォルダー名の頭の10はリピート回数の指定…らしい。1枚につき10回ずつ学習する、みたいな。なんでそんなことするのかよくわからないけど、そのほうが出現率が上がるとかなんとか。

Epochが学習全体の回数でデフォルトは1だけど、それだとあんま覚えてくれないのでキャラクターLoRAの場合は7~10くらいを指定する…らしい。

Network RankとAlphaは一番重要そうで、この数値次第で過学習かどうかが決まる…らしい。

一般的にRankの数値の半分をAlphaにするとか。だからここでは32と16を設定したわけですが、正直これは大きすぎたかも。

おかげでpink_charというトリガーワードを指定するだけで、学習に使ったキャラクターがサクっと登場するようになったけど、ほかのPromptがすんごく効きづらい。

具体的には skirt lift がとっても効きづらかったです。

illustrious系の派生モデルなら、skirt liftを指定するだけでばんばんスカートめくってパンツ見せてくれると思うけど、pink_char LoRA使ったとたん、なっかなかめくってくれなくて、(skirt lift:1.5)くらいまで強調してようやくめくってくれた。

あるいは pink char LoRA の強度を1.0から0.8とかに落とすことでも多少プロンプトが効くようになりました。これが世間で言われる過学習ってやつなのかも。

次作るときはRank/Alphaの数値を16/8とか半分くらいにしようと思いました。

ともあれ、7項目の入力をしたら、画面下のほうにあるオレンジ色のボタン [Start training] をポチっと押すだけ。

RTX4070 12GBの環境ですが、教師データが10枚と少ないこともあり、15分程度でLoRAファイルが完成しました。

…お手軽すぎだろ!

絵コンテの作成

pink_char LoRAが作成できたことで、pink_char,squatting / pink_char,leaning forward,cowboy shot / pink_char,skirt lift,close-up / pink_char,straddle,pov みたいな指定でサクサク違うポーズが出せるようになりました。

ただ、実際はガチャがそれなりに必要です。というのも、ワンサイドアップの髪束が右なのか左なのか、靴下の柄は左右どちらが黒でどちらがピンクなのか、ポーチは右からか左からか、こういう左右の位置関係をちゃんと学習できないらしく、そのへんまでこだわる場合はガチャが必要なのです。

一応、captionにpink_charだけではなく、front viewやback viewを入れたりして、これは後ろから見たポーズだよー、みたいな説明も追記して再学習してみたのですが、その程度ではダメだったっぽい。今後時間あるときに、ちゃんと細かくタグ指定したバージョンを作ってみたい。

そして、最初の構想では、rembgで背景透過してGIMPで背景を合成する予定だったのですが、ここはQIE-2511に任せたほうが良いかも。

QIE-2511で、キャラクターがしゃがんだ画像を渡し、「背景を公園に変更。遠近感のあるボカしを入れる。」みたいな指定をするだけでこうなります。

上の画像が出来た後に「少女を消す」を指定して作るとこうなります。

これが出来れば、QIE-2511の1枚目にキャラクター画像、2枚目に背景画像を渡し、「背景を合成する」の一言で背景の光源にある程度合わせた合成をしてくれます。

更に「光と影を馴染ませる」みたいな表現も入れると、より一層馴染みますが、そこは絵柄にも影響するのでお好み次第ですかね。

また、今回の動画後半では少女に押し倒されて、カメラがやや上方向を向く演出がほしかったので、Multiangle LoRAで角度を変えた背景も用意しました。

こうして4枚の絵コンテを用意し、Wan2.2のFLF2Vで1→2、2→3、3→4の3動画(2秒)を作成、その後、4の画像を基にI2Vして4秒を作成。2+2+2+4で、合計10秒の動画になりました。

感想

こうして書くと面倒くさそうですが、やってみると意外と簡単だったLoRA作成。

使いやすいLoRAを作るには膨大なノウハウが必要そうですが、とりあえずショート動画の中でキャラクターの一貫性をある程度保てれば良い、という自分の要望なら、サクっと叶えられそうな感じです。なにしろ学習時間が15分程度なんだもの。

まだ作ってないですが、1枚の立ち絵を渡したら一発で7方向分の絵を出すワークフローを作れば、より効率的にオリジナルキャラクターのLoRA作れちゃうんじゃないかな。

QIE-2511でのアングル変更に約40秒かかるから7個分、5分もあれば8方向分出来るだろうし、突き詰めれば立ち絵作成からLoRA化まで30分でイケちゃうかも?

PR

関連記事

コメント

  • おー、思ったよりもLora作るの簡単そう!エロCG集とかノベルゲームとか作りたくなっちゃいますね!
    [返信]
    • でしょでしょー!
      …と、今更SDXLでLoRAの作り方を勉強しているうちに、AnimaFastTrainというカスタムノードも出てきており、参照画像からその場で速習して簡易的なLoRAになる仕組みだとかなんとか。
      AI界隈の進歩が速すぎて付いていけないよォ…

      でも今後はAnimaが主流になるでしょうから、そちらのアンテナ感度高めないといけないかもですねー。
      [返信]
  • Loraを作るのは最終段階だと思ったのですが、チャレンジしてみようかしら(*'▽')
    HighもLowも出来上がるのかな?('ω')
    今はlightx2v/Wan2.2-Distill-Modelsで色々チャレンジ中です(^^♪
    画像はForgeで作ってるのですが、そろそろ限界ですw
    画像もcomfyUIですね、、、comfyUIはエラー修正が難しいのです( ;∀;)
    [返信]
    • これはWanのLoRAではなく、SDXLのLoRAなのでsafetensors 1個ですねー。
      ComfyUIだとMask(Inpaint)の操作が若干面倒なので、そのときだけはgradio系のUIが恋しくなります。

      I2VやFLF2Vするたびに最後のフレームを切り出す処理入れたり、アップスケールついでにColor Matchノード入れてクリップ同士の繋ぎ目を自然にしたり、背景除去のついでにグリーンバックを差し込むノード入れたり、手順をまとめて自動化しやすいので慣れてくるとComfyUIが手放せなくなるのではないかなーと思います。
      [返信]

新しいコメントを投稿する

[新規投稿]
 
TOP