こんにちは、AIでアニメを作るG-VISの延藤です。
今回参加したハッカソンで画像1枚からそこそこの精度のLoRAを作ることができたので共有します。
(↓アニメ系モデル+今回作成したLoRA)
画像1枚LoRAの有用性
皆さん、画像生成してますか?
chatGPTにも画像生成機能が追加されて、より身近なものになりましたよね!
さて、そんなこんなで画像生成していると、一期一会の「これだ!!!!」って画像と出会うことがあるかと思います。
stablediffusionならまぁモデル合わせて、シード値とかcontrolnet使えば似た画像が作れると思いますが、chatGPTのDall-Eとかだとそうもいきませんよね。
せっかくの神画像が1枚きりで終わってしまいます。
そんな時に1枚LoRAがあれば、永久にその神画像の絵柄を真似した画像を生成してくれるようになります!
これがあればオリジナルキャラクターを作ったり、AI彼女に着せ替えしてみたり色々できることの幅が広がります!
おめでとうございます。
あなたの一期一会に祝福を。(???)
LoRAを作ってみよう!
stablediffusion webuiを使っていきます。
株式会社DiFunがプロデュースするキャラクター「Lei」です。
みるからに複雑で、まさに一期一会って感じですよね。
これを量産できるLoRAを作っていきましょう!
ステップ1:ちょっと違う画像を量産する
img2imgタブを選択して、その少し下のinpaintを押します。
leiちゃんじゃない部分を塗りつぶします。
淵の部分はこんな感じでぽんぽんクリックしていくといい感じです。
ミスったら右上の戻るボタンでundoできます。
taggerでプロンプトを画像から作成し、(GPTに画像投げてプロンプト生成してもらうのもありです)
背景の色だけプロンプトを足して画像生成します。
ステップ2:選ぶ
Leiちゃんの特徴をうまく反映できている画像を選んでいきます。
うまく生成できたものTop30くらいを選ぶといいのではないでしょうか。
(ここで30枚も満足のいくものがないのであれば、1,2を繰り返したり、画像編集ソフトで背景抜いてみたりとか反転したりとか傾けたりとか色々やります。)
ステップ3:データセットにする
タグ付けですね。この動画が最高にわかりやすいです。
https://www.youtube.com/watch?v=8EghxL4gcDw&t=628s
この記事は基本的にこの動画のやり方をそっくり真似ています。
まずdataset_tag_editorでタグをつけていきます。(スタンドアロン版がおすすめです)
https://github.com/toshiaki1729/dataset-tag-editor-standalone
タグ付けはこんな感じで行いました。
バッチ処理でremoveを選び、
Leiちゃん本体の特徴にチェックを入れていきます。
そしてRemoveします。
残すタグは生成する時に入れるプロンプトって感じです。
kohya_ssに移動して学習していきます。
フォルダ名に数字入れましょう 今回は5にしています。
細かい設定は先ほど紹介した動画にベストプラクティスが乗っているので参考にしましょう。
ただ、多めにチェックポイント設定しておいて、後で実際に回しながらいいモデルを選択するほうが手間はかかりますけど、結果的にいいものができると思います。
自分は50個くらい作りました(こんなに細かい必要はなかったです)
5段階くらいがちょうどいいと思います。
テストする
早速学習したLoRAを使ってみましょう、
学習回数の違うモデルがいくつか出力されているので、ベストなモデルを探していきます。
今回は学習回数1000回が使いやすい強度でした。
強度が高すぎるモデルだと、色が変になったり、姿勢が全て同じになったりします。
程よく自由度があるものを探してください。
使う
ベースモデルを変えたりしても面白いです。
今回はアニメ系のモデルで試したらかなり綺麗にできたので満足しています。
背景もごちゃついていなくて使い勝手がいい画像になりました!
まとめ
inpantとか外部ソフトで画像を編集して水増しすることで画像1枚からでも実用的なLoRAは作成できます。
AIときくと最初から最後までスマートに自動でできるものみたいなイメージがつきがちですが
「泥臭い努力を組み合わせることで可能性は無限大になる」
ということを学びました。