Stable Diffusion WebUI (on Colab) : LoRA の利用 (ブログ)
作成 : Masashi Okumura (@ClassCat)
作成日時 : 04/08/2023
* サンプルコードの動作確認はしておりますが、必要な場合には適宜、追加改変しています。
* ご自由にリンクを張って頂いてかまいませんが、sales-info@classcat.com までご一報いただけると嬉しいです。
- 人工知能研究開発支援
- 人工知能研修サービス(経営者層向けオンサイト研修)
- テクニカルコンサルティングサービス
- 実証実験(プロトタイプ構築)
- アプリケーションへの実装
- 人工知能研修サービス
- PoC(概念実証)を失敗させないための支援
- お住まいの地域に関係なく Web ブラウザからご参加頂けます。事前登録 が必要ですのでご注意ください。
◆ お問合せ : 本件に関するお問い合わせ先は下記までお願いいたします。
- 株式会社クラスキャット セールス・マーケティング本部 セールス・インフォメーション
- sales-info@classcat.com ; Website: www.classcat.com ; ClassCatJP
Stable Diffusion WebUI (on Colab) : LoRA の利用
前回 は Stable Diffusion WebUI に再調整済みモデルと VAE (変分オートエンコーダ) を導入することで、目的や好みに合わせた高品質な画像を生成してみました。
一方で、オリジナル (独自) の画像をベースに新しいコンセプト、つまり個別のキャラクターやアイテムなどを既存モデルに学習させてカスタマイズする方法も研究されています。その方法には Textual Inversion や DreamBooth がありますが、この記事では、現在主流の LoRA について簡単に説明した後、実際に導入して利用してみます。
前提条件 : Google Colab 上で Stable Diffusion WebUI の最小構成がインストールされているものと仮定しています。またできれば Anything 等のモデルが利用できることが望ましいです。その方法については以下を参照してください :
- PyTorch 2.0 : Google Colab で Stable Diffusion WebUI 入門
- Stable Diffusion WebUI (on Colab) : HuggingFace モデル / VAE の導入
LoRA とは
LoRA は最初に Microsoft により LoRA: Low-Rank Adaptation of Large Language Models by Edward J. Hu, Yelong Shen, Phillip Wallis, Zeyuan Allen-Zhu, Yuanzhi Li, Shean Wang, Lu Wang, Weizhu Chen で紹介されました。
LoRA は 既存の重みに (更新行列 と呼ばれる) ランク分解重み行列のペアを追加して、それらの新たに追加された重みだけを訓練することにより、訓練済みモデルの適応を可能にします。直感的に言えば、既存のモデルにパッチを当てる感じですので軽量でとても扱いやすいです。
🤗 Diffusers による LoRA の訓練の詳細は HuggingFace Diffusers 0.12 : 訓練 : LoRA サポート を参照してください。
LoRA のインストール
それでは実際に LoRA を使用してみましょう。例として、Civitai の H&K HK416 を使用します。この LoRA は (銃火器の) 銃を H&K HK416 ライフルのように見せて生成してくれます。
インストールは LoRA ファイルをダウンロードして配備するだけなのですが、”models/Lora” ディレクトリに配置する必要がある点には注意してください :
!mkdir -p /content/stable-diffusion-webui/models/Lora
!wget https://civitai.com/api/download/models/15353 -O /content/stable-diffusion-webui/models/Lora/hKHK416Lora_v20.safetensors
LoRA の利用方法
- LoRA ファイルを配備したら、通常のように Stable Diffusion WebUI を起動します。ここでは Anything モデルと VAE を利用しています :
- 配備した LoRA ファイルを利用するためには、まず “extra networks” ボタンをクリックします。これは右側の大きな “Generate” ボタンの下の アイコンです。
※ このアイコンはトグルになっていて、”extra networks” を表示したり隠したりするのに使用できます。 - “extra networks” ボタン をクリックすると “extra networks” 領域が表示されますので、以下のように “Lora” タブを選択します。すると、インストールした LoRA ファイル (hKHK416Lora_v20.safetensors) のためのボタンが表示されます (プレビューは表示されなくても問題ありません) :
- このボタンをクリックすると、該当 LoRA を利用するために必要なタグがプロンプトに追加されます :
<lora:hKHK416Lora_v20:1>
具体例
それでは以上を踏まえた上で、モデルページのサンプルを参考に実際に画像を生成してみましょう :
プロンプト
masterpiece, best quality, ultra-detailed, illustration, 1girl, (holding weapon, aiming at viewer, assault rifle,left view:1.5), carbine, open fire, firing, <lora:hKHK416Lora_v20:0.6>
ネガティブプロンプト
EasyNegative, (worst quality, low quality:1.4), (realistic, lip, nose, tooth, rouge, lipstick, eyeshadow:1.0), (dusty sunbeams:1.0),(abs, muscular, rib:1.0), (depth of field, bokeh, blurry:1.4), (greyscale, monochrome:1.0), text, title, logo, signature,watermark, reloading, handgun,
同じ条件でタグだけを削除した画像は以下です。LoRA が効いていたことが分かります :
以上