InvokeAI 4.2.9.dev4__tar.gz → 4.2.9.dev6__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.dev4 → InvokeAI-4.2.9.dev6}/InvokeAI.egg-info/PKG-INFO +1 -1
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/InvokeAI.egg-info/SOURCES.txt +20 -3
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/InvokeAI.egg-info/requires.txt +4 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/PKG-INFO +1 -1
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/invocations/baseinvocation.py +23 -31
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/invocations/fields.py +11 -0
- InvokeAI-4.2.9.dev6/invokeai/app/invocations/flux_text_encoder.py +86 -0
- InvokeAI-4.2.9.dev6/invokeai/app/invocations/flux_text_to_image.py +172 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/invocations/model.py +124 -2
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/invocations/primitives.py +12 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/model_install/model_install_default.py +3 -2
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/model_records/model_records_base.py +1 -0
- InvokeAI-4.2.9.dev6/invokeai/app/services/workflow_records/default_workflows/Flux Text to Image.json +266 -0
- InvokeAI-4.2.9.dev6/invokeai/backend/flux/math.py +32 -0
- InvokeAI-4.2.9.dev6/invokeai/backend/flux/model.py +117 -0
- InvokeAI-4.2.9.dev6/invokeai/backend/flux/modules/autoencoder.py +310 -0
- InvokeAI-4.2.9.dev6/invokeai/backend/flux/modules/conditioner.py +33 -0
- InvokeAI-4.2.9.dev6/invokeai/backend/flux/modules/layers.py +253 -0
- InvokeAI-4.2.9.dev6/invokeai/backend/flux/sampling.py +176 -0
- InvokeAI-4.2.9.dev6/invokeai/backend/flux/util.py +71 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/model_manager/config.py +60 -3
- InvokeAI-4.2.9.dev6/invokeai/backend/model_manager/load/model_loaders/flux.py +234 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/model_manager/load/model_loaders/generic_diffusers.py +6 -1
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/model_manager/load/model_loaders/stable_diffusion.py +12 -2
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/model_manager/load/model_util.py +12 -1
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/model_manager/probe.py +57 -12
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/model_manager/starter_models.py +74 -1
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/model_manager/util/select_hf_files.py +23 -3
- InvokeAI-4.2.9.dev6/invokeai/backend/quantization/bnb_llm_int8.py +125 -0
- InvokeAI-4.2.9.dev6/invokeai/backend/quantization/bnb_nf4.py +156 -0
- InvokeAI-4.2.9.dev6/invokeai/backend/quantization/scripts/load_flux_model_bnb_llm_int8.py +79 -0
- InvokeAI-4.2.9.dev6/invokeai/backend/quantization/scripts/load_flux_model_bnb_nf4.py +96 -0
- InvokeAI-4.2.9.dev6/invokeai/backend/quantization/scripts/quantize_t5_xxl_bnb_llm_int8.py +92 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/stable_diffusion/diffusion/conditioning_data.py +11 -5
- InvokeAI-4.2.9.dev6/invokeai/frontend/cli/__init__.py +0 -0
- InvokeAI-4.2.9.dev6/invokeai/frontend/web/dist/assets/App-vCM7oRzD.js +66 -0
- InvokeAI-4.2.9.dev6/invokeai/frontend/web/dist/assets/ThemeLocaleProvider-C04frtGG.js +1 -0
- InvokeAI-4.2.9.dev6/invokeai/frontend/web/dist/assets/index-do3ah3Ti.js +563 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/index.html +1 -1
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/locales/en.json +9 -2
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/invocation_api/__init__.py +4 -0
- InvokeAI-4.2.9.dev6/invokeai/version/invokeai_version.py +1 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/pyproject.toml +3 -0
- InvokeAI-4.2.9.dev4/invokeai/frontend/web/dist/assets/App-Dp3a5nk3.js +0 -26
- InvokeAI-4.2.9.dev4/invokeai/frontend/web/dist/assets/ThemeLocaleProvider-oaIduhpQ.js +0 -1
- InvokeAI-4.2.9.dev4/invokeai/frontend/web/dist/assets/index-hqV6JEH_.js +0 -563
- InvokeAI-4.2.9.dev4/invokeai/version/invokeai_version.py +0 -1
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/InvokeAI.egg-info/dependency_links.txt +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/InvokeAI.egg-info/entry_points.txt +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/InvokeAI.egg-info/top_level.txt +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/LICENSE +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/LICENSE-SD1+SD2.txt +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/LICENSE-SDXL.txt +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/README.md +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/__init__.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/api/dependencies.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/api/no_cache_staticfiles.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/api/routers/app_info.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/api/routers/board_images.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/api/routers/boards.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/api/routers/download_queue.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/api/routers/images.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/api/routers/model_manager.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/api/routers/session_queue.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/api/routers/style_presets.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/api/routers/utilities.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/api/routers/workflows.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/api/sockets.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/api_app.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/assets/images/caution.png +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/invocations/__init__.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/invocations/blend_latents.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/invocations/collections.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/invocations/compel.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/invocations/constants.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/invocations/controlnet_image_processors.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/invocations/create_denoise_mask.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/invocations/create_gradient_mask.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/invocations/crop_latents.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/invocations/custom_nodes/README.md +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/invocations/custom_nodes/init.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/invocations/cv.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/invocations/denoise_latents.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/invocations/facetools.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/invocations/grounding_dino.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/invocations/ideal_size.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/invocations/image.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/invocations/image_to_latents.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/invocations/infill.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/invocations/ip_adapter.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/invocations/latents_to_image.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/invocations/mask.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/invocations/math.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/invocations/metadata.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/invocations/noise.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/invocations/param_easing.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/invocations/prompt.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/invocations/resize_latents.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/invocations/scheduler.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/invocations/sdxl.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/invocations/segment_anything.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/invocations/spandrel_image_to_image.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/invocations/strings.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/invocations/t2i_adapter.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/invocations/tiled_multi_diffusion_denoise_latents.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/invocations/tiles.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/invocations/upscale.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/invocations/util.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/run_app.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/__init__.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/board_image_records/__init__.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/board_image_records/board_image_records_base.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/board_image_records/board_image_records_sqlite.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/board_images/__init__.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/board_images/board_images_base.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/board_images/board_images_common.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/board_images/board_images_default.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/board_records/board_records_base.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/board_records/board_records_common.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/board_records/board_records_sqlite.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/boards/__init__.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/boards/boards_base.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/boards/boards_common.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/boards/boards_default.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/bulk_download/__init__.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/bulk_download/bulk_download_base.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/bulk_download/bulk_download_common.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/bulk_download/bulk_download_default.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/config/__init__.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/config/config_common.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/config/config_default.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/download/__init__.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/download/download_base.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/download/download_default.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/events/__init__.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/events/events_base.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/events/events_common.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/events/events_fastapievents.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/image_files/__init__.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/image_files/image_files_base.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/image_files/image_files_common.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/image_files/image_files_disk.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/image_records/__init__.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/image_records/image_records_base.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/image_records/image_records_common.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/image_records/image_records_sqlite.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/images/__init__.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/images/images_base.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/images/images_common.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/images/images_default.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/invocation_cache/__init__.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/invocation_cache/invocation_cache_base.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/invocation_cache/invocation_cache_common.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/invocation_cache/invocation_cache_memory.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/invocation_services.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/invocation_stats/__init__.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/invocation_stats/invocation_stats_base.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/invocation_stats/invocation_stats_common.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/invocation_stats/invocation_stats_default.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/invoker.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/item_storage/__init__.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/item_storage/item_storage_base.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/item_storage/item_storage_common.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/item_storage/item_storage_memory.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/model_images/model_images_base.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/model_images/model_images_common.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/model_images/model_images_default.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/model_install/__init__.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/model_install/model_install_base.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/model_install/model_install_common.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/model_load/__init__.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/model_load/model_load_base.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/model_load/model_load_default.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/model_manager/__init__.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/model_manager/model_manager_base.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/model_manager/model_manager_common.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/model_manager/model_manager_default.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/model_records/__init__.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/model_records/model_records_sql.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/names/__init__.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/names/names_base.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/names/names_common.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/names/names_default.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/object_serializer/object_serializer_base.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/object_serializer/object_serializer_common.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/object_serializer/object_serializer_disk.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/object_serializer/object_serializer_forward_cache.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/session_processor/__init__.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/session_processor/session_processor_base.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/session_processor/session_processor_common.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/session_processor/session_processor_default.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/session_queue/__init__.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/session_queue/session_queue_base.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/session_queue/session_queue_common.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/session_queue/session_queue_sqlite.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/shared/__init__.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/shared/graph.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/shared/invocation_context.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/shared/pagination.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/shared/sqlite/__init__.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/shared/sqlite/sqlite_common.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/shared/sqlite/sqlite_database.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/shared/sqlite/sqlite_util.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/shared/sqlite_migrator/__init__.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/shared/sqlite_migrator/migrations/__init__.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_1.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_10.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_11.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_12.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_13.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_14.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_15.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_2.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_3.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_4.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_5.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_6.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_7.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_8.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_9.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/shared/sqlite_migrator/sqlite_migrator_common.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/shared/sqlite_migrator/sqlite_migrator_impl.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/style_preset_images/default_style_preset_images/Anime.png +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/style_preset_images/default_style_preset_images/Architectural Visualization.png +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/style_preset_images/default_style_preset_images/Concept Art (Character).png +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/style_preset_images/default_style_preset_images/Concept Art (Fantasy).png +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/style_preset_images/default_style_preset_images/Concept Art (Painterly).png +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/style_preset_images/default_style_preset_images/Concept Art (Sci-Fi).png +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/style_preset_images/default_style_preset_images/Environment Art.png +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/style_preset_images/default_style_preset_images/Illustration.png +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/style_preset_images/default_style_preset_images/Interior Design (Visualization).png +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/style_preset_images/default_style_preset_images/Line Art.png +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/style_preset_images/default_style_preset_images/Photography (Black and White).png +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/style_preset_images/default_style_preset_images/Photography (General).png +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/style_preset_images/default_style_preset_images/Photography (Landscape).png +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/style_preset_images/default_style_preset_images/Photography (Portrait).png +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/style_preset_images/default_style_preset_images/Photography (Studio Lighting).png +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/style_preset_images/default_style_preset_images/Product Rendering.png +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/style_preset_images/default_style_preset_images/Sketch.png +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/style_preset_images/default_style_preset_images/Vehicles.png +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/style_preset_images/default_style_preset_images/__init__.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/style_preset_images/style_preset_images_base.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/style_preset_images/style_preset_images_common.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/style_preset_images/style_preset_images_disk.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/style_preset_records/__init__.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/style_preset_records/default_style_presets.json +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/style_preset_records/style_preset_records_base.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/style_preset_records/style_preset_records_common.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/style_preset_records/style_preset_records_sqlite.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/urls/__init__.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/urls/urls_base.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/urls/urls_default.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/workflow_records/__init__.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/workflow_records/default_workflows/ESRGAN Upscaling with Canny ControlNet.json +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/workflow_records/default_workflows/Face Detailer with IP-Adapter & Canny (See Note in Details).json +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/workflow_records/default_workflows/Multi ControlNet (Canny & Depth).json +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/workflow_records/default_workflows/MultiDiffusion SD1.5.json +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/workflow_records/default_workflows/MultiDiffusion SDXL.json +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/workflow_records/default_workflows/Prompt from File.json +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/workflow_records/default_workflows/Text to Image - SD1.5.json +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/workflow_records/default_workflows/Text to Image - SDXL.json +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/workflow_records/default_workflows/Text to Image with LoRA.json +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/workflow_records/default_workflows/Tiled Upscaling (Beta).json +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/workflow_records/workflow_records_base.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/workflow_records/workflow_records_common.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/workflow_records/workflow_records_sqlite.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/shared/__init__.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/shared/models.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/util/__init__.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/util/controlnet_utils.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/util/custom_openapi.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/util/metaenum.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/util/misc.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/util/model_exclude_null.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/util/profiler.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/util/step_callback.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/util/suppress_output.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/util/thumbnails.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/util/ti_utils.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/assets/fonts/inter/Inter-Regular.ttf +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/__init__.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/image_util/__init__.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/image_util/basicsr/__init__.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/image_util/basicsr/arch_util.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/image_util/basicsr/rrdbnet_arch.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/image_util/canny.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/image_util/depth_anything/depth_anything_pipeline.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/image_util/dw_openpose/__init__.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/image_util/dw_openpose/onnxdet.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/image_util/dw_openpose/onnxpose.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/image_util/dw_openpose/utils.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/image_util/dw_openpose/wholebody.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/image_util/grounding_dino/__init__.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/image_util/grounding_dino/detection_result.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/image_util/grounding_dino/grounding_dino_pipeline.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/image_util/hed.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/image_util/infill_methods/cv2_inpaint.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/image_util/infill_methods/lama.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/image_util/infill_methods/mosaic.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/image_util/infill_methods/patchmatch.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/image_util/infill_methods/tile.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/image_util/invisible_watermark.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/image_util/lineart.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/image_util/lineart_anime.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/image_util/pngwriter.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/image_util/realesrgan/__init__.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/image_util/realesrgan/realesrgan.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/image_util/safety_checker.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/image_util/segment_anything/__init__.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/image_util/segment_anything/mask_refinement.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/image_util/segment_anything/segment_anything_pipeline.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/image_util/util.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/ip_adapter/__init__.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/ip_adapter/ip_adapter.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/ip_adapter/ip_attention_weights.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/ip_adapter/resampler.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/lora.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/model_hash/hash_validator.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/model_hash/model_hash.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/model_manager/__init__.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/model_manager/load/__init__.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/model_manager/load/load_base.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/model_manager/load/load_default.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/model_manager/load/memory_snapshot.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/model_manager/load/model_cache/__init__.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/model_manager/load/model_cache/model_cache_base.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/model_manager/load/model_cache/model_cache_default.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/model_manager/load/model_cache/model_locker.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/model_manager/load/model_loader_registry.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/model_manager/load/model_loaders/__init__.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/model_manager/load/model_loaders/controlnet.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/model_manager/load/model_loaders/ip_adapter.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/model_manager/load/model_loaders/lora.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/model_manager/load/model_loaders/onnx.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/model_manager/load/model_loaders/spandrel_image_to_image.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/model_manager/load/model_loaders/textual_inversion.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/model_manager/load/model_loaders/vae.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/model_manager/load/optimizations.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/model_manager/merge.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/model_manager/metadata/__init__.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/model_manager/metadata/fetch/__init__.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/model_manager/metadata/fetch/fetch_base.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/model_manager/metadata/fetch/huggingface.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/model_manager/metadata/metadata_base.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/model_manager/search.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/model_manager/util/libc_util.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/model_manager/util/model_util.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/model_patcher.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/onnx/onnx_runtime.py +0 -0
- {InvokeAI-4.2.9.dev4/invokeai/backend/tiles → InvokeAI-4.2.9.dev6/invokeai/backend/quantization}/__init__.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/raw_model.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/spandrel_image_to_image_model.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/stable_diffusion/__init__.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/stable_diffusion/denoise_context.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/stable_diffusion/diffusers_pipeline.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/stable_diffusion/diffusion/__init__.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/stable_diffusion/diffusion/custom_atttention.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/stable_diffusion/diffusion/regional_ip_data.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/stable_diffusion/diffusion/regional_prompt_data.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/stable_diffusion/diffusion/shared_invokeai_diffusion.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/stable_diffusion/diffusion/unet_attention_patcher.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/stable_diffusion/diffusion_backend.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/stable_diffusion/extension_callback_type.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/stable_diffusion/extensions/base.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/stable_diffusion/extensions/controlnet.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/stable_diffusion/extensions/freeu.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/stable_diffusion/extensions/inpaint.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/stable_diffusion/extensions/inpaint_model.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/stable_diffusion/extensions/lora.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/stable_diffusion/extensions/preview.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/stable_diffusion/extensions/rescale_cfg.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/stable_diffusion/extensions/seamless.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/stable_diffusion/extensions/t2i_adapter.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/stable_diffusion/extensions_manager.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/stable_diffusion/multi_diffusion_pipeline.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/stable_diffusion/schedulers/__init__.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/stable_diffusion/schedulers/schedulers.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/stable_diffusion/vae_tiling.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/textual_inversion.py +0 -0
- {InvokeAI-4.2.9.dev4/invokeai/frontend/cli → InvokeAI-4.2.9.dev6/invokeai/backend/tiles}/__init__.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/tiles/tiles.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/tiles/utils.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/util/__init__.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/util/attention.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/util/catch_sigint.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/util/db_maintenance.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/util/devices.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/util/hotfixes.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/util/logging.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/util/mask.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/util/mps_fixes.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/util/original_weights_storage.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/util/silence_warnings.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/util/test_utils.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/util/util.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/configs/controlnet/cldm_v15.yaml +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/configs/controlnet/cldm_v21.yaml +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/configs/stable-diffusion/sd_xl_base.yaml +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/configs/stable-diffusion/sd_xl_inpaint.yaml +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/configs/stable-diffusion/sd_xl_refiner.yaml +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/configs/stable-diffusion/v1-finetune.yaml +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/configs/stable-diffusion/v1-finetune_style.yaml +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/configs/stable-diffusion/v1-inference-v.yaml +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/configs/stable-diffusion/v1-inference.yaml +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/configs/stable-diffusion/v1-inpainting-inference.yaml +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/configs/stable-diffusion/v1-m1-finetune.yaml +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/configs/stable-diffusion/v2-inference-v.yaml +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/configs/stable-diffusion/v2-inference.yaml +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/configs/stable-diffusion/v2-inpainting-inference-v.yaml +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/configs/stable-diffusion/v2-inpainting-inference.yaml +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/configs/stable-diffusion/v2-midas-inference.yaml +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/__init__.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/cli/arg_parser.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/install/__init__.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/install/import_images.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/__init__.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/assets/App-DEu4J2pT.css +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/assets/ThemeLocaleProvider-B2NxUfIp.css +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/assets/images/invoke-alert-favicon.svg +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/assets/images/invoke-avatar-circle.svg +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/assets/images/invoke-avatar-square.svg +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/assets/images/invoke-favicon.png +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/assets/images/invoke-favicon.svg +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/assets/images/invoke-key-char-lrg.svg +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/assets/images/invoke-key-char-sml.svg +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/assets/images/invoke-key-wht-lrg.svg +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/assets/images/invoke-key-wht-sml.svg +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/assets/images/invoke-symbol-char-lrg.svg +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/assets/images/invoke-symbol-char-sml.svg +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/assets/images/invoke-symbol-wht-lrg.svg +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/assets/images/invoke-symbol-wht-sml.svg +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/assets/images/invoke-symbol-ylw-lrg.svg +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/assets/images/invoke-tag-char-lrg.svg +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/assets/images/invoke-tag-char-sml.svg +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/assets/images/invoke-tag-lrg.svg +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/assets/images/invoke-tag-sml.svg +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/assets/images/invoke-wordmark-charcoal.svg +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/assets/images/invoke-wordmark-white.svg +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/assets/images/mask.svg +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/assets/images/transparent_bg.png +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/assets/inter-cyrillic-ext-wght-normal-B2xhLi22.woff2 +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/assets/inter-cyrillic-wght-normal-CMZtQduZ.woff2 +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/assets/inter-greek-ext-wght-normal-CGAr0uHJ.woff2 +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/assets/inter-greek-wght-normal-CaVNZxsx.woff2 +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/assets/inter-latin-ext-wght-normal-CFHvXkgd.woff2 +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/assets/inter-latin-wght-normal-C2S99t-D.woff2 +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2 +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/assets/worker-Dywf1EVc.js +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/locales/ar.json +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/locales/az.json +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/locales/bg.json +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/locales/de.json +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/locales/es.json +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/locales/fi.json +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/locales/fr.json +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/locales/he.json +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/locales/hu.json +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/locales/it.json +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/locales/ja.json +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/locales/ko.json +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/locales/mn.json +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/locales/nl.json +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/locales/pl.json +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/locales/pt.json +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/locales/pt_BR.json +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/locales/ro.json +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/locales/ru.json +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/locales/sv.json +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/locales/tr.json +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/locales/uk.json +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/locales/vi.json +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/locales/zh_CN.json +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/locales/zh_Hant.json +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/scripts/clean_translations.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/static/docs/invoke-favicon-docs.svg +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/version/__init__.py +0 -0
- {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/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.dev6
|
|
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,6 +40,8 @@ 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_text_encoder.py
|
|
44
|
+
invokeai/app/invocations/flux_text_to_image.py
|
|
43
45
|
invokeai/app/invocations/grounding_dino.py
|
|
44
46
|
invokeai/app/invocations/ideal_size.py
|
|
45
47
|
invokeai/app/invocations/image.py
|
|
@@ -219,6 +221,7 @@ invokeai/app/services/workflow_records/workflow_records_common.py
|
|
|
219
221
|
invokeai/app/services/workflow_records/workflow_records_sqlite.py
|
|
220
222
|
invokeai/app/services/workflow_records/default_workflows/ESRGAN Upscaling with Canny ControlNet.json
|
|
221
223
|
invokeai/app/services/workflow_records/default_workflows/Face Detailer with IP-Adapter & Canny (See Note in Details).json
|
|
224
|
+
invokeai/app/services/workflow_records/default_workflows/Flux Text to Image.json
|
|
222
225
|
invokeai/app/services/workflow_records/default_workflows/Multi ControlNet (Canny & Depth).json
|
|
223
226
|
invokeai/app/services/workflow_records/default_workflows/MultiDiffusion SD1.5.json
|
|
224
227
|
invokeai/app/services/workflow_records/default_workflows/MultiDiffusion SDXL.json
|
|
@@ -247,6 +250,13 @@ invokeai/backend/model_patcher.py
|
|
|
247
250
|
invokeai/backend/raw_model.py
|
|
248
251
|
invokeai/backend/spandrel_image_to_image_model.py
|
|
249
252
|
invokeai/backend/textual_inversion.py
|
|
253
|
+
invokeai/backend/flux/math.py
|
|
254
|
+
invokeai/backend/flux/model.py
|
|
255
|
+
invokeai/backend/flux/sampling.py
|
|
256
|
+
invokeai/backend/flux/util.py
|
|
257
|
+
invokeai/backend/flux/modules/autoencoder.py
|
|
258
|
+
invokeai/backend/flux/modules/conditioner.py
|
|
259
|
+
invokeai/backend/flux/modules/layers.py
|
|
250
260
|
invokeai/backend/image_util/__init__.py
|
|
251
261
|
invokeai/backend/image_util/canny.py
|
|
252
262
|
invokeai/backend/image_util/hed.py
|
|
@@ -303,6 +313,7 @@ invokeai/backend/model_manager/load/model_cache/model_cache_default.py
|
|
|
303
313
|
invokeai/backend/model_manager/load/model_cache/model_locker.py
|
|
304
314
|
invokeai/backend/model_manager/load/model_loaders/__init__.py
|
|
305
315
|
invokeai/backend/model_manager/load/model_loaders/controlnet.py
|
|
316
|
+
invokeai/backend/model_manager/load/model_loaders/flux.py
|
|
306
317
|
invokeai/backend/model_manager/load/model_loaders/generic_diffusers.py
|
|
307
318
|
invokeai/backend/model_manager/load/model_loaders/ip_adapter.py
|
|
308
319
|
invokeai/backend/model_manager/load/model_loaders/lora.py
|
|
@@ -320,6 +331,12 @@ invokeai/backend/model_manager/util/libc_util.py
|
|
|
320
331
|
invokeai/backend/model_manager/util/model_util.py
|
|
321
332
|
invokeai/backend/model_manager/util/select_hf_files.py
|
|
322
333
|
invokeai/backend/onnx/onnx_runtime.py
|
|
334
|
+
invokeai/backend/quantization/__init__.py
|
|
335
|
+
invokeai/backend/quantization/bnb_llm_int8.py
|
|
336
|
+
invokeai/backend/quantization/bnb_nf4.py
|
|
337
|
+
invokeai/backend/quantization/scripts/load_flux_model_bnb_llm_int8.py
|
|
338
|
+
invokeai/backend/quantization/scripts/load_flux_model_bnb_nf4.py
|
|
339
|
+
invokeai/backend/quantization/scripts/quantize_t5_xxl_bnb_llm_int8.py
|
|
323
340
|
invokeai/backend/stable_diffusion/__init__.py
|
|
324
341
|
invokeai/backend/stable_diffusion/denoise_context.py
|
|
325
342
|
invokeai/backend/stable_diffusion/diffusers_pipeline.py
|
|
@@ -387,10 +404,10 @@ invokeai/frontend/install/import_images.py
|
|
|
387
404
|
invokeai/frontend/web/__init__.py
|
|
388
405
|
invokeai/frontend/web/dist/index.html
|
|
389
406
|
invokeai/frontend/web/dist/assets/App-DEu4J2pT.css
|
|
390
|
-
invokeai/frontend/web/dist/assets/App-
|
|
407
|
+
invokeai/frontend/web/dist/assets/App-vCM7oRzD.js
|
|
391
408
|
invokeai/frontend/web/dist/assets/ThemeLocaleProvider-B2NxUfIp.css
|
|
392
|
-
invokeai/frontend/web/dist/assets/ThemeLocaleProvider-
|
|
393
|
-
invokeai/frontend/web/dist/assets/index-
|
|
409
|
+
invokeai/frontend/web/dist/assets/ThemeLocaleProvider-C04frtGG.js
|
|
410
|
+
invokeai/frontend/web/dist/assets/index-do3ah3Ti.js
|
|
394
411
|
invokeai/frontend/web/dist/assets/inter-cyrillic-ext-wght-normal-B2xhLi22.woff2
|
|
395
412
|
invokeai/frontend/web/dist/assets/inter-cyrillic-wght-normal-CMZtQduZ.woff2
|
|
396
413
|
invokeai/frontend/web/dist/assets/inter-greek-ext-wght-normal-CGAr0uHJ.woff2
|
|
@@ -11,6 +11,7 @@ onnxruntime==1.16.3
|
|
|
11
11
|
opencv-python==4.9.0.80
|
|
12
12
|
pytorch-lightning==2.1.3
|
|
13
13
|
safetensors==0.4.3
|
|
14
|
+
sentencepiece==0.2.0
|
|
14
15
|
spandrel==0.3.4
|
|
15
16
|
timm==0.6.13
|
|
16
17
|
torch==2.2.2
|
|
@@ -52,6 +53,9 @@ scikit-image~=0.21.0
|
|
|
52
53
|
semver~=3.0.1
|
|
53
54
|
test-tube~=0.7.5
|
|
54
55
|
|
|
56
|
+
[:sys_platform != "darwin"]
|
|
57
|
+
bitsandbytes==0.43.3
|
|
58
|
+
|
|
55
59
|
[:sys_platform == "win32"]
|
|
56
60
|
windows-curses
|
|
57
61
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: InvokeAI
|
|
3
|
-
Version: 4.2.9.
|
|
3
|
+
Version: 4.2.9.dev6
|
|
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
|
|
@@ -20,7 +20,6 @@ from typing import (
|
|
|
20
20
|
Type,
|
|
21
21
|
TypeVar,
|
|
22
22
|
Union,
|
|
23
|
-
cast,
|
|
24
23
|
)
|
|
25
24
|
|
|
26
25
|
import semver
|
|
@@ -80,7 +79,7 @@ class UIConfigBase(BaseModel):
|
|
|
80
79
|
version: str = Field(
|
|
81
80
|
description='The node\'s version. Should be a valid semver string e.g. "1.0.0" or "3.8.13".',
|
|
82
81
|
)
|
|
83
|
-
node_pack:
|
|
82
|
+
node_pack: str = Field(description="The node pack that this node belongs to, will be 'invokeai' for built-in nodes")
|
|
84
83
|
classification: Classification = Field(default=Classification.Stable, description="The node's classification")
|
|
85
84
|
|
|
86
85
|
model_config = ConfigDict(
|
|
@@ -230,18 +229,16 @@ class BaseInvocation(ABC, BaseModel):
|
|
|
230
229
|
@staticmethod
|
|
231
230
|
def json_schema_extra(schema: dict[str, Any], model_class: Type[BaseInvocation]) -> None:
|
|
232
231
|
"""Adds various UI-facing attributes to the invocation's OpenAPI schema."""
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
schema["classification"] = uiconfig.classification
|
|
244
|
-
schema["version"] = uiconfig.version
|
|
232
|
+
if title := model_class.UIConfig.title:
|
|
233
|
+
schema["title"] = title
|
|
234
|
+
if tags := model_class.UIConfig.tags:
|
|
235
|
+
schema["tags"] = tags
|
|
236
|
+
if category := model_class.UIConfig.category:
|
|
237
|
+
schema["category"] = category
|
|
238
|
+
if node_pack := model_class.UIConfig.node_pack:
|
|
239
|
+
schema["node_pack"] = node_pack
|
|
240
|
+
schema["classification"] = model_class.UIConfig.classification
|
|
241
|
+
schema["version"] = model_class.UIConfig.version
|
|
245
242
|
if "required" not in schema or not isinstance(schema["required"], list):
|
|
246
243
|
schema["required"] = []
|
|
247
244
|
schema["class"] = "invocation"
|
|
@@ -312,7 +309,7 @@ class BaseInvocation(ABC, BaseModel):
|
|
|
312
309
|
json_schema_extra={"field_kind": FieldKind.NodeAttribute},
|
|
313
310
|
)
|
|
314
311
|
|
|
315
|
-
UIConfig: ClassVar[
|
|
312
|
+
UIConfig: ClassVar[UIConfigBase]
|
|
316
313
|
|
|
317
314
|
model_config = ConfigDict(
|
|
318
315
|
protected_namespaces=(),
|
|
@@ -441,30 +438,25 @@ def invocation(
|
|
|
441
438
|
validate_fields(cls.model_fields, invocation_type)
|
|
442
439
|
|
|
443
440
|
# Add OpenAPI schema extras
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
cls.
|
|
451
|
-
|
|
452
|
-
# Grab the node pack's name from the module name, if it's a custom node
|
|
453
|
-
is_custom_node = cls.__module__.rsplit(".", 1)[0] == "invokeai.app.invocations"
|
|
454
|
-
if is_custom_node:
|
|
455
|
-
cls.UIConfig.node_pack = cls.__module__.split(".")[0]
|
|
456
|
-
else:
|
|
457
|
-
cls.UIConfig.node_pack = None
|
|
441
|
+
uiconfig: dict[str, Any] = {}
|
|
442
|
+
uiconfig["title"] = title
|
|
443
|
+
uiconfig["tags"] = tags
|
|
444
|
+
uiconfig["category"] = category
|
|
445
|
+
uiconfig["classification"] = classification
|
|
446
|
+
# The node pack is the module name - will be "invokeai" for built-in nodes
|
|
447
|
+
uiconfig["node_pack"] = cls.__module__.split(".")[0]
|
|
458
448
|
|
|
459
449
|
if version is not None:
|
|
460
450
|
try:
|
|
461
451
|
semver.Version.parse(version)
|
|
462
452
|
except ValueError as e:
|
|
463
453
|
raise InvalidVersionError(f'Invalid version string for node "{invocation_type}": "{version}"') from e
|
|
464
|
-
|
|
454
|
+
uiconfig["version"] = version
|
|
465
455
|
else:
|
|
466
456
|
logger.warn(f'No version specified for node "{invocation_type}", using "1.0.0"')
|
|
467
|
-
|
|
457
|
+
uiconfig["version"] = "1.0.0"
|
|
458
|
+
|
|
459
|
+
cls.UIConfig = UIConfigBase(**uiconfig)
|
|
468
460
|
|
|
469
461
|
if use_cache is not None:
|
|
470
462
|
cls.model_fields["use_cache"].default = use_cache
|
|
@@ -40,6 +40,7 @@ class UIType(str, Enum, metaclass=MetaEnum):
|
|
|
40
40
|
|
|
41
41
|
# region Model Field Types
|
|
42
42
|
MainModel = "MainModelField"
|
|
43
|
+
FluxMainModel = "FluxMainModelField"
|
|
43
44
|
SDXLMainModel = "SDXLMainModelField"
|
|
44
45
|
SDXLRefinerModel = "SDXLRefinerModelField"
|
|
45
46
|
ONNXModel = "ONNXModelField"
|
|
@@ -48,6 +49,7 @@ class UIType(str, Enum, metaclass=MetaEnum):
|
|
|
48
49
|
ControlNetModel = "ControlNetModelField"
|
|
49
50
|
IPAdapterModel = "IPAdapterModelField"
|
|
50
51
|
T2IAdapterModel = "T2IAdapterModelField"
|
|
52
|
+
T5EncoderModel = "T5EncoderModelField"
|
|
51
53
|
SpandrelImageToImageModel = "SpandrelImageToImageModelField"
|
|
52
54
|
# endregion
|
|
53
55
|
|
|
@@ -125,13 +127,16 @@ class FieldDescriptions:
|
|
|
125
127
|
negative_cond = "Negative conditioning tensor"
|
|
126
128
|
noise = "Noise tensor"
|
|
127
129
|
clip = "CLIP (tokenizer, text encoder, LoRAs) and skipped layer count"
|
|
130
|
+
t5_encoder = "T5 tokenizer and text encoder"
|
|
128
131
|
unet = "UNet (scheduler, LoRAs)"
|
|
132
|
+
transformer = "Transformer"
|
|
129
133
|
vae = "VAE"
|
|
130
134
|
cond = "Conditioning tensor"
|
|
131
135
|
controlnet_model = "ControlNet model to load"
|
|
132
136
|
vae_model = "VAE model to load"
|
|
133
137
|
lora_model = "LoRA model to load"
|
|
134
138
|
main_model = "Main model (UNet, VAE, CLIP) to load"
|
|
139
|
+
flux_model = "Flux model (Transformer) to load"
|
|
135
140
|
sdxl_main_model = "SDXL Main model (UNet, VAE, CLIP1, CLIP2) to load"
|
|
136
141
|
sdxl_refiner_model = "SDXL Refiner Main Modde (UNet, VAE, CLIP2) to load"
|
|
137
142
|
onnx_main_model = "ONNX Main model (UNet, VAE, CLIP) to load"
|
|
@@ -231,6 +236,12 @@ class ColorField(BaseModel):
|
|
|
231
236
|
return (self.r, self.g, self.b, self.a)
|
|
232
237
|
|
|
233
238
|
|
|
239
|
+
class FluxConditioningField(BaseModel):
|
|
240
|
+
"""A conditioning tensor primitive value"""
|
|
241
|
+
|
|
242
|
+
conditioning_name: str = Field(description="The name of conditioning tensor")
|
|
243
|
+
|
|
244
|
+
|
|
234
245
|
class ConditioningField(BaseModel):
|
|
235
246
|
"""A conditioning tensor primitive value"""
|
|
236
247
|
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
from typing import Literal
|
|
2
|
+
|
|
3
|
+
import torch
|
|
4
|
+
from transformers import CLIPTextModel, CLIPTokenizer, T5EncoderModel, T5Tokenizer
|
|
5
|
+
|
|
6
|
+
from invokeai.app.invocations.baseinvocation import BaseInvocation, Classification, invocation
|
|
7
|
+
from invokeai.app.invocations.fields import FieldDescriptions, Input, InputField
|
|
8
|
+
from invokeai.app.invocations.model import CLIPField, T5EncoderField
|
|
9
|
+
from invokeai.app.invocations.primitives import FluxConditioningOutput
|
|
10
|
+
from invokeai.app.services.shared.invocation_context import InvocationContext
|
|
11
|
+
from invokeai.backend.flux.modules.conditioner import HFEncoder
|
|
12
|
+
from invokeai.backend.stable_diffusion.diffusion.conditioning_data import ConditioningFieldData, FLUXConditioningInfo
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
@invocation(
|
|
16
|
+
"flux_text_encoder",
|
|
17
|
+
title="FLUX Text Encoding",
|
|
18
|
+
tags=["prompt", "conditioning", "flux"],
|
|
19
|
+
category="conditioning",
|
|
20
|
+
version="1.0.0",
|
|
21
|
+
classification=Classification.Prototype,
|
|
22
|
+
)
|
|
23
|
+
class FluxTextEncoderInvocation(BaseInvocation):
|
|
24
|
+
"""Encodes and preps a prompt for a flux image."""
|
|
25
|
+
|
|
26
|
+
clip: CLIPField = InputField(
|
|
27
|
+
title="CLIP",
|
|
28
|
+
description=FieldDescriptions.clip,
|
|
29
|
+
input=Input.Connection,
|
|
30
|
+
)
|
|
31
|
+
t5_encoder: T5EncoderField = InputField(
|
|
32
|
+
title="T5Encoder",
|
|
33
|
+
description=FieldDescriptions.t5_encoder,
|
|
34
|
+
input=Input.Connection,
|
|
35
|
+
)
|
|
36
|
+
t5_max_seq_len: Literal[256, 512] = InputField(
|
|
37
|
+
description="Max sequence length for the T5 encoder. Expected to be 256 for FLUX schnell models and 512 for FLUX dev models."
|
|
38
|
+
)
|
|
39
|
+
prompt: str = InputField(description="Text prompt to encode.")
|
|
40
|
+
|
|
41
|
+
@torch.no_grad()
|
|
42
|
+
def invoke(self, context: InvocationContext) -> FluxConditioningOutput:
|
|
43
|
+
t5_embeddings, clip_embeddings = self._encode_prompt(context)
|
|
44
|
+
conditioning_data = ConditioningFieldData(
|
|
45
|
+
conditionings=[FLUXConditioningInfo(clip_embeds=clip_embeddings, t5_embeds=t5_embeddings)]
|
|
46
|
+
)
|
|
47
|
+
|
|
48
|
+
conditioning_name = context.conditioning.save(conditioning_data)
|
|
49
|
+
return FluxConditioningOutput.build(conditioning_name)
|
|
50
|
+
|
|
51
|
+
def _encode_prompt(self, context: InvocationContext) -> tuple[torch.Tensor, torch.Tensor]:
|
|
52
|
+
# Load CLIP.
|
|
53
|
+
clip_tokenizer_info = context.models.load(self.clip.tokenizer)
|
|
54
|
+
clip_text_encoder_info = context.models.load(self.clip.text_encoder)
|
|
55
|
+
|
|
56
|
+
# Load T5.
|
|
57
|
+
t5_tokenizer_info = context.models.load(self.t5_encoder.tokenizer)
|
|
58
|
+
t5_text_encoder_info = context.models.load(self.t5_encoder.text_encoder)
|
|
59
|
+
|
|
60
|
+
prompt = [self.prompt]
|
|
61
|
+
|
|
62
|
+
with (
|
|
63
|
+
t5_text_encoder_info as t5_text_encoder,
|
|
64
|
+
t5_tokenizer_info as t5_tokenizer,
|
|
65
|
+
):
|
|
66
|
+
assert isinstance(t5_text_encoder, T5EncoderModel)
|
|
67
|
+
assert isinstance(t5_tokenizer, T5Tokenizer)
|
|
68
|
+
|
|
69
|
+
t5_encoder = HFEncoder(t5_text_encoder, t5_tokenizer, False, self.t5_max_seq_len)
|
|
70
|
+
|
|
71
|
+
prompt_embeds = t5_encoder(prompt)
|
|
72
|
+
|
|
73
|
+
with (
|
|
74
|
+
clip_text_encoder_info as clip_text_encoder,
|
|
75
|
+
clip_tokenizer_info as clip_tokenizer,
|
|
76
|
+
):
|
|
77
|
+
assert isinstance(clip_text_encoder, CLIPTextModel)
|
|
78
|
+
assert isinstance(clip_tokenizer, CLIPTokenizer)
|
|
79
|
+
|
|
80
|
+
clip_encoder = HFEncoder(clip_text_encoder, clip_tokenizer, True, 77)
|
|
81
|
+
|
|
82
|
+
pooled_prompt_embeds = clip_encoder(prompt)
|
|
83
|
+
|
|
84
|
+
assert isinstance(prompt_embeds, torch.Tensor)
|
|
85
|
+
assert isinstance(pooled_prompt_embeds, torch.Tensor)
|
|
86
|
+
return prompt_embeds, pooled_prompt_embeds
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
import torch
|
|
2
|
+
from einops import rearrange
|
|
3
|
+
from PIL import Image
|
|
4
|
+
|
|
5
|
+
from invokeai.app.invocations.baseinvocation import BaseInvocation, Classification, invocation
|
|
6
|
+
from invokeai.app.invocations.fields import (
|
|
7
|
+
FieldDescriptions,
|
|
8
|
+
FluxConditioningField,
|
|
9
|
+
Input,
|
|
10
|
+
InputField,
|
|
11
|
+
WithBoard,
|
|
12
|
+
WithMetadata,
|
|
13
|
+
)
|
|
14
|
+
from invokeai.app.invocations.model import TransformerField, VAEField
|
|
15
|
+
from invokeai.app.invocations.primitives import ImageOutput
|
|
16
|
+
from invokeai.app.services.session_processor.session_processor_common import CanceledException
|
|
17
|
+
from invokeai.app.services.shared.invocation_context import InvocationContext
|
|
18
|
+
from invokeai.backend.flux.model import Flux
|
|
19
|
+
from invokeai.backend.flux.modules.autoencoder import AutoEncoder
|
|
20
|
+
from invokeai.backend.flux.sampling import denoise, get_noise, get_schedule, prepare_latent_img_patches, unpack
|
|
21
|
+
from invokeai.backend.stable_diffusion.diffusion.conditioning_data import FLUXConditioningInfo
|
|
22
|
+
from invokeai.backend.util.devices import TorchDevice
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
@invocation(
|
|
26
|
+
"flux_text_to_image",
|
|
27
|
+
title="FLUX Text to Image",
|
|
28
|
+
tags=["image", "flux"],
|
|
29
|
+
category="image",
|
|
30
|
+
version="1.0.0",
|
|
31
|
+
classification=Classification.Prototype,
|
|
32
|
+
)
|
|
33
|
+
class FluxTextToImageInvocation(BaseInvocation, WithMetadata, WithBoard):
|
|
34
|
+
"""Text-to-image generation using a FLUX model."""
|
|
35
|
+
|
|
36
|
+
transformer: TransformerField = InputField(
|
|
37
|
+
description=FieldDescriptions.flux_model,
|
|
38
|
+
input=Input.Connection,
|
|
39
|
+
title="Transformer",
|
|
40
|
+
)
|
|
41
|
+
vae: VAEField = InputField(
|
|
42
|
+
description=FieldDescriptions.vae,
|
|
43
|
+
input=Input.Connection,
|
|
44
|
+
)
|
|
45
|
+
positive_text_conditioning: FluxConditioningField = InputField(
|
|
46
|
+
description=FieldDescriptions.positive_cond, input=Input.Connection
|
|
47
|
+
)
|
|
48
|
+
width: int = InputField(default=1024, multiple_of=16, description="Width of the generated image.")
|
|
49
|
+
height: int = InputField(default=1024, multiple_of=16, description="Height of the generated image.")
|
|
50
|
+
num_steps: int = InputField(
|
|
51
|
+
default=4, description="Number of diffusion steps. Recommend values are schnell: 4, dev: 50."
|
|
52
|
+
)
|
|
53
|
+
guidance: float = InputField(
|
|
54
|
+
default=4.0,
|
|
55
|
+
description="The guidance strength. Higher values adhere more strictly to the prompt, and will produce less diverse images. FLUX dev only, ignored for schnell.",
|
|
56
|
+
)
|
|
57
|
+
seed: int = InputField(default=0, description="Randomness seed for reproducibility.")
|
|
58
|
+
|
|
59
|
+
@torch.no_grad()
|
|
60
|
+
def invoke(self, context: InvocationContext) -> ImageOutput:
|
|
61
|
+
# Load the conditioning data.
|
|
62
|
+
cond_data = context.conditioning.load(self.positive_text_conditioning.conditioning_name)
|
|
63
|
+
assert len(cond_data.conditionings) == 1
|
|
64
|
+
flux_conditioning = cond_data.conditionings[0]
|
|
65
|
+
assert isinstance(flux_conditioning, FLUXConditioningInfo)
|
|
66
|
+
|
|
67
|
+
latents = self._run_diffusion(context, flux_conditioning.clip_embeds, flux_conditioning.t5_embeds)
|
|
68
|
+
image = self._run_vae_decoding(context, latents)
|
|
69
|
+
image_dto = context.images.save(image=image)
|
|
70
|
+
return ImageOutput.build(image_dto)
|
|
71
|
+
|
|
72
|
+
def _run_diffusion(
|
|
73
|
+
self,
|
|
74
|
+
context: InvocationContext,
|
|
75
|
+
clip_embeddings: torch.Tensor,
|
|
76
|
+
t5_embeddings: torch.Tensor,
|
|
77
|
+
):
|
|
78
|
+
transformer_info = context.models.load(self.transformer.transformer)
|
|
79
|
+
inference_dtype = torch.bfloat16
|
|
80
|
+
|
|
81
|
+
# Prepare input noise.
|
|
82
|
+
x = get_noise(
|
|
83
|
+
num_samples=1,
|
|
84
|
+
height=self.height,
|
|
85
|
+
width=self.width,
|
|
86
|
+
device=TorchDevice.choose_torch_device(),
|
|
87
|
+
dtype=inference_dtype,
|
|
88
|
+
seed=self.seed,
|
|
89
|
+
)
|
|
90
|
+
|
|
91
|
+
img, img_ids = prepare_latent_img_patches(x)
|
|
92
|
+
|
|
93
|
+
is_schnell = "schnell" in transformer_info.config.config_path
|
|
94
|
+
|
|
95
|
+
timesteps = get_schedule(
|
|
96
|
+
num_steps=self.num_steps,
|
|
97
|
+
image_seq_len=img.shape[1],
|
|
98
|
+
shift=not is_schnell,
|
|
99
|
+
)
|
|
100
|
+
|
|
101
|
+
bs, t5_seq_len, _ = t5_embeddings.shape
|
|
102
|
+
txt_ids = torch.zeros(bs, t5_seq_len, 3, dtype=inference_dtype, device=TorchDevice.choose_torch_device())
|
|
103
|
+
|
|
104
|
+
# HACK(ryand): Manually empty the cache. Currently we don't check the size of the model before loading it from
|
|
105
|
+
# disk. Since the transformer model is large (24GB), there's a good chance that it will OOM on 32GB RAM systems
|
|
106
|
+
# if the cache is not empty.
|
|
107
|
+
context.models._services.model_manager.load.ram_cache.make_room(24 * 2**30)
|
|
108
|
+
|
|
109
|
+
with transformer_info as transformer:
|
|
110
|
+
assert isinstance(transformer, Flux)
|
|
111
|
+
|
|
112
|
+
def step_callback() -> None:
|
|
113
|
+
if context.util.is_canceled():
|
|
114
|
+
raise CanceledException
|
|
115
|
+
|
|
116
|
+
# TODO: Make this look like the image before re-enabling
|
|
117
|
+
# latent_image = unpack(img.float(), self.height, self.width)
|
|
118
|
+
# latent_image = latent_image.squeeze() # Remove unnecessary dimensions
|
|
119
|
+
# flattened_tensor = latent_image.reshape(-1) # Flatten to shape [48*128*128]
|
|
120
|
+
|
|
121
|
+
# # Create a new tensor of the required shape [255, 255, 3]
|
|
122
|
+
# latent_image = flattened_tensor[: 255 * 255 * 3].reshape(255, 255, 3) # Reshape to RGB format
|
|
123
|
+
|
|
124
|
+
# # Convert to a NumPy array and then to a PIL Image
|
|
125
|
+
# image = Image.fromarray(latent_image.cpu().numpy().astype(np.uint8))
|
|
126
|
+
|
|
127
|
+
# (width, height) = image.size
|
|
128
|
+
# width *= 8
|
|
129
|
+
# height *= 8
|
|
130
|
+
|
|
131
|
+
# dataURL = image_to_dataURL(image, image_format="JPEG")
|
|
132
|
+
|
|
133
|
+
# # TODO: move this whole function to invocation context to properly reference these variables
|
|
134
|
+
# context._services.events.emit_invocation_denoise_progress(
|
|
135
|
+
# context._data.queue_item,
|
|
136
|
+
# context._data.invocation,
|
|
137
|
+
# state,
|
|
138
|
+
# ProgressImage(dataURL=dataURL, width=width, height=height),
|
|
139
|
+
# )
|
|
140
|
+
|
|
141
|
+
x = denoise(
|
|
142
|
+
model=transformer,
|
|
143
|
+
img=img,
|
|
144
|
+
img_ids=img_ids,
|
|
145
|
+
txt=t5_embeddings,
|
|
146
|
+
txt_ids=txt_ids,
|
|
147
|
+
vec=clip_embeddings,
|
|
148
|
+
timesteps=timesteps,
|
|
149
|
+
step_callback=step_callback,
|
|
150
|
+
guidance=self.guidance,
|
|
151
|
+
)
|
|
152
|
+
|
|
153
|
+
x = unpack(x.float(), self.height, self.width)
|
|
154
|
+
|
|
155
|
+
return x
|
|
156
|
+
|
|
157
|
+
def _run_vae_decoding(
|
|
158
|
+
self,
|
|
159
|
+
context: InvocationContext,
|
|
160
|
+
latents: torch.Tensor,
|
|
161
|
+
) -> Image.Image:
|
|
162
|
+
vae_info = context.models.load(self.vae.vae)
|
|
163
|
+
with vae_info as vae:
|
|
164
|
+
assert isinstance(vae, AutoEncoder)
|
|
165
|
+
latents = latents.to(dtype=TorchDevice.choose_torch_dtype())
|
|
166
|
+
img = vae.decode(latents)
|
|
167
|
+
|
|
168
|
+
img = img.clamp(-1, 1)
|
|
169
|
+
img = rearrange(img[0], "c h w -> h w c")
|
|
170
|
+
img_pil = Image.fromarray((127.5 * (img + 1.0)).byte().cpu().numpy())
|
|
171
|
+
|
|
172
|
+
return img_pil
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import copy
|
|
2
|
-
from typing import List, Optional
|
|
2
|
+
from typing import List, Literal, Optional
|
|
3
3
|
|
|
4
4
|
from pydantic import BaseModel, Field
|
|
5
5
|
|
|
@@ -13,7 +13,14 @@ from invokeai.app.invocations.baseinvocation import (
|
|
|
13
13
|
from invokeai.app.invocations.fields import FieldDescriptions, Input, InputField, OutputField, UIType
|
|
14
14
|
from invokeai.app.services.shared.invocation_context import InvocationContext
|
|
15
15
|
from invokeai.app.shared.models import FreeUConfig
|
|
16
|
-
from invokeai.backend.
|
|
16
|
+
from invokeai.backend.flux.util import max_seq_lengths
|
|
17
|
+
from invokeai.backend.model_manager.config import (
|
|
18
|
+
AnyModelConfig,
|
|
19
|
+
BaseModelType,
|
|
20
|
+
CheckpointConfigBase,
|
|
21
|
+
ModelType,
|
|
22
|
+
SubModelType,
|
|
23
|
+
)
|
|
17
24
|
|
|
18
25
|
|
|
19
26
|
class ModelIdentifierField(BaseModel):
|
|
@@ -60,6 +67,15 @@ class CLIPField(BaseModel):
|
|
|
60
67
|
loras: List[LoRAField] = Field(description="LoRAs to apply on model loading")
|
|
61
68
|
|
|
62
69
|
|
|
70
|
+
class TransformerField(BaseModel):
|
|
71
|
+
transformer: ModelIdentifierField = Field(description="Info to load Transformer submodel")
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
class T5EncoderField(BaseModel):
|
|
75
|
+
tokenizer: ModelIdentifierField = Field(description="Info to load tokenizer submodel")
|
|
76
|
+
text_encoder: ModelIdentifierField = Field(description="Info to load text_encoder submodel")
|
|
77
|
+
|
|
78
|
+
|
|
63
79
|
class VAEField(BaseModel):
|
|
64
80
|
vae: ModelIdentifierField = Field(description="Info to load vae submodel")
|
|
65
81
|
seamless_axes: List[str] = Field(default_factory=list, description='Axes("x" and "y") to which apply seamless')
|
|
@@ -122,6 +138,112 @@ class ModelIdentifierInvocation(BaseInvocation):
|
|
|
122
138
|
return ModelIdentifierOutput(model=self.model)
|
|
123
139
|
|
|
124
140
|
|
|
141
|
+
@invocation_output("flux_model_loader_output")
|
|
142
|
+
class FluxModelLoaderOutput(BaseInvocationOutput):
|
|
143
|
+
"""Flux base model loader output"""
|
|
144
|
+
|
|
145
|
+
transformer: TransformerField = OutputField(description=FieldDescriptions.transformer, title="Transformer")
|
|
146
|
+
clip: CLIPField = OutputField(description=FieldDescriptions.clip, title="CLIP")
|
|
147
|
+
t5_encoder: T5EncoderField = OutputField(description=FieldDescriptions.t5_encoder, title="T5 Encoder")
|
|
148
|
+
vae: VAEField = OutputField(description=FieldDescriptions.vae, title="VAE")
|
|
149
|
+
max_seq_len: Literal[256, 512] = OutputField(
|
|
150
|
+
description="The max sequence length to used for the T5 encoder. (256 for schnell transformer, 512 for dev transformer)",
|
|
151
|
+
title="Max Seq Length",
|
|
152
|
+
)
|
|
153
|
+
|
|
154
|
+
|
|
155
|
+
@invocation(
|
|
156
|
+
"flux_model_loader",
|
|
157
|
+
title="Flux Main Model",
|
|
158
|
+
tags=["model", "flux"],
|
|
159
|
+
category="model",
|
|
160
|
+
version="1.0.3",
|
|
161
|
+
classification=Classification.Prototype,
|
|
162
|
+
)
|
|
163
|
+
class FluxModelLoaderInvocation(BaseInvocation):
|
|
164
|
+
"""Loads a flux base model, outputting its submodels."""
|
|
165
|
+
|
|
166
|
+
model: ModelIdentifierField = InputField(
|
|
167
|
+
description=FieldDescriptions.flux_model,
|
|
168
|
+
ui_type=UIType.FluxMainModel,
|
|
169
|
+
input=Input.Direct,
|
|
170
|
+
)
|
|
171
|
+
|
|
172
|
+
t5_encoder: ModelIdentifierField = InputField(
|
|
173
|
+
description=FieldDescriptions.t5_encoder,
|
|
174
|
+
ui_type=UIType.T5EncoderModel,
|
|
175
|
+
input=Input.Direct,
|
|
176
|
+
)
|
|
177
|
+
|
|
178
|
+
def invoke(self, context: InvocationContext) -> FluxModelLoaderOutput:
|
|
179
|
+
model_key = self.model.key
|
|
180
|
+
|
|
181
|
+
if not context.models.exists(model_key):
|
|
182
|
+
raise ValueError(f"Unknown model: {model_key}")
|
|
183
|
+
transformer = self._get_model(context, SubModelType.Transformer)
|
|
184
|
+
tokenizer = self._get_model(context, SubModelType.Tokenizer)
|
|
185
|
+
tokenizer2 = self._get_model(context, SubModelType.Tokenizer2)
|
|
186
|
+
clip_encoder = self._get_model(context, SubModelType.TextEncoder)
|
|
187
|
+
t5_encoder = self._get_model(context, SubModelType.TextEncoder2)
|
|
188
|
+
vae = self._get_model(context, SubModelType.VAE)
|
|
189
|
+
transformer_config = context.models.get_config(transformer)
|
|
190
|
+
assert isinstance(transformer_config, CheckpointConfigBase)
|
|
191
|
+
|
|
192
|
+
return FluxModelLoaderOutput(
|
|
193
|
+
transformer=TransformerField(transformer=transformer),
|
|
194
|
+
clip=CLIPField(tokenizer=tokenizer, text_encoder=clip_encoder, loras=[], skipped_layers=0),
|
|
195
|
+
t5_encoder=T5EncoderField(tokenizer=tokenizer2, text_encoder=t5_encoder),
|
|
196
|
+
vae=VAEField(vae=vae),
|
|
197
|
+
max_seq_len=max_seq_lengths[transformer_config.config_path],
|
|
198
|
+
)
|
|
199
|
+
|
|
200
|
+
def _get_model(self, context: InvocationContext, submodel: SubModelType) -> ModelIdentifierField:
|
|
201
|
+
match submodel:
|
|
202
|
+
case SubModelType.Transformer:
|
|
203
|
+
return self.model.model_copy(update={"submodel_type": SubModelType.Transformer})
|
|
204
|
+
case SubModelType.VAE:
|
|
205
|
+
return self._pull_model_from_mm(
|
|
206
|
+
context,
|
|
207
|
+
SubModelType.VAE,
|
|
208
|
+
"FLUX.1-schnell_ae",
|
|
209
|
+
ModelType.VAE,
|
|
210
|
+
BaseModelType.Flux,
|
|
211
|
+
)
|
|
212
|
+
case submodel if submodel in [SubModelType.Tokenizer, SubModelType.TextEncoder]:
|
|
213
|
+
return self._pull_model_from_mm(
|
|
214
|
+
context,
|
|
215
|
+
submodel,
|
|
216
|
+
"clip-vit-large-patch14",
|
|
217
|
+
ModelType.CLIPEmbed,
|
|
218
|
+
BaseModelType.Any,
|
|
219
|
+
)
|
|
220
|
+
case submodel if submodel in [SubModelType.Tokenizer2, SubModelType.TextEncoder2]:
|
|
221
|
+
return self._pull_model_from_mm(
|
|
222
|
+
context,
|
|
223
|
+
submodel,
|
|
224
|
+
self.t5_encoder.name,
|
|
225
|
+
ModelType.T5Encoder,
|
|
226
|
+
BaseModelType.Any,
|
|
227
|
+
)
|
|
228
|
+
case _:
|
|
229
|
+
raise Exception(f"{submodel.value} is not a supported submodule for a flux model")
|
|
230
|
+
|
|
231
|
+
def _pull_model_from_mm(
|
|
232
|
+
self,
|
|
233
|
+
context: InvocationContext,
|
|
234
|
+
submodel: SubModelType,
|
|
235
|
+
name: str,
|
|
236
|
+
type: ModelType,
|
|
237
|
+
base: BaseModelType,
|
|
238
|
+
):
|
|
239
|
+
if models := context.models.search_by_attrs(name=name, base=base, type=type):
|
|
240
|
+
if len(models) != 1:
|
|
241
|
+
raise Exception(f"Multiple models detected for selected model with name {name}")
|
|
242
|
+
return ModelIdentifierField.from_config(models[0]).model_copy(update={"submodel_type": submodel})
|
|
243
|
+
else:
|
|
244
|
+
raise ValueError(f"Please install the {base}:{type} model named {name} via starter models")
|
|
245
|
+
|
|
246
|
+
|
|
125
247
|
@invocation(
|
|
126
248
|
"main_model_loader",
|
|
127
249
|
title="Main Model",
|