Home

Awesome

Additional Networks for generating images

日本語の文章は下のほうにあります。

Change History is moved to the bottom of the page. 更新履歴はページ末尾に移しました。

Stable Diffusion web UI now seems to support LoRA trained by sd-scripts Thank you for great work!!!

About

This extension is for AUTOMATIC1111's Stable Diffusion web UI, allows the Web UI to add some networks (e.g. LoRA) to the original Stable Diffusion model to generate images. Currently LoRA is supported. The addition is on-the-fly, the merging is not required.

This extension supports the LoRA models (*.ckpt or *.safetensors) trained by our scripts in sd-scripts. The models from other LoRA implementations are not supported.

This extension does not support training.

Other networks other than LoRA may be supported in the future.

Installation

  1. Open "Extensions" tab.
  2. Open "Install from URL" tab in the tab.
  3. Enter URL of this repo to "URL for extension's git repository".
  4. Press "Install" button.
  5. Restart Web UI.

How to use

Put the LoRA models (*.pt, *.ckpt or *.safetensors) inside the sd-webui-additional-networks/models/LoRA folder.

Open "Additional Networks" panel from the left bottom of Web UI.

Press "Refresh models" to update the models list.

Select "LoRA" for "Network module 1".

Choose the name of the LoRA model file in "Model 1".

Set the weight of the model (negative weight might be working but unexpected.)

Repeat them for the module/model/weight 2 to 5 if you have other models. Models are applied in the order of 1 to 5.

You can generate images with the model with these additional networks.

X/Y plot

If you use LoRA models to plot, put the comma separated list of the model names into AddNet Model X

image

You can get the list of models with the button next to Values. Please select any model in Model ? at Additional Networks in order to make the button work. Models in the same folder as the model will be listed.

image

The metadata of the model can be drawn as legends. Move to Settings tab, select Additional Networks at left bottom, and set Metadata to show. Available values are in Network metadata textbox in Additional Networks tab.

image

Specify target region of LoRA by mask (experimental)

Open Extra args and drop a mask image to mask image.

By specifying with the mask image, each LoRA model can be applied only to the specified region of the image. Currently, only three models (Models 1 to 3) can be masked.

The mask image is RGB image, with each channel (R, G and B) corresponding to LoRA models 1 to 3. Each channel can be overlapped. For example, yellow area (R and G) is applied to LoRA model 1 and 2. The range of values is 0 to 255, corresponding to a LoRA weight of 0 to 1.

It can be combined with ControlNet.

without ControlNetwith ControlNet
no LoRA<img src="https://user-images.githubusercontent.com/52813779/223676928-362a68f0-b4c4-4905-9a5f-6646a39341f7.png" width="256"><img src="https://user-images.githubusercontent.com/52813779/223677042-a7989dc8-741f-4d45-8328-be1f0bf08194.png" width="256">
with LoRA, no mask<img src="https://user-images.githubusercontent.com/52813779/223677327-b4237ff9-1d36-4cd9-971b-a3434db6d0f9.png" width="256"><img src="https://user-images.githubusercontent.com/52813779/223677380-ba74bca0-92c3-4c68-950f-0f96e439281e.png" width="256">
with Lora, with mask<img src="https://user-images.githubusercontent.com/52813779/223677475-dff082c1-2a41-4d46-982d-db9655eb8bc2.png" width="256"><img src="https://user-images.githubusercontent.com/52813779/223677518-0ae042ed-3baf-47f0-b8ca-3dd6805f7c2f.png" width="256">
posemask
<img src="https://user-images.githubusercontent.com/52813779/223677653-cfd7fb36-afc1-49e8-9253-4bc01c5dad99.png" width="256"><img src="https://user-images.githubusercontent.com/52813779/223677672-5e2fc729-01ee-4c62-8457-2e125bb0e24f.png" width="256">

Sample images are generated with wd-1-5-beta2-aesthetic-fp16.safetensors and three LoRAs: two character LoRAs (model 1 and 2, masked, weight=1.0) and one style LoRA (model 4, not masked, weight=0.8). Used ControlNet is diff_control_wd15beta2_pose.safetensors.

Difference from 'Latent Couple extension' and 'Composable LoRA'

'Latent Couple extension' masks the output of U-Net for each sub-prompt (AND-separated prompts), while our implementation masks the output of LoRA at each layer of U-Net. The mask is resized according to the tensor shape of each layer, so the resolution is particularly coarse at the deeper layers.

'Composable LoRA' controls the area via 'Latent Couple extension' by switching LoRA on or off for each sub-prompt, but this implementation works alone.

This implementation does not work for all modules in LoRA (the modules associated with Text Encoder are not masked), and due to the coarse resolution, it is not possible to completely separate areas.

この Web UI 拡張について

LoRA などのネットワークを元の Stable Diffusion に追加し、画像生成を行うための拡張です。現在は LoRA のみ対応しています。

この拡張で使えるのはsd-scriptsリポジトリで学習した LoRA のモデル(*.ckpt または *.safetensors)です。他の LoRA リポジトリで学習したモデルは対応していません。

この拡張単体では学習はできません。

将来的に LoRA 以外のネットワークについてもサポートするかもしれません。

インストール

  1. Web UI で "Extensions" タブを開きます。
  2. さらに "Install from URL" タブを開きます。
  3. "URL for extension's git repository" 欄にこのリポジトリの URL を入れます。
  4. "Install"ボタンを押してインストールします。
  5. Web UI を再起動してください。

使用法

学習した LoRA のモデル(*.pt, *.ckpt, *.safetensors)をsd-webui-additional-networks/models/LoRAに置きます。

Web UI の左下のほうの "Additional Networks" のパネルを開きます。

"Network module 1""LoRA" を選択してください。

"Refresh models" で LoRA モデルのリストを更新します。

"Model 1" に学習した LoRA のモデル名を選択します。

"Weight" にこのモデルの 重み を指定します(負の値も指定できますがどんな効果があるかは未知数です)。

追加のモデルがある場合は 2~5 に指定してください。モデルは 1~5 の順番で適用されます。

以上を指定すると、それぞれのモデルが適用された状態で画像生成されます。

X/Y plot

LoRAモデルをX/Y plotの値(選択対象)として使う場合は、カンマ区切りのモデルのリストを与える必要があります。

image

モデルのリストは選択肢の隣にあるボタンで取得できます。いずれかのモデルを Additional NetworksModel ? で選択しておいてください。そのモデルと同じフォルダにあるモデルの一覧が取得されます。

image

モデルのメタデータ(学習時のパラメータなど)をX/Y plotのラベルに使用できます。Web UI上部の Settings タブを開き、左下から Additional Networks を選び、 Metadata to show にカンマ区切りで項目名を指定してください(ss_learning_rate, ss_num_epochs のような感じになります)。使える値は Additional NetworksNetwork metadata 欄にある値です。

image

LoRA の領域別適用 (実験的機能)

適用する領域をマスク画像で指定することで、それぞれの LoRA モデルを画像の指定した部分にのみ適用することができます。現在はモデル1~3の3つのみ領域指定可能です。

マスク画像はカラーの画像で、RGBの各チャネルが LoRA モデル1から3に対応します。RGBの各チャネルは重ねることが可能です。たとえば黄色(RとGチャネル)の領域は、モデル1と2が有効になります。ピクセル値0から255がLoRAの適用率0から1に対応します(127なら重み0.5で適用するのと同じになります)。

マスク画像は生成画像サイズにリサイズされて適用されます。

ControlNetと組み合わせることも可能です(細かい位置指定にはControlNetとの組み合わせを推奨します)。

上のサンプルをご参照ください。

Latent Couple extension、Composable LoRAとの違い

Latent Couple extension はサブプロンプト(ANDで区切られたプロンプト)ごとに、U-Net の出力をマスクしますが、当実装では U-Net の各層で LoRA の出力をマスクします。マスクは各層のテンソル形状に応じてリサイズされるため、深い層では特に解像度が粗くなります。

Composable LoRA はサブプロンプトごとに LoRA の適用有無を切り替えることで Latent Couple extension を経由して影響範囲を制御しますが、当実装では単独で動作します。

当実装はすべての LoRA モジュールに作用するわけではなく(Text Encoder に関連する LoRA モジュールはマスクされません)、また解像度が粗いため、完全に領域を分離することはできません。

Change History

Please read Releases for recent updates. 最近の更新情報は Release をご覧ください。