InvokeAI 4.2.9.dev10__tar.gz → 4.2.9.dev12__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/InvokeAI.egg-info/PKG-INFO +1 -1
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/InvokeAI.egg-info/SOURCES.txt +10 -6
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/PKG-INFO +1 -1
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/api/routers/model_manager.py +91 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/invocations/denoise_latents.py +1 -1
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/invocations/fields.py +1 -1
- InvokeAI-4.2.9.dev12/invokeai/app/invocations/flux_denoise.py +249 -0
- InvokeAI-4.2.9.dev12/invokeai/app/invocations/flux_vae_decode.py +60 -0
- InvokeAI-4.2.9.dev12/invokeai/app/invocations/flux_vae_encode.py +67 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/invocations/mask.py +6 -1
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/model_install/model_install_common.py +1 -1
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/shared/invocation_context.py +19 -1
- InvokeAI-4.2.9.dev12/invokeai/app/services/workflow_records/default_workflows/FLUX Image to Image.json +407 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/workflow_records/default_workflows/Flux Text to Image.json +171 -105
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/util/step_callback.py +48 -0
- InvokeAI-4.2.9.dev12/invokeai/backend/flux/denoise.py +56 -0
- InvokeAI-4.2.9.dev12/invokeai/backend/flux/inpaint_extension.py +35 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/flux/modules/autoencoder.py +21 -7
- InvokeAI-4.2.9.dev12/invokeai/backend/flux/sampling_utils.py +135 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/model_manager/load/load_default.py +3 -2
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/model_manager/load/model_cache/model_cache_base.py +18 -1
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/model_manager/load/model_cache/model_cache_default.py +14 -1
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/model_manager/load/model_loaders/flux.py +5 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/model_manager/probe.py +57 -9
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/model_manager/util/model_util.py +26 -0
- InvokeAI-4.2.9.dev12/invokeai/frontend/web/dist/assets/App-D1Y-WRqk.js +66 -0
- InvokeAI-4.2.9.dev10/invokeai/frontend/web/dist/assets/ThemeLocaleProvider-Dc0lAavD.js → InvokeAI-4.2.9.dev12/invokeai/frontend/web/dist/assets/ThemeLocaleProvider-CmO3BZJ7.js +1 -1
- InvokeAI-4.2.9.dev12/invokeai/frontend/web/dist/assets/index-Ax6e2dHX.js +563 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/index.html +1 -1
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/locales/en.json +14 -5
- InvokeAI-4.2.9.dev12/invokeai/version/invokeai_version.py +1 -0
- InvokeAI-4.2.9.dev10/invokeai/app/invocations/flux_text_to_image.py +0 -169
- InvokeAI-4.2.9.dev10/invokeai/backend/flux/sampling.py +0 -167
- InvokeAI-4.2.9.dev10/invokeai/frontend/web/dist/assets/App-DUFQH-Kw.js +0 -66
- InvokeAI-4.2.9.dev10/invokeai/frontend/web/dist/assets/images/transparent_bg.png +0 -0
- InvokeAI-4.2.9.dev10/invokeai/frontend/web/dist/assets/index-DK9y4o4h.js +0 -563
- InvokeAI-4.2.9.dev10/invokeai/version/invokeai_version.py +0 -1
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/InvokeAI.egg-info/dependency_links.txt +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/InvokeAI.egg-info/entry_points.txt +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/InvokeAI.egg-info/requires.txt +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/InvokeAI.egg-info/top_level.txt +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/LICENSE +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/LICENSE-SD1+SD2.txt +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/LICENSE-SDXL.txt +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/README.md +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/__init__.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/api/dependencies.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/api/no_cache_staticfiles.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/api/routers/app_info.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/api/routers/board_images.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/api/routers/boards.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/api/routers/download_queue.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/api/routers/images.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/api/routers/session_queue.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/api/routers/style_presets.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/api/routers/utilities.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/api/routers/workflows.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/api/sockets.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/api_app.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/assets/images/caution.png +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/invocations/__init__.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/invocations/baseinvocation.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/invocations/blend_latents.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/invocations/collections.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/invocations/compel.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/invocations/constants.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/invocations/controlnet_image_processors.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/invocations/create_denoise_mask.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/invocations/create_gradient_mask.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/invocations/crop_latents.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/invocations/custom_nodes/README.md +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/invocations/custom_nodes/init.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/invocations/cv.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/invocations/facetools.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/invocations/flux_text_encoder.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/invocations/grounding_dino.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/invocations/ideal_size.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/invocations/image.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/invocations/image_to_latents.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/invocations/infill.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/invocations/ip_adapter.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/invocations/latents_to_image.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/invocations/math.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/invocations/metadata.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/invocations/model.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/invocations/noise.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/invocations/param_easing.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/invocations/primitives.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/invocations/prompt.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/invocations/resize_latents.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/invocations/scheduler.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/invocations/sdxl.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/invocations/segment_anything.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/invocations/spandrel_image_to_image.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/invocations/strings.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/invocations/t2i_adapter.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/invocations/tiled_multi_diffusion_denoise_latents.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/invocations/tiles.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/invocations/upscale.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/invocations/util.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/run_app.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/__init__.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/board_image_records/__init__.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/board_image_records/board_image_records_base.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/board_image_records/board_image_records_sqlite.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/board_images/__init__.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/board_images/board_images_base.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/board_images/board_images_common.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/board_images/board_images_default.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/board_records/board_records_base.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/board_records/board_records_common.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/board_records/board_records_sqlite.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/boards/__init__.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/boards/boards_base.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/boards/boards_common.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/boards/boards_default.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/bulk_download/__init__.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/bulk_download/bulk_download_base.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/bulk_download/bulk_download_common.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/bulk_download/bulk_download_default.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/config/__init__.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/config/config_common.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/config/config_default.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/download/__init__.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/download/download_base.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/download/download_default.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/events/__init__.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/events/events_base.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/events/events_common.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/events/events_fastapievents.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/image_files/__init__.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/image_files/image_files_base.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/image_files/image_files_common.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/image_files/image_files_disk.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/image_records/__init__.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/image_records/image_records_base.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/image_records/image_records_common.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/image_records/image_records_sqlite.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/images/__init__.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/images/images_base.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/images/images_common.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/images/images_default.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/invocation_cache/__init__.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/invocation_cache/invocation_cache_base.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/invocation_cache/invocation_cache_common.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/invocation_cache/invocation_cache_memory.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/invocation_services.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/invocation_stats/__init__.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/invocation_stats/invocation_stats_base.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/invocation_stats/invocation_stats_common.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/invocation_stats/invocation_stats_default.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/invoker.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/item_storage/__init__.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/item_storage/item_storage_base.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/item_storage/item_storage_common.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/item_storage/item_storage_memory.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/model_images/model_images_base.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/model_images/model_images_common.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/model_images/model_images_default.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/model_install/__init__.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/model_install/model_install_base.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/model_install/model_install_default.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/model_load/__init__.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/model_load/model_load_base.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/model_load/model_load_default.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/model_manager/__init__.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/model_manager/model_manager_base.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/model_manager/model_manager_common.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/model_manager/model_manager_default.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/model_records/__init__.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/model_records/model_records_base.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/model_records/model_records_sql.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/names/__init__.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/names/names_base.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/names/names_common.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/names/names_default.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/object_serializer/object_serializer_base.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/object_serializer/object_serializer_common.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/object_serializer/object_serializer_disk.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/object_serializer/object_serializer_forward_cache.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/session_processor/__init__.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/session_processor/session_processor_base.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/session_processor/session_processor_common.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/session_processor/session_processor_default.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/session_queue/__init__.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/session_queue/session_queue_base.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/session_queue/session_queue_common.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/session_queue/session_queue_sqlite.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/shared/__init__.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/shared/graph.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/shared/pagination.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/shared/sqlite/__init__.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/shared/sqlite/sqlite_common.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/shared/sqlite/sqlite_database.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/shared/sqlite/sqlite_util.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/shared/sqlite_migrator/__init__.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/shared/sqlite_migrator/migrations/__init__.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_1.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_10.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_11.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_12.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_13.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_14.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_15.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_2.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_3.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_4.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_5.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_6.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_7.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_8.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_9.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/shared/sqlite_migrator/sqlite_migrator_common.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/shared/sqlite_migrator/sqlite_migrator_impl.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/style_preset_images/default_style_preset_images/Anime.png +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/style_preset_images/default_style_preset_images/Architectural Visualization.png +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/style_preset_images/default_style_preset_images/Concept Art (Character).png +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/style_preset_images/default_style_preset_images/Concept Art (Fantasy).png +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/style_preset_images/default_style_preset_images/Concept Art (Painterly).png +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/style_preset_images/default_style_preset_images/Concept Art (Sci-Fi).png +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/style_preset_images/default_style_preset_images/Environment Art.png +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/style_preset_images/default_style_preset_images/Illustration.png +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/style_preset_images/default_style_preset_images/Interior Design (Visualization).png +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/style_preset_images/default_style_preset_images/Line Art.png +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/style_preset_images/default_style_preset_images/Photography (Black and White).png +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/style_preset_images/default_style_preset_images/Photography (General).png +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/style_preset_images/default_style_preset_images/Photography (Landscape).png +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/style_preset_images/default_style_preset_images/Photography (Portrait).png +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/style_preset_images/default_style_preset_images/Photography (Studio Lighting).png +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/style_preset_images/default_style_preset_images/Product Rendering.png +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/style_preset_images/default_style_preset_images/Sketch.png +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/style_preset_images/default_style_preset_images/Vehicles.png +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/style_preset_images/default_style_preset_images/__init__.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/style_preset_images/style_preset_images_base.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/style_preset_images/style_preset_images_common.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/style_preset_images/style_preset_images_disk.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/style_preset_records/__init__.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/style_preset_records/default_style_presets.json +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/style_preset_records/style_preset_records_base.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/style_preset_records/style_preset_records_common.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/style_preset_records/style_preset_records_sqlite.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/urls/__init__.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/urls/urls_base.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/urls/urls_default.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/workflow_records/__init__.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/workflow_records/default_workflows/ESRGAN Upscaling with Canny ControlNet.json +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/workflow_records/default_workflows/Face Detailer with IP-Adapter & Canny (See Note in Details).json +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/workflow_records/default_workflows/Multi ControlNet (Canny & Depth).json +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/workflow_records/default_workflows/MultiDiffusion SD1.5.json +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/workflow_records/default_workflows/MultiDiffusion SDXL.json +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/workflow_records/default_workflows/Prompt from File.json +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/workflow_records/default_workflows/Text to Image - SD1.5.json +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/workflow_records/default_workflows/Text to Image - SDXL.json +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/workflow_records/default_workflows/Text to Image with LoRA.json +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/workflow_records/default_workflows/Tiled Upscaling (Beta).json +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/workflow_records/workflow_records_base.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/workflow_records/workflow_records_common.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/workflow_records/workflow_records_sqlite.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/shared/__init__.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/shared/models.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/util/__init__.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/util/controlnet_utils.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/util/custom_openapi.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/util/metaenum.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/util/misc.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/util/model_exclude_null.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/util/profiler.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/util/suppress_output.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/util/thumbnails.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/util/ti_utils.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/assets/fonts/inter/Inter-Regular.ttf +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/__init__.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/flux/math.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/flux/model.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/flux/modules/conditioner.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/flux/modules/layers.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/flux/util.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/image_util/__init__.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/image_util/basicsr/__init__.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/image_util/basicsr/arch_util.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/image_util/basicsr/rrdbnet_arch.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/image_util/canny.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/image_util/depth_anything/depth_anything_pipeline.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/image_util/dw_openpose/__init__.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/image_util/dw_openpose/onnxdet.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/image_util/dw_openpose/onnxpose.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/image_util/dw_openpose/utils.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/image_util/dw_openpose/wholebody.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/image_util/grounding_dino/__init__.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/image_util/grounding_dino/detection_result.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/image_util/grounding_dino/grounding_dino_pipeline.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/image_util/hed.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/image_util/infill_methods/cv2_inpaint.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/image_util/infill_methods/lama.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/image_util/infill_methods/mosaic.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/image_util/infill_methods/patchmatch.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/image_util/infill_methods/tile.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/image_util/invisible_watermark.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/image_util/lineart.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/image_util/lineart_anime.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/image_util/pngwriter.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/image_util/realesrgan/__init__.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/image_util/realesrgan/realesrgan.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/image_util/safety_checker.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/image_util/segment_anything/__init__.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/image_util/segment_anything/mask_refinement.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/image_util/segment_anything/segment_anything_pipeline.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/image_util/util.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/ip_adapter/__init__.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/ip_adapter/ip_adapter.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/ip_adapter/ip_attention_weights.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/ip_adapter/resampler.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/lora.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/model_hash/hash_validator.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/model_hash/model_hash.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/model_manager/__init__.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/model_manager/config.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/model_manager/load/__init__.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/model_manager/load/load_base.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/model_manager/load/memory_snapshot.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/model_manager/load/model_cache/__init__.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/model_manager/load/model_cache/model_locker.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/model_manager/load/model_loader_registry.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/model_manager/load/model_loaders/__init__.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/model_manager/load/model_loaders/controlnet.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/model_manager/load/model_loaders/generic_diffusers.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/model_manager/load/model_loaders/ip_adapter.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/model_manager/load/model_loaders/lora.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/model_manager/load/model_loaders/onnx.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/model_manager/load/model_loaders/spandrel_image_to_image.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/model_manager/load/model_loaders/stable_diffusion.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/model_manager/load/model_loaders/textual_inversion.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/model_manager/load/model_loaders/vae.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/model_manager/load/model_util.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/model_manager/load/optimizations.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/model_manager/merge.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/model_manager/metadata/__init__.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/model_manager/metadata/fetch/__init__.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/model_manager/metadata/fetch/fetch_base.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/model_manager/metadata/fetch/huggingface.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/model_manager/metadata/metadata_base.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/model_manager/search.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/model_manager/starter_models.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/model_manager/util/libc_util.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/model_manager/util/select_hf_files.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/model_patcher.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/onnx/onnx_runtime.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/quantization/__init__.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/quantization/bnb_llm_int8.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/quantization/bnb_nf4.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/quantization/scripts/load_flux_model_bnb_llm_int8.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/quantization/scripts/load_flux_model_bnb_nf4.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/quantization/scripts/quantize_t5_xxl_bnb_llm_int8.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/raw_model.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/spandrel_image_to_image_model.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/stable_diffusion/__init__.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/stable_diffusion/denoise_context.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/stable_diffusion/diffusers_pipeline.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/stable_diffusion/diffusion/__init__.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/stable_diffusion/diffusion/conditioning_data.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/stable_diffusion/diffusion/custom_atttention.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/stable_diffusion/diffusion/regional_ip_data.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/stable_diffusion/diffusion/regional_prompt_data.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/stable_diffusion/diffusion/shared_invokeai_diffusion.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/stable_diffusion/diffusion/unet_attention_patcher.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/stable_diffusion/diffusion_backend.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/stable_diffusion/extension_callback_type.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/stable_diffusion/extensions/base.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/stable_diffusion/extensions/controlnet.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/stable_diffusion/extensions/freeu.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/stable_diffusion/extensions/inpaint.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/stable_diffusion/extensions/inpaint_model.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/stable_diffusion/extensions/lora.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/stable_diffusion/extensions/preview.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/stable_diffusion/extensions/rescale_cfg.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/stable_diffusion/extensions/seamless.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/stable_diffusion/extensions/t2i_adapter.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/stable_diffusion/extensions_manager.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/stable_diffusion/multi_diffusion_pipeline.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/stable_diffusion/schedulers/__init__.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/stable_diffusion/schedulers/schedulers.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/stable_diffusion/vae_tiling.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/textual_inversion.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/tiles/__init__.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/tiles/tiles.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/tiles/utils.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/util/__init__.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/util/attention.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/util/catch_sigint.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/util/db_maintenance.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/util/devices.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/util/hotfixes.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/util/logging.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/util/mask.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/util/mps_fixes.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/util/original_weights_storage.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/util/silence_warnings.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/util/test_utils.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/backend/util/util.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/configs/controlnet/cldm_v15.yaml +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/configs/controlnet/cldm_v21.yaml +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/configs/stable-diffusion/sd_xl_base.yaml +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/configs/stable-diffusion/sd_xl_inpaint.yaml +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/configs/stable-diffusion/sd_xl_refiner.yaml +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/configs/stable-diffusion/v1-finetune.yaml +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/configs/stable-diffusion/v1-finetune_style.yaml +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/configs/stable-diffusion/v1-inference-v.yaml +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/configs/stable-diffusion/v1-inference.yaml +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/configs/stable-diffusion/v1-inpainting-inference.yaml +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/configs/stable-diffusion/v1-m1-finetune.yaml +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/configs/stable-diffusion/v2-inference-v.yaml +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/configs/stable-diffusion/v2-inference.yaml +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/configs/stable-diffusion/v2-inpainting-inference-v.yaml +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/configs/stable-diffusion/v2-inpainting-inference.yaml +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/configs/stable-diffusion/v2-midas-inference.yaml +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/frontend/__init__.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/frontend/cli/__init__.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/frontend/cli/arg_parser.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/frontend/install/__init__.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/frontend/install/import_images.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/__init__.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/assets/App-DEu4J2pT.css +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/assets/ThemeLocaleProvider-B2NxUfIp.css +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/assets/images/invoke-alert-favicon.svg +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/assets/images/invoke-avatar-circle.svg +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/assets/images/invoke-avatar-square.svg +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/assets/images/invoke-favicon.png +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/assets/images/invoke-favicon.svg +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/assets/images/invoke-key-char-lrg.svg +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/assets/images/invoke-key-char-sml.svg +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/assets/images/invoke-key-wht-lrg.svg +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/assets/images/invoke-key-wht-sml.svg +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/assets/images/invoke-symbol-char-lrg.svg +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/assets/images/invoke-symbol-char-sml.svg +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/assets/images/invoke-symbol-wht-lrg.svg +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/assets/images/invoke-symbol-wht-sml.svg +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/assets/images/invoke-symbol-ylw-lrg.svg +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/assets/images/invoke-tag-char-lrg.svg +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/assets/images/invoke-tag-char-sml.svg +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/assets/images/invoke-tag-lrg.svg +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/assets/images/invoke-tag-sml.svg +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/assets/images/invoke-wordmark-charcoal.svg +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/assets/images/invoke-wordmark-white.svg +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/assets/images/mask.svg +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/assets/inter-cyrillic-ext-wght-normal-B2xhLi22.woff2 +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/assets/inter-cyrillic-wght-normal-CMZtQduZ.woff2 +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/assets/inter-greek-ext-wght-normal-CGAr0uHJ.woff2 +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/assets/inter-greek-wght-normal-CaVNZxsx.woff2 +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/assets/inter-latin-ext-wght-normal-CFHvXkgd.woff2 +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/assets/inter-latin-wght-normal-C2S99t-D.woff2 +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2 +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/assets/worker-Dywf1EVc.js +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/locales/ar.json +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/locales/az.json +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/locales/bg.json +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/locales/de.json +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/locales/es.json +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/locales/fi.json +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/locales/fr.json +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/locales/he.json +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/locales/hu.json +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/locales/it.json +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/locales/ja.json +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/locales/ko.json +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/locales/mn.json +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/locales/nl.json +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/locales/pl.json +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/locales/pt.json +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/locales/pt_BR.json +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/locales/ro.json +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/locales/ru.json +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/locales/sv.json +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/locales/tr.json +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/locales/uk.json +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/locales/vi.json +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/locales/zh_CN.json +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/locales/zh_Hant.json +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/scripts/clean_translations.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/static/docs/invoke-favicon-docs.svg +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/invocation_api/__init__.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/version/__init__.py +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/pyproject.toml +0 -0
- {InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: InvokeAI
|
|
3
|
-
Version: 4.2.9.
|
|
3
|
+
Version: 4.2.9.dev12
|
|
4
4
|
Summary: An implementation of Stable Diffusion which provides various new features and options to aid the image generation process
|
|
5
5
|
Author-email: The InvokeAI Project <lincoln.stein@gmail.com>
|
|
6
6
|
License: Apache License
|
|
@@ -40,8 +40,10 @@ invokeai/app/invocations/cv.py
|
|
|
40
40
|
invokeai/app/invocations/denoise_latents.py
|
|
41
41
|
invokeai/app/invocations/facetools.py
|
|
42
42
|
invokeai/app/invocations/fields.py
|
|
43
|
+
invokeai/app/invocations/flux_denoise.py
|
|
43
44
|
invokeai/app/invocations/flux_text_encoder.py
|
|
44
|
-
invokeai/app/invocations/
|
|
45
|
+
invokeai/app/invocations/flux_vae_decode.py
|
|
46
|
+
invokeai/app/invocations/flux_vae_encode.py
|
|
45
47
|
invokeai/app/invocations/grounding_dino.py
|
|
46
48
|
invokeai/app/invocations/ideal_size.py
|
|
47
49
|
invokeai/app/invocations/image.py
|
|
@@ -220,6 +222,7 @@ invokeai/app/services/workflow_records/workflow_records_base.py
|
|
|
220
222
|
invokeai/app/services/workflow_records/workflow_records_common.py
|
|
221
223
|
invokeai/app/services/workflow_records/workflow_records_sqlite.py
|
|
222
224
|
invokeai/app/services/workflow_records/default_workflows/ESRGAN Upscaling with Canny ControlNet.json
|
|
225
|
+
invokeai/app/services/workflow_records/default_workflows/FLUX Image to Image.json
|
|
223
226
|
invokeai/app/services/workflow_records/default_workflows/Face Detailer with IP-Adapter & Canny (See Note in Details).json
|
|
224
227
|
invokeai/app/services/workflow_records/default_workflows/Flux Text to Image.json
|
|
225
228
|
invokeai/app/services/workflow_records/default_workflows/Multi ControlNet (Canny & Depth).json
|
|
@@ -250,9 +253,11 @@ invokeai/backend/model_patcher.py
|
|
|
250
253
|
invokeai/backend/raw_model.py
|
|
251
254
|
invokeai/backend/spandrel_image_to_image_model.py
|
|
252
255
|
invokeai/backend/textual_inversion.py
|
|
256
|
+
invokeai/backend/flux/denoise.py
|
|
257
|
+
invokeai/backend/flux/inpaint_extension.py
|
|
253
258
|
invokeai/backend/flux/math.py
|
|
254
259
|
invokeai/backend/flux/model.py
|
|
255
|
-
invokeai/backend/flux/
|
|
260
|
+
invokeai/backend/flux/sampling_utils.py
|
|
256
261
|
invokeai/backend/flux/util.py
|
|
257
262
|
invokeai/backend/flux/modules/autoencoder.py
|
|
258
263
|
invokeai/backend/flux/modules/conditioner.py
|
|
@@ -403,11 +408,11 @@ invokeai/frontend/install/__init__.py
|
|
|
403
408
|
invokeai/frontend/install/import_images.py
|
|
404
409
|
invokeai/frontend/web/__init__.py
|
|
405
410
|
invokeai/frontend/web/dist/index.html
|
|
411
|
+
invokeai/frontend/web/dist/assets/App-D1Y-WRqk.js
|
|
406
412
|
invokeai/frontend/web/dist/assets/App-DEu4J2pT.css
|
|
407
|
-
invokeai/frontend/web/dist/assets/App-DUFQH-Kw.js
|
|
408
413
|
invokeai/frontend/web/dist/assets/ThemeLocaleProvider-B2NxUfIp.css
|
|
409
|
-
invokeai/frontend/web/dist/assets/ThemeLocaleProvider-
|
|
410
|
-
invokeai/frontend/web/dist/assets/index-
|
|
414
|
+
invokeai/frontend/web/dist/assets/ThemeLocaleProvider-CmO3BZJ7.js
|
|
415
|
+
invokeai/frontend/web/dist/assets/index-Ax6e2dHX.js
|
|
411
416
|
invokeai/frontend/web/dist/assets/inter-cyrillic-ext-wght-normal-B2xhLi22.woff2
|
|
412
417
|
invokeai/frontend/web/dist/assets/inter-cyrillic-wght-normal-CMZtQduZ.woff2
|
|
413
418
|
invokeai/frontend/web/dist/assets/inter-greek-ext-wght-normal-CGAr0uHJ.woff2
|
|
@@ -437,7 +442,6 @@ invokeai/frontend/web/dist/assets/images/invoke-tag-sml.svg
|
|
|
437
442
|
invokeai/frontend/web/dist/assets/images/invoke-wordmark-charcoal.svg
|
|
438
443
|
invokeai/frontend/web/dist/assets/images/invoke-wordmark-white.svg
|
|
439
444
|
invokeai/frontend/web/dist/assets/images/mask.svg
|
|
440
|
-
invokeai/frontend/web/dist/assets/images/transparent_bg.png
|
|
441
445
|
invokeai/frontend/web/dist/locales/ar.json
|
|
442
446
|
invokeai/frontend/web/dist/locales/az.json
|
|
443
447
|
invokeai/frontend/web/dist/locales/bg.json
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: InvokeAI
|
|
3
|
-
Version: 4.2.9.
|
|
3
|
+
Version: 4.2.9.dev12
|
|
4
4
|
Summary: An implementation of Stable Diffusion which provides various new features and options to aid the image generation process
|
|
5
5
|
Author-email: The InvokeAI Project <lincoln.stein@gmail.com>
|
|
6
6
|
License: Apache License
|
|
@@ -3,8 +3,10 @@
|
|
|
3
3
|
|
|
4
4
|
import io
|
|
5
5
|
import pathlib
|
|
6
|
+
import shutil
|
|
6
7
|
import traceback
|
|
7
8
|
from copy import deepcopy
|
|
9
|
+
from enum import Enum
|
|
8
10
|
from tempfile import TemporaryDirectory
|
|
9
11
|
from typing import List, Optional, Type
|
|
10
12
|
|
|
@@ -17,6 +19,7 @@ from starlette.exceptions import HTTPException
|
|
|
17
19
|
from typing_extensions import Annotated
|
|
18
20
|
|
|
19
21
|
from invokeai.app.api.dependencies import ApiDependencies
|
|
22
|
+
from invokeai.app.services.config import get_config
|
|
20
23
|
from invokeai.app.services.model_images.model_images_common import ModelImageFileNotFoundException
|
|
21
24
|
from invokeai.app.services.model_install.model_install_common import ModelInstallJob
|
|
22
25
|
from invokeai.app.services.model_records import (
|
|
@@ -31,6 +34,7 @@ from invokeai.backend.model_manager.config import (
|
|
|
31
34
|
ModelFormat,
|
|
32
35
|
ModelType,
|
|
33
36
|
)
|
|
37
|
+
from invokeai.backend.model_manager.load.model_cache.model_cache_base import CacheStats
|
|
34
38
|
from invokeai.backend.model_manager.metadata.fetch.huggingface import HuggingFaceMetadataFetch
|
|
35
39
|
from invokeai.backend.model_manager.metadata.metadata_base import ModelMetadataWithFiles, UnknownMetadataException
|
|
36
40
|
from invokeai.backend.model_manager.search import ModelSearch
|
|
@@ -50,6 +54,13 @@ class ModelsList(BaseModel):
|
|
|
50
54
|
model_config = ConfigDict(use_enum_values=True)
|
|
51
55
|
|
|
52
56
|
|
|
57
|
+
class CacheType(str, Enum):
|
|
58
|
+
"""Cache type - one of vram or ram."""
|
|
59
|
+
|
|
60
|
+
RAM = "RAM"
|
|
61
|
+
VRAM = "VRAM"
|
|
62
|
+
|
|
63
|
+
|
|
53
64
|
def add_cover_image_to_model_config(config: AnyModelConfig, dependencies: Type[ApiDependencies]) -> AnyModelConfig:
|
|
54
65
|
"""Add a cover image URL to a model configuration."""
|
|
55
66
|
cover_image = dependencies.invoker.services.model_images.get_url(config.key)
|
|
@@ -797,3 +808,83 @@ async def get_starter_models() -> list[StarterModel]:
|
|
|
797
808
|
model.dependencies = missing_deps
|
|
798
809
|
|
|
799
810
|
return starter_models
|
|
811
|
+
|
|
812
|
+
|
|
813
|
+
@model_manager_router.get(
|
|
814
|
+
"/model_cache",
|
|
815
|
+
operation_id="get_cache_size",
|
|
816
|
+
response_model=float,
|
|
817
|
+
summary="Get maximum size of model manager RAM or VRAM cache.",
|
|
818
|
+
)
|
|
819
|
+
async def get_cache_size(cache_type: CacheType = Query(description="The cache type", default=CacheType.RAM)) -> float:
|
|
820
|
+
"""Return the current RAM or VRAM cache size setting (in GB)."""
|
|
821
|
+
cache = ApiDependencies.invoker.services.model_manager.load.ram_cache
|
|
822
|
+
value = 0.0
|
|
823
|
+
if cache_type == CacheType.RAM:
|
|
824
|
+
value = cache.max_cache_size
|
|
825
|
+
elif cache_type == CacheType.VRAM:
|
|
826
|
+
value = cache.max_vram_cache_size
|
|
827
|
+
return value
|
|
828
|
+
|
|
829
|
+
|
|
830
|
+
@model_manager_router.put(
|
|
831
|
+
"/model_cache",
|
|
832
|
+
operation_id="set_cache_size",
|
|
833
|
+
response_model=float,
|
|
834
|
+
summary="Set maximum size of model manager RAM or VRAM cache, optionally writing new value out to invokeai.yaml config file.",
|
|
835
|
+
)
|
|
836
|
+
async def set_cache_size(
|
|
837
|
+
value: float = Query(description="The new value for the maximum cache size"),
|
|
838
|
+
cache_type: CacheType = Query(description="The cache type", default=CacheType.RAM),
|
|
839
|
+
persist: bool = Query(description="Write new value out to invokeai.yaml", default=False),
|
|
840
|
+
) -> float:
|
|
841
|
+
"""Set the current RAM or VRAM cache size setting (in GB). ."""
|
|
842
|
+
cache = ApiDependencies.invoker.services.model_manager.load.ram_cache
|
|
843
|
+
app_config = get_config()
|
|
844
|
+
# Record initial state.
|
|
845
|
+
vram_old = app_config.vram
|
|
846
|
+
ram_old = app_config.ram
|
|
847
|
+
|
|
848
|
+
# Prepare target state.
|
|
849
|
+
vram_new = vram_old
|
|
850
|
+
ram_new = ram_old
|
|
851
|
+
if cache_type == CacheType.RAM:
|
|
852
|
+
ram_new = value
|
|
853
|
+
elif cache_type == CacheType.VRAM:
|
|
854
|
+
vram_new = value
|
|
855
|
+
else:
|
|
856
|
+
raise ValueError(f"Unexpected {cache_type=}.")
|
|
857
|
+
|
|
858
|
+
config_path = app_config.config_file_path
|
|
859
|
+
new_config_path = config_path.with_suffix(".yaml.new")
|
|
860
|
+
|
|
861
|
+
try:
|
|
862
|
+
# Try to apply the target state.
|
|
863
|
+
cache.max_vram_cache_size = vram_new
|
|
864
|
+
cache.max_cache_size = ram_new
|
|
865
|
+
app_config.ram = ram_new
|
|
866
|
+
app_config.vram = vram_new
|
|
867
|
+
if persist:
|
|
868
|
+
app_config.write_file(new_config_path)
|
|
869
|
+
shutil.move(new_config_path, config_path)
|
|
870
|
+
except Exception as e:
|
|
871
|
+
# If there was a failure, restore the initial state.
|
|
872
|
+
cache.max_cache_size = ram_old
|
|
873
|
+
cache.max_vram_cache_size = vram_old
|
|
874
|
+
app_config.ram = ram_old
|
|
875
|
+
app_config.vram = vram_old
|
|
876
|
+
|
|
877
|
+
raise RuntimeError("Failed to update cache size") from e
|
|
878
|
+
return value
|
|
879
|
+
|
|
880
|
+
|
|
881
|
+
@model_manager_router.get(
|
|
882
|
+
"/stats",
|
|
883
|
+
operation_id="get_stats",
|
|
884
|
+
response_model=Optional[CacheStats],
|
|
885
|
+
summary="Get model manager RAM cache performance statistics.",
|
|
886
|
+
)
|
|
887
|
+
async def get_stats() -> Optional[CacheStats]:
|
|
888
|
+
"""Return performance statistics on the model manager's RAM cache. Will return null if no models have been loaded."""
|
|
889
|
+
|
|
890
|
+
return ApiDependencies.invoker.services.model_manager.load.ram_cache.stats
|
|
@@ -185,7 +185,7 @@ class DenoiseLatentsInvocation(BaseInvocation):
|
|
|
185
185
|
)
|
|
186
186
|
denoise_mask: Optional[DenoiseMaskField] = InputField(
|
|
187
187
|
default=None,
|
|
188
|
-
description=FieldDescriptions.
|
|
188
|
+
description=FieldDescriptions.denoise_mask,
|
|
189
189
|
input=Input.Connection,
|
|
190
190
|
ui_order=8,
|
|
191
191
|
)
|
|
@@ -181,7 +181,7 @@ class FieldDescriptions:
|
|
|
181
181
|
)
|
|
182
182
|
num_1 = "The first number"
|
|
183
183
|
num_2 = "The second number"
|
|
184
|
-
|
|
184
|
+
denoise_mask = "A mask of the region to apply the denoising process to."
|
|
185
185
|
board = "The board to save the image to"
|
|
186
186
|
image = "The image to process"
|
|
187
187
|
tile_size = "Tile size"
|
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
from typing import Callable, Optional
|
|
2
|
+
|
|
3
|
+
import torch
|
|
4
|
+
import torchvision.transforms as tv_transforms
|
|
5
|
+
from torchvision.transforms.functional import resize as tv_resize
|
|
6
|
+
|
|
7
|
+
from invokeai.app.invocations.baseinvocation import BaseInvocation, Classification, invocation
|
|
8
|
+
from invokeai.app.invocations.fields import (
|
|
9
|
+
DenoiseMaskField,
|
|
10
|
+
FieldDescriptions,
|
|
11
|
+
FluxConditioningField,
|
|
12
|
+
Input,
|
|
13
|
+
InputField,
|
|
14
|
+
LatentsField,
|
|
15
|
+
WithBoard,
|
|
16
|
+
WithMetadata,
|
|
17
|
+
)
|
|
18
|
+
from invokeai.app.invocations.model import TransformerField
|
|
19
|
+
from invokeai.app.invocations.primitives import LatentsOutput
|
|
20
|
+
from invokeai.app.services.shared.invocation_context import InvocationContext
|
|
21
|
+
from invokeai.backend.flux.denoise import denoise
|
|
22
|
+
from invokeai.backend.flux.inpaint_extension import InpaintExtension
|
|
23
|
+
from invokeai.backend.flux.model import Flux
|
|
24
|
+
from invokeai.backend.flux.sampling_utils import (
|
|
25
|
+
clip_timestep_schedule,
|
|
26
|
+
generate_img_ids,
|
|
27
|
+
get_noise,
|
|
28
|
+
get_schedule,
|
|
29
|
+
pack,
|
|
30
|
+
unpack,
|
|
31
|
+
)
|
|
32
|
+
from invokeai.backend.stable_diffusion.diffusers_pipeline import PipelineIntermediateState
|
|
33
|
+
from invokeai.backend.stable_diffusion.diffusion.conditioning_data import FLUXConditioningInfo
|
|
34
|
+
from invokeai.backend.util.devices import TorchDevice
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
@invocation(
|
|
38
|
+
"flux_denoise",
|
|
39
|
+
title="FLUX Denoise",
|
|
40
|
+
tags=["image", "flux"],
|
|
41
|
+
category="image",
|
|
42
|
+
version="1.0.0",
|
|
43
|
+
classification=Classification.Prototype,
|
|
44
|
+
)
|
|
45
|
+
class FluxDenoiseInvocation(BaseInvocation, WithMetadata, WithBoard):
|
|
46
|
+
"""Run denoising process with a FLUX transformer model."""
|
|
47
|
+
|
|
48
|
+
# If latents is provided, this means we are doing image-to-image.
|
|
49
|
+
latents: Optional[LatentsField] = InputField(
|
|
50
|
+
default=None,
|
|
51
|
+
description=FieldDescriptions.latents,
|
|
52
|
+
input=Input.Connection,
|
|
53
|
+
)
|
|
54
|
+
# denoise_mask is used for image-to-image inpainting. Only the masked region is modified.
|
|
55
|
+
denoise_mask: Optional[DenoiseMaskField] = InputField(
|
|
56
|
+
default=None,
|
|
57
|
+
description=FieldDescriptions.denoise_mask,
|
|
58
|
+
input=Input.Connection,
|
|
59
|
+
)
|
|
60
|
+
denoising_start: float = InputField(
|
|
61
|
+
default=0.0,
|
|
62
|
+
ge=0,
|
|
63
|
+
le=1,
|
|
64
|
+
description=FieldDescriptions.denoising_start,
|
|
65
|
+
)
|
|
66
|
+
denoising_end: float = InputField(default=1.0, ge=0, le=1, description=FieldDescriptions.denoising_end)
|
|
67
|
+
transformer: TransformerField = InputField(
|
|
68
|
+
description=FieldDescriptions.flux_model,
|
|
69
|
+
input=Input.Connection,
|
|
70
|
+
title="Transformer",
|
|
71
|
+
)
|
|
72
|
+
positive_text_conditioning: FluxConditioningField = InputField(
|
|
73
|
+
description=FieldDescriptions.positive_cond, input=Input.Connection
|
|
74
|
+
)
|
|
75
|
+
width: int = InputField(default=1024, multiple_of=16, description="Width of the generated image.")
|
|
76
|
+
height: int = InputField(default=1024, multiple_of=16, description="Height of the generated image.")
|
|
77
|
+
num_steps: int = InputField(
|
|
78
|
+
default=4, description="Number of diffusion steps. Recommended values are schnell: 4, dev: 50."
|
|
79
|
+
)
|
|
80
|
+
guidance: float = InputField(
|
|
81
|
+
default=4.0,
|
|
82
|
+
description="The guidance strength. Higher values adhere more strictly to the prompt, and will produce less diverse images. FLUX dev only, ignored for schnell.",
|
|
83
|
+
)
|
|
84
|
+
seed: int = InputField(default=0, description="Randomness seed for reproducibility.")
|
|
85
|
+
|
|
86
|
+
@torch.no_grad()
|
|
87
|
+
def invoke(self, context: InvocationContext) -> LatentsOutput:
|
|
88
|
+
latents = self._run_diffusion(context)
|
|
89
|
+
latents = latents.detach().to("cpu")
|
|
90
|
+
|
|
91
|
+
name = context.tensors.save(tensor=latents)
|
|
92
|
+
return LatentsOutput.build(latents_name=name, latents=latents, seed=None)
|
|
93
|
+
|
|
94
|
+
def _run_diffusion(
|
|
95
|
+
self,
|
|
96
|
+
context: InvocationContext,
|
|
97
|
+
):
|
|
98
|
+
inference_dtype = torch.bfloat16
|
|
99
|
+
|
|
100
|
+
# Load the conditioning data.
|
|
101
|
+
cond_data = context.conditioning.load(self.positive_text_conditioning.conditioning_name)
|
|
102
|
+
assert len(cond_data.conditionings) == 1
|
|
103
|
+
flux_conditioning = cond_data.conditionings[0]
|
|
104
|
+
assert isinstance(flux_conditioning, FLUXConditioningInfo)
|
|
105
|
+
flux_conditioning = flux_conditioning.to(dtype=inference_dtype)
|
|
106
|
+
t5_embeddings = flux_conditioning.t5_embeds
|
|
107
|
+
clip_embeddings = flux_conditioning.clip_embeds
|
|
108
|
+
|
|
109
|
+
# Load the input latents, if provided.
|
|
110
|
+
init_latents = context.tensors.load(self.latents.latents_name) if self.latents else None
|
|
111
|
+
if init_latents is not None:
|
|
112
|
+
init_latents = init_latents.to(device=TorchDevice.choose_torch_device(), dtype=inference_dtype)
|
|
113
|
+
|
|
114
|
+
# Prepare input noise.
|
|
115
|
+
noise = get_noise(
|
|
116
|
+
num_samples=1,
|
|
117
|
+
height=self.height,
|
|
118
|
+
width=self.width,
|
|
119
|
+
device=TorchDevice.choose_torch_device(),
|
|
120
|
+
dtype=inference_dtype,
|
|
121
|
+
seed=self.seed,
|
|
122
|
+
)
|
|
123
|
+
|
|
124
|
+
transformer_info = context.models.load(self.transformer.transformer)
|
|
125
|
+
is_schnell = "schnell" in transformer_info.config.config_path
|
|
126
|
+
|
|
127
|
+
# Calculate the timestep schedule.
|
|
128
|
+
image_seq_len = noise.shape[-1] * noise.shape[-2] // 4
|
|
129
|
+
timesteps = get_schedule(
|
|
130
|
+
num_steps=self.num_steps,
|
|
131
|
+
image_seq_len=image_seq_len,
|
|
132
|
+
shift=not is_schnell,
|
|
133
|
+
)
|
|
134
|
+
|
|
135
|
+
# Clip the timesteps schedule based on denoising_start and denoising_end.
|
|
136
|
+
timesteps = clip_timestep_schedule(timesteps, self.denoising_start, self.denoising_end)
|
|
137
|
+
|
|
138
|
+
# Prepare input latent image.
|
|
139
|
+
if init_latents is not None:
|
|
140
|
+
# If init_latents is provided, we are doing image-to-image.
|
|
141
|
+
|
|
142
|
+
if is_schnell:
|
|
143
|
+
context.logger.warning(
|
|
144
|
+
"Running image-to-image with a FLUX schnell model. This is not recommended. The results are likely "
|
|
145
|
+
"to be poor. Consider using a FLUX dev model instead."
|
|
146
|
+
)
|
|
147
|
+
|
|
148
|
+
# Noise the orig_latents by the appropriate amount for the first timestep.
|
|
149
|
+
t_0 = timesteps[0]
|
|
150
|
+
x = t_0 * noise + (1.0 - t_0) * init_latents
|
|
151
|
+
else:
|
|
152
|
+
# init_latents are not provided, so we are not doing image-to-image (i.e. we are starting from pure noise).
|
|
153
|
+
if self.denoising_start > 1e-5:
|
|
154
|
+
raise ValueError("denoising_start should be 0 when initial latents are not provided.")
|
|
155
|
+
|
|
156
|
+
x = noise
|
|
157
|
+
|
|
158
|
+
# If len(timesteps) == 1, then short-circuit. We are just noising the input latents, but not taking any
|
|
159
|
+
# denoising steps.
|
|
160
|
+
if len(timesteps) <= 1:
|
|
161
|
+
return x
|
|
162
|
+
|
|
163
|
+
inpaint_mask = self._prep_inpaint_mask(context, x)
|
|
164
|
+
|
|
165
|
+
b, _c, h, w = x.shape
|
|
166
|
+
img_ids = generate_img_ids(h=h, w=w, batch_size=b, device=x.device, dtype=x.dtype)
|
|
167
|
+
|
|
168
|
+
bs, t5_seq_len, _ = t5_embeddings.shape
|
|
169
|
+
txt_ids = torch.zeros(bs, t5_seq_len, 3, dtype=inference_dtype, device=TorchDevice.choose_torch_device())
|
|
170
|
+
|
|
171
|
+
# Pack all latent tensors.
|
|
172
|
+
init_latents = pack(init_latents) if init_latents is not None else None
|
|
173
|
+
inpaint_mask = pack(inpaint_mask) if inpaint_mask is not None else None
|
|
174
|
+
noise = pack(noise)
|
|
175
|
+
x = pack(x)
|
|
176
|
+
|
|
177
|
+
# Now that we have 'packed' the latent tensors, verify that we calculated the image_seq_len correctly.
|
|
178
|
+
assert image_seq_len == x.shape[1]
|
|
179
|
+
|
|
180
|
+
# Prepare inpaint extension.
|
|
181
|
+
inpaint_extension: InpaintExtension | None = None
|
|
182
|
+
if inpaint_mask is not None:
|
|
183
|
+
assert init_latents is not None
|
|
184
|
+
inpaint_extension = InpaintExtension(
|
|
185
|
+
init_latents=init_latents,
|
|
186
|
+
inpaint_mask=inpaint_mask,
|
|
187
|
+
noise=noise,
|
|
188
|
+
)
|
|
189
|
+
|
|
190
|
+
with transformer_info as transformer:
|
|
191
|
+
assert isinstance(transformer, Flux)
|
|
192
|
+
|
|
193
|
+
x = denoise(
|
|
194
|
+
model=transformer,
|
|
195
|
+
img=x,
|
|
196
|
+
img_ids=img_ids,
|
|
197
|
+
txt=t5_embeddings,
|
|
198
|
+
txt_ids=txt_ids,
|
|
199
|
+
vec=clip_embeddings,
|
|
200
|
+
timesteps=timesteps,
|
|
201
|
+
step_callback=self._build_step_callback(context),
|
|
202
|
+
guidance=self.guidance,
|
|
203
|
+
inpaint_extension=inpaint_extension,
|
|
204
|
+
)
|
|
205
|
+
|
|
206
|
+
x = unpack(x.float(), self.height, self.width)
|
|
207
|
+
return x
|
|
208
|
+
|
|
209
|
+
def _prep_inpaint_mask(self, context: InvocationContext, latents: torch.Tensor) -> torch.Tensor | None:
|
|
210
|
+
"""Prepare the inpaint mask.
|
|
211
|
+
|
|
212
|
+
- Loads the mask
|
|
213
|
+
- Resizes if necessary
|
|
214
|
+
- Casts to same device/dtype as latents
|
|
215
|
+
- Expands mask to the same shape as latents so that they line up after 'packing'
|
|
216
|
+
|
|
217
|
+
Args:
|
|
218
|
+
context (InvocationContext): The invocation context, for loading the inpaint mask.
|
|
219
|
+
latents (torch.Tensor): A latent image tensor. In 'unpacked' format. Used to determine the target shape,
|
|
220
|
+
device, and dtype for the inpaint mask.
|
|
221
|
+
|
|
222
|
+
Returns:
|
|
223
|
+
torch.Tensor | None: Inpaint mask.
|
|
224
|
+
"""
|
|
225
|
+
if self.denoise_mask is None:
|
|
226
|
+
return None
|
|
227
|
+
|
|
228
|
+
mask = context.tensors.load(self.denoise_mask.mask_name)
|
|
229
|
+
|
|
230
|
+
_, _, latent_height, latent_width = latents.shape
|
|
231
|
+
mask = tv_resize(
|
|
232
|
+
img=mask,
|
|
233
|
+
size=[latent_height, latent_width],
|
|
234
|
+
interpolation=tv_transforms.InterpolationMode.BILINEAR,
|
|
235
|
+
antialias=False,
|
|
236
|
+
)
|
|
237
|
+
|
|
238
|
+
mask = mask.to(device=latents.device, dtype=latents.dtype)
|
|
239
|
+
|
|
240
|
+
# Expand the inpaint mask to the same shape as `latents` so that when we 'pack' `mask` it lines up with
|
|
241
|
+
# `latents`.
|
|
242
|
+
return mask.expand_as(latents)
|
|
243
|
+
|
|
244
|
+
def _build_step_callback(self, context: InvocationContext) -> Callable[[PipelineIntermediateState], None]:
|
|
245
|
+
def step_callback(state: PipelineIntermediateState) -> None:
|
|
246
|
+
state.latents = unpack(state.latents.float(), self.height, self.width).squeeze()
|
|
247
|
+
context.util.flux_step_callback(state)
|
|
248
|
+
|
|
249
|
+
return step_callback
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import torch
|
|
2
|
+
from einops import rearrange
|
|
3
|
+
from PIL import Image
|
|
4
|
+
|
|
5
|
+
from invokeai.app.invocations.baseinvocation import BaseInvocation, invocation
|
|
6
|
+
from invokeai.app.invocations.fields import (
|
|
7
|
+
FieldDescriptions,
|
|
8
|
+
Input,
|
|
9
|
+
InputField,
|
|
10
|
+
LatentsField,
|
|
11
|
+
WithBoard,
|
|
12
|
+
WithMetadata,
|
|
13
|
+
)
|
|
14
|
+
from invokeai.app.invocations.model import VAEField
|
|
15
|
+
from invokeai.app.invocations.primitives import ImageOutput
|
|
16
|
+
from invokeai.app.services.shared.invocation_context import InvocationContext
|
|
17
|
+
from invokeai.backend.flux.modules.autoencoder import AutoEncoder
|
|
18
|
+
from invokeai.backend.model_manager.load.load_base import LoadedModel
|
|
19
|
+
from invokeai.backend.util.devices import TorchDevice
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
@invocation(
|
|
23
|
+
"flux_vae_decode",
|
|
24
|
+
title="FLUX Latents to Image",
|
|
25
|
+
tags=["latents", "image", "vae", "l2i", "flux"],
|
|
26
|
+
category="latents",
|
|
27
|
+
version="1.0.0",
|
|
28
|
+
)
|
|
29
|
+
class FluxVaeDecodeInvocation(BaseInvocation, WithMetadata, WithBoard):
|
|
30
|
+
"""Generates an image from latents."""
|
|
31
|
+
|
|
32
|
+
latents: LatentsField = InputField(
|
|
33
|
+
description=FieldDescriptions.latents,
|
|
34
|
+
input=Input.Connection,
|
|
35
|
+
)
|
|
36
|
+
vae: VAEField = InputField(
|
|
37
|
+
description=FieldDescriptions.vae,
|
|
38
|
+
input=Input.Connection,
|
|
39
|
+
)
|
|
40
|
+
|
|
41
|
+
def _vae_decode(self, vae_info: LoadedModel, latents: torch.Tensor) -> Image.Image:
|
|
42
|
+
with vae_info as vae:
|
|
43
|
+
assert isinstance(vae, AutoEncoder)
|
|
44
|
+
latents = latents.to(device=TorchDevice.choose_torch_device(), dtype=TorchDevice.choose_torch_dtype())
|
|
45
|
+
img = vae.decode(latents)
|
|
46
|
+
|
|
47
|
+
img = img.clamp(-1, 1)
|
|
48
|
+
img = rearrange(img[0], "c h w -> h w c") # noqa: F821
|
|
49
|
+
img_pil = Image.fromarray((127.5 * (img + 1.0)).byte().cpu().numpy())
|
|
50
|
+
return img_pil
|
|
51
|
+
|
|
52
|
+
@torch.no_grad()
|
|
53
|
+
def invoke(self, context: InvocationContext) -> ImageOutput:
|
|
54
|
+
latents = context.tensors.load(self.latents.latents_name)
|
|
55
|
+
vae_info = context.models.load(self.vae.vae)
|
|
56
|
+
image = self._vae_decode(vae_info=vae_info, latents=latents)
|
|
57
|
+
|
|
58
|
+
TorchDevice.empty_cache()
|
|
59
|
+
image_dto = context.images.save(image=image)
|
|
60
|
+
return ImageOutput.build(image_dto)
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import einops
|
|
2
|
+
import torch
|
|
3
|
+
|
|
4
|
+
from invokeai.app.invocations.baseinvocation import BaseInvocation, invocation
|
|
5
|
+
from invokeai.app.invocations.fields import (
|
|
6
|
+
FieldDescriptions,
|
|
7
|
+
ImageField,
|
|
8
|
+
Input,
|
|
9
|
+
InputField,
|
|
10
|
+
)
|
|
11
|
+
from invokeai.app.invocations.model import VAEField
|
|
12
|
+
from invokeai.app.invocations.primitives import LatentsOutput
|
|
13
|
+
from invokeai.app.services.shared.invocation_context import InvocationContext
|
|
14
|
+
from invokeai.backend.flux.modules.autoencoder import AutoEncoder
|
|
15
|
+
from invokeai.backend.model_manager import LoadedModel
|
|
16
|
+
from invokeai.backend.stable_diffusion.diffusers_pipeline import image_resized_to_grid_as_tensor
|
|
17
|
+
from invokeai.backend.util.devices import TorchDevice
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
@invocation(
|
|
21
|
+
"flux_vae_encode",
|
|
22
|
+
title="FLUX Image to Latents",
|
|
23
|
+
tags=["latents", "image", "vae", "i2l", "flux"],
|
|
24
|
+
category="latents",
|
|
25
|
+
version="1.0.0",
|
|
26
|
+
)
|
|
27
|
+
class FluxVaeEncodeInvocation(BaseInvocation):
|
|
28
|
+
"""Encodes an image into latents."""
|
|
29
|
+
|
|
30
|
+
image: ImageField = InputField(
|
|
31
|
+
description="The image to encode.",
|
|
32
|
+
)
|
|
33
|
+
vae: VAEField = InputField(
|
|
34
|
+
description=FieldDescriptions.vae,
|
|
35
|
+
input=Input.Connection,
|
|
36
|
+
)
|
|
37
|
+
|
|
38
|
+
@staticmethod
|
|
39
|
+
def vae_encode(vae_info: LoadedModel, image_tensor: torch.Tensor) -> torch.Tensor:
|
|
40
|
+
# TODO(ryand): Expose seed parameter at the invocation level.
|
|
41
|
+
# TODO(ryand): Write a util function for generating random tensors that is consistent across devices / dtypes.
|
|
42
|
+
# There's a starting point in get_noise(...), but it needs to be extracted and generalized. This function
|
|
43
|
+
# should be used for VAE encode sampling.
|
|
44
|
+
generator = torch.Generator(device=TorchDevice.choose_torch_device()).manual_seed(0)
|
|
45
|
+
with vae_info as vae:
|
|
46
|
+
assert isinstance(vae, AutoEncoder)
|
|
47
|
+
image_tensor = image_tensor.to(
|
|
48
|
+
device=TorchDevice.choose_torch_device(), dtype=TorchDevice.choose_torch_dtype()
|
|
49
|
+
)
|
|
50
|
+
latents = vae.encode(image_tensor, sample=True, generator=generator)
|
|
51
|
+
return latents
|
|
52
|
+
|
|
53
|
+
@torch.no_grad()
|
|
54
|
+
def invoke(self, context: InvocationContext) -> LatentsOutput:
|
|
55
|
+
image = context.images.get_pil(self.image.image_name)
|
|
56
|
+
|
|
57
|
+
vae_info = context.models.load(self.vae.vae)
|
|
58
|
+
|
|
59
|
+
image_tensor = image_resized_to_grid_as_tensor(image.convert("RGB"))
|
|
60
|
+
if image_tensor.dim() == 3:
|
|
61
|
+
image_tensor = einops.rearrange(image_tensor, "c h w -> 1 c h w")
|
|
62
|
+
|
|
63
|
+
latents = self.vae_encode(vae_info=vae_info, image_tensor=image_tensor)
|
|
64
|
+
|
|
65
|
+
latents = latents.to("cpu")
|
|
66
|
+
name = context.tensors.save(tensor=latents)
|
|
67
|
+
return LatentsOutput.build(latents_name=name, latents=latents, seed=None)
|
|
@@ -126,7 +126,7 @@ class ImageMaskToTensorInvocation(BaseInvocation, WithMetadata):
|
|
|
126
126
|
title="Tensor Mask to Image",
|
|
127
127
|
tags=["mask"],
|
|
128
128
|
category="mask",
|
|
129
|
-
version="1.
|
|
129
|
+
version="1.1.0",
|
|
130
130
|
)
|
|
131
131
|
class MaskTensorToImageInvocation(BaseInvocation, WithMetadata, WithBoard):
|
|
132
132
|
"""Convert a mask tensor to an image."""
|
|
@@ -135,6 +135,11 @@ class MaskTensorToImageInvocation(BaseInvocation, WithMetadata, WithBoard):
|
|
|
135
135
|
|
|
136
136
|
def invoke(self, context: InvocationContext) -> ImageOutput:
|
|
137
137
|
mask = context.tensors.load(self.mask.tensor_name)
|
|
138
|
+
|
|
139
|
+
# Squeeze the channel dimension if it exists.
|
|
140
|
+
if mask.dim() == 3:
|
|
141
|
+
mask = mask.squeeze(0)
|
|
142
|
+
|
|
138
143
|
# Ensure that the mask is binary.
|
|
139
144
|
if mask.dtype != torch.bool:
|
|
140
145
|
mask = mask > 0.5
|
{InvokeAI-4.2.9.dev10 → InvokeAI-4.2.9.dev12}/invokeai/app/services/shared/invocation_context.py
RENAMED
|
@@ -14,7 +14,7 @@ from invokeai.app.services.image_records.image_records_common import ImageCatego
|
|
|
14
14
|
from invokeai.app.services.images.images_common import ImageDTO
|
|
15
15
|
from invokeai.app.services.invocation_services import InvocationServices
|
|
16
16
|
from invokeai.app.services.model_records.model_records_base import UnknownModelException
|
|
17
|
-
from invokeai.app.util.step_callback import stable_diffusion_step_callback
|
|
17
|
+
from invokeai.app.util.step_callback import flux_step_callback, stable_diffusion_step_callback
|
|
18
18
|
from invokeai.backend.model_manager.config import (
|
|
19
19
|
AnyModel,
|
|
20
20
|
AnyModelConfig,
|
|
@@ -557,6 +557,24 @@ class UtilInterface(InvocationContextInterface):
|
|
|
557
557
|
is_canceled=self.is_canceled,
|
|
558
558
|
)
|
|
559
559
|
|
|
560
|
+
def flux_step_callback(self, intermediate_state: PipelineIntermediateState) -> None:
|
|
561
|
+
"""
|
|
562
|
+
The step callback emits a progress event with the current step, the total number of
|
|
563
|
+
steps, a preview image, and some other internal metadata.
|
|
564
|
+
|
|
565
|
+
This should be called after each denoising step.
|
|
566
|
+
|
|
567
|
+
Args:
|
|
568
|
+
intermediate_state: The intermediate state of the diffusion pipeline.
|
|
569
|
+
"""
|
|
570
|
+
|
|
571
|
+
flux_step_callback(
|
|
572
|
+
context_data=self._data,
|
|
573
|
+
intermediate_state=intermediate_state,
|
|
574
|
+
events=self._services.events,
|
|
575
|
+
is_canceled=self.is_canceled,
|
|
576
|
+
)
|
|
577
|
+
|
|
560
578
|
|
|
561
579
|
class InvocationContext:
|
|
562
580
|
"""Provides access to various services and data for the current invocation.
|