Waifu Diffusion で効率的に画像を生成する
目次
AUTOMATIC1111 の便利な機能
目次
- デティール追加
- img2img
- img2img のステップ数を直接指定
- Only masked(マスクした部分を拡大してから再生成して合成:旧 Inpaint at full rsolution)
- Batch img2img(フォルダ内の画像すべてに img2img を実行)
- Face Restration(顔を修復する機能)
- Loopback(img2img の結果に img2img を実行する)
- --gradio-img2img-tool(簡易ペイントツール追加)
- 色の補正
- Detection Detailer(顔のマスクを自動生成してくれる Extension)
- Depth-guided model(深度情報を使った img2img)
- Novel AI のような noise strength
- 操作
- Generate ボタンを右クリック > Generate forever で止めるまで生成。止めるときは右クリック > cancel
- Ctrl + Enter で Generate
- Ctrl + Z プロンプトを元に戻す
- スライダーをクリックした後十字キーで1ずつ増減できる
- Alt + ← or → カンマ区切りの文字を選択して左右移動(1.5.0 以降)
- 検証
- 高速化
- Extension など
- Config Presets(設定保存)
- sd_web_ui_preset_utils(設定保存)
- Booru tag autocompletion for A1111(タグ補完)
- extensionEditor(AUTOMATIC1111向けのプロンプトエディター)
- Dataset Tag Editor(タグで画像を編集したり、タグを編集するエディタ)
- Helper GUI for manual tagging/cropping(画像のタグ管理エディタ)
- embedding editor(768 個ある潜在表現ベクトルを手動で調整)
- multi-subject-render(背景とオブジェクトとを雑コラしてくれる)
- Regional Prompter (プロンプトの効く領域を指定)
- Latent Couple extension(プロンプトの効く領域を指定)
- Depth map library and poser(手の深度マップライブラリ)
- Cutoff - Cutting Off Prompt Effect(色移り防止)
- ABG_extension (背景透過)
- 【Stable Diffusion】WebUIに必ず導入したいおすすめの拡張機能40選+α【Extensions】
- animeDiff
- Controlnet
- ポーズ・構図の指定と着色ができる。Image2Image はグレースケール画像の着色ができなかったが Controlnet ではそれができる。
- Reference-Only(参考画像を基にイラスト作成)
- ControlNetでポーズや構図を指定してAIイラストを生成する方法
- AUTOMATIC1111+ControlNetのつかいかた2(目当ては自動塗り)
- AIで適当な線画を清書し、さらに色を塗って高品質なイラストに仕上げる方法【ControlNet活用術】
- 画像生成AIを線画整えツールや自動彩色ツールにする
- Character bones that look like Openpose for blender _ Ver_6 Depth+Canny+Landmark(Blender 上でポージングできるツール)
- 「ControlNet 1.1」の新機能まとめ!新しいモデルや改善点を紹介【Stable Diffusion】
- ControlNet(v1.1)の詳しい解説!輪郭やポーズから思い通りの絵を書かせる
- MLSD
- プリプロセッサの dw_openpose(写真から棒人間を作成して入力)
- Multi-Controlnet
- Extension
- Model
LLM を使ったストーリー作成
LLM を使ったストーリー作成が一発でうまくいく事はない。なので、ストーリー作成の各工程ごとにアイデア出しの補助をさせることでストーリーを作成する。
AI のべりすとは日本語が使えるが性能は高くない。無料で公開されているローカル実行できる LLM を英語で使ったり、Chat GPT を使う方が効率がいい。品質があまり問題ではないなら無料かつ高速な Google の Bard も使える。AI のべりすとの強みはアダルト文章を日本語で出力できることだ。
目次
oobabooga の tips
AIのべりすとのようにプロンプトを編集しながらテキストを生成する
Default タブでできる。
テキスト生成のショートカットは Shift + Enter。
CPU のスレッド数を制限する
CPU で処理する場合4スレッドあたりで性能の限界が来る。E コアや Hyperthreading がスレッドをつかむと遅くなるので、Model タブで実行スレッドを制限する。
一部の処理を GPU にオフロードする
Danbooru タグ検索
LoRA の学習方法
- 画像加工
- キャプション・設定ファイル
- タグ編集アプリ
- キャプションファイルの先頭にタグを追記するコマンド
- 設定ファイルの class_tokens
- トリガーワード
- 画風学習のキャプションファイル
- キャラ学習のキャプションファイル
- keep_tokens
- VRAM 削減
- データの水増し
- 過学習防止
- 学習
- fp16 と bf16
- サンプルの出力
- 学習方式の選択
- リピート数とエポック数
- network_dim
- dim_from_weights network_weights
- network_alpha base_weights base_weights_multiplier
- 学習率
- スケジューラ
- オプティマイザ
- 階層別学習率
- 高速化
- 省メモリ設定
- SDXL
- 検証
- 学習の再開
- メタデータの閲覧
Stable Diffusion の古い情報
モデルリンク
stable-diffusion-xl-base-0.9
Stable-Diffusion 2.1
Stable-Diffusion 2.0
stable-diffusion-v1-5
waifu-diffusion-xl
Waifu Diffusion v1.5
WD 1.5 は5つのモデルがリリースされている。WD 1.5 Base はファインチューン用で、それ以外(Radiance, Ink, Mofu, Illusion)はデフォルト画風が違う。画風の違いは WD 1.5 Beta 3 - Release Notes で確認できる。
Waifu Diffusion v1.4(プレビュー版)
使うには v2-inference.yaml ファイルを wd14-booru-step-14000-unofficial.yaml にリネームして、safetensors ファイルと同じフォルダに入れる必要がある。
Waifu Diffusion v1.3
wd-v1-3-float16.ckpt か wd-v1-3-float32.ckpt をダウンロードする。float16 と float32 で出力される結果は変わらない。ただし full と float とでは少し結果が変わる。opt にはトレーニング用データが入っている。
what is the difference between 16 32 and full?
Waifu Diffusion v1.2
推論に不要な情報を削除したバージョン(pruned-waifu-diffusion)
trinart2_step115000.ckpt と Waifu Diffusionを5:5の比率でマージしたモデル
openvino バージョン(waifu-diffusion.openvino)
Easter
NSFW。Waifu 1.3 に比べて頭が切られにくく安定している。ネガティブプロンプトに Letterbox を入れることが推奨されている。
trinart V2 モデル
Stable Diffusion TrinArt Derrida model (Characters v2)
Stable Diffusion TrinArt Characters model v1
trinart_characters_19.2m_stable_diffusion_v1
AUTOMATIC1111 を使う場合は、autoencoder_kl-f8-trinart_characters.ckpt を trinart_characters_it4_v1.vae.pt にリネームして同じフォルダに入れる。成功するとLoading VAE weights from:~trinart_charatcters_it4_v1.vae.pt が表示される。
Hentai Diffusion
Hentai Diffuison ウイルスが検出されるが作者は混入を否定している。実行は自己責任で。
Waifu Diffusion v1.2 に Rule34 と Gelbooru とから収集した画像 15 万枚を追加学習させたモデル。Waifu で出すのが難しいポーズや手の改善を目的として作成された。Rule34 と Gelbooru とは Danbooru 同様、無断転載画像が多く含まれる。
NSFW
実写向き
Zeipher Female Nude (better anatomy)
ケモエロ
Stable Diffusion Furry Finetune Models:Furry (ケモナー) と yiffy (エロ特化)
yiffy はペニスを描くのが上手い。
R34
そのほか
LD と Waifu Diffusion を3:7の比率でマージしたモデル
キャラ特化モデル
Re:ゼロから始める異世界生活のヴィルヘルム・ヴァン・アストレア
nanachi dreambooth model (42 images on top of yiffy-e15) keyword: nanachiDB cute_furry_girl [nanachiDB-42imgs-5000steps.ckpt](https://mega.nz/file/xE9gFQYK#f61_2_OvDSOd4VRW3W9EoLpImwCBf1hauUFhW-iNtRw)
ryza dreambooth model (54 images on top of WD 1.3 beta)
keyword: rizaDB anime_girl (yes I misspelled the name)
SD_PixelArt_SpriteSheet_Generator
がうるぐら(VTuber)モデル
リンク集
diffusersで使える Stable Diffusionモデル一覧
画像生成AI「Stable Diffusion」でいろいろ特化した使えるモデルデータいろいろまとめ
Danbooru タグ列挙法
Danbooru タグ列挙法(Waifu Diffusion v1.2 限定)
文章を入力するのではなく、Danbooru タグを列挙することで出力を安定させる方法。以下の語順でプロンプトを並べると出力が安定する。
[作品タグ] [キャラクタータグ] [コンテンツタグ] [アーティストタグ]
参考作品がない場合は、プロンプトの頭に original を指定する。
参考キャラクターがない場合はキャラクタータグは省略可能。
コンテンツタグは作品・キャラクター・アーティスト以外のすべてのタグ。ただし "highres" のような学習に時に使ってないメタタグは入れない。
この時、各カテゴリごとにアルファベット順に並べ替える。
Danbooru タグの半角スペースはアンダーバーで置き換える。
タグは半角スペースを使って並べる。コンマやピリオドを使ってはならない。以下はプロンプト例。
kono_subarashii_sekai_ni_shukufuku_wo! megumin 1girl ^_^ backlighting blush brown_hair cape closed_eyes collar facing_viewer fingerless_gloves flat_chest gloves hat lens_flare short_hair short_hair_with_long_locks smile solo staff sunset witch_hat dacchi
Danbooru タグ以外の語は入力しない方が安定する。しかしタグではない句を使う場合は半角スペースをアンダーバーにする。たとえば cleavage_of_huge_breasts 有効なプロンプト数が減るデメリットの方が多いと感じたので訂正。
アンダーバーは1トークン消費するため、有効なプロンプト数が短くなるのがこの方法の欠点だ。
Danbooru タグ列挙法(Waifu Diffusion v1.3 限定)
- Danbooru タグの空白はそのまま入力する(空白をアンダーバーにする必要はない)
- Danbooru タグの () は削除する(たとえば pokemon (anime) は pokemon anime)
- Danbooru タグはコンマで区切る
- タグを並べ替える必要はない
以下のような文章のプロンプトではなく
a girl wearing a hoodie in the rain
以下のように Danbooru タグをコンマ区切りで入力する。
original, 1girl, solo, portrait, hoodie, wearing hoodie
Stable Diffusion に関するニュース
DeepFloyd IF
Stable Diffusion は潜在空間で描いた絵を VAE でピクセル空間に戻していた。このとき VAE にプロンプトの情報を入力していないので、細部の再現性に問題があった。
DeepFloyd IF はピクセル空間で 64x64 の絵を描き、アップスケーラーを2回実行して 1024x1024 の画像を作成する。アップスケーラーにはプロンプトの情報が入力されるので、通常のアップスケーラーより高性能である。
DeepFloyd IF の描画フロー
DeepFloyd IF は3ステージで絵を描く。
ステージ1ではプロンプトから生成した Text Embedding を利用して、64x64 の画像をピクセル空間で描く。
ステージ2では 64x64 の画像と Text Embedding とを利用して、256x256 の画像へアップスケーリングする。
ステージ3では 256x256 の画像と Text Embedding とを利用して、1024x1024 の画像へアップスケーリングする。
ステージ2とステージ3とのアップスケーラーは個別に専用のモデルが使用される。
外部リンク
IF by DeepFloyd Lab at StabilityAI
Stability AIが大規模言語モデルを取り入れた高性能なテキストから画像への変換モデル「DeepFloyd IF」を発表
eDiffi: Text-to-Image Diffusion Models with Ensemble of Expert Denoisers
eDiffi はテストエンコーダーに CLIP と T5XXL を使い、64x64 の画像をつくる。そして 4x アップスケーラーを2回適用し 1k x 1k の画像にする。
従来の拡散モデルはデノイザ1つでデノイズしていたが、eDiffi はデノイズのステップごとにデノイザを分けて個別に学習させることで合成能力を向上させている。
論文など
Transformer/Attention
論文解説 Attention Is All You Need (Transformer)
作って理解する Transformer / Attention
Scaled Dot-Product Attentionの本当の凄さを考える
Cross-Attention in Transformer Architecture
VAE
VAEは画像を生成する生成モデル。
AutoEncoderはあくまで潜在空間の取得が目的で、(エンコーダーで得られる)高次の特徴をアップサンプリング+Skip-connectionで解像度を上げていくU-Netとは目的が違うような… / “オートエンコーダーとして…” https://t.co/3Fvrx8E9G6
— yu4u (@yu4u) November 12, 2018
【Tensorflowによる実装付き】Variational Auto-Encoder(VAE)を理解する
【PyTorch】VAE(Variational Auto-Encoder)を実装する
深層学習/VAE (Variational Autoencoder) を実装する
【論文解説+Tensorflowで実装】VQ-VAEを理解する
CLIP
話題のOpenAIの新たな画像分類モデルCLIPを論文から徹底解説!
U-Net
DiffusionモデルをPyTorchで実装する② ~ U-Net編
拡散モデル
The Illustrated Stable Diffusion
Stable Diffusion を基礎から理解したい人向け論文攻略ガイド【無料記事】
画像生成 AI の最前線!拡散モデル・画像生成モデルの最新研究を解説
Diffusion Models | Paper Explanation | Math Explained
Stable Diffusion with Diffusers
Generative Modeling by Estimating Gradients of the Data Distribution
Training custom Ai generative models
NovelAI
NovelAI Improvements on Stable Diffusion
NovelAI Aspect Ratio Bucketing
NovelAI Aspect Ratio Bucketing の翻訳
FreeU
FreeU はファインチューニングも追加学習もせずに画像の品質を向上させる。
解説
U-Net のバックボーン(後半)はデノイズを行っている(前半は情報抽出)。U-Net はスキップ接続によって U-Net のデコーダーが高周波数の情報(絵のディティール・エッジ・テクスチャなど)を復元できるようになっている。しかしスキップ接続で渡された情報の低周波数の部分(全体の構図など)が、バックボーンのデノイズ能力を低下させている。
FreeU は2つの情報の制御を行う。ひとつはスキップ接続でバックボーンに提供する情報で、もうひとつはバックボーンネットワークの影響力の強さだ。バックボーンに提供する情報の影響力は s で、バックボーンネットワークの影響力の強さを b で制御する。公式の GitHub では b を少し強くして、s を小さくするように指示している。
バックボーンに提供する情報は高速フーリエ変換した後に、s で調整し、逆高速フーリエ変換している。全体を s で調整すると出力がスムースになりすぎるので、s で調整するのは低周波数の部分だけに限定している。
出口に近いバックボーンの b を強くすると出力がスムースになりすぎるので、出口に近いバックボーンの影響力は強化しない。
論文
FreeU: Free Lunch in Diffusion U-Net(arXiv) GitHub Project Page
論文
Zero-shot Learning網羅的サーベイ:CLIPが切り開いたVision & Languageの新しい世界
DiffusionによるText2Imageの系譜と生成画像が動き出すまで
世界に衝撃を与えた画像生成AI「Stable Diffusion」を徹底解説!
【AI論文解説】DALL-E 2へ至るまでの道のり:文章に沿った画像を高品質かつ多様に生成 -詳細編-
Neural Discrete Representation Learning (Vector Quantized – VAE)
U-Net: Convolutional Networks for Biomedical Image Segmentation
High-Resolution Image Synthesis with Latent Diffusion Models
Diffusion Models Beat GANs on Image Synthesis
Denoising Diffusion Implicit Models (DDIM スケジューラー)
Denoising Diffusion Probabilistic Models (DDPM スケジューラー)
Pseudo Numerical Methods for Diffusion Models on Manifolds (PNDM スケジューラー)
An Image is Worth One Word: Personalizing Text-to-Image Generation using Textual Inversion
High-Resolution Image Synthesis with Latent Diffusion Models (LDSR)
HyperNetwork
Contextual HyperNetworks for Novel Feature Adaptation
Hypernetwork functional image representation
そのほかのリンク
Tools and Resources for AI Art
Video Diffusion Models Cascaded Diffusion Models × 3D U-Net
paint-with-words-sd (テキストでオブジェクト位置を指定できる)
Drag Your GAN: Interactive Point-based Manipulation on the Generative Image Manifold
DAAM
プロンプトの各単語が画像のどの部分に効いているかを可視化する。
Poisson Flow Generative Models
拡散モデルより 10 倍~ 20 倍高速に動作するらしい。
Phenaki - Pytorch
テキストから動画を作成する。
Make-A-Video
テキストや画像から動画を作成するサービス。
DreamFusion: Text-to-3D using 2D Diffusion
テキストから 3D を生成する AI の調整に画像を生成する AI を使うことで、学習用 3D データなしでテキストから 3D データが出力できるようになるという論文。
Point·E
テキストから 3D の point clouds を生成する。
Mubert-Text-to-Music
テキストから音楽を作成する。
Text2LIVE
プロンプトで指示して、画像や動画を編集する。
EbSynth
動画を絵画調にする。
Anime2Sketch
イラストを線画にする。
Sketch-Guided Text-to-Image Diffusion Models
絵心がない線画を“いい感じの作品”に変える画像生成AI「Sketch-to-Image」 Googleなどが開発
[ RIFFUSION ]
Stable Diffusion を使って音楽を生成する。
動画
低解像度(512x512 前後)かつ低 Denoising Strength で変換したものを SD Upscale する。
AUTOMATIC1111 Web UI の Clip skip とは何か
Stable Diffusion 1.x で使われている CLIP
ControlNet のネットワーク構造
ControlNet は LoRA や Hypernetwork のように追加のネットワークを挿入するタイプのファインチューン技法だ。ControlNet のネットワークは U-Net の IN と MID のコピーで、学習開始前の状態ではウェイトも丸々コピーする。
通常は U-Net にノイズ画像を入力してデノイズするように学習させる。しかし ControlNet の入力には目的タスクに応じて線画画像や棒人間などを入力して、コピーした U-Net の IN と MID を学習させる。
Stable Diffusion のファインチューンの Tips
LoRA はLoRA の学習方法へ移動した。
目次
- Hypernetwork
- Textual Inversion
- Dreambooth
- Textual Inversion
- Dream Artist
- Hypernetwork
- Dream Booth
- Aesthetic Gradients
- Custom Diffusion
- Key-Locked Rank One Editing for Text-to-Image Personalization(Perfusion)
- 新システムのファインチューンについて
- ディープラーニングチューニングプレイブック日本語版
- その他の情報
U-Net の学習
わかりやすい解説として「U-Net は画像のデノイズを行う」という説明がされるが、これは正確には間違いだ。U-Net は除去すべきノイズを出力する。
学習のプロセスは以下のようになる。
- ランダムにタイムステップ t ∈ [0, 1000]を選ぶ
- 教師画像にタイムステップ t に対応するノイズを付与する
- U-Net にノイズを付与した教師画像とタイムステップ t とコンテクスト(embedding 化したキャプション)を入力
- U-Net が除去すべきノイズを出力する
- 付与したノイズと U-Net が出力したノイズとの差分から平均二乗誤差(MSE)を計算する
- 差分を逆伝播して学習する
タイムステップはノイズの量をきめる。0 が教師画像そのもので、1000 が純粋なノイズ画像だ。
概要
2023 年8月現在 LoRA 一強の状況で、Textual Inversion・Hypernetwork・Dreambooth はほとんど使われていない。ただしモデルの作成者は kohya 版の fine tune 方式や Dreambooth を使う。
Textual Inversion や Hypernetwork、LoRA の学習は、学習画像のサイズが 512x512 なら VARM 8GB の RTX 3050 でもできる。ただし VRAM を解放するために実行前に webui の再起動が必要になる。モニターを複数枚使っている場合、VRAM が不足することがある。そのため快適に学習させたければ、VRAM 12GB 以上の GPU を使うか、Google Colab を使う。
Dreambooth を使って学習させるには最低でも 12 GB の VRAM が必要になる。
Textual Inversion はテキストエンコーダーを調整する。Hypernetwork はテキストエンコーダーと U-Net との間に追加のネットワークを挿入して、その追加ネットワークを調整する。LoRA は U-Net の Attention ブロックのみを調整する。LoCon は Attention ブロックと畳み込みレイヤーを調整する。Dreambooth は U-Net 全体を調整する。
ControlNet は学習に VRAM 24 GB が必要で、公式でも訓練方法を詳細に解説していないので知識が必要だが、任意の情報(輪郭情報や棒人間でポーズ指定など)を入力できるようになる。
LoRA と Dreambooth は何が違うか
LoRA は U-Net の Attention ブロックのみを調整する。Dreambooth は U-Net 全体を調整する。
LoRA と Hypernetwork は何が違うか
LoRA はネットワークを追加し、Transformer の Attention ブロックすべてを修正する。
Hypernetwork はネットワークを追加し、Attention ブロックに入力する k, v を修正する。
まとめ
LoRA
品質がよく・ファイルサイズは大きすぎず・難易度も高くないので人気。Web 上に情報も多い。デフォルトの状態で呼び出せない人や物を学習させられる。Dreambooth に比べてファイルサイズが小さく、学習に必要な VRAM も小さい。
Hypernetwork
画風の調整に向いてる。学習時間が短く準備の手間も少ない。
Textual Inversion
デフォルトの状態で呼び出せる人や物を語に覚えさせたり、トークンを節約したりするのに使う。描く能力はあるが呼び出し方がわからない人や物を呼び出せることがある。
Dreambooth
デフォルトの状態で呼び出せない人や物を学習させられる。U-Net 全体を調整するので最も高品質。ただしファイルサイズも大きく、学習に必要な VRAM も多い。
VRAM8GB でできるファインチューニング
- Textual Inversion
- Hypernetwork
- LoRA
- DreamArtist
VRAM 12 GB でできるファインチューニング
- Dreambooth
VRAM 16 GB でできるファインシューニング
- 追加学習