Commit Graph

119 Commits

Author SHA1 Message Date
Bryce
1f7403155e fix: more thorough cleaning of memory when switching models
also cleanup up some test failures
2022-12-18 22:00:29 -08:00
Bryce Drennan
ccf9749df5
fix: performance improvement. disable ema (#139)
A configuration `use_ema: False` was became necessary in the newer Stable Diffusion code but was missing from the 1.5 config.
2022-12-18 00:00:38 -08:00
Paul Mestemaker
ad5e467042
feat: include negative prompts in logs and exif metadata (#135) 2022-12-13 10:05:24 -08:00
Paul Mestemaker
68791cf236
feat: better handling for default model names (#134)
* feat: better handling for default model names

Addresses #124
2022-12-09 01:14:47 -08:00
Bryce
f30823e0b5 feature: Stable Diffusion 2.1 2022-12-07 10:41:36 -08:00
Bryce
2f8edc1530 feature: negative prompting
- feature: negative prompting.  `--negative-prompt` or `ImaginePrompt(..., negative_prompt="ugly, deformed, extra arms, etc")`
- feature: a default negative prompt is added to all generations. Images in SD-2.0 don't look bad anymore. Images in 1.5 look improved as well.
2022-12-02 02:03:13 -08:00
Bryce
257752887d perf: add back memory efficiency improvements
Removed these in a rush to get SD-2.0 out.
2022-11-28 00:32:53 -08:00
Bryce
e0af5d0089 fix: version metadata was broken
Fixes #114
2022-11-27 14:46:01 -08:00
Bryce
4610d7f01d feature: xformers support
add more upscaling code (that doesn't yet work)
2022-11-26 22:55:51 -08:00
Bryce
9c153a8d2d feature: support k-sampler methods for SD-2.0-v (768) 2022-11-26 16:18:08 -08:00
Bryce
015088507f feature/refactor/fix: better defaults. correct version in metadata
- feature: use different default steps and image sizes depending on sampler and model selceted
- fix: #110 use proper version in image metadata
- refactor: samplers all have their own class that inherits from ImageSampler
2022-11-26 16:18:08 -08:00
Kian-Meng Ang
3d04df4dee Fix typos
Found via `codespell -S ./imaginairy/vendored`
2022-11-25 19:23:06 -08:00
Bryce
58c2897dd1 refactor: fix lint issues 2022-11-25 14:39:20 -08:00
Maxime Mouchet
40ab571fc1 cli: show defaults and cleanup help text 2022-11-25 07:46:40 -08:00
Bryce
e67341223b feature: Stable Diffusion 2.0
working: CUDA and MacOS
working: 512p model with all samplers
working: inpainting with all samplers
working: 768p model with ddim sampler
2022-11-24 00:50:57 -08:00
Bryce
893b041a8f feature: progress image callback 2022-11-15 18:06:03 -08:00
Bryce
095a905d72 fix: cpu generation doesn't use autocast
autocast not supported on CPU
https://github.com/pytorch/pytorch/issues/55374
https://github.com/invoke-ai/InvokeAI/pull/518
2022-11-13 14:42:19 -08:00
Bryce
b8a88370de fix: lower memory reqs for attention on M1s 2022-11-13 13:40:37 -08:00
Bryce
d499ca307b fix: use inpainting source that doesn't require login 2022-11-12 21:13:25 -08:00
Bryce
584e0d9df0 feature: change default sampler to k_dpmpp_2m, which is more than twice as fast 2022-11-12 20:56:38 -08:00
Bryce
0f02fc587c fix: k_dpm_fast on MPS platform
fixes #75

As discussed here: https://github.com/AUTOMATIC1111/stable-diffusion-webui/issues/2446#issuecomment-1279733739
2022-11-12 20:19:23 -08:00
Bryce
7af1ab66ca fix: add workaround for bug in k_diffusion on mps
As documented here: https://github.com/AUTOMATIC1111/stable-diffusion-webui/issues/4558#issuecomment-1310387114

- make image logs more consistent
- note which step the progress images belong to in the filename
2022-11-12 20:19:23 -08:00
Bryce
7fba2972e8 feature: added DPM++ 2S a and DPM++ 2M samplers
-fix: fix bug with `--show-work`
2022-11-11 10:52:48 -08:00
Bryce
021a0c540d feature: inpainting model support; improved model manager 2022-10-25 20:07:35 -07:00
Bryce
94c0aeab12 feature: switch between models without restarting python instance 2022-10-23 22:55:28 -07:00
Bryce
4d802a043e feature: stable diffusion 1.5 2022-10-22 02:22:57 -07:00
Bryce
8332593fed feature: dilation and erosion of masks
Previously the `+` and `-` characters in a mask (example: `face{+0.1}`) added to the grayscale value of any masked areas. This wasn't very useful. The new behavior is that the mask will expand or contract by the number of pixel specified. The technical terms for this are dilation and erosion.  This allows much greater control over the masked area.
2022-10-17 23:47:26 -07:00
Bryce
741a433c56 feature: update k_diffusion. add dpm_fast and dpm_addaptive samplers 2022-10-16 22:10:54 -07:00
Bryce
dcf953383e tests: support distributed test runs
- switch to expected images instead of hashes. allow fuzzy matches
feature: more consistent seeds
2022-10-16 20:22:16 -07:00
Bryce
4ba1965db8 feature: k-diff sampler img2img and masking 2022-10-14 03:23:16 -07:00
Bryce
281d23adf2 refactor: prep for supporting img2img in k-samplers 2022-10-13 07:04:37 -07:00
Bryce
e8bb3cf5fd refactor: consolidate masking logic 2022-10-13 07:04:37 -07:00
Bryce
72026c8c90 refactor: merge img2img and txt2img pipelines 2022-10-13 07:04:37 -07:00
Bryce
a105dadbc4 refactor: combine identical schedules 2022-10-13 07:04:37 -07:00
Bryce
8d4b5cb9e1 refactor: standardize samplers more 2022-10-13 07:04:37 -07:00
Bryce
153c259ee4 fix: k-sampler methods were broken 2022-10-12 20:30:49 -07:00
Bryce
299687645b refactor: remove unused parameter 2022-10-11 01:06:24 -05:00
Bryce
db5ebe9095 tests: tests can run without any network calls 2022-10-11 01:06:24 -05:00
Bryce
b0123a8f43 refactor: remove unused parameters 2022-10-11 01:06:24 -05:00
Bryce
7ae77faf07 refactor: log indentation via formatter
Replace manual indentation with a context-aware logging formatter.
2022-10-10 22:32:39 -05:00
Bryce
df3c752eb8 refactor: consolidate logging utils 2022-10-10 22:32:39 -05:00
Bryce
6a80759016 feature: improved safety filter
- provides more informative logs
- provides a detailed safety score object
- adds non-bypassable filter for extreme content
2022-10-10 03:32:19 -05:00
Bryce
0db5c329bb fix: prompt expansion bug 2022-10-10 03:32:19 -05:00
Bryce Drennan
31c2160e21
feature: prompt expansion (#51)
You can use `{}` to randomly pull values from lists.  A list of values separated by `|` and enclosed in `{ }` will be randomly drawn from in a non-repeating fashion. Values that are surrounded by `_ _` will pull from a phrase list of the same name.   Folders containing .txt phraselist files may be specified via
`--prompt_library_path`. The option may be specified multiple times.  Built-in categories:

      3d-term, adj-architecture, adj-beauty, adj-detailed, adj-emotion, adj-general, adj-horror, animal, art-movement,
      art-site, artist, artist-botanical, artist-surreal, aspect-ratio, bird, body-of-water, body-pose, camera-brand,
      camera-model, color, cosmic-galaxy, cosmic-nebula, cosmic-star, cosmic-term, dinosaur, eyecolor, f-stop,
      fantasy-creature, fantasy-setting, fish, flower, focal-length, food, fruit, games, gen-modifier, hair, hd,
      iso-stop, landscape-type, national-park, nationality, neg-weight, noun-beauty, noun-fantasy, noun-general,
      noun-horror, occupation, photo-term, pop-culture, pop-location, punk-style, quantity, rpg-item, scenario-desc,
      skin-color, spaceship, style, tree-species, trippy, world-heritage-site

   Examples:

   `imagine "a {red|black} dog" -r 2 --seed 0` will generate both "a red dog" and "a black dog"

   `imagine "a {_color_} dog" -r 4 --seed 0` will generate four, different colored dogs. The colors will eb pulled from an included
   phraselist of colors.

   `imagine "a {_spaceship_|_fruit_|hot air balloon}. low-poly" -r 4 --seed 0` will generate images of spaceships or fruits or a hot air balloon

   Credit to [noodle-soup-prompts](https://github.com/WASasquatch/noodle-soup-prompts/) where most, but not all, of the wordlists originate.
2022-10-08 18:34:35 -07:00
Bryce
9ba302a5f4 refactor: begin to standardize samplers 2022-10-07 00:02:26 -05:00
Bryce
62e4e9cc9d refactor: delete unused code 2022-10-07 00:02:26 -05:00
Bryce
e5c5df6b3d tests: add some utils tests 2022-10-07 00:02:26 -05:00
Bryce
beba2be6d5 fix: set fidelity default if None is passed in
Addresses #48
2022-10-06 19:24:27 -05:00
Bryce
2221d3d1c2 fix: handle small input images
If input images didn't need resizing because they were already smaller than max width/height then they didn't get normalized to a multiple of 64.  This caused an exception like the following:

```Sizes of tensors must match except in dimension 1. Expected size 4 but got size 3 for tensor number 1 in the list.
```
2022-10-06 01:24:21 -05:00
Bryce
d3623882db fix: set default back to previous value
addresses #43
2022-10-06 01:24:21 -05:00