Dream Factory release notes.
When updating to a new release, use the built-in setup.py script with the --update option to ensure all required repos are refreshed:
python setup.py --update
Tested & confirmed working with Auto1111 version: baf6946e06249c5af9851c60171692c44ef633e0
- Added an icon to upscale an image directly from the integrated gallery (using SD img2img upscaling). To use, you'll need to add MAX_OUTPUT_SIZE to your Dream Factory config.txt file (see config-default.txt for explanation).
- Modified some unclear startup messages.
- Hid the image gallery modal vertical scrollbar whenever it isn't needed.
Tested & confirmed working with Auto1111 version: b6af0a3809ea869fb180633f9affcae4b199ffcf
- Added the ability to use SD upscale when running process mode (!MODE = process) .prompts files. You'll need to set the maximum image output size that your GPU is capable of producing in your Dream Factory config.txt file to enable this (see config-default.txt for example).
Tested & confirmed working with Auto1111 version: b6af0a3809ea869fb180633f9affcae4b199ffcf
- Added civitai.com integration. Dream Factory will attempt to gather and cache information about your models, loras, embeddings, and hypernets from civitai.com in the background after every startup (e.g. friendly names, trigger words, base SD model). This info will be shown in the integrated editor reference. You may completely disable this functionality by adding CIVITAI_INTEGRATION = no to your Dream Factory config.txt file.
- Added editor reference support for subdirectories in your lora, embedding, and hypernet folders.
- The default ControlNet control mode has been set to 'balanced', which should resolve errors when not setting it yourself while using ControlNet.
- Setting ControlNet's pre-processor to one of the reference modes (e.g.: !CONTROLNET_PRE = reference_only) should now allow ControlNet to activate without having to specify a ControlNet model.
Tested & confirmed working with Auto1111 version: 20ae71faa8ef035c31aa3a410b707d792c8203a3
- Added support for the creation of seamless tiled output images.
- Support added for ControlNet control mode.
- Support added for ControlNet pixel perfect mode.
- Updated ControlNet extension API calls to be compatible with the latest version (09cb9a32d1051aa827f1bb092cf17fcbf996ed7f).
- Added a warning when attempting to use ControlNet guess mode, as it has been removed in the latest version of the ControlNet extension (replaced by control mode).
- Prompt file loading is now deferred until after all startup initialization is complete. This should prevent warnings when attempting to validate custom models before the list of valid models has been retrieved from Auto1111 via the API.
Tested & confirmed working with Auto1111 version: a9fed7c364061ae6efb37f797b6b522cb3cf7aa2
- Added additional support that should enable most ControlNet v1.1 functionality to work. Note that the ControlNet extension is under pretty heavy development at the moment and things may change. My own changes were tested against ControlNet extension hash
d499bd4
. If you have old prompt files that make use of preprocessors, note that some of the name references may have changed (and that they don't necessarily match what is displayed in the Auto1111 UI) - this is unfortunately out of my hands as the names are now retrieved via API call. - Support for ControlNet guess mode is in.
- The !STEPS directive now supports specifying a range.
- The !SCALE and !STRENGTH directives also support specifying a range. !MIN_SCALE, !MAX_SCALE, !MIN_STRENGTH, and !MAX_STRENGTH are still supported (within random prompt files) if you already have .prompts files using the old syntax.
- Specifying a single period (".") as your prompt (or within any prompts section) will be considered an empty prompt. Useful if you have
[prompts]
sections full of settings directives but don't want to actually add anything else to your prompt. Or if you just actually want an empty prompt (e.g. for ControlNet guessmode, etc).
- Fixed an issue where prompts that started with a
[
character would cause the rest of that[prompts]
section to be ignored.
Tested & confirmed working with Auto1111 version: a9fed7c364061ae6efb37f797b6b522cb3cf7aa2
- Added a mouseover preview for ControlNet pose images in the integrated editor.
- Empty subdirectories in your image output folder will now be automatically be cleaned up whenever you switch prompt file or shutdown Dream Factory.
- The !OUTPUT_DIR directive (for !MODE=process prompt files) will now attempt to create the specified directory if it doesn't exist (and will fall back to your default output folder if it can't be created for whatever reason).
- Fixed a bug that could cause errors if you attempted to run a !MODE=process prompt file with no input image set.
Tested & confirmed working with Auto1111 version: a9fed7c364061ae6efb37f797b6b522cb3cf7aa2
- Added an !UPSCALE_MODEL directive (docs).
- Added a new .prompts file type for batch processing (!MODE = process). This is meant for advanced users to set up automated upscaling, metadata tagging, file re-naming & moving tasks within Dream Factory. You can see an example process .prompts file here.
- Fixed an issue that caused the !REPEAT directive to not properly reset to the default (off) when new prompt files were loaded and no new directive was present.
Tested & confirmed working with Auto1111 version: a9fed7c364061ae6efb37f797b6b522cb3cf7aa2
- Added a !CLIP_SKIP directive (see docs for details).
- Added directives for IPTC metadata tagging (!IPTC_TITLE, !IPTC_DESCRIPTION, !IPTC_KEYWORDS, !IPTC_COPYRIGHT). Docs/examples.
- Added some additional initial data handshaking with Auto1111 to grab available upscalers/scripts for future additions.
- Modified setup.py to check dependancies and install any that are missing when running with the --update switch (
iptcinfo3
is a new dependency; runpython setup.py --update
once to get this update, then again to check your dependencies).
Tested & confirmed working with Auto1111 version: dfeee786f903e392dbef1519c7c246b9856ebab3
- Added an !AUTO_SIZE directive that allows you to have your output image dimensions automatically calculated based on the dimensions or aspect ratio of input images or ControlNet input images (see docs).
- !INPUT_IMAGE and !CONTROLNET_INPUT_IMAGE now both accept directories as input, in addition to individual files.
- Fixed a bug that was preventing img2img calls with ControlNet enabled to disregard ControlNet settings.
Tested & confirmed working with Auto1111 version: dfeee786f903e392dbef1519c7c246b9856ebab3
- Added an auto option for !CONTROLNET_MODEL that will allow you have Dream Factory choose the proper ControlNet model automatically as long as your pose images are named appropriately (see docs).
- Added additional custom filename variables for input image, controlnet image, and controlnet model.
- Changed web UI pages to use local cached versions of critical Javascript libraries instead of relying on remote CDNs.
- Preview images for ControlNet pose files can now be a different file format than the base pose file (so .jpg preview with a .png pose file or vice versa).
- Cleaned up various minor UI issues.
Tested & confirmed working with Auto1111 version: dfeee786f903e392dbef1519c7c246b9856ebab3
- Intitial support for ControlNet has been added. This is a fairly rough first cut, but it should be functional for those that want to give it a try. Note that the ControlNet API is fairly new and currently in a state of daily flux, so if you run into issues please ensure that the version of your ControlNet extension matches hash
c73c9451
(the latest at the time of this posting). Instructions here should get you started; please open issues if you find bugs! - Added new reference buttons in the integrated prompt editor for your ControlNet models, preprocessors, and pose/input files (hidden if the ControlNet extension is not installed.
- Added ControlNet metadata to output files when enabled; details visible in the integrated gallery.
- Fixed an issue that prevented a previously-set input image from being cleared when set to nothing (!INPUT_IMAGE = ) via prompt file directive.
- Hid the buttons for Hypernetwork / LoRA references in the integrated prompt editor if there are no user-installed hypernets/loras available.
Tested & confirmed working with Auto1111 version: 0cc0ee1bcb4c24a8c9715f66cede06601bfc00c8
- New JPG_QUALITY option in config.txt that allows specifying the jpg compression quality of output images. See config-defaults.txt for usage example.
Tested & confirmed working with Auto1111 version: 0cc0ee1bcb4c24a8c9715f66cede06601bfc00c8
- LoRA reference added to the integrated prompt editor.
- Support for chaining prompt file jobs via a new !NEXT_PROMPT_FILE prompt file directive. See docs for reference and usage example.
- Added a help link on the integrated editor page that opens the full command reference.
- Embeddings and Hypernetworks in .safetensors format will now properly show up in the integrated editor reference.
- Fix for potential broken images issue in user-defined gallery.
- Made initial config handshake with Auto1111 happen on a per-GPU basis instead of global to resolve a potential issue when running multiple GPUs.
- Support for custom output filenames via a new !FILENAME prompt file directive. See docs for usage example and reference.
- Hypernetwork reference within the integrated prompt editor (Lora reference will be added as soon as it's available via the Auto1111 API).
- The image gallery will now properly show any hypernetwork/lora references within prompts (previously they were stripped out since <> tags were being treated as HTML).
- When specifying custom seeds (via !SEED = xxx) within standard prompt files in combination with !REPEAT = yes, seed values will now be incremented on each completed loop to avoid creating duplicate images.
- Support for 'keyword:' when using the !AUTO_INSERT_MODEL_TRIGGER prompt file directive. For example, the following directive would replace the phrase 'replace_me' in prompts with the active model's configured trigger word:
!AUTO_INSERT_MODEL_TRIGGER = keyword:replace_me
This is mostly useful if you've trained a bunch of Dreambooth models and want to easily share a prompt file between them (e.g.: you have two models trained with tokens 'john man' and 'bob person'), or if you just want a high-degree of placement control over model token triggers.
- Corrected an issue that could cause the gallery page to fail to load if there were recent images with empty positive prompt metadata.
- Several changes to bring compatibility up to the current latest Automatic1111 version (
hash c98cb0f8ecc904666f47684e238dd022039ca16f
). Note that Dream Factory will operate with the original 'hires fix' behavior enabled (Auto1111 Settings -> Compatibility -> For hires fix...) to maintain compatibility with people running older versions of Auto1111.
- Corrected an issue that could cause the gallery page's image deletion function to fail if the output directory/prompt file name contained spaces.
- Added some additional touch checks on mobile to help prevent pinch/zoom motions from being confused with swiping left/right/down.
- Added the ability to specify EDITOR_MAX_STYLING_CHARS in config.txt. This is a cutoff (in number of characters) where the integrated editor will not attempt to add context-sensitive color styling when displaying prompt files. If you work with large prompt files, you may want to alter this depending on your tolerance for longer load times when working with lengthy files. Remember you can always use an external editor to edit your .prompt files directly (web interfaces aren't great with large amounts of text)!
- Added a vertical size constraint to images in the integrated gallery. Images should fit approximately within whatever display device you're using.
- Added the ability to specify multiple models with the !CKPT_FILE directive. When specifying multiple models, all of your prompts will be run against the first model, then the second, and so on. You can either use a comma-separated list (e.g. !CKPT_FILE = model01.ckpt, model02.ckpt, etc) or simply use '!CKPT_FILE = all' to specify that all of your models should be iterated through. In random mode, models will be switched every x prompts, where x can be defined with a new config.txt option (see RANDOM_QUEUE_SIZE in config-default.txt).
- Fixed an issue where GPU workers could appear to freeze on the status monitor page while new models were loading.
- Fixed some malformed HTML on the status monitor page.
- Added support for wildcards in prompt files. See prompts/wildcards/colors.txt for an example.
- Added references to your available embeddings to the prompt editor's built-in help (if you have any).
- Fixed handling of 'PF_CKPT_FILE =' assignments in config.txt. Default model files set in config.txt will now be validated, and setting '!CKPT_FILE =' (e.g. setting the model to nothing) in prompt files will now properly default back to the validated config.txt setting.
- If you have '--autolaunch' set in your Auto1111 startup script, it will be ignored when starting Dream Factory (so it won't open a browser to the Auto1111 API).
- Sorted the prompt file dropdown lists in both the prompt editor and control panel to appear in alphabetical order.
- Made significant improvements to the prompt editor's built-in help reference. Each help area now has its own button in the reference popup, and there is a bit of additional help context in each area regarding how to use models/wildcards/embeddings.
- Sorted the reference samplers & models lists in the prompt editor to appear in alphabetical order.
- Fixed an that would cause no work to be queued if the active prompt file had an empty [prompts] section under certain conditions.
- Fixed an issue that would cause copying a sampler or model to the clipboard to fail from the prompt editor reference screen on non-https connections.
- Sorted the reference samplers & models lists in the prompt editor to appear in alphabetical order.
If you're upgrading, you'll need to install psutil. You can either re-run setup.py, or just run this:
pip install psutil
- Added the ability to have Dream Factory automatically add the appropriate trigger word(s) to your prompts when using custom models. See model-triggers.txt in your dream-factory folder for more info (you'll need to run Dream Factory at least once after upgrading to generate this file). There is a new config.txt option that controls this behavior (see config-defaults.txt if you're upgrading).
- You can now put a 'catch-all' negative prompt in your config.txt file that will automatically be added to all new prompt files that you generate.
- Fixed an issue where the SD backend (auto1111) would leave child processes running in the background after Dream Factory was shut down.
- Added a model & sampler reference to the web GUI prompt editor. It shows a list of all samplers & models that are available to use; each item is clickable and will copy the appropriate prompt file directive to the clipboard. You can open it via the new button in the editor, or with ctrl+h.
- Added some additional error-handling around the txt2img and img2img workflows that should prevent Dream Factory from going into a state where it needs to be restarted due to GPU errors, or Auto1111 returning error responses.
- Fixed an issue where '.png' could be incorrectly appended to the seed value saved to image EXIF.
This is a major release; pretty much every piece of code has been touched and the entire backend has been re-done. I highly recommend a fresh install!
- Completely replaced the Stable Diffusion backend (which was previously a mix of my own SD repo and basujindal's fork, which seems to be mostly abandoned) with Automatic1111's popular repo. This means that pretty much all of Automatic1111's many features are now available within Dream Factory! Some highlights:
- Support for many more samplers.
- Support for SD 2.0 models.
- Support for prompt weighting within prompt files.
- Support for the highres fix, allowing for much more coherent images over 512x512.
- Support for prompt editing.
- Support for Codeformer as a face enhancement/restoration option alongside GFPGAN.
- Added staggered GPU startup for multi-GPU systems to help prevent system RAM issues during initialization.
- Added a sampler and model reference to new prompt files created via the web interface.
- Added !UPSCALE_GFPGAN_AMOUNT and !UPSCALE_CODEFORMER_AMOUNT as prompt file directives, allowing you to specify the degree of face enhancement you want (from 0.0 to 1.0 for either or both options).
- Corrected many bugs with multi-GPU operation. Just spent the past 36 hours watching Dream Factory churn out images non-stop on a 3-GPU machine powered by a circa-2013 single-core AMD Sempron with 6GB of physical RAM (16GB with a swap file to get through model loads). Mostly confident that everything is working properly now, but report issues if you find them!
- Corrected a bug where setting !INPUT_IMAGE = in prompt files didn't properly clear an existing input image.
- Models are now kept in memory on each GPU, instead of being discarded after each prompt call. This results in much faster performance.
- Dream Factory's setup script (setup.py) now installs far fewer python dependancies. Again, recommend a fresh install if you want to keep things clean.
- !SD_LOW_MEMORY and !SD_LOW_MEM_TURBO have been removed as prompt file directives as they would no longer serve a purpose. Dream Factory will use whatever VRAM flags you've set for your Auto1111 installation, if any (most users won't need to worry about them).
- !UPSCALE_FACE_ENH has been removed as a prompt file directive, replaced by !UPSCALE_GFPGAN_AMOUNT and !UPSCALE_CODEFORMER_AMOUNT (see above).
- Corrected an issue with setup.py that was causing pytorch to be installed incorrectly.
- Corrected a bug that would throw an error when a single gpu id was manually specified in config.txt.
- Corrected a fomatting bug that would cause the control panel and status monitor to fail to load in the web UI when total completed jobs became greater than 999.
- Corrected an issue that wouldn't correctly enable webserver console logging in all cases when WEBSERVER_CONSOLE_LOG = yes was set in config.txt.
- Added negative prompt support, specify with !NEG_PROMPT directive in .prompt files.
- Added support for additional samplers. Specify with the !SAMPLER directive in .prompt files. Note that not all samplers are available in all modes currently - if you're using the low-memory-optimized mode with txt2img, you should have access to all of them (plms, ddim, lms, euler, euler_a, dpm2, dpm2_a, heun).
- Added ability to specify a default model checkpoint file and sampler in global config.txt file; see config-default.txt for example.
- Added sampler, negative prompt, and model checkpoint (when not the default model.ckpt) to output EXIF, and display in internal web UI gallery.
- Updated example prompt files with !CKPT_FILE, !SAMPLER, and !NEG_PROMPT usage.
- Corrected a bug when specifying a custom seed with !SEED.
- Additional error-checking in setup.py for cases where required executables can't be located. Should handle gracefully now and prompt the user to re-run setup with a new --shell option.
- Added ability to specify which checkpoint to use in prompt files with !CKPT_FILE directive. If you use a relative path, it'll be relative from your /stable_diffusion subdirectory, hence the default is !CKPT_FILE = models/ldm/stable-diffusion-v1/model.ckpt. Useful if you've created your own .ckpt file(s) with DreamBooth or some other method and want to switch between them!
- Several UTF-8 character encoding issues with prompt file and EXIF metadata handling have been corrected.
- Quotation marks in prompts should no longer cause issues.
- Fixed an editor issue where it was possible to clear the entire document using by undo (ctrl-z) too many times.
- Initial soft release. Things should mostly work, but expect some issues.