AI(Stable Diffusion WebUI)で画像生成をしていると意外と言うことを聞いてくれないということがよくありますよね。例えばキャラクターの髪や目や服の色がまちまちだったり、そもそもうまく出せなかったり……そんな悩みを解消するのが今日ご紹介するLoRAというわけです。
そもそもLoRAって何? 簡単に言えば素材となる画像を20~30枚程度用意し、AIに特徴を覚えさせることで人物や、背景、絵柄などを簡単に変更できるファイルのことです。 Hugging Faceやcivitaiなどには多くのLoRAが公開されています。にきもなか先生がまとめてくださっているので、どんなものがあるのか気になる方はこちらをご覧ください。
LoRAの導入の仕方
ここにダウンロードしてきたLoRAファイルを入れる ダウンロードしてきたLoRAの使い方は簡単なので手短に解説してしまいます。まずは普段モデルを入れているフォルダがある「models」フォルダを表示します。その中に「Lora」と書かれたフォルダがあるのでその中に入れましょう。
webUIに戻って生成ボタン下の花札マークを押します。出てきたタブの中から「LoRA」を選択します。webUIの起動中にLoRAを入れるとまだ認識していないので表示されない場合は「Refresh」ボタンを押してください。
ちなみに「replace preview」で現在表示されている生成した画像をサムネイルに登録できます。
今回は、京すけ先生のうちの子「あおいちゃん」のLoRAを例に着せ替えのできる高性能なキャラLoRAの作り方を紹介していきたいと思います。
LoRAの環境を構築する 今回は上記のサイトから「kohya_ss」をダウンロードしてやるやり方をご紹介します。
まずは赤丸の「setup.bat」を起動します。コマンドプロンプトが立ち上がり導入が始まりますのでそのままお待ちください。
インストールが終わったら「gui.bat」で起動できます。
赤線のURLからアクセスできます。これをコピペ(ctrl+C)して普段お使いのブラウザに貼り付けてください。
※注意 「kohya_ss」は「stablediffusion WebUI」とは別の画面で起動します。そのためURLの番号を一つずらして起動します。普段SDWenUIをブックマークから起動している場合、順番が逆だと立ち上がる画面も逆になりますので注意してください。例えば「stablediffusion WebUI」を起動せずに「kohya_ss」を立ち上げると「stablediffusion WebUI」のブックマークから「kohya_ss」が立ち上がることがあります。
WebUIのポート番号は7860
kohya_GUIは7861と一つ番号がずれて起動する 起動した順番が逆だとkohya_GUIが7680番で起動してしまい、普段使っているSDWenUIのブックマークからkohya_GUIが立ち上がってしまうので注意する
LoRAを作ってみよう LoRAを作るには20~30枚程度のキャラクターの特徴をとらえた画像が必要です。今回お借りいただいた京すけ先生のうちの子、あおいちゃんの画像は29枚用意していただきました。
画像素材を作るときの注意点 ・white background や simple backgroundなどの背景をシンプルにする。 ・全身を学習しようとすると細部がつぶれて再現度が下がるのでupper bodyなどの上半身中心の画像も混ぜる。
フォルダー構成の仕方
今回は「sample」フォルダーに学習する画像を入れますがそのまま入れずにもう一個フォルダ内に「20_aoi」というフォルダを作って入れました。20という数字はステップ数といって10~20が一般的です。(画像生成時のステップ数とは別物です)数字が大きいほど学習率は上がりますが過学習になって絵が崩壊してしまう可能性もありますし、時間もかかるのでこの辺がちょうどいいと思います。「aoi」は呼び出しプロンプトといいます。プロンプトに入れるので短い3文字くらいがお勧めです。
では実際に学習を行ってLoRAを作ってみましょう。「dreambooth LoRA」のタブを選択してください。
「source model」タブで学習に使用するモデルを選択します。自分の普段使っているモデルがいいです。赤丸①のクリップボードで指定できます。 モデルを変更すると「Model Quick Pick」が「custom」に代わっているのでそのままにしておきましょう。「Save trained model as」は「safetensors」のままで大丈夫です。
次に「folders」に移動します。①の「Image folder」で学習元ととなる画像の入った画像フォルダを指定します。ここで指定するフォルダは画像が入ったフォルダーではなくその一個上のフォルダーです。エラーが出るので一個上のフォルダーに画像フォルダ以外のフォルダは置かないで下さい。
私はフォルダの配置をこのようにしました。 ┣ LoRAname ┣ sample ┗ 20_aoi ┗ output
学習元の画像が置かれたフォルダー ②は正則化画像のフォルダを指定します。正則化画像とは学習したいものとは違う特徴の画像のことです。しかし、そこまで必要性を感じないものなのでなくても大丈夫です。透明なpngの画像を正則化画像として学習させると特徴を覚えやすくなるという人もいますが統計的に有意のある研究結果は今のところありません。
③は出力したLoRAを保存するフォルダのことです。今回は「output」がそれにあたります。
④で保存されるLoRAの名前を決めます。出力されるLoRAは途中の保存だと「last-000003」のように表示され、最後だけ「last」と表示されます。
「キャラの特徴だけ」を覚えさせるには? ここでwebUIの基本機能を使って画像にタグをつけるファイルを作成します。上部のタブの「Tagger」を開いて「Bach from directory」を開きます。 入力フォルダーに学習素材の画像が置かれているフォルダのアドレスをコピーしてください。出力フォルダも同じようにしましょう。
下の方に「Interrogator」というタグ付けをする手法がありますのでそれを「wd14-vit-v2-git」に変更します。いろいろなバージョンがありますが私が参考になったサイトがこれをお勧めしていたので私はこれをいつも使っています。 タグを追加には先ほどフォルダ名に着けた「aoi」を入れます。同じじゃないと呼び出しプロンプトが機能しないと思います。終わったら③を押してタグ付けを開始します。
タグ付けが完了するとこんな感じになります。 この記事の本題、キャラの特徴だけ覚えさせるのには少しコツがいります。服装込みで覚えるキャラLoRAはタグ付けをする必要はありませんが、学習画像の一部分だけを覚えてほしくない場合は、タグ付けをして学習から除外する必要があります。 よく間違われやすいのですが、タグを記載すると学習から外れます。 今回は身体的特徴を覚えてほしいので、髪の色や目の色などの特徴をタグの一覧から消していきます。
あおいちゃんの外観 今回除外したタグは「green eyes, blonde hair, long hair, hair between eyes,v-shaped eyebrows,thick eyebrows」 です。髪の色や目の色の他にも太い眉やVラインの眉など、あおいちゃんの特徴的な部分を除外して学習させました。正直この作業が一番大変です。
同じくLoRAの解説をしているあいきみ先生が特定のタグを除くbatファイルを作っていました。リンクを貼りますので必要な方はこちらからダウンロードしてください。
残したタグの一覧全29枚 今回は残したタグを29枚分すべて公開していきます。
aoi, 1girl, solo,thighhighs, skirt, from behind, white thighhighs, white background, blue skirt, pleated skirt, facing away, shirt, simple background, short sleeves, zettai ryouiki, school uniform
aoi, 1girl, solo, thighhighs, skirt, white background, white thighhighs, from behind, school uniform, blue skirt, simple background, serafuku, pleated skirt, shirt, white shirt, short sleeves, arms up, sailor collar, zettai ryouiki, facing away
aoi, solo, 1girl, skirt, thighhighs,school uniform, shoes, white thighhighs, open mouth, v, serafuku, smile, white background, full body, blue skirt, shirt, pleated skirt, simple background, blue neckerchief, short sleeves, white shirt, sailor collar, neckerchief, loafers, looking at viewer, zettai ryouiki, blue sailor collar, standing, :d, brown footwear, blush aoi, 1girl, solo, thighhighs, skirt, school uniform, white thighhighs, shoes, blue skirt, serafuku, full body, white background, brown footwear, open mouth, loafers, simple background, short sleeves, pleated skirt, sailor collar, looking at viewer, shirt, white shirt, zettai ryouiki, v, smile, standing, fang, blue sailor collar, arm up, blush, arm behind back, neckerchief
aoi, 1girl, solo, skirt, thighhighs, white thighhighs, school uniform, smile, open mouth, white background, serafuku, shoes, pleated skirt, full body, blue neckerchief, blue skirt, neckerchief, simple background, sailor collar, looking at viewer, short sleeves, black footwear, loafers, shirt, white shirt, standing, zettai ryouiki, arm behind back, fang, :d, bangs, blush, blue sailor collar aoi, 1girl, solo, skirt, thighhighs,school uniform, white thighhighs, serafuku, blue skirt, open mouth, smile, pleated skirt, white background, sailor collar, looking at viewer, shirt, white shirt, short sleeves, simple background, neckerchief, arms behind back, multicolored hair, zettai ryouiki, :d, blue eyes, blush, blue sailor collar, streaked hair, aoi, 1girl, solo, skirt, thighhighs, school uniform, white background, white thighhighs, smile, blue skirt, simple background, looking at viewer, serafuku, shirt, short sleeves, white shirt, sailor collar, pleated skirt, looking back, blush, from behind, closed mouth, bangs, white sailor collar aoi, 1girl, solo, skirt, thighhighs ,smile, school uniform, white background, white thighhighs, serafuku, shirt, simple background, pleated skirt, blue skirt, looking at viewer, short sleeves, white shirt, sailor collar, closed mouth, from side, zettai ryouiki, neckerchief, cowboy shot, blush, bangs aoi, 1girl, solo, skirt, thighhighs, smile, white background, school uniform, white thighhighs, blue skirt, serafuku, simple background, pleated skirt, shirt, sailor collar, grin, arms up, blue neckerchief, white shirt, looking at viewer, blue sailor collar, neckerchief, blush, zettai ryouiki, short sleeves, bangs, multicolored hair, cowboy shot, teeth aoi, 1girl, solo, skirt, thighhighs, school uniform, smile, blue skirt, white background, serafuku, hand on hip, white thighhighs, pleated skirt, shirt, simple background, sailor collar, white shirt, looking at viewer, short sleeves, blue neckerchief, v, neckerchief, zettai ryouiki, blush, closed mouth, blue sailor collar, midriff peek, arm up, bangs, cowboy shot, navel, standing aoi, 1girl, solo, skirt, thighhighs, school uniform, serafuku, white thighhighs, pleated skirt, white background, simple background, blue skirt, sailor collar, neckerchief, shirt, smile, blush, short sleeves, looking at viewer, white shirt, closed mouth, blue sailor collar, zettai ryouiki, :3, standing, blue eyes, bangs, blue neckerchief aoi, 1girl, solo, thighhighs, skirt, school uniform, white thighhighs, smile, serafuku, open mouth, white background, blue skirt, looking at viewer, arms behind back, sailor collar, pleated skirt, shirt, white shirt, blue neckerchief, simple background, short sleeves, zettai ryouiki, neckerchief, bangs, blush, blue sailor collar aoi, 1girl, solo, thighhighs, skirt, brown footwear, school uniform, white thighhighs, v, shoes, serafuku, full body, blue skirt, white background, looking at viewer, shirt, sailor collar, pleated skirt, white shirt, short sleeves, simple background, loafers, neckerchief, standing, closed mouth, blue sailor collar, blue neckerchief, blush, zettai ryouiki, from side aoi, 1girl, solo, thighhighs, skirt, school uniform, white background, serafuku, white thighhighs, simple background, sailor collar, pleated skirt, open mouth, shirt, blue skirt, v, short sleeves, smile, white shirt, looking at viewer, blue neckerchief, neckerchief, zettai ryouiki, blue sailor collar, blush, :d, bangs, hair flaps, teeth aoi, 1girl, solo, skirt, thighhighs, school uniform, serafuku, white thighhighs, smile, white background, blue skirt, sailor collar, pleated skirt, looking at viewer, simple background, shirt, short sleeves, neckerchief, white shirt, blush, blue sailor collar, zettai ryouiki, blue neckerchief, closed mouth, bangs, standing aoi, 1girl, solo, thighhighs, skirt, white thighhighs, school uniform, white background, pleated skirt, blue skirt, simple background, shirt, serafuku, looking at viewer, sailor collar, open mouth, smile, short sleeves, white shirt, neckerchief, zettai ryouiki, blue neckerchief, blue sailor collar, blush, bangs, cowboy shot, hand up, standing, :d
aoi, 1girl, solo, skirt, thighhighs, school uniform, serafuku, blue neckerchief, white thighhighs, white background, sailor collar, blue skirt, smile, pleated skirt, looking at viewer, neckerchief, simple background, short sleeves, shirt, white shirt, hand on own face, blue sailor collar, blush, zettai ryouiki, closed mouth, bangs, hand on own cheek aoi, 1girl, solo, skirt, thighhighs, smile, school uniform, white background, serafuku, ahoge, pleated skirt, white thighhighs, simple background, sailor collar, blue skirt, looking at viewer, shirt, short sleeves, neckerchief, white shirt, zettai ryouiki, blue sailor collar, blush, closed mouth, bangs, hand up, standing aoi, solo, 1girl, skirt, thighhighs, school uniform, white thighhighs, serafuku, blue neckerchief, white background, sailor collar, pleated skirt, blue skirt, shirt, neckerchief, white shirt, ribbon-trimmed legwear, open mouth, simple background, short sleeves, blue sailor collar, looking at viewer, blush, bangs, ribbon trim, hands up, :o, zettai ryouiki, standing, head tilt aoi, 1girl, solo, skirt, thighhighs, school uniform, white thighhighs, serafuku, smile, blue skirt, pleated skirt, white background, sailor collar, shirt, neckerchief, blue neckerchief, short sleeves, looking at viewer, white shirt, simple background, hand on hip, blush, blue sailor collar, closed mouth, bangs, zettai ryouiki, cropped legs aoi, 1girl, solo, thighhighs, skirt, school uniform, white thighhighs, serafuku, white background, sailor collar, looking at viewer, blue skirt, pleated skirt, blush, simple background, shirt, white shirt, blue neckerchief, short sleeves, neckerchief, smile, blue sailor collar, zettai ryouiki, bangs aoi, 1girl, solo, skirt, thighhighs, school uniform, white background, white thighhighs, serafuku, blue skirt, pleated skirt, blue neckerchief, simple background, shirt, sailor collar, smile, neckerchief, short sleeves, open mouth, white shirt, looking at viewer, blue sailor collar, :d, blush, bangs, zettai ryouiki, standing, cowboy shot, teeth aoi, 1girl, solo, skirt, thighhighs, school uniform, sailor collar, pleated skirt, serafuku, white background, blue neckerchief, white thighhighs, shirt, blue skirt, short sleeves, neckerchief, blue sailor collar, white shirt, simple background, ribbon-trimmed legwear, open mouth, blush, zettai ryouiki, bangs, ribbon trim, profile, smile, cowboy shot, standing, from side aoi, 1girl, solo, thighhighs, skirt, school uniform, serafuku, white thighhighs, ahoge, white background, blue neckerchief, sailor collar, pleated skirt, blue skirt, smile, open mouth, shirt, looking at viewer, neckerchief, simple background, short sleeves, white shirt, blush, bangs, blue sailor collar, zettai ryouiki, hand up, virtual youtuber, :d aoi, 1girl, solo, skirt, thighhighs, school uniform, smile, v, sailor collar, serafuku, white thighhighs, neckerchief, double v, shirt, white background, pleated skirt, blue skirt, looking at viewer, white shirt, outstretched arms, blue neckerchief, short sleeves, simple background, grin, blue sailor collar, bangs, blush, zettai ryouiki aoi, solo, skirt, thighhighs, 1girl, school uniform, white background, simple background, serafuku, white thighhighs, open mouth, looking at viewer, sailor collar, pleated skirt, smile, short sleeves, blue skirt, shirt, blue neckerchief, white shirt, neckerchief, zettai ryouiki, :d, blush, blue sailor collar, fang, bangs aoi, solo, 1girl, skirt, thighhighs, school uniform, white background, smile, white thighhighs, serafuku, pleated skirt, sailor collar, blue skirt, simple background, looking at viewer, shirt, short sleeves, neckerchief, white shirt, blue sailor collar, blush, blue neckerchief, arms up, closed mouth, zettai ryouiki, bangs, standing aoi, 1girl, solo, thighhighs, skirt, school uniform, white background, white thighhighs, blue skirt, serafuku, sailor collar, simple background, pleated skirt, blush, looking at viewer, shirt, white shirt, short sleeves, neckerchief, zettai ryouiki, blue sailor collar, smile, closed mouth, bangs aoi, 1girl, solo, thighhighs, skirt, school uniform, white thighhighs, blue skirt, shoes, full body, serafuku, white background, sailor collar, open mouth, pleated skirt, looking at viewer, shirt, white shirt, short sleeves, brown footwear, simple background, smile, neckerchief, loafers, blue neckerchief, blue sailor collar, standing, zettai ryouiki, teeth, blush 学習する タグの除外が完了したらいよいよ学習時の設定をしていきます。タブを「Training parameter」に変更してください。
①の「Train batch size」では一度に何枚ずつ学習するかを決めます。グラボのVRAMを使用するので事前にSDwebUIは閉じておいた方がいいです。できない数値にすると学習が中止されるので、学習が速く終わるように中止されない限界まで上げるといいです。VRAMが少ない方は寝る前や、出かける前などに学習を始めるのがお勧めです。 ②は「Epoch」といってフォルダの数値で指定した画像枚数×ステップ数を何回繰り返すか決めます。全体のステップ数は以下で求められます。
画像枚数×ステップ数×epoch数÷バッチ数=全体のステップ数
例)29枚 × 10ステップ × 15epoch × 5バッチ = 870ステップ
③の「Number of CPU」は何Epochごとにファイルをセーブするか決めます。LoRAは最初に過学習を目指し、最終バージョンで絵が崩壊してたらepoch数を下げたものやプロンプトでの適用率を下げていくのがおすすめです。私は15epochまでつくり、過学習気味かなと思ったら12epochのものに下げています。
④の「」はCPUの性能によって数字を上げられます。自分のPCではどこまで上げられるのか確認する方法は以下の通りです。
まずはタスクバーを右クリックして、タスクマネージャーを開きます。
次にパフォーマンスタブを開きます。CPUの項目を見ると論理プロセッサ数という項目があるのでそこの数字に設定します。
⑤の「Seed」はシード値は適当にしています。1234とかで大丈夫だと思います。
⑥の「Learning rate」は学習率を表しています。この数値の初期値は0.0001になっています。これは「1e-4」とも表記できます。「1」が数値で4が10のマイナス何乗かを表しています。つまり、0.001は「1e-3」で0.0005は「5e-4」と表現できます。
⑦の「Network Rank (Dimension)」はモデルの絵柄をどのくらい維持するかを決める項目です。デフォルト値の付近ほどモデルの絵柄が維持されるようです。私は普段64で学習していますが、半分や倍などの値を試してみるのもいいと思います。 ⑧の「Network Alpha」も学習率のような項目です。私はいつも⑥の値を「0.0001」に設定しているため128くらいが適正値のようです。
「Advanced Configuration」の欄は私はほぼいじりません。⑨の「Max train epoch」の欄だけは②の「Epoch」と同じにしておきます。
ここまで設定出来たら「train model」を押して学習を開始しましょう。使っているGPUによってできる時間は違います。VRAMが少ないほど時間がかかりますので、気長に待ちましょう。
結果 学習が完了するとコマンドプロンプトのプログレスバーが100%になります。「output」フォルダーを開いてできたものを確認してみましょう。途中のepochで保存している際には「last-000003.safetensors」や「last.safetensors」などのファイルが並んでいます。試しに最終epochの「last.safetensors」(ファイル名は適当な分かりやすいものに変えてOK)ファイルを冒頭の手順で「Lora」のフォルダに入れてみましょう。
今回はこのように呼び出しプロンプトを使わずにLoRAを適用しました。呼び出しプロンプトは使うとLoRAの適用度が上がりますが、服装を変えるという点ではあまり適しているとは言えません。 今回制作したLoRAのテストがこちらになります。
よその子を脱がせて黒ビキニを着せてすいませんでした。 かなりキャラクターの特徴が一致していると思います。服装も強調せずに変えられているのでなかなかの出来だと思います。(自画自賛) ただ、要素の変更に関してはモデルのプロンプトの忠実さにも関係があるようです。もし服装などの要素の変更がうまくいかない場合は別のモデルをためしてみるのもよいかもしれません。
最後に LoRAの設定というものに正解というような設定はありません。学習するモデルや、学習する内容によって設定は柔軟に変えるべきだと私は思っています。皆さんも私の考える設定だけでなくいろいろな方法を試してみてほしいです。では、よいLoRAライフを。