diff --git a/README.md b/README.md index cb53e55..8f7c8b0 100644 --- a/README.md +++ b/README.md @@ -1,33 +1,29 @@ -[English ver. (WIP)](./README_en.md) +[English ver.](./README_en.md) # Dump U-Net ## 目次 - - - [Dump U-Net](#dump-u-net) - - [1. 目次](#1-%E7%9B%AE%E6%AC%A1) - - [2. これは何](#2-%E3%81%93%E3%82%8C%E3%81%AF%E4%BD%95) - - [3. できること](#3-%E3%81%A7%E3%81%8D%E3%82%8B%E3%81%93%E3%81%A8) - - [4. 特徴量の抽出](#4-%E7%89%B9%E5%BE%B4%E9%87%8F%E3%81%AE%E6%8A%BD%E5%87%BA) - - [4.1. U-Net の特徴量画像](#41-u-net-%E3%81%AE%E7%89%B9%E5%BE%B4%E9%87%8F%E7%94%BB%E5%83%8F) - - [4.1.1. 画面説明](#411-%E7%94%BB%E9%9D%A2%E8%AA%AC%E6%98%8E) - - [4.1.2. Colorization](#412-colorization) - - [4.1.3. Dump Setting](#413-dump-setting) - - [4.1.4. 抽出画像の例](#414-%E6%8A%BD%E5%87%BA%E7%94%BB%E5%83%8F%E3%81%AE%E4%BE%8B) - - [4.2. アテンション層の特徴量抽出](#42-%E3%82%A2%E3%83%86%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%B3%E5%B1%A4%E3%81%AE%E7%89%B9%E5%BE%B4%E9%87%8F%E6%8A%BD%E5%87%BA) - - [4.2.1. 画面説明](#421-%E7%94%BB%E9%9D%A2%E8%AA%AC%E6%98%8E) - - [4.2.2. 例](#422-%E4%BE%8B) - - [5. ブロックごとのプロンプトの変更](#5-%E3%83%96%E3%83%AD%E3%83%83%E3%82%AF%E3%81%94%E3%81%A8%E3%81%AE%E3%83%97%E3%83%AD%E3%83%B3%E3%83%97%E3%83%88%E3%81%AE%E5%A4%89%E6%9B%B4) - - [5.1. 概要](#51-%E6%A6%82%E8%A6%81) - - [5.2. 画面説明](#52-%E7%94%BB%E9%9D%A2%E8%AA%AC%E6%98%8E) - - [5.3. 記法](#53-%E8%A8%98%E6%B3%95) - - [5.4. 例](#54-%E4%BE%8B) - - [5.5. Dynamic Prompts との併用](#55-dynamic-prompts-%E3%81%A8%E3%81%AE%E4%BD%B5%E7%94%A8) - - [6. TODO](#6-todo) - - + - [目次](#目次) + - [これは何](#これは何) + - [できること](#できること) + - [特徴量の抽出](#特徴量の抽出) + - [U-Net の特徴量画像](#u-net-の特徴量画像) + - [画面説明](#画面説明) + - [Colorization](#colorization) + - [Dump Setting](#dump-setting) + - [抽出画像の例](#抽出画像の例) + - [アテンション層の特徴量抽出](#アテンション層の特徴量抽出) + - [画面説明](#画面説明-1) + - [例](#例) + - [ブロックごとのプロンプトの変更](#ブロックごとのプロンプトの変更) + - [概要](#概要) + - [画面説明](#画面説明-2) + - [記法](#記法) + - [例](#例-1) + - [Dynamic Prompts との併用](#dynamic-prompts-との併用) + - [TODO](#todo) ## これは何 @@ -158,8 +154,6 @@ Seed: 1719471015 ### アテンション層の特徴量抽出 -現バージョンではクロスアテンション層の `Q*K` を出力する。 - #### 画面説明  @@ -325,5 +319,4 @@ a excellent girl ## TODO -- K, VQK の可視化 - セルフアテンション層の可視化 \ No newline at end of file diff --git a/README_en.md b/README_en.md index 6f9835d..362a7b8 100644 --- a/README_en.md +++ b/README_en.md @@ -1,60 +1,324 @@ -An extension for [stable-diffusion-webui](https://github.com/AUTOMATIC1111/stable-diffusion-webui) that adds a custom script which let you to observe U-Net feature maps. +# Dump U-Net -# Example +## Table of contents -Model Output Image: +- [Dump U-Net](#dump-u-net) + - [Table of contents](#table-of-contents) + - [What is this](#what-is-this) + - [What can this](#what-can-this) + - [Feature extraction](#feature-extraction) + - [Feature extraction from U-Net](#feature-extraction-from-u-net) + - [UI description](#ui-description) + - [Colorization](#colorization) + - [Dump Setting](#dump-setting) + - [Examples of extracted images](#examples-of-extracted-images) + - [Feature extraction from Attention layer](#feature-extraction-from-attention-layer) + - [UI description](#ui-description-1) + - [Examples](#examples) + - [Per-block Prompts](#per-block-prompts) + - [Overview](#overview) + - [UI description](#ui-description-2) + - [Notation](#notation) + - [Examples](#examples-1) + - [Use with Dynamic Prompts](#use-with-dynamic-prompts) + - [TODO](#todo) + +## What is this + +This is an extension for [stable-diffusion-webui](https://github.com/AUTOMATIC1111/stable-diffusion-webui) that adds a custom script which let you to observe U-Net feature maps. + +## What can this + +This extension can + +1. visualize intermediate output of the model: features of each block of U-Net and attention layer. +2. per-block prompts: generate images changing the prompt in each block of U-Net. +3. visualize the difference of features in 2. + +## Feature extraction + +Use the image below as an example.  ``` Model: waifu-diffusion-v1-3-float16 (84692140) Prompt: a cute girl, pink hair +Sampling steps: 20 Sampling Method: DPM++ 2M Karras Size: 512x512 CFG Scale: 7 Seed: 1719471015 ``` -U-Net features: +### Feature extraction from U-Net -Let the feature value is `v`, larger `|v|` is white, and zero is black. +For example, the following images are generated. + +Grayscale output `OUT11, steps 20, Black/White, Sigmoid(1,0)` + + +Colored output `OUT11, steps 20, Custom, Sigmoid(1,0), H=(2+v)/3, S=1.0, V=0.5` + + +#### UI description + + + +
IN11, M00 and OUT00 are connected.Layer section.v be the feature value.
+White/Black shows white pixel for large |v|, black pixel for small |v|.Red/Blue shows red pixel for large v, blue pixel for small |v|.Custom computes the color from v. You can use RGB or HSL colorspace.
+Auto [0,1] converts the value to [0,1] linearly using the minimum and maximum values of given feature values.Auto [-1,1] converts the value to [-1,1] as well.Linear first clamps feature values to specified Clamp min./max. range. Then linearly converts values to [0,1] when Colorize method is White/Black and to [-1,1] otherwise.
Sigmoid is a sigmoid function with specified gain and x-offset. The output is in range [0,1] when Colorize method is White/Black, and [-1,1] otherwise.
+v transformed by Value transform to the pixel value, where v is given as [0,1] or [-1,1] according to Colorize method and Value transform. The result is clipped at [0,1].numpy module as the global environment. For example, abs(v) means numpy.abs(v).
+h=8, so there will be 8 images in a row.
-Red means the value is positive, and blue means the value is negative.
+"It seems `pink hair` is working on this layer..." Something like that can be seen.
-
+- IN01
+
+
+- M00
+
+
+- OUT10
+
+
+## Per-block Prompts
+
+### Overview
+
+See the following article for content (Japanese lang).
+
+[Generating images with different prompts for each block in Stable Diffusion's U-Net (block-specific prompts)](https://note.com/kohya_ss/n/n93b7c01b0547)
+
+
+
+
+
+
+```
+Model: waifu-diffusion-v1-3-float16 (84692140)
+Prompt: a (~: IN00-OUT11: cute; M00: excellent :~) girl
+Sampling Method: Euler a
+Size: 512x512
+CFG Scale: 7
+Seed: 3292581281
+```
+
+The above images are in order:
+
+- generated by `a cute girl`.
+- with cute changed to excellent in IN00
+- with cute changed to excellent in IN05
+- with cute changed to excellent in M00
+
+### UI description
+
+
+
+Same as [Feature extraction from U-Net](#feature-extraction-from-u-net)
+
+