今回は画像生成AI「FLUX.1」に関する話題で
FLUX.1をベースにしたLoRAの作り方
を丁寧に解説していくという内容になっております。
先日の記事ではFLUX.1の導入方法や使い方を一通りご紹介したのですが…
そちらのほうでは需要が高そうな「LoRAの作り方」までは触れられなかったので、今回改めてFLUX.1ベースのLoRAの作り方をご紹介していきますね。
【注意!】
LoRAを使った学習はとても強力な手法なので悪用厳禁です。他人のイラスト等を無断で学習用の画像として使用するのはトラブルの元なのでやめたほうがいいです。私個人の考えとしては、例えば自分自身で描いた絵を学習させて創作に役立てるといった使い方を推奨します。
はじめに:そもそもLoRAとは?
まずはじめに、このページをご覧の皆さんはLoRAについて既にご存じだと思いますが念のためその概要をザックリと書いておきます。
LoRAとは「Low-Rank Adaptation」の略で、既存のAIモデルに効率よく追加学習を行わせるための手法です。イメージとしては元のモデルに追加の知識を覚えさせて新しいタイプの画像を生成できるようにする感じでしょうか。巨大なモデルを再トレーニングする必要がないのでとても効率的に学習を行うことができます。
LoRAと似たような手法は他にもあります。しかしLoRAの場合は
- 学習に必要なリソース(主にVRAM)が少なくて済む
- 有志の方によって開発された扱いやすいツールが無料で配布されている
- 学習のやり方に関する情報が多い
といったメリットがあります。したがってちょっといいグラフィックボードを積んだPCを持っていれば手軽に学習を実行できるのが特徴で、執筆時点では「画像生成AIに学習させるならLoRA」といっていいほど主流となっています。
SDXLベースのLoRAとFLUX.1ベースのLoRAの比較
さてそんなLoRAですが、当然ながらベースモデルが違うとLoRAの品質も大きく異なります。この記事をご覧の皆さんはSDXLベースのLoRAも試したことがあると思いますので、ここでは
- 従来のSDXLベースのLoRA
- FLUX.1ベースのLoRA
の生成結果の比較を行ってみようと思います(※今回比較に使用したLoRAは全く同じ条件で学習させたわけはないので単純な比較はできませんが、それでも参考程度にはなると思います)。私の手元には自筆の鉛筆画をだいたい同じ条件で学習させたLoRAがそれぞれあるためそれを使って画像を生成してみました。両者のクオリティを比較してみてください。
【LoRA作成条件】
- ベースモデル:一方はSDXL、もう一方はFLUX.1
- 学習に使用した画像:自筆のダークファンタジーな鉛筆画18枚(画像やサイズは両者とも全く同じ)
- 学習のステップ数:1800
FLUX.1ベースのLoRA
まずFLUX.1ベースのLoRAは生成結果のクオリティが高く精緻な出来でびっくりしました。私のダークな画風を上手く学習しつつも柔軟性があり、教師画像にはないような画像の生成もうまくいきました。
ただ欠点を挙げるなら私の環境(RTX 3060 12GB)だとLoRAを適用した画像1枚を生成するのに2分ほどかかってしまいました。生成速度を考えるとたくさん生成してガチャを引くのにはあまり向いていないかなといった感じです。
SDXLベースのLoRA
一方で従来のSDXLベースのLoRAも私特有の画風をなんとなく学習してはいますが、生成した画像のクオリティはイマイチだと言わざるを得ません。もしかしたら私の学習のさせ方が悪かったのかもしれませんが絵が崩れてしまうことが多くあまり使い物にはならない気がします。
ただしFLUX.1で生成した後だとSDXLの生成速度はかなり速く感じました。私の環境下ではSDXLのほうが生成速度が圧倒的に速い(1枚20秒程度)ので待ち時間のストレスがあまりないのはやはりいいなと思います。
個人的な評価
比較結果をまとめると
- 生成画像のクオリティを重視するならFLUX.1ベースのLoRA
- 生成速度を重視するならSDXLベースのLoRA
といった感じで使い分けするといいのではないかと思いました。
学習に必要なPC環境について
次にLoRAを使った学習に必要なPC環境についてご説明します。今回はFLUX.1をLoRAのベースモデルとして使用することから下記のPC環境が必須となります。
VRAM12GB以上の、GeForce RTX30または40シリーズのグラフィックボードを積んだPCであること
FLUX.1ベースのLoRAを作る場合はVRAMが12GB以上ないと厳しいようです。
「VRAMが足りないけど学習させてみたいな」という方はこの機会に潔く新しいグラボを買いましょう(画像生成自体も楽になりますし…)。GeForce RTX40シリーズには「RTX4060Ti 16GB」という比較的安価でVRAM容量が大きいグラボがあるので、VRAM容量が足りなそうだなという方は是非チェックしてみてください。
それから上記の要件以外にもLoRA作成ツールのインストールには数十GBの空き容量が必要になります。十分な空き容量のあるドライブも用意しておいてください。
LoRA作成に使用するツールの選定
では前提知識についてご理解頂いたところで、LoRAの作成に使用するツールの選定を行います。執筆時点でFLUX.1のLoRAを作成できるツールには次の4つがあります。
- sd-scripts(LoRA作成の定番ツール)
- AI Toolkit
- Flux Gym(←今回採用したツール)
- OneTrainer
結論から言うと今回は「Flux Gym」というツールを採用しました。これは皆さんお馴染み・Kohya氏のsd-scriptsをベースとした、シンプルなGUIが特徴のツールです。
もちろん他のツールでもいいのですが、Flux Gymはとても簡単に使えてしかもVRAM容量が中くらい(=12GB)のグラボでも学習できるとのことだったので試してみることにしました。
Flux Gymのインストール方法
ツールの選定が済んだところで早速Flux Gymをインストールしていきます。インストール方法は
- 「pinokio」というAIツール用の管理ソフト経由で簡単インストールする方法
- 手動でインストールする方法
の2通りがあります。手動でインストールする方法は手順がややこしくて面倒くさいので、ここではpinokio経由で簡単にインストールする方法を解説します。主な手順は次のとおり。
- pinokioのサイトからインストーラをダウンロードして実行する
- pinokioの初期設定を行う
- Flux Gymをインストールする
それぞれ詳しく見ていきましょう。
手順1:pinokioをインストールする
まず、pinokioのサイトにアクセスして「Download」リンクを選択します。
するとOSごとの案内が出るので、お使いのOSに合ったインストーラをダウンロードしてください。ダウンロードできたら圧縮ファイルを展開し、中身のインストーラを実行してpinokioのインストールを行ってください。
pinokioの初期設定を行う
無事インストールが完了するとpinokioが立ち上がるのでそのまま初期設定を行います。
- 「Home」の下の入力欄:
pinokioが使用するフォルダのパスを記入します。
注意点として、pinokio用のフォルダは設定の保存後に勝手に作成されるのでこのパスにはまだ存在しないフォルダを指定してください。例えば「AI」というフォルダの中に「pinokio」というフォルダを作ってそれを使ってほしい場合、この記入欄には「AI\pinokio」と記入します。既に存在するフォルダを指定するとエラーになるので気をつけましょう。 - Theme:
pinokioのUIのテーマを指定します。好きなものを選びましょう。
pinokioからFlux Gymをインストールする
ここまでできたらいよいよFlux Gymをインストールします。pinokioの「Discover」画面から「fluxgym」を見つけて選択します。
するとダウンロード画面になるので「Download」ボタンを押しましょう。
まずFlux Gymの動作に必要な様々なツールのダウンロードとインストールが行われて、そのあとにFlux Gym本体のインストールが行われます。たまにインストール関係の指示が出ますので画面の指示通りに進んでください。
ちなみにお使いの環境によりますがこのインストール処理には相当時間がかかります(※特にFLUX.1のモデルのファイルサイズが巨大なのでそのダウンロードで時間がかかることになります)。気長に待ちましょう。
インストールが完了すると自動的にFlux Gymの画面が出ます。
Flux Gymを使ったFLUX.1ベースのLoRAの作り方
さて前置きがとても長くなってしまいましたがここからが本題で、Flux Gymを使ったFLUX.1ベースのLoRAの作り方の具体的な手順を解説していきます。主な手順は次のとおり。
- LoRAの基本設定を行う
- 学習に使用する画像ファイルを登録する
- 学習処理を実行する
手順1:LoRAの基本設定を行う
まず、画面左側のセクションでLoRAの基本設定を行います。
- The name of your LoRA:
このLoRAの名前を入力します。 - Trigger word/sentence:
LoRAのトリガーワードを決めます。トリガーワードとは、このLoRAを使って画像を生成する際にLoRAを効かせるためのキーワードです。上のサンプル画像の記入例「kurokuma」のようになるべく一般的でない単語(独自の造語など)を指定したほうがいいでしょう。 - VRAM:
お使いのグラボのVRAM容量を指定します。 - Repeat trains per image:
繰り返し数。学習に使用する画像1枚あたり何回トレーニングを繰り返すか。 - Max Train Epochs:
トレーニングの最大エポック数。 - Expected training steps:
トレーニングのステップ数。画像を登録すると自動的に算出されるので記入は不要です。
私が試した限りでは、だいたい600ステップくらいから効果が出てきて1800ステップくらいで丁度よくなる印象でした。ステップ数が少なすぎると効果が薄いですし、多すぎると処理に時間がかかるうえに過学習になると思うのでここは要調整ですね。 - Sample Image Prompts (Separate with new lines):
学習の過程を確認するためのサンプル画像のプロンプト。トリガーワードを含めるようにしましょう。
(例)kurokuma a black bear - Sample Image Every N Steps:
何ステップごとにサンプル画像を生成するか。値が小さいと頻繁に画像生成処理が入ってしまうので適当に調整してください。 - Resize dataset images:
学習に使用する画像をどのくらいのサイズにリサイズするか。なるべく大きいサイズのほうが望ましいとは思いますが、「512」程度でも十分な結果が得られます。
具体的な設定値については一概には言えないので理想のLoRAを作るには何度か試行錯誤することになると思います。よくわからない場合はとりあえずデフォルト値でLoRAを作ってみてから調整するといいでしょう。
ちなみに上のほうでもサラッと言いましたがFlux Gymは内部的にはsd-scriptsで学習を行うためもっと詳しい設定を行うこともできます。下の方にある「Advanced options」という部分を展開すると詳細な設定項目がわんさか出てきます。sd-scriptsを使ったことがある方はそちらもチェックしてみてください。
手順2:学習に使用する画像ファイルを登録する
次に真ん中のセクションで学習に使用する画像ファイルを登録していきます。
「ここにファイルをドロップ」と書かれたところに画像をドラッグ&ドロップましょう。ここでは例として私が昔自分で描いたダークファンタジーな鉛筆画を18枚学習させることにしました。問題なく登録できれば下記のようにファイル一覧が表示されます。
さらにその下を見るとアップロードされた画像のサムネイルが表示され「Caption」という欄があります。デフォルトで先ほど設定したトリガーワードが自動的に登録されますが、必要な場合はここにキャプションを記入しましょう。画風LoRAなどキャプションが必要ない場合はトリガーワードだけを入れた状態にしておいてください。
手順3:学習処理を実行する
最後にいよいよ学習処理を行います。画像の登録を済ませると右上に「Start training」というボタンが出現するのでそれを押して学習を始めましょう。
学習処理が始まると下のほうに続々とログが出て学習状況を確認することができます。お使いのPCの性能や学習のステップ数にもよりますが、私の環境(RTX3060 12GB)では1800ステップの学習が完了するまでだいたい4時間くらいかかりました。
なお執筆時点のバージョンでは不具合なのか途中でログの出力が止まってしまうことがあります。しかし学習処理自体は進んでいるのでそのまま気長に待ちましょう。
サンプル画像を出力する設定を行っている場合、下記のように学習の進み方を確認できます(左上の画像ほど学習が進んだときのものです)。最初は写実に近い画像だったのが徐々にダークなイラストっぽくなっていることが分かりますね。
自作LoRAをStable Diffusion WebUI Forgeで使う方法
では自作LoRAができたのでこれを「Stable Diffusion WebUI Forge」で使って実際に画像を生成してみましょう。
まず、出来上がったLoRAモデルを
models\Lora
フォルダに入れます。そうしたらForgeを起動してFLUX.1を使用できるように設定し…
「LoRA」タブで先ほど作成したLoRAを選択しましょう。
するとLoRA用のプロンプトが記入されるのでトリガーワード(下記の場合は「kurokuma」)を忘れずに記入し、そのあと通常通りプロンプトを記入してください。
これで準備完了です。生成ボタンを押せばLoRAを適用した画像が生成されます。
おわりに
以上、FLUX.1をベースにしたLoRAの作り方について解説しました。Flux Gymを使えばFLUX.1ベースの高品質なLoRAを比較的簡単に作れて楽しいので、ぜひ皆さんも試してみてください。
この記事が画像生成のお役に立てば幸いです。