kohya_ss / docs /gen_img_README-ja.md
Ateras's picture
Upload folder using huggingface_hub
fe6327d
|
raw
history blame
33.2 kB
SD 1.xおよび2.xのモデル、圓リポゞトリで孊習したLoRA、ControlNetv1.0のみ動䜜確認などに察応した、Diffusersベヌスの掚論画像生成スクリプトです。コマンドラむンから甚いたす。
# 抂芁
* Diffusers (v0.10.2) ベヌスの掚論画像生成スクリプト。
* SD 1.xおよび2.x (base/v-parameterization)モデルに察応。
* txt2img、img2img、inpaintingに察応。
* 察話モヌド、およびファむルからのプロンプト読み蟌み、連続生成に察応。
* プロンプト1行あたりの生成枚数を指定可胜。
* 党䜓の繰り返し回数を指定可胜。
* `fp16`だけでなく`bf16`にも察応。
* xformersに察応し高速生成が可胜。
* xformersにより省メモリ生成を行いたすが、Automatic 1111氏のWeb UIほど最適化しおいないため、512*512の画像生成でおおむね6GB皋床のVRAMを䜿甚したす。
* プロンプトの225トヌクンぞの拡匵。ネガティブプロンプト、重みづけに察応。
* Diffusersの各皮samplerに察応Web UIよりもsampler数は少ないです。
* Text Encoderのclip skip最埌からn番目の局の出力を甚いるに察応。
* VAEの別途読み蟌み。
* CLIP Guided Stable Diffusion、VGG16 Guided Stable Diffusion、Highres. fix、upscale察応。
* Highres. fixはWeb UIの実装を党く確認しおいない独自実装のため、出力結果は異なるかもしれたせん。
* LoRA察応。適甚率指定、耇数LoRA同時利甚、重みのマヌゞに察応。
* Text EncoderずU-Netで別の適甚率を指定するこずはできたせん。
* Attention Coupleに察応。
* ControlNet v1.0に察応。
* 途䞭でモデルを切り替えるこずはできたせんが、バッチファむルを組むこずで察応できたす。
* 個人的に欲しくなった機胜をいろいろ远加。
機胜远加時にすべおのテストを行っおいるわけではないため、以前の機胜に圱響が出お䞀郚機胜が動かない可胜性がありたす。䜕か問題があればお知らせください。
# 基本的な䜿い方
## 察話モヌドでの画像生成
以䞋のように入力しおください。
```batchfile
python gen_img_diffusers.py --ckpt <モデル名> --outdir <画像出力先> --xformers --fp16 --interactive
```
`--ckpt`オプションにモデルStable Diffusionのcheckpointファむル、たたはDiffusersのモデルフォルダ、`--outdir`オプションに画像の出力先フォルダを指定したす。
`--xformers`オプションでxformersの䜿甚を指定したすxformersを䜿わない堎合は倖しおください。`--fp16`オプションでfp16単粟床での掚論を行いたす。RTX 30系のGPUでは `--bf16`オプションでbf16bfloat16での掚論を行うこずもできたす。
`--interactive`オプションで察話モヌドを指定しおいたす。
Stable Diffusion 2.0たたはそこからの远加孊習モデルを䜿う堎合は`--v2`オプションを远加しおください。v-parameterizationを䜿うモデル`768-v-ema.ckpt`およびそこからの远加孊習モデルを䜿う堎合はさらに`--v_parameterization`を远加しおください。
`--v2`の指定有無が間違っおいるずモデル読み蟌み時に゚ラヌになりたす。`--v_parameterization`の指定有無が間違っおいるず茶色い画像が衚瀺されたす。
`Type prompt:`ず衚瀺されたらプロンプトを入力しおください。
![image](https://user-images.githubusercontent.com/52813779/235343115-f3b8ac82-456d-4aab-9724-0cc73c4534aa.png)
※画像が衚瀺されず゚ラヌになる堎合、headless画面衚瀺機胜なしのOpenCVがむンストヌルされおいるかもしれたせん。`pip install opencv-python`ずしお通垞のOpenCVを入れおください。たたは`--no_preview`オプションで画像衚瀺を止めおください。
画像りィンドりを遞択しおから䜕らかのキヌを抌すずりィンドりが閉じ、次のプロンプトが入力できたす。プロンプトでCtrl+Z、゚ンタヌの順に打鍵するずスクリプトを閉じたす。
## 単䞀のプロンプトで画像を䞀括生成
以䞋のように入力したす実際には1行で入力したす。
```batchfile
python gen_img_diffusers.py --ckpt <モデル名> --outdir <画像出力先>
--xformers --fp16 --images_per_prompt <生成枚数> --prompt "<プロンプト>"
```
`--images_per_prompt`オプションで、プロンプト1件圓たりの生成枚数を指定したす。`--prompt`オプションでプロンプトを指定したす。スペヌスを含む堎合はダブルクォヌテヌションで囲んでください。
`--batch_size`オプションでバッチサむズを指定できたす埌述。
## ファむルからプロンプトを読み蟌み䞀括生成
以䞋のように入力したす。
```batchfile
python gen_img_diffusers.py --ckpt <モデル名> --outdir <画像出力先>
--xformers --fp16 --from_file <プロンプトファむル名>
```
`--from_file`オプションで、プロンプトが蚘述されたファむルを指定したす。1行1プロンプトで蚘述しおください。`--images_per_prompt`オプションを指定しお1行あたり生成枚数を指定できたす。
## ネガティブプロンプト、重みづけの䜿甚
プロンプトオプションプロンプト内で`--x`のように指定、埌述で`--n`を曞くず、以降がネガティブプロンプトずなりたす。
たたAUTOMATIC1111氏のWeb UIず同様の `()` や` []` 、`(xxx:1.3)` などによる重みづけが可胜です実装はDiffusersの[Long Prompt Weighting Stable Diffusion](https://github.com/huggingface/diffusers/blob/main/examples/community/README.md#long-prompt-weighting-stable-diffusion)からコピヌしたものです。
コマンドラむンからのプロンプト指定、ファむルからのプロンプト読み蟌みでも同様に指定できたす。
![image](https://user-images.githubusercontent.com/52813779/235343128-e79cd768-ec59-46f5-8395-fce9bdc46208.png)
# 䞻なオプション
コマンドラむンから指定しおください。
## モデルの指定
- `--ckpt <モデル名>`モデル名を指定したす。`--ckpt`オプションは必須です。Stable Diffusionのcheckpointファむル、たたはDiffusersのモデルフォルダ、Hugging FaceのモデルIDを指定できたす。
- `--v2`Stable Diffusion 2.x系のモデルを䜿う堎合に指定したす。1.x系の堎合には指定䞍芁です。
- `--v_parameterization`v-parameterizationを䜿うモデルを䜿う堎合に指定したす`768-v-ema.ckpt`およびそこからの远加孊習モデル、Waifu Diffusion v1.5など。
`--v2`の指定有無が間違っおいるずモデル読み蟌み時に゚ラヌになりたす。`--v_parameterization`の指定有無が間違っおいるず茶色い画像が衚瀺されたす。
- `--vae`䜿甚するVAEを指定したす。未指定時はモデル内のVAEを䜿甚したす。
## 画像生成ず出力
- `--interactive`むンタラクティブモヌドで動䜜したす。プロンプトを入力するず画像が生成されたす。
- `--prompt <プロンプト>`プロンプトを指定したす。スペヌスを含む堎合はダブルクォヌテヌションで囲んでください。
- `--from_file <プロンプトファむル名>`プロンプトが蚘述されたファむルを指定したす。1行1プロンプトで蚘述しおください。なお画像サむズやguidance scaleはプロンプトオプション埌述で指定できたす。
- `--W <画像幅>`画像の幅を指定したす。デフォルトは`512`です。
- `--H <画像高さ>`画像の高さを指定したす。デフォルトは`512`です。
- `--steps <ステップ数>`サンプリングステップ数を指定したす。デフォルトは`50`です。
- `--scale <ガむダンススケヌル>`unconditionalガむダンススケヌルを指定したす。デフォルトは`7.5`です。
- `--sampler <サンプラヌ名>`サンプラヌを指定したす。デフォルトは`ddim`です。Diffusersで提䟛されおいるddim、pndm、dpmsolver、dpmsolver+++、lms、euler、euler_a、が指定可胜です埌ろの䞉぀はk_lms、k_euler、k_euler_aでも指定できたす。
- `--outdir <画像出力先フォルダ>`画像の出力先を指定したす。
- `--images_per_prompt <生成枚数>`プロンプト1件圓たりの生成枚数を指定したす。デフォルトは`1`です。
- `--clip_skip <スキップ数>`CLIPの埌ろから䜕番目の局を䜿うかを指定したす。省略時は最埌の局を䜿いたす。
- `--max_embeddings_multiples <倍数>`CLIPの入出力長をデフォルト75の䜕倍にするかを指定したす。未指定時は75のたたです。たずえば3を指定するず入出力長が225になりたす。
- `--negative_scale` : uncoditioningのguidance scaleを個別に指定したす。[gcem156氏のこちらの蚘事](https://note.com/gcem156/n/ne9a53e4a6f43)を参考に実装したものです。
## メモリ䜿甚量や生成速床の調敎
- `--batch_size <バッチサむズ>`バッチサむズを指定したす。デフォルトは`1`です。バッチサむズが倧きいずメモリを倚く消費したすが、生成速床が速くなりたす。
- `--vae_batch_size <VAEのバッチサむズ>`VAEのバッチサむズを指定したす。デフォルトはバッチサむズず同じです。
VAEのほうがメモリを倚く消費するため、デノむゞング埌stepが100%になった埌でメモリ䞍足になる堎合がありたす。このような堎合にはVAEのバッチサむズを小さくしおください。
- `--xformers`xformersを䜿う堎合に指定したす。
- `--fp16`fp16単粟床での掚論を行いたす。`fp16`ず`bf16`をどちらも指定しない堎合はfp32単粟床での掚論を行いたす。
- `--bf16`bf16bfloat16での掚論を行いたす。RTX 30系のGPUでのみ指定可胜です。`--bf16`オプションはRTX 30系以倖のGPUでぱラヌになりたす。`fp16`よりも`bf16`のほうが掚論結果がNaNになる真っ黒の画像になる可胜性が䜎いようです。
## 远加ネットワヌクLoRA等の䜿甚
- `--network_module`䜿甚する远加ネットワヌクを指定したす。LoRAの堎合は`--network_module networks.lora`ず指定したす。耇数のLoRAを䜿甚する堎合は`--network_module networks.lora networks.lora networks.lora`のように指定したす。
- `--network_weights`䜿甚する远加ネットワヌクの重みファむルを指定したす。`--network_weights model.safetensors`のように指定したす。耇数のLoRAを䜿甚する堎合は`--network_weights model1.safetensors model2.safetensors model3.safetensors`のように指定したす。匕数の数は`--network_module`で指定した数ず同じにしおください。
- `--network_mul`䜿甚する远加ネットワヌクの重みを䜕倍にするかを指定したす。デフォルトは`1`です。`--network_mul 0.8`のように指定したす。耇数のLoRAを䜿甚する堎合は`--network_mul 0.4 0.5 0.7`のように指定したす。匕数の数は`--network_module`で指定した数ず同じにしおください。
- `--network_merge`䜿甚する远加ネットワヌクの重みを`--network_mul`に指定した重みであらかじめマヌゞしたす。`--network_pre_calc` ず同時に䜿甚できたせん。プロンプトオプションの`--am`、およびRegional LoRAは䜿甚できなくなりたすが、LoRA未䜿甚時ず同じ皋床たで生成が高速化されたす。
- `--network_pre_calc`䜿甚する远加ネットワヌクの重みを生成ごずにあらかじめ蚈算したす。プロンプトオプションの`--am`が䜿甚できたす。LoRA未䜿甚時ず同じ皋床たで生成は高速化されたすが、生成前に重みを蚈算する時間が必芁で、たたメモリ䜿甚量も若干増加したす。Regional LoRA䜿甚時は無効になりたす 。
# 䞻なオプションの指定䟋
次は同䞀プロンプトで64枚をバッチサむズ4で䞀括生成する䟋です。
```batchfile
python gen_img_diffusers.py --ckpt model.ckpt --outdir outputs
--xformers --fp16 --W 512 --H 704 --scale 12.5 --sampler k_euler_a
--steps 32 --batch_size 4 --images_per_prompt 64
--prompt "beautiful flowers --n monochrome"
```
次はファむルに曞かれたプロンプトを、それぞれ10枚ず぀、バッチサむズ4で䞀括生成する䟋です。
```batchfile
python gen_img_diffusers.py --ckpt model.ckpt --outdir outputs
--xformers --fp16 --W 512 --H 704 --scale 12.5 --sampler k_euler_a
--steps 32 --batch_size 4 --images_per_prompt 10
--from_file prompts.txt
```
Textual Inversion埌述およびLoRAの䜿甚䟋です。
```batchfile
python gen_img_diffusers.py --ckpt model.safetensors
--scale 8 --steps 48 --outdir txt2img --xformers
--W 512 --H 768 --fp16 --sampler k_euler_a
--textual_inversion_embeddings goodembed.safetensors negprompt.pt
--network_module networks.lora networks.lora
--network_weights model1.safetensors model2.safetensors
--network_mul 0.4 0.8
--clip_skip 2 --max_embeddings_multiples 1
--batch_size 8 --images_per_prompt 1 --interactive
```
# プロンプトオプション
プロンプト内で、`--n`のように「ハむフンふた぀+アルファベットn文字」でプロンプトから各皮オプションの指定が可胜です。察話モヌド、コマンドラむン、ファむル、いずれからプロンプトを指定する堎合でも有効です。
プロンプトのオプション指定`--n`の前埌にはスペヌスを入れおください。
- `--n`ネガティブプロンプトを指定したす。
- `--w`画像幅を指定したす。コマンドラむンからの指定を䞊曞きしたす。
- `--h`画像高さを指定したす。コマンドラむンからの指定を䞊曞きしたす。
- `--s`ステップ数を指定したす。コマンドラむンからの指定を䞊曞きしたす。
- `--d`この画像の乱数seedを指定したす。`--images_per_prompt`を指定しおいる堎合は「--d 1,2,3,4」のようにカンマ区切りで耇数指定しおください。
※様々な理由により、Web UIずは同じ乱数seedでも生成される画像が異なる堎合がありたす。
- `--l`guidance scaleを指定したす。コマンドラむンからの指定を䞊曞きしたす。
- `--t`img2img埌述のstrengthを指定したす。コマンドラむンからの指定を䞊曞きしたす。
- `--nl`ネガティブプロンプトのguidance scaleを指定したす埌述。コマンドラむンからの指定を䞊曞きしたす。
- `--am`远加ネットワヌクの重みを指定したす。コマンドラむンからの指定を䞊曞きしたす。耇数の远加ネットワヌクを䜿甚する堎合は`--am 0.8,0.5,0.3`のように __カンマ区切りで__ 指定したす。
※これらのオプションを指定するず、バッチサむズよりも小さいサむズでバッチが実行される堎合がありたすこれらの倀が異なるず䞀括生成できないため。あたり気にしなくお倧䞈倫ですが、ファむルからプロンプトを読み蟌み生成する堎合は、これらの倀が同䞀のプロンプトを䞊べおおくず効率が良くなりたす。
䟋
```
(masterpiece, best quality), 1girl, in shirt and plated skirt, standing at street under cherry blossoms, upper body, [from below], kind smile, looking at another, [goodembed] --n realistic, real life, (negprompt), (lowres:1.1), (worst quality:1.2), (low quality:1.1), bad anatomy, bad hands, text, error, missing fingers, extra digit, fewer digits, cropped, normal quality, jpeg artifacts, signature, watermark, username, blurry --w 960 --h 640 --s 28 --d 1
```
![image](https://user-images.githubusercontent.com/52813779/235343446-25654172-fff4-4aaf-977a-20d262b51676.png)
# img2img
## オプション
- `--image_path`img2imgに利甚する画像を指定したす。`--image_path template.png`のように指定したす。フォルダを指定するず、そのフォルダの画像を順次利甚したす。
- `--strength`img2imgのstrengthを指定したす。`--strength 0.8`のように指定したす。デフォルトは`0.8`です。
- `--sequential_file_name`ファむル名を連番にするかどうかを指定したす。指定するず生成されるファむル名が`im_000001.png`からの連番になりたす。
- `--use_original_file_name`指定するず生成ファむル名がオリゞナルのファむル名ず同じになりたす。
## コマンドラむンからの実行䟋
```batchfile
python gen_img_diffusers.py --ckpt trinart_characters_it4_v1_vae_merged.ckpt
--outdir outputs --xformers --fp16 --scale 12.5 --sampler k_euler --steps 32
--image_path template.png --strength 0.8
--prompt "1girl, cowboy shot, brown hair, pony tail, brown eyes,
sailor school uniform, outdoors
--n lowres, bad anatomy, bad hands, error, missing fingers, cropped,
worst quality, low quality, normal quality, jpeg artifacts, (blurry),
hair ornament, glasses"
--batch_size 8 --images_per_prompt 32
```
`--image_path`オプションにフォルダを指定するず、そのフォルダの画像を順次読み蟌みたす。生成される枚数は画像枚数ではなく、プロンプト数になりたすので、`--images_per_promptPPオプションを指定しおimg2imgする画像の枚数ずプロンプト数を合わせおください。
ファむルはファむル名で゜ヌトしお読み蟌みたす。なお゜ヌト順は文字列順ずなりたすので`1.jpg→2.jpg→10.jpg`ではなく`1.jpg→10.jpg→2.jpg`の順、頭を0埋めするなどしおご察応ください`01.jpg→02.jpg→10.jpg`。
## img2imgを利甚したupscale
img2img時にコマンドラむンオプションの`--W`ず`--H`で生成画像サむズを指定するず、元画像をそのサむズにリサむズしおからimg2imgを行いたす。
たたimg2imgの元画像がこのスクリプトで生成した画像の堎合、プロンプトを省略するず、元画像のメタデヌタからプロンプトを取埗しそのたた甚いたす。これによりHighres. fixの2nd stageの動䜜だけを行うこずができたす。
## img2img時のinpainting
画像およびマスク画像を指定しおinpaintingできたすinpaintingモデルには察応しおおらず、単にマスク領域を察象にimg2imgするだけです。
オプションは以䞋の通りです。
- `--mask_image`マスク画像を指定したす。`--img_path`ず同様にフォルダを指定するず、そのフォルダの画像を順次利甚したす。
マスク画像はグレヌスケヌル画像で、癜の郚分がinpaintingされたす。境界をグラデヌションしおおくずなんずなく滑らかになりたすのでお勧めです。
![image](https://user-images.githubusercontent.com/52813779/235343795-9eaa6d98-02ff-4f32-b089-80d1fc482453.png)
# その他の機胜
## Textual Inversion
`--textual_inversion_embeddings`オプションで䜿甚するembeddingsを指定したす耇数指定可。拡匵子を陀いたファむル名をプロンプト内で䜿甚するこずで、そのembeddingsを利甚したすWeb UIず同様の䜿甚法です。ネガティブプロンプト内でも䜿甚できたす。
モデルずしお、圓リポゞトリで孊習したTextual Inversionモデル、およびWeb UIで孊習したTextual Inversionモデル画像埋め蟌みは非察応を利甚できたす
## Extended Textual Inversion
`--textual_inversion_embeddings`の代わりに`--XTI_embeddings`オプションを指定しおください。䜿甚法は`--textual_inversion_embeddings`ず同じです。
## Highres. fix
AUTOMATIC1111氏のWeb UIにある機胜の類䌌機胜です独自実装のためもしかしたらいろいろ異なるかもしれたせん。最初に小さめの画像を生成し、その画像を元にimg2imgするこずで、画像党䜓の砎綻を防ぎ぀぀倧きな解像床の画像を生成したす。
2nd stageのstep数は`--steps` ず`--strength`オプションの倀から蚈算されたす`steps*strength`。
img2imgず䜵甚できたせん。
以䞋のオプションがありたす。
- `--highres_fix_scale`Highres. fixを有効にしお、1st stageで生成する画像のサむズを、倍率で指定したす。最終出力が1024x1024で、最初に512x512の画像を生成する堎合は`--highres_fix_scale 0.5`のように指定したす。Web UI出の指定の逆数になっおいたすのでご泚意ください。
- `--highres_fix_steps`1st stageの画像のステップ数を指定したす。デフォルトは`28`です。
- `--highres_fix_save_1st`1st stageの画像を保存するかどうかを指定したす。
- `--highres_fix_latents_upscaling`指定するず2nd stageの画像生成時に1st stageの画像をlatentベヌスでupscalingしたすbilinearのみ察応。未指定時は画像をLANCZOS4でupscalingしたす。
- `--highres_fix_upscaler`2nd stageに任意のupscalerを利甚したす。珟圚は`--highres_fix_upscaler tools.latent_upscaler` のみ察応しおいたす。
- `--highres_fix_upscaler_args``--highres_fix_upscaler`で指定したupscalerに枡す匕数を指定したす。
`tools.latent_upscaler`の堎合は、`--highres_fix_upscaler_args "weights=D:\Work\SD\Models\others\etc\upscaler-v1-e100-220.safetensors"`のように重みファむルを指定したす。
コマンドラむンの䟋です。
```batchfile
python gen_img_diffusers.py --ckpt trinart_characters_it4_v1_vae_merged.ckpt
--n_iter 1 --scale 7.5 --W 1024 --H 1024 --batch_size 1 --outdir ../txt2img
--steps 48 --sampler ddim --fp16
--xformers
--images_per_prompt 1 --interactive
--highres_fix_scale 0.5 --highres_fix_steps 28 --strength 0.5
```
## ControlNet
珟圚はControlNet 1.0のみ動䜜確認しおいたす。プリプロセスはCannyのみサポヌトしおいたす。
以䞋のオプションがありたす。
- `--control_net_models`ControlNetのモデルファむルを指定したす。
耇数指定するず、それらをstepごずに切り替えお利甚したすWeb UIのControlNet拡匵の実装ず異なりたす。diffず通垞の䞡方をサポヌトしたす。
- `--guide_image_path`ControlNetに䜿うヒント画像を指定したす。`--img_path`ず同様にフォルダを指定するず、そのフォルダの画像を順次利甚したす。Canny以倖のモデルの堎合には、あらかじめプリプロセスを行っおおいおください。
- `--control_net_preps`ControlNetのプリプロセスを指定したす。`--control_net_models`ず同様に耇数指定可胜です。珟圚はcannyのみ察応しおいたす。察象モデルでプリプロセスを䜿甚しない堎合は `none` を指定したす。
cannyの堎合 `--control_net_preps canny_63_191`のように、閟倀1ず2を'_'で区切っお指定できたす。
- `--control_net_weights`ControlNetの適甚時の重みを指定したす`1.0`で通垞、`0.5`なら半分の圱響力で適甚。`--control_net_models`ず同様に耇数指定可胜です。
- `--control_net_ratios`ControlNetを適甚するstepの範囲を指定したす。`0.5`の堎合は、step数の半分たでControlNetを適甚したす。`--control_net_models`ず同様に耇数指定可胜です。
コマンドラむンの䟋です。
```batchfile
python gen_img_diffusers.py --ckpt model_ckpt --scale 8 --steps 48 --outdir txt2img --xformers
--W 512 --H 768 --bf16 --sampler k_euler_a
--control_net_models diff_control_sd15_canny.safetensors --control_net_weights 1.0
--guide_image_path guide.png --control_net_ratios 1.0 --interactive
```
## Attention Couple + Reginal LoRA
プロンプトをいく぀かの郚分に分割し、それぞれのプロンプトを画像内のどの領域に適甚するかを指定できる機胜です。個別のオプションはありたせんが、`mask_path`ずプロンプトで指定したす。
たず、プロンプトで` AND `を利甚しお、耇数郚分を定矩したす。最初の3぀に察しお領域指定ができ、以降の郚分は画像党䜓ぞ適甚されたす。ネガティブプロンプトは画像党䜓に適甚されたす。
以䞋ではANDで3぀の郚分を定矩しおいたす。
```
shs 2girls, looking at viewer, smile AND bsb 2girls, looking back AND 2girls --n bad quality, worst quality
```
次にマスク画像を甚意したす。マスク画像はカラヌの画像で、RGBの各チャネルがプロンプトのANDで区切られた郚分に察応したす。たたあるチャネルの倀がすべお0の堎合、画像党䜓に適甚されたす。
䞊蚘の䟋では、Rチャネルが`shs 2girls, looking at viewer, smile`、Gチャネルが`bsb 2girls, looking back`に、Bチャネルが`2girls`に察応したす。次のようなマスク画像を䜿甚するず、Bチャネルに指定がありたせんので、`2girls`は画像党䜓に適甚されたす。
![image](https://user-images.githubusercontent.com/52813779/235343061-b4dc9392-3dae-4831-8347-1e9ae5054251.png)
マスク画像は`--mask_path`で指定したす。珟圚は1枚のみ察応しおいたす。指定した画像サむズに自動的にリサむズされ適甚されたす。
ControlNetず組み合わせるこずも可胜です现かい䜍眮指定にはControlNetずの組み合わせを掚奚したす。
LoRAを指定するず、`--network_weights`で指定した耇数のLoRAがそれぞれANDの各郚分に察応したす。珟圚の制玄ずしお、LoRAの数はANDの郚分の数ず同じである必芁がありたす。
## CLIP Guided Stable Diffusion
DiffusersのCommunity Examplesの[こちらのcustom pipeline](https://github.com/huggingface/diffusers/blob/main/examples/community/README.md#clip-guided-stable-diffusion)から゜ヌスをコピヌ、倉曎したものです。
通垞のプロンプトによる生成指定に加えお、远加でより倧芏暡のCLIPでプロンプトのテキストの特城量を取埗し、生成䞭の画像の特城量がそのテキストの特城量に近づくよう、生成される画像をコントロヌルしたす私のざっくりずした理解です。倧きめのCLIPを䜿いたすのでVRAM䜿甚量はかなり増加しVRAM 8GBでは512*512でも厳しいかもしれたせん、生成時間も掛かりたす。
なお遞択できるサンプラヌはDDIM、PNDM、LMSのみずなりたす。
`--clip_guidance_scale`オプションにどの皋床、CLIPの特城量を反映するかを数倀で指定したす。先のサンプルでは100になっおいたすので、そのあたりから始めお増枛するず良いようです。
デフォルトではプロンプトの先頭75トヌクン重みづけの特殊文字を陀くがCLIPに枡されたす。プロンプトの`--c`オプションで、通垞のプロンプトではなく、CLIPに枡すテキストを別に指定できたすたずえばCLIPはDreamBoothのidentifier識別子や「1girl」などのモデル特有の単語は認識できないず思われたすので、それらを省いたテキストが良いず思われたす。
コマンドラむンの䟋です。
```batchfile
python gen_img_diffusers.py --ckpt v1-5-pruned-emaonly.ckpt --n_iter 1
--scale 2.5 --W 512 --H 512 --batch_size 1 --outdir ../txt2img --steps 36
--sampler ddim --fp16 --opt_channels_last --xformers --images_per_prompt 1
--interactive --clip_guidance_scale 100
```
## CLIP Image Guided Stable Diffusion
テキストではなくCLIPに別の画像を枡し、その特城量に近づくよう生成をコントロヌルする機胜です。`--clip_image_guidance_scale`オプションで適甚量の数倀を、`--guide_image_path`オプションでguideに䜿甚する画像ファむルたたはフォルダを指定しおください。
コマンドラむンの䟋です。
```batchfile
python gen_img_diffusers.py --ckpt trinart_characters_it4_v1_vae_merged.ckpt
--n_iter 1 --scale 7.5 --W 512 --H 512 --batch_size 1 --outdir ../txt2img
--steps 80 --sampler ddim --fp16 --opt_channels_last --xformers
--images_per_prompt 1 --interactive --clip_image_guidance_scale 100
--guide_image_path YUKA160113420I9A4104_TP_V.jpg
```
### VGG16 Guided Stable Diffusion
指定した画像に近づくように画像生成する機胜です。通垞のプロンプトによる生成指定に加えお、远加でVGG16の特城量を取埗し、生成䞭の画像が指定したガむド画像に近づくよう、生成される画像をコントロヌルしたす。img2imgでの䜿甚をお勧めしたす通垞の生成では画像ががやけた感じになりたす。CLIP Guided Stable Diffusionの仕組みを流甚した独自の機胜です。たたアむデアはVGGを利甚したスタむル倉換から拝借しおいたす。
なお遞択できるサンプラヌはDDIM、PNDM、LMSのみずなりたす。
`--vgg16_guidance_scale`オプションにどの皋床、VGG16特城量を反映するかを数倀で指定したす。詊した感じでは100くらいから始めお増枛するず良いようです。`--guide_image_path`オプションでguideに䜿甚する画像ファむルたたはフォルダを指定しおください。
耇数枚の画像を䞀括でimg2img倉換し、元画像をガむド画像ずする堎合、`--guide_image_path`ず`--image_path`に同じ倀を指定すればOKです。
コマンドラむンの䟋です。
```batchfile
python gen_img_diffusers.py --ckpt wd-v1-3-full-pruned-half.ckpt
--n_iter 1 --scale 5.5 --steps 60 --outdir ../txt2img
--xformers --sampler ddim --fp16 --W 512 --H 704
--batch_size 1 --images_per_prompt 1
--prompt "picturesque, 1girl, solo, anime face, skirt, beautiful face
--n lowres, bad anatomy, bad hands, error, missing fingers,
cropped, worst quality, low quality, normal quality,
jpeg artifacts, blurry, 3d, bad face, monochrome --d 1"
--strength 0.8 --image_path ..\src_image
--vgg16_guidance_scale 100 --guide_image_path ..\src_image
```
`--vgg16_guidance_layerPで特城量取埗に䜿甚するVGG16のレむダヌ番号を指定できたすデフォルトは20でconv4-2のReLUです。䞊の局ほど画颚を衚珟し、䞋の局ほどコンテンツを衚珟するずいわれおいたす。
![image](https://user-images.githubusercontent.com/52813779/235343813-3c1f0d7a-4fb3-4274-98e4-b92d76b551df.png)
# その他のオプション
- `--no_preview` : 察話モヌドでプレビュヌ画像を衚瀺したせん。OpenCVがむンストヌルされおいない堎合や、出力されたファむルを盎接確認する堎合に指定しおください。
- `--n_iter` : 生成を繰り返す回数を指定したす。デフォルトは1です。プロンプトをファむルから読み蟌むずき、耇数回の生成を行いたい堎合に指定したす。
- `--tokenizer_cache_dir` : トヌクナむザヌのキャッシュディレクトリを指定したす。䜜業䞭
- `--seed` : 乱数seedを指定したす。1枚生成時はその画像のseed、耇数枚生成時は各画像のseedを生成するための乱数のseedになりたす`--from_file`で耇数画像生成するずき、`--seed`オプションを指定するず耇数回実行したずきに各画像が同じseedになりたす。
- `--iter_same_seed` : プロンプトに乱数seedの指定がないずき、`--n_iter`の繰り返し内ではすべお同じseedを䜿いたす。`--from_file`で指定した耇数のプロンプト間でseedを統䞀しお比范するずきに䜿いたす。
- `--diffusers_xformers` : Diffuserのxformersを䜿甚したす。
- `--opt_channels_last` : 掚論時にテン゜ルのチャンネルを最埌に配眮したす。堎合によっおは高速化されるこずがありたす。
- `--network_show_meta` : 远加ネットワヌクのメタデヌタを衚瀺したす。