InvokeAI 5.4.0__tar.gz → 5.4.1__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.
Files changed (617) hide show
  1. {invokeai-5.4.0 → invokeai-5.4.1}/InvokeAI.egg-info/PKG-INFO +1 -1
  2. {invokeai-5.4.0 → invokeai-5.4.1}/InvokeAI.egg-info/SOURCES.txt +10 -3
  3. {invokeai-5.4.0 → invokeai-5.4.1}/PKG-INFO +1 -1
  4. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/api/routers/app_info.py +2 -0
  5. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/invocations/compel.py +2 -0
  6. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/invocations/create_denoise_mask.py +1 -0
  7. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/invocations/create_gradient_mask.py +1 -0
  8. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/invocations/flux_denoise.py +8 -4
  9. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/invocations/flux_text_encoder.py +2 -0
  10. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/invocations/flux_vae_decode.py +3 -1
  11. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/invocations/flux_vae_encode.py +3 -3
  12. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/invocations/image_to_latents.py +1 -0
  13. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/invocations/latents_to_image.py +1 -0
  14. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/invocations/metadata.py +4 -0
  15. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/invocations/sd3_denoise.py +102 -24
  16. invokeai-5.4.1/invokeai/app/invocations/sd3_image_to_latents.py +65 -0
  17. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/invocations/sd3_latents_to_image.py +1 -0
  18. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/invocations/sd3_text_encoder.py +2 -0
  19. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/shared/invocation_context.py +28 -5
  20. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/lora/conversions/flux_diffusers_lora_conversion_utils.py +41 -18
  21. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/model_manager/config.py +2 -0
  22. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/model_manager/load/load_default.py +1 -0
  23. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/model_manager/load/model_loaders/flux.py +9 -1
  24. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/model_manager/starter_models.py +1 -1
  25. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/model_manager/util/model_util.py +19 -14
  26. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/model_manager/util/select_hf_files.py +7 -0
  27. invokeai-5.4.1/invokeai/backend/sd3/extensions/inpaint_extension.py +58 -0
  28. invokeai-5.4.1/invokeai/backend/tiles/__init__.py +0 -0
  29. invokeai-5.4.1/invokeai/frontend/cli/__init__.py +0 -0
  30. invokeai-5.4.1/invokeai/frontend/web/dist/assets/App-B0FpUdCl.js +136 -0
  31. invokeai-5.4.1/invokeai/frontend/web/dist/assets/ThemeLocaleProvider-_06ioAWc.js +1 -0
  32. invokeai-5.4.1/invokeai/frontend/web/dist/assets/denoising-strength-4mznP2tj.png +0 -0
  33. invokeai-5.4.1/invokeai/frontend/web/dist/assets/images/denoising-strength.png +0 -0
  34. invokeai-5.4.1/invokeai/frontend/web/dist/assets/index-DOkD_T-j.js +497 -0
  35. invokeai-5.4.1/invokeai/frontend/web/dist/assets/useTranslation-ijkhTtpL.js +1 -0
  36. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/frontend/web/dist/index.html +1 -1
  37. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/frontend/web/dist/locales/de.json +36 -4
  38. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/frontend/web/dist/locales/en.json +25 -11
  39. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/frontend/web/dist/locales/es.json +12 -7
  40. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/frontend/web/dist/locales/it.json +38 -15
  41. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/frontend/web/dist/locales/ja.json +275 -16
  42. invokeai-5.4.1/invokeai/frontend/web/dist/locales/vi.json +2141 -0
  43. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/frontend/web/dist/locales/zh_CN.json +156 -11
  44. invokeai-5.4.1/invokeai/version/invokeai_version.py +1 -0
  45. {invokeai-5.4.0 → invokeai-5.4.1}/tests/test_nodes.py +12 -0
  46. invokeai-5.4.0/invokeai/frontend/web/dist/assets/App-Cgdz1lBg.js +0 -122
  47. invokeai-5.4.0/invokeai/frontend/web/dist/assets/ThemeLocaleProvider-QXscVpCV.js +0 -1
  48. invokeai-5.4.0/invokeai/frontend/web/dist/assets/index-DT5PJ9-6.js +0 -510
  49. invokeai-5.4.0/invokeai/frontend/web/dist/locales/vi.json +0 -1
  50. invokeai-5.4.0/invokeai/version/invokeai_version.py +0 -1
  51. {invokeai-5.4.0 → invokeai-5.4.1}/InvokeAI.egg-info/dependency_links.txt +0 -0
  52. {invokeai-5.4.0 → invokeai-5.4.1}/InvokeAI.egg-info/entry_points.txt +0 -0
  53. {invokeai-5.4.0 → invokeai-5.4.1}/InvokeAI.egg-info/requires.txt +0 -0
  54. {invokeai-5.4.0 → invokeai-5.4.1}/InvokeAI.egg-info/top_level.txt +0 -0
  55. {invokeai-5.4.0 → invokeai-5.4.1}/LICENSE +0 -0
  56. {invokeai-5.4.0 → invokeai-5.4.1}/LICENSE-SD1+SD2.txt +0 -0
  57. {invokeai-5.4.0 → invokeai-5.4.1}/LICENSE-SDXL.txt +0 -0
  58. {invokeai-5.4.0 → invokeai-5.4.1}/README.md +0 -0
  59. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/__init__.py +0 -0
  60. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/api/dependencies.py +0 -0
  61. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/api/no_cache_staticfiles.py +0 -0
  62. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/api/routers/board_images.py +0 -0
  63. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/api/routers/boards.py +0 -0
  64. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/api/routers/download_queue.py +0 -0
  65. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/api/routers/images.py +0 -0
  66. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/api/routers/model_manager.py +0 -0
  67. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/api/routers/session_queue.py +0 -0
  68. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/api/routers/style_presets.py +0 -0
  69. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/api/routers/utilities.py +0 -0
  70. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/api/routers/workflows.py +0 -0
  71. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/api/sockets.py +0 -0
  72. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/api_app.py +0 -0
  73. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/assets/images/caution.png +0 -0
  74. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/invocations/__init__.py +0 -0
  75. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/invocations/baseinvocation.py +0 -0
  76. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/invocations/blend_latents.py +0 -0
  77. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/invocations/canny.py +0 -0
  78. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/invocations/collections.py +0 -0
  79. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/invocations/color_map.py +0 -0
  80. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/invocations/constants.py +0 -0
  81. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/invocations/content_shuffle.py +0 -0
  82. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/invocations/controlnet_image_processors.py +0 -0
  83. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/invocations/crop_latents.py +0 -0
  84. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/invocations/custom_nodes/README.md +0 -0
  85. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/invocations/custom_nodes/init.py +0 -0
  86. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/invocations/cv.py +0 -0
  87. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/invocations/denoise_latents.py +0 -0
  88. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/invocations/depth_anything.py +0 -0
  89. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/invocations/dw_openpose.py +0 -0
  90. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/invocations/facetools.py +0 -0
  91. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/invocations/fields.py +0 -0
  92. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/invocations/flux_controlnet.py +0 -0
  93. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/invocations/flux_ip_adapter.py +0 -0
  94. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/invocations/flux_lora_loader.py +0 -0
  95. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/invocations/flux_model_loader.py +0 -0
  96. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/invocations/grounding_dino.py +0 -0
  97. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/invocations/hed.py +0 -0
  98. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/invocations/ideal_size.py +0 -0
  99. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/invocations/image.py +0 -0
  100. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/invocations/infill.py +0 -0
  101. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/invocations/ip_adapter.py +0 -0
  102. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/invocations/lineart.py +0 -0
  103. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/invocations/lineart_anime.py +0 -0
  104. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/invocations/mask.py +0 -0
  105. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/invocations/math.py +0 -0
  106. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/invocations/mediapipe_face.py +0 -0
  107. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/invocations/mlsd.py +0 -0
  108. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/invocations/model.py +0 -0
  109. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/invocations/noise.py +0 -0
  110. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/invocations/normal_bae.py +0 -0
  111. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/invocations/param_easing.py +0 -0
  112. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/invocations/pidi.py +0 -0
  113. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/invocations/primitives.py +0 -0
  114. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/invocations/prompt.py +0 -0
  115. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/invocations/resize_latents.py +0 -0
  116. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/invocations/scheduler.py +0 -0
  117. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/invocations/sd3_model_loader.py +0 -0
  118. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/invocations/sdxl.py +0 -0
  119. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/invocations/segment_anything.py +0 -0
  120. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/invocations/spandrel_image_to_image.py +0 -0
  121. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/invocations/strings.py +0 -0
  122. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/invocations/t2i_adapter.py +0 -0
  123. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/invocations/tiled_multi_diffusion_denoise_latents.py +0 -0
  124. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/invocations/tiles.py +0 -0
  125. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/invocations/upscale.py +0 -0
  126. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/invocations/util.py +0 -0
  127. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/run_app.py +0 -0
  128. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/__init__.py +0 -0
  129. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/board_image_records/__init__.py +0 -0
  130. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/board_image_records/board_image_records_base.py +0 -0
  131. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/board_image_records/board_image_records_sqlite.py +0 -0
  132. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/board_images/__init__.py +0 -0
  133. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/board_images/board_images_base.py +0 -0
  134. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/board_images/board_images_common.py +0 -0
  135. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/board_images/board_images_default.py +0 -0
  136. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/board_records/board_records_base.py +0 -0
  137. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/board_records/board_records_common.py +0 -0
  138. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/board_records/board_records_sqlite.py +0 -0
  139. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/boards/__init__.py +0 -0
  140. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/boards/boards_base.py +0 -0
  141. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/boards/boards_common.py +0 -0
  142. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/boards/boards_default.py +0 -0
  143. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/bulk_download/__init__.py +0 -0
  144. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/bulk_download/bulk_download_base.py +0 -0
  145. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/bulk_download/bulk_download_common.py +0 -0
  146. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/bulk_download/bulk_download_default.py +0 -0
  147. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/config/__init__.py +0 -0
  148. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/config/config_common.py +0 -0
  149. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/config/config_default.py +0 -0
  150. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/download/__init__.py +0 -0
  151. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/download/download_base.py +0 -0
  152. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/download/download_default.py +0 -0
  153. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/events/__init__.py +0 -0
  154. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/events/events_base.py +0 -0
  155. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/events/events_common.py +0 -0
  156. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/events/events_fastapievents.py +0 -0
  157. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/image_files/__init__.py +0 -0
  158. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/image_files/image_files_base.py +0 -0
  159. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/image_files/image_files_common.py +0 -0
  160. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/image_files/image_files_disk.py +0 -0
  161. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/image_records/__init__.py +0 -0
  162. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/image_records/image_records_base.py +0 -0
  163. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/image_records/image_records_common.py +0 -0
  164. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/image_records/image_records_sqlite.py +0 -0
  165. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/images/__init__.py +0 -0
  166. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/images/images_base.py +0 -0
  167. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/images/images_common.py +0 -0
  168. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/images/images_default.py +0 -0
  169. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/invocation_cache/__init__.py +0 -0
  170. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/invocation_cache/invocation_cache_base.py +0 -0
  171. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/invocation_cache/invocation_cache_common.py +0 -0
  172. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/invocation_cache/invocation_cache_memory.py +0 -0
  173. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/invocation_services.py +0 -0
  174. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/invocation_stats/__init__.py +0 -0
  175. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/invocation_stats/invocation_stats_base.py +0 -0
  176. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/invocation_stats/invocation_stats_common.py +0 -0
  177. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/invocation_stats/invocation_stats_default.py +0 -0
  178. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/invoker.py +0 -0
  179. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/item_storage/__init__.py +0 -0
  180. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/item_storage/item_storage_base.py +0 -0
  181. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/item_storage/item_storage_common.py +0 -0
  182. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/item_storage/item_storage_memory.py +0 -0
  183. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/model_images/model_images_base.py +0 -0
  184. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/model_images/model_images_common.py +0 -0
  185. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/model_images/model_images_default.py +0 -0
  186. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/model_install/__init__.py +0 -0
  187. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/model_install/model_install_base.py +0 -0
  188. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/model_install/model_install_common.py +0 -0
  189. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/model_install/model_install_default.py +0 -0
  190. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/model_load/__init__.py +0 -0
  191. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/model_load/model_load_base.py +0 -0
  192. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/model_load/model_load_default.py +0 -0
  193. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/model_manager/__init__.py +0 -0
  194. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/model_manager/model_manager_base.py +0 -0
  195. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/model_manager/model_manager_common.py +0 -0
  196. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/model_manager/model_manager_default.py +0 -0
  197. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/model_records/__init__.py +0 -0
  198. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/model_records/model_records_base.py +0 -0
  199. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/model_records/model_records_sql.py +0 -0
  200. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/names/__init__.py +0 -0
  201. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/names/names_base.py +0 -0
  202. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/names/names_common.py +0 -0
  203. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/names/names_default.py +0 -0
  204. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/object_serializer/object_serializer_base.py +0 -0
  205. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/object_serializer/object_serializer_common.py +0 -0
  206. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/object_serializer/object_serializer_disk.py +0 -0
  207. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/object_serializer/object_serializer_forward_cache.py +0 -0
  208. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/session_processor/__init__.py +0 -0
  209. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/session_processor/session_processor_base.py +0 -0
  210. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/session_processor/session_processor_common.py +0 -0
  211. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/session_processor/session_processor_default.py +0 -0
  212. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/session_queue/__init__.py +0 -0
  213. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/session_queue/session_queue_base.py +0 -0
  214. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/session_queue/session_queue_common.py +0 -0
  215. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/session_queue/session_queue_sqlite.py +0 -0
  216. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/shared/__init__.py +0 -0
  217. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/shared/graph.py +0 -0
  218. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/shared/pagination.py +0 -0
  219. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/shared/sqlite/__init__.py +0 -0
  220. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/shared/sqlite/sqlite_common.py +0 -0
  221. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/shared/sqlite/sqlite_database.py +0 -0
  222. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/shared/sqlite/sqlite_util.py +0 -0
  223. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/shared/sqlite_migrator/__init__.py +0 -0
  224. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/shared/sqlite_migrator/migrations/__init__.py +0 -0
  225. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_1.py +0 -0
  226. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_10.py +0 -0
  227. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_11.py +0 -0
  228. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_12.py +0 -0
  229. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_13.py +0 -0
  230. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_14.py +0 -0
  231. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_15.py +0 -0
  232. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_2.py +0 -0
  233. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_3.py +0 -0
  234. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_4.py +0 -0
  235. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_5.py +0 -0
  236. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_6.py +0 -0
  237. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_7.py +0 -0
  238. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_8.py +0 -0
  239. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_9.py +0 -0
  240. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/shared/sqlite_migrator/sqlite_migrator_common.py +0 -0
  241. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/shared/sqlite_migrator/sqlite_migrator_impl.py +0 -0
  242. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/style_preset_images/default_style_preset_images/Anime.png +0 -0
  243. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/style_preset_images/default_style_preset_images/Architectural Visualization.png +0 -0
  244. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/style_preset_images/default_style_preset_images/Concept Art (Character).png +0 -0
  245. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/style_preset_images/default_style_preset_images/Concept Art (Fantasy).png +0 -0
  246. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/style_preset_images/default_style_preset_images/Concept Art (Painterly).png +0 -0
  247. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/style_preset_images/default_style_preset_images/Concept Art (Sci-Fi).png +0 -0
  248. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/style_preset_images/default_style_preset_images/Environment Art.png +0 -0
  249. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/style_preset_images/default_style_preset_images/Illustration.png +0 -0
  250. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/style_preset_images/default_style_preset_images/Interior Design (Visualization).png +0 -0
  251. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/style_preset_images/default_style_preset_images/Line Art.png +0 -0
  252. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/style_preset_images/default_style_preset_images/Photography (Black and White).png +0 -0
  253. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/style_preset_images/default_style_preset_images/Photography (General).png +0 -0
  254. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/style_preset_images/default_style_preset_images/Photography (Landscape).png +0 -0
  255. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/style_preset_images/default_style_preset_images/Photography (Portrait).png +0 -0
  256. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/style_preset_images/default_style_preset_images/Photography (Studio Lighting).png +0 -0
  257. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/style_preset_images/default_style_preset_images/Product Rendering.png +0 -0
  258. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/style_preset_images/default_style_preset_images/Sketch.png +0 -0
  259. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/style_preset_images/default_style_preset_images/Vehicles.png +0 -0
  260. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/style_preset_images/default_style_preset_images/__init__.py +0 -0
  261. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/style_preset_images/style_preset_images_base.py +0 -0
  262. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/style_preset_images/style_preset_images_common.py +0 -0
  263. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/style_preset_images/style_preset_images_disk.py +0 -0
  264. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/style_preset_records/__init__.py +0 -0
  265. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/style_preset_records/default_style_presets.json +0 -0
  266. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/style_preset_records/style_preset_records_base.py +0 -0
  267. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/style_preset_records/style_preset_records_common.py +0 -0
  268. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/style_preset_records/style_preset_records_sqlite.py +0 -0
  269. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/urls/__init__.py +0 -0
  270. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/urls/urls_base.py +0 -0
  271. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/urls/urls_default.py +0 -0
  272. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/workflow_records/__init__.py +0 -0
  273. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/workflow_records/default_workflows/ESRGAN Upscaling with Canny ControlNet.json +0 -0
  274. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/workflow_records/default_workflows/FLUX Image to Image.json +0 -0
  275. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/workflow_records/default_workflows/Face Detailer with IP-Adapter & Canny (See Note in Details).json +0 -0
  276. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/workflow_records/default_workflows/Flux Text to Image.json +0 -0
  277. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/workflow_records/default_workflows/Multi ControlNet (Canny & Depth).json +0 -0
  278. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/workflow_records/default_workflows/MultiDiffusion SD1.5.json +0 -0
  279. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/workflow_records/default_workflows/MultiDiffusion SDXL.json +0 -0
  280. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/workflow_records/default_workflows/Prompt from File.json +0 -0
  281. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/workflow_records/default_workflows/SD3.5 Text to Image.json +0 -0
  282. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/workflow_records/default_workflows/Text to Image - SD1.5.json +0 -0
  283. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/workflow_records/default_workflows/Text to Image - SDXL.json +0 -0
  284. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/workflow_records/default_workflows/Text to Image with LoRA.json +0 -0
  285. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/workflow_records/default_workflows/Tiled Upscaling (Beta).json +0 -0
  286. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/workflow_records/workflow_records_base.py +0 -0
  287. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/workflow_records/workflow_records_common.py +0 -0
  288. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/services/workflow_records/workflow_records_sqlite.py +0 -0
  289. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/shared/__init__.py +0 -0
  290. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/shared/models.py +0 -0
  291. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/util/__init__.py +0 -0
  292. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/util/controlnet_utils.py +0 -0
  293. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/util/custom_openapi.py +0 -0
  294. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/util/metaenum.py +0 -0
  295. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/util/misc.py +0 -0
  296. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/util/model_exclude_null.py +0 -0
  297. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/util/profiler.py +0 -0
  298. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/util/step_callback.py +0 -0
  299. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/util/suppress_output.py +0 -0
  300. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/util/thumbnails.py +0 -0
  301. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/app/util/ti_utils.py +0 -0
  302. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/assets/fonts/inter/Inter-Regular.ttf +0 -0
  303. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/__init__.py +0 -0
  304. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/flux/controlnet/__init__.py +0 -0
  305. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/flux/controlnet/controlnet_flux_output.py +0 -0
  306. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/flux/controlnet/instantx_controlnet_flux.py +0 -0
  307. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/flux/controlnet/state_dict_utils.py +0 -0
  308. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/flux/controlnet/xlabs_controlnet_flux.py +0 -0
  309. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/flux/controlnet/zero_module.py +0 -0
  310. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/flux/custom_block_processor.py +0 -0
  311. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/flux/denoise.py +0 -0
  312. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/flux/extensions/__init__.py +0 -0
  313. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/flux/extensions/base_controlnet_extension.py +0 -0
  314. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/flux/extensions/inpaint_extension.py +0 -0
  315. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/flux/extensions/instantx_controlnet_extension.py +0 -0
  316. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/flux/extensions/xlabs_controlnet_extension.py +0 -0
  317. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/flux/extensions/xlabs_ip_adapter_extension.py +0 -0
  318. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/flux/ip_adapter/__init__.py +0 -0
  319. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/flux/ip_adapter/ip_double_stream_block_processor.py +0 -0
  320. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/flux/ip_adapter/state_dict_utils.py +0 -0
  321. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/flux/ip_adapter/xlabs_ip_adapter_flux.py +0 -0
  322. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/flux/math.py +0 -0
  323. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/flux/model.py +0 -0
  324. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/flux/modules/autoencoder.py +0 -0
  325. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/flux/modules/conditioner.py +0 -0
  326. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/flux/modules/layers.py +0 -0
  327. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/flux/sampling_utils.py +0 -0
  328. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/flux/util.py +0 -0
  329. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/image_util/__init__.py +0 -0
  330. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/image_util/basicsr/__init__.py +0 -0
  331. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/image_util/basicsr/arch_util.py +0 -0
  332. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/image_util/basicsr/rrdbnet_arch.py +0 -0
  333. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/image_util/canny.py +0 -0
  334. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/image_util/content_shuffle.py +0 -0
  335. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/image_util/depth_anything/depth_anything_pipeline.py +0 -0
  336. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/image_util/dw_openpose/__init__.py +0 -0
  337. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/image_util/dw_openpose/onnxdet.py +0 -0
  338. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/image_util/dw_openpose/onnxpose.py +0 -0
  339. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/image_util/dw_openpose/utils.py +0 -0
  340. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/image_util/dw_openpose/wholebody.py +0 -0
  341. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/image_util/grounding_dino/__init__.py +0 -0
  342. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/image_util/grounding_dino/detection_result.py +0 -0
  343. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/image_util/grounding_dino/grounding_dino_pipeline.py +0 -0
  344. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/image_util/hed.py +0 -0
  345. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/image_util/infill_methods/cv2_inpaint.py +0 -0
  346. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/image_util/infill_methods/lama.py +0 -0
  347. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/image_util/infill_methods/mosaic.py +0 -0
  348. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/image_util/infill_methods/patchmatch.py +0 -0
  349. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/image_util/infill_methods/tile.py +0 -0
  350. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/image_util/invisible_watermark.py +0 -0
  351. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/image_util/lineart.py +0 -0
  352. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/image_util/lineart_anime.py +0 -0
  353. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/image_util/mediapipe_face/__init__.py +0 -0
  354. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/image_util/mediapipe_face/mediapipe_face_common.py +0 -0
  355. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/image_util/mlsd/__init__.py +0 -0
  356. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/image_util/mlsd/models/__init__.py +0 -0
  357. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/image_util/mlsd/models/mbv2_mlsd_large.py +0 -0
  358. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/image_util/mlsd/models/mbv2_mlsd_tiny.py +0 -0
  359. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/image_util/mlsd/utils.py +0 -0
  360. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/image_util/normal_bae/__init__.py +0 -0
  361. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/image_util/normal_bae/nets/NNET.py +0 -0
  362. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/image_util/normal_bae/nets/__init__.py +0 -0
  363. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/image_util/normal_bae/nets/baseline.py +0 -0
  364. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/image_util/normal_bae/nets/submodules/__init__.py +0 -0
  365. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/image_util/normal_bae/nets/submodules/decoder.py +0 -0
  366. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/__init__.py +0 -0
  367. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/caffe2_benchmark.py +0 -0
  368. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/caffe2_validate.py +0 -0
  369. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/geffnet/__init__.py +0 -0
  370. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/geffnet/activations/__init__.py +0 -0
  371. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/geffnet/activations/activations.py +0 -0
  372. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/geffnet/activations/activations_jit.py +0 -0
  373. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/geffnet/activations/activations_me.py +0 -0
  374. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/geffnet/config.py +0 -0
  375. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/geffnet/conv2d_layers.py +0 -0
  376. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/geffnet/efficientnet_builder.py +0 -0
  377. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/geffnet/gen_efficientnet.py +0 -0
  378. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/geffnet/helpers.py +0 -0
  379. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/geffnet/mobilenetv3.py +0 -0
  380. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/geffnet/model_factory.py +0 -0
  381. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/geffnet/version.py +0 -0
  382. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/hubconf.py +0 -0
  383. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/onnx_export.py +0 -0
  384. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/onnx_optimize.py +0 -0
  385. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/onnx_to_caffe.py +0 -0
  386. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/onnx_validate.py +0 -0
  387. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/setup.py +0 -0
  388. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/utils.py +0 -0
  389. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/validate.py +0 -0
  390. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/image_util/normal_bae/nets/submodules/encoder.py +0 -0
  391. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/image_util/normal_bae/nets/submodules/submodules.py +0 -0
  392. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/image_util/pidi/__init__.py +0 -0
  393. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/image_util/pidi/model.py +0 -0
  394. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/image_util/pngwriter.py +0 -0
  395. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/image_util/realesrgan/__init__.py +0 -0
  396. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/image_util/realesrgan/realesrgan.py +0 -0
  397. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/image_util/safety_checker.py +0 -0
  398. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/image_util/segment_anything/__init__.py +0 -0
  399. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/image_util/segment_anything/mask_refinement.py +0 -0
  400. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/image_util/segment_anything/segment_anything_pipeline.py +0 -0
  401. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/image_util/util.py +0 -0
  402. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/ip_adapter/__init__.py +0 -0
  403. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/ip_adapter/ip_adapter.py +0 -0
  404. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/ip_adapter/ip_attention_weights.py +0 -0
  405. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/ip_adapter/resampler.py +0 -0
  406. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/lora/__init__.py +0 -0
  407. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/lora/conversions/__init__.py +0 -0
  408. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/lora/conversions/flux_kohya_lora_conversion_utils.py +0 -0
  409. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/lora/conversions/flux_lora_constants.py +0 -0
  410. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/lora/conversions/sd_lora_conversion_utils.py +0 -0
  411. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/lora/conversions/sdxl_lora_conversion_utils.py +0 -0
  412. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/lora/layers/__init__.py +0 -0
  413. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/lora/layers/any_lora_layer.py +0 -0
  414. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/lora/layers/concatenated_lora_layer.py +0 -0
  415. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/lora/layers/full_layer.py +0 -0
  416. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/lora/layers/ia3_layer.py +0 -0
  417. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/lora/layers/loha_layer.py +0 -0
  418. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/lora/layers/lokr_layer.py +0 -0
  419. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/lora/layers/lora_layer.py +0 -0
  420. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/lora/layers/lora_layer_base.py +0 -0
  421. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/lora/layers/norm_layer.py +0 -0
  422. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/lora/layers/utils.py +0 -0
  423. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/lora/lora_model_raw.py +0 -0
  424. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/lora/lora_patcher.py +0 -0
  425. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/lora/sidecar_layers/__init__.py +0 -0
  426. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/lora/sidecar_layers/concatenated_lora/__init__.py +0 -0
  427. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/lora/sidecar_layers/concatenated_lora/concatenated_lora_linear_sidecar_layer.py +0 -0
  428. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/lora/sidecar_layers/lora/__init__.py +0 -0
  429. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/lora/sidecar_layers/lora/lora_linear_sidecar_layer.py +0 -0
  430. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/lora/sidecar_layers/lora_sidecar_layer.py +0 -0
  431. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/lora/sidecar_layers/lora_sidecar_module.py +0 -0
  432. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/model_hash/hash_validator.py +0 -0
  433. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/model_hash/model_hash.py +0 -0
  434. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/model_manager/__init__.py +0 -0
  435. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/model_manager/load/__init__.py +0 -0
  436. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/model_manager/load/load_base.py +0 -0
  437. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/model_manager/load/memory_snapshot.py +0 -0
  438. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/model_manager/load/model_cache/__init__.py +0 -0
  439. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/model_manager/load/model_cache/model_cache_base.py +0 -0
  440. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/model_manager/load/model_cache/model_cache_default.py +0 -0
  441. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/model_manager/load/model_cache/model_locker.py +0 -0
  442. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/model_manager/load/model_loader_registry.py +0 -0
  443. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/model_manager/load/model_loaders/__init__.py +0 -0
  444. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/model_manager/load/model_loaders/clip_vision.py +0 -0
  445. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/model_manager/load/model_loaders/controlnet.py +0 -0
  446. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/model_manager/load/model_loaders/generic_diffusers.py +0 -0
  447. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/model_manager/load/model_loaders/ip_adapter.py +0 -0
  448. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/model_manager/load/model_loaders/lora.py +0 -0
  449. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/model_manager/load/model_loaders/onnx.py +0 -0
  450. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/model_manager/load/model_loaders/spandrel_image_to_image.py +0 -0
  451. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/model_manager/load/model_loaders/stable_diffusion.py +0 -0
  452. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/model_manager/load/model_loaders/textual_inversion.py +0 -0
  453. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/model_manager/load/model_loaders/vae.py +0 -0
  454. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/model_manager/load/model_util.py +0 -0
  455. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/model_manager/load/optimizations.py +0 -0
  456. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/model_manager/merge.py +0 -0
  457. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/model_manager/metadata/__init__.py +0 -0
  458. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/model_manager/metadata/fetch/__init__.py +0 -0
  459. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/model_manager/metadata/fetch/fetch_base.py +0 -0
  460. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/model_manager/metadata/fetch/huggingface.py +0 -0
  461. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/model_manager/metadata/metadata_base.py +0 -0
  462. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/model_manager/probe.py +0 -0
  463. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/model_manager/search.py +0 -0
  464. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/model_manager/util/libc_util.py +0 -0
  465. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/model_patcher.py +0 -0
  466. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/onnx/onnx_runtime.py +0 -0
  467. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/quantization/__init__.py +0 -0
  468. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/quantization/bnb_llm_int8.py +0 -0
  469. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/quantization/bnb_nf4.py +0 -0
  470. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/quantization/gguf/ggml_tensor.py +0 -0
  471. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/quantization/gguf/loaders.py +0 -0
  472. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/quantization/gguf/utils.py +0 -0
  473. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/quantization/scripts/load_flux_model_bnb_llm_int8.py +0 -0
  474. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/quantization/scripts/load_flux_model_bnb_nf4.py +0 -0
  475. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/quantization/scripts/quantize_t5_xxl_bnb_llm_int8.py +0 -0
  476. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/raw_model.py +0 -0
  477. {invokeai-5.4.0/invokeai/backend/tiles → invokeai-5.4.1/invokeai/backend/sd3}/__init__.py +0 -0
  478. {invokeai-5.4.0/invokeai/frontend/cli → invokeai-5.4.1/invokeai/backend/sd3/extensions}/__init__.py +0 -0
  479. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/spandrel_image_to_image_model.py +0 -0
  480. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/stable_diffusion/__init__.py +0 -0
  481. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/stable_diffusion/denoise_context.py +0 -0
  482. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/stable_diffusion/diffusers_pipeline.py +0 -0
  483. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/stable_diffusion/diffusion/__init__.py +0 -0
  484. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/stable_diffusion/diffusion/conditioning_data.py +0 -0
  485. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/stable_diffusion/diffusion/custom_atttention.py +0 -0
  486. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/stable_diffusion/diffusion/regional_ip_data.py +0 -0
  487. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/stable_diffusion/diffusion/regional_prompt_data.py +0 -0
  488. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/stable_diffusion/diffusion/shared_invokeai_diffusion.py +0 -0
  489. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/stable_diffusion/diffusion/unet_attention_patcher.py +0 -0
  490. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/stable_diffusion/diffusion_backend.py +0 -0
  491. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/stable_diffusion/extension_callback_type.py +0 -0
  492. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/stable_diffusion/extensions/base.py +0 -0
  493. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/stable_diffusion/extensions/controlnet.py +0 -0
  494. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/stable_diffusion/extensions/freeu.py +0 -0
  495. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/stable_diffusion/extensions/inpaint.py +0 -0
  496. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/stable_diffusion/extensions/inpaint_model.py +0 -0
  497. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/stable_diffusion/extensions/lora.py +0 -0
  498. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/stable_diffusion/extensions/preview.py +0 -0
  499. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/stable_diffusion/extensions/rescale_cfg.py +0 -0
  500. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/stable_diffusion/extensions/seamless.py +0 -0
  501. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/stable_diffusion/extensions/t2i_adapter.py +0 -0
  502. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/stable_diffusion/extensions_manager.py +0 -0
  503. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/stable_diffusion/multi_diffusion_pipeline.py +0 -0
  504. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/stable_diffusion/schedulers/__init__.py +0 -0
  505. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/stable_diffusion/schedulers/schedulers.py +0 -0
  506. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/stable_diffusion/vae_tiling.py +0 -0
  507. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/textual_inversion.py +0 -0
  508. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/tiles/tiles.py +0 -0
  509. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/tiles/utils.py +0 -0
  510. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/util/__init__.py +0 -0
  511. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/util/attention.py +0 -0
  512. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/util/build_line.py +0 -0
  513. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/util/calc_tensor_size.py +0 -0
  514. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/util/catch_sigint.py +0 -0
  515. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/util/db_maintenance.py +0 -0
  516. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/util/devices.py +0 -0
  517. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/util/hotfixes.py +0 -0
  518. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/util/logging.py +0 -0
  519. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/util/mask.py +0 -0
  520. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/util/mps_fixes.py +0 -0
  521. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/util/original_weights_storage.py +0 -0
  522. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/util/silence_warnings.py +0 -0
  523. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/util/test_utils.py +0 -0
  524. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/backend/util/util.py +0 -0
  525. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/configs/controlnet/cldm_v15.yaml +0 -0
  526. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/configs/controlnet/cldm_v21.yaml +0 -0
  527. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/configs/stable-diffusion/sd_xl_base.yaml +0 -0
  528. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/configs/stable-diffusion/sd_xl_inpaint.yaml +0 -0
  529. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/configs/stable-diffusion/sd_xl_refiner.yaml +0 -0
  530. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/configs/stable-diffusion/v1-finetune.yaml +0 -0
  531. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/configs/stable-diffusion/v1-finetune_style.yaml +0 -0
  532. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/configs/stable-diffusion/v1-inference-v.yaml +0 -0
  533. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/configs/stable-diffusion/v1-inference.yaml +0 -0
  534. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/configs/stable-diffusion/v1-inpainting-inference.yaml +0 -0
  535. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/configs/stable-diffusion/v1-m1-finetune.yaml +0 -0
  536. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/configs/stable-diffusion/v2-inference-v.yaml +0 -0
  537. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/configs/stable-diffusion/v2-inference.yaml +0 -0
  538. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/configs/stable-diffusion/v2-inpainting-inference-v.yaml +0 -0
  539. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/configs/stable-diffusion/v2-inpainting-inference.yaml +0 -0
  540. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/configs/stable-diffusion/v2-midas-inference.yaml +0 -0
  541. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/frontend/__init__.py +0 -0
  542. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/frontend/cli/arg_parser.py +0 -0
  543. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/frontend/install/__init__.py +0 -0
  544. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/frontend/install/import_images.py +0 -0
  545. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/frontend/web/__init__.py +0 -0
  546. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/frontend/web/dist/assets/App-DEu4J2pT.css +0 -0
  547. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/frontend/web/dist/assets/ThemeLocaleProvider-B2NxUfIp.css +0 -0
  548. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/frontend/web/dist/assets/commercial-license-bg-C_dHp7on.png +0 -0
  549. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/frontend/web/dist/assets/images/commercial-license-bg.png +0 -0
  550. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/frontend/web/dist/assets/images/invoke-alert-favicon.svg +0 -0
  551. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/frontend/web/dist/assets/images/invoke-avatar-circle.svg +0 -0
  552. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/frontend/web/dist/assets/images/invoke-avatar-square.svg +0 -0
  553. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/frontend/web/dist/assets/images/invoke-favicon.png +0 -0
  554. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/frontend/web/dist/assets/images/invoke-favicon.svg +0 -0
  555. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/frontend/web/dist/assets/images/invoke-key-char-lrg.svg +0 -0
  556. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/frontend/web/dist/assets/images/invoke-key-char-sml.svg +0 -0
  557. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/frontend/web/dist/assets/images/invoke-key-wht-lrg.svg +0 -0
  558. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/frontend/web/dist/assets/images/invoke-key-wht-sml.svg +0 -0
  559. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/frontend/web/dist/assets/images/invoke-symbol-char-lrg.svg +0 -0
  560. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/frontend/web/dist/assets/images/invoke-symbol-char-sml.svg +0 -0
  561. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/frontend/web/dist/assets/images/invoke-symbol-wht-lrg.svg +0 -0
  562. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/frontend/web/dist/assets/images/invoke-symbol-wht-sml.svg +0 -0
  563. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/frontend/web/dist/assets/images/invoke-symbol-ylw-lrg.svg +0 -0
  564. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/frontend/web/dist/assets/images/invoke-tag-char-lrg.svg +0 -0
  565. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/frontend/web/dist/assets/images/invoke-tag-char-sml.svg +0 -0
  566. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/frontend/web/dist/assets/images/invoke-tag-lrg.svg +0 -0
  567. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/frontend/web/dist/assets/images/invoke-tag-sml.svg +0 -0
  568. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/frontend/web/dist/assets/images/invoke-wordmark-charcoal.svg +0 -0
  569. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/frontend/web/dist/assets/images/invoke-wordmark-white.svg +0 -0
  570. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/frontend/web/dist/assets/images/mask.svg +0 -0
  571. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/frontend/web/dist/assets/inter-cyrillic-ext-wght-normal-B2xhLi22.woff2 +0 -0
  572. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/frontend/web/dist/assets/inter-cyrillic-wght-normal-CMZtQduZ.woff2 +0 -0
  573. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/frontend/web/dist/assets/inter-greek-ext-wght-normal-CGAr0uHJ.woff2 +0 -0
  574. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/frontend/web/dist/assets/inter-greek-wght-normal-CaVNZxsx.woff2 +0 -0
  575. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/frontend/web/dist/assets/inter-latin-ext-wght-normal-CFHvXkgd.woff2 +0 -0
  576. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/frontend/web/dist/assets/inter-latin-wght-normal-C2S99t-D.woff2 +0 -0
  577. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/frontend/web/dist/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2 +0 -0
  578. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/frontend/web/dist/assets/worker-Dywf1EVc.js +0 -0
  579. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/frontend/web/dist/locales/ar.json +0 -0
  580. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/frontend/web/dist/locales/az.json +0 -0
  581. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/frontend/web/dist/locales/bg.json +0 -0
  582. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/frontend/web/dist/locales/fi.json +0 -0
  583. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/frontend/web/dist/locales/fr.json +0 -0
  584. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/frontend/web/dist/locales/he.json +0 -0
  585. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/frontend/web/dist/locales/hu.json +0 -0
  586. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/frontend/web/dist/locales/ko.json +0 -0
  587. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/frontend/web/dist/locales/mn.json +0 -0
  588. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/frontend/web/dist/locales/nl.json +0 -0
  589. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/frontend/web/dist/locales/pl.json +0 -0
  590. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/frontend/web/dist/locales/pt.json +0 -0
  591. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/frontend/web/dist/locales/pt_BR.json +0 -0
  592. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/frontend/web/dist/locales/ro.json +0 -0
  593. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/frontend/web/dist/locales/ru.json +0 -0
  594. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/frontend/web/dist/locales/sv.json +0 -0
  595. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/frontend/web/dist/locales/tr.json +0 -0
  596. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/frontend/web/dist/locales/uk.json +0 -0
  597. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/frontend/web/dist/locales/zh_Hant.json +0 -0
  598. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/frontend/web/scripts/clean_translations.py +0 -0
  599. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/frontend/web/static/docs/invoke-favicon-docs.svg +0 -0
  600. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/invocation_api/__init__.py +0 -0
  601. {invokeai-5.4.0 → invokeai-5.4.1}/invokeai/version/__init__.py +0 -0
  602. {invokeai-5.4.0 → invokeai-5.4.1}/pyproject.toml +0 -0
  603. {invokeai-5.4.0 → invokeai-5.4.1}/setup.cfg +0 -0
  604. {invokeai-5.4.0 → invokeai-5.4.1}/tests/test_config.py +0 -0
  605. {invokeai-5.4.0 → invokeai-5.4.1}/tests/test_docs.py +0 -0
  606. {invokeai-5.4.0 → invokeai-5.4.1}/tests/test_graph_execution_state.py +0 -0
  607. {invokeai-5.4.0 → invokeai-5.4.1}/tests/test_invocation_cache_memory.py +0 -0
  608. {invokeai-5.4.0 → invokeai-5.4.1}/tests/test_item_storage_memory.py +0 -0
  609. {invokeai-5.4.0 → invokeai-5.4.1}/tests/test_model_hash.py +0 -0
  610. {invokeai-5.4.0 → invokeai-5.4.1}/tests/test_model_probe.py +0 -0
  611. {invokeai-5.4.0 → invokeai-5.4.1}/tests/test_model_search.py +0 -0
  612. {invokeai-5.4.0 → invokeai-5.4.1}/tests/test_node_graph.py +0 -0
  613. {invokeai-5.4.0 → invokeai-5.4.1}/tests/test_object_serializer_disk.py +0 -0
  614. {invokeai-5.4.0 → invokeai-5.4.1}/tests/test_path.py +0 -0
  615. {invokeai-5.4.0 → invokeai-5.4.1}/tests/test_profiler.py +0 -0
  616. {invokeai-5.4.0 → invokeai-5.4.1}/tests/test_session_queue.py +0 -0
  617. {invokeai-5.4.0 → invokeai-5.4.1}/tests/test_sqlite_migrator.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: InvokeAI
3
- Version: 5.4.0
3
+ Version: 5.4.1
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
@@ -78,6 +78,7 @@ invokeai/app/invocations/prompt.py
78
78
  invokeai/app/invocations/resize_latents.py
79
79
  invokeai/app/invocations/scheduler.py
80
80
  invokeai/app/invocations/sd3_denoise.py
81
+ invokeai/app/invocations/sd3_image_to_latents.py
81
82
  invokeai/app/invocations/sd3_latents_to_image.py
82
83
  invokeai/app/invocations/sd3_model_loader.py
83
84
  invokeai/app/invocations/sd3_text_encoder.py
@@ -451,6 +452,9 @@ invokeai/backend/quantization/gguf/utils.py
451
452
  invokeai/backend/quantization/scripts/load_flux_model_bnb_llm_int8.py
452
453
  invokeai/backend/quantization/scripts/load_flux_model_bnb_nf4.py
453
454
  invokeai/backend/quantization/scripts/quantize_t5_xxl_bnb_llm_int8.py
455
+ invokeai/backend/sd3/__init__.py
456
+ invokeai/backend/sd3/extensions/__init__.py
457
+ invokeai/backend/sd3/extensions/inpaint_extension.py
454
458
  invokeai/backend/stable_diffusion/__init__.py
455
459
  invokeai/backend/stable_diffusion/denoise_context.py
456
460
  invokeai/backend/stable_diffusion/diffusers_pipeline.py
@@ -519,12 +523,13 @@ invokeai/frontend/install/__init__.py
519
523
  invokeai/frontend/install/import_images.py
520
524
  invokeai/frontend/web/__init__.py
521
525
  invokeai/frontend/web/dist/index.html
522
- invokeai/frontend/web/dist/assets/App-Cgdz1lBg.js
526
+ invokeai/frontend/web/dist/assets/App-B0FpUdCl.js
523
527
  invokeai/frontend/web/dist/assets/App-DEu4J2pT.css
524
528
  invokeai/frontend/web/dist/assets/ThemeLocaleProvider-B2NxUfIp.css
525
- invokeai/frontend/web/dist/assets/ThemeLocaleProvider-QXscVpCV.js
529
+ invokeai/frontend/web/dist/assets/ThemeLocaleProvider-_06ioAWc.js
526
530
  invokeai/frontend/web/dist/assets/commercial-license-bg-C_dHp7on.png
527
- invokeai/frontend/web/dist/assets/index-DT5PJ9-6.js
531
+ invokeai/frontend/web/dist/assets/denoising-strength-4mznP2tj.png
532
+ invokeai/frontend/web/dist/assets/index-DOkD_T-j.js
528
533
  invokeai/frontend/web/dist/assets/inter-cyrillic-ext-wght-normal-B2xhLi22.woff2
529
534
  invokeai/frontend/web/dist/assets/inter-cyrillic-wght-normal-CMZtQduZ.woff2
530
535
  invokeai/frontend/web/dist/assets/inter-greek-ext-wght-normal-CGAr0uHJ.woff2
@@ -532,8 +537,10 @@ invokeai/frontend/web/dist/assets/inter-greek-wght-normal-CaVNZxsx.woff2
532
537
  invokeai/frontend/web/dist/assets/inter-latin-ext-wght-normal-CFHvXkgd.woff2
533
538
  invokeai/frontend/web/dist/assets/inter-latin-wght-normal-C2S99t-D.woff2
534
539
  invokeai/frontend/web/dist/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2
540
+ invokeai/frontend/web/dist/assets/useTranslation-ijkhTtpL.js
535
541
  invokeai/frontend/web/dist/assets/worker-Dywf1EVc.js
536
542
  invokeai/frontend/web/dist/assets/images/commercial-license-bg.png
543
+ invokeai/frontend/web/dist/assets/images/denoising-strength.png
537
544
  invokeai/frontend/web/dist/assets/images/invoke-alert-favicon.svg
538
545
  invokeai/frontend/web/dist/assets/images/invoke-avatar-circle.svg
539
546
  invokeai/frontend/web/dist/assets/images/invoke-avatar-square.svg
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: InvokeAI
3
- Version: 5.4.0
3
+ Version: 5.4.1
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 @@ class AppVersion(BaseModel):
40
40
 
41
41
  version: str = Field(description="App version")
42
42
 
43
+ highlights: Optional[list[str]] = Field(default=None, description="Highlights of release")
44
+
43
45
 
44
46
  class AppDependencyVersions(BaseModel):
45
47
  """App depencency Versions Response"""
@@ -95,6 +95,7 @@ class CompelInvocation(BaseInvocation):
95
95
  ti_manager,
96
96
  ),
97
97
  ):
98
+ context.util.signal_progress("Building conditioning")
98
99
  assert isinstance(text_encoder, CLIPTextModel)
99
100
  assert isinstance(tokenizer, CLIPTokenizer)
100
101
  compel = Compel(
@@ -191,6 +192,7 @@ class SDXLPromptInvocationBase:
191
192
  ti_manager,
192
193
  ),
193
194
  ):
195
+ context.util.signal_progress("Building conditioning")
194
196
  assert isinstance(text_encoder, (CLIPTextModel, CLIPTextModelWithProjection))
195
197
  assert isinstance(tokenizer, CLIPTokenizer)
196
198
 
@@ -65,6 +65,7 @@ class CreateDenoiseMaskInvocation(BaseInvocation):
65
65
  img_mask = tv_resize(mask, image_tensor.shape[-2:], T.InterpolationMode.BILINEAR, antialias=False)
66
66
  masked_image = image_tensor * torch.where(img_mask < 0.5, 0.0, 1.0)
67
67
  # TODO:
68
+ context.util.signal_progress("Running VAE encoder")
68
69
  masked_latents = ImageToLatentsInvocation.vae_encode(vae_info, self.fp32, self.tiled, masked_image.clone())
69
70
 
70
71
  masked_latents_name = context.tensors.save(tensor=masked_latents)
@@ -131,6 +131,7 @@ class CreateGradientMaskInvocation(BaseInvocation):
131
131
  image_tensor = image_tensor.unsqueeze(0)
132
132
  img_mask = tv_resize(mask, image_tensor.shape[-2:], T.InterpolationMode.BILINEAR, antialias=False)
133
133
  masked_image = image_tensor * torch.where(img_mask < 0.5, 0.0, 1.0)
134
+ context.util.signal_progress("Running VAE encoder")
134
135
  masked_latents = ImageToLatentsInvocation.vae_encode(
135
136
  vae_info, self.fp32, self.tiled, masked_image.clone()
136
137
  )
@@ -56,7 +56,7 @@ from invokeai.backend.util.devices import TorchDevice
56
56
  title="FLUX Denoise",
57
57
  tags=["image", "flux"],
58
58
  category="image",
59
- version="3.2.0",
59
+ version="3.2.1",
60
60
  classification=Classification.Prototype,
61
61
  )
62
62
  class FluxDenoiseInvocation(BaseInvocation, WithMetadata, WithBoard):
@@ -81,6 +81,7 @@ class FluxDenoiseInvocation(BaseInvocation, WithMetadata, WithBoard):
81
81
  description=FieldDescriptions.denoising_start,
82
82
  )
83
83
  denoising_end: float = InputField(default=1.0, ge=0, le=1, description=FieldDescriptions.denoising_end)
84
+ add_noise: bool = InputField(default=True, description="Add noise based on denoising start.")
84
85
  transformer: TransformerField = InputField(
85
86
  description=FieldDescriptions.flux_model,
86
87
  input=Input.Connection,
@@ -207,9 +208,12 @@ class FluxDenoiseInvocation(BaseInvocation, WithMetadata, WithBoard):
207
208
  "to be poor. Consider using a FLUX dev model instead."
208
209
  )
209
210
 
210
- # Noise the orig_latents by the appropriate amount for the first timestep.
211
- t_0 = timesteps[0]
212
- x = t_0 * noise + (1.0 - t_0) * init_latents
211
+ if self.add_noise:
212
+ # Noise the orig_latents by the appropriate amount for the first timestep.
213
+ t_0 = timesteps[0]
214
+ x = t_0 * noise + (1.0 - t_0) * init_latents
215
+ else:
216
+ x = init_latents
213
217
  else:
214
218
  # init_latents are not provided, so we are not doing image-to-image (i.e. we are starting from pure noise).
215
219
  if self.denoising_start > 1e-5:
@@ -71,6 +71,7 @@ class FluxTextEncoderInvocation(BaseInvocation):
71
71
 
72
72
  t5_encoder = HFEncoder(t5_text_encoder, t5_tokenizer, False, self.t5_max_seq_len)
73
73
 
74
+ context.util.signal_progress("Running T5 encoder")
74
75
  prompt_embeds = t5_encoder(prompt)
75
76
 
76
77
  assert isinstance(prompt_embeds, torch.Tensor)
@@ -111,6 +112,7 @@ class FluxTextEncoderInvocation(BaseInvocation):
111
112
 
112
113
  clip_encoder = HFEncoder(clip_text_encoder, clip_tokenizer, True, 77)
113
114
 
115
+ context.util.signal_progress("Running CLIP encoder")
114
116
  pooled_prompt_embeds = clip_encoder(prompt)
115
117
 
116
118
  assert isinstance(pooled_prompt_embeds, torch.Tensor)
@@ -41,7 +41,8 @@ class FluxVaeDecodeInvocation(BaseInvocation, WithMetadata, WithBoard):
41
41
  def _vae_decode(self, vae_info: LoadedModel, latents: torch.Tensor) -> Image.Image:
42
42
  with vae_info as vae:
43
43
  assert isinstance(vae, AutoEncoder)
44
- latents = latents.to(device=TorchDevice.choose_torch_device(), dtype=TorchDevice.choose_torch_dtype())
44
+ vae_dtype = next(iter(vae.parameters())).dtype
45
+ latents = latents.to(device=TorchDevice.choose_torch_device(), dtype=vae_dtype)
45
46
  img = vae.decode(latents)
46
47
 
47
48
  img = img.clamp(-1, 1)
@@ -53,6 +54,7 @@ class FluxVaeDecodeInvocation(BaseInvocation, WithMetadata, WithBoard):
53
54
  def invoke(self, context: InvocationContext) -> ImageOutput:
54
55
  latents = context.tensors.load(self.latents.latents_name)
55
56
  vae_info = context.models.load(self.vae.vae)
57
+ context.util.signal_progress("Running VAE")
56
58
  image = self._vae_decode(vae_info=vae_info, latents=latents)
57
59
 
58
60
  TorchDevice.empty_cache()
@@ -44,9 +44,8 @@ class FluxVaeEncodeInvocation(BaseInvocation):
44
44
  generator = torch.Generator(device=TorchDevice.choose_torch_device()).manual_seed(0)
45
45
  with vae_info as vae:
46
46
  assert isinstance(vae, AutoEncoder)
47
- image_tensor = image_tensor.to(
48
- device=TorchDevice.choose_torch_device(), dtype=TorchDevice.choose_torch_dtype()
49
- )
47
+ vae_dtype = next(iter(vae.parameters())).dtype
48
+ image_tensor = image_tensor.to(device=TorchDevice.choose_torch_device(), dtype=vae_dtype)
50
49
  latents = vae.encode(image_tensor, sample=True, generator=generator)
51
50
  return latents
52
51
 
@@ -60,6 +59,7 @@ class FluxVaeEncodeInvocation(BaseInvocation):
60
59
  if image_tensor.dim() == 3:
61
60
  image_tensor = einops.rearrange(image_tensor, "c h w -> 1 c h w")
62
61
 
62
+ context.util.signal_progress("Running VAE")
63
63
  latents = self.vae_encode(vae_info=vae_info, image_tensor=image_tensor)
64
64
 
65
65
  latents = latents.to("cpu")
@@ -117,6 +117,7 @@ class ImageToLatentsInvocation(BaseInvocation):
117
117
  if image_tensor.dim() == 3:
118
118
  image_tensor = einops.rearrange(image_tensor, "c h w -> 1 c h w")
119
119
 
120
+ context.util.signal_progress("Running VAE encoder")
120
121
  latents = self.vae_encode(
121
122
  vae_info=vae_info, upcast=self.fp32, tiled=self.tiled, image_tensor=image_tensor, tile_size=self.tile_size
122
123
  )
@@ -60,6 +60,7 @@ class LatentsToImageInvocation(BaseInvocation, WithMetadata, WithBoard):
60
60
  vae_info = context.models.load(self.vae.vae)
61
61
  assert isinstance(vae_info.model, (AutoencoderKL, AutoencoderTiny))
62
62
  with SeamlessExt.static_patch_model(vae_info.model, self.vae.seamless_axes), vae_info as vae:
63
+ context.util.signal_progress("Running VAE decoder")
63
64
  assert isinstance(vae, (AutoencoderKL, AutoencoderTiny))
64
65
  latents = latents.to(vae.device)
65
66
  if self.fp32:
@@ -147,6 +147,10 @@ GENERATION_MODES = Literal[
147
147
  "flux_img2img",
148
148
  "flux_inpaint",
149
149
  "flux_outpaint",
150
+ "sd3_txt2img",
151
+ "sd3_img2img",
152
+ "sd3_inpaint",
153
+ "sd3_outpaint",
150
154
  ]
151
155
 
152
156
 
@@ -1,16 +1,19 @@
1
- from typing import Callable, Tuple
1
+ from typing import Callable, Optional, Tuple
2
2
 
3
3
  import torch
4
+ import torchvision.transforms as tv_transforms
4
5
  from diffusers.models.transformers.transformer_sd3 import SD3Transformer2DModel
5
- from diffusers.schedulers.scheduling_flow_match_euler_discrete import FlowMatchEulerDiscreteScheduler
6
+ from torchvision.transforms.functional import resize as tv_resize
6
7
  from tqdm import tqdm
7
8
 
8
9
  from invokeai.app.invocations.baseinvocation import BaseInvocation, Classification, invocation
9
10
  from invokeai.app.invocations.constants import LATENT_SCALE_FACTOR
10
11
  from invokeai.app.invocations.fields import (
12
+ DenoiseMaskField,
11
13
  FieldDescriptions,
12
14
  Input,
13
15
  InputField,
16
+ LatentsField,
14
17
  SD3ConditioningField,
15
18
  WithBoard,
16
19
  WithMetadata,
@@ -19,7 +22,9 @@ from invokeai.app.invocations.model import TransformerField
19
22
  from invokeai.app.invocations.primitives import LatentsOutput
20
23
  from invokeai.app.invocations.sd3_text_encoder import SD3_T5_MAX_SEQ_LEN
21
24
  from invokeai.app.services.shared.invocation_context import InvocationContext
25
+ from invokeai.backend.flux.sampling_utils import clip_timestep_schedule_fractional
22
26
  from invokeai.backend.model_manager.config import BaseModelType
27
+ from invokeai.backend.sd3.extensions.inpaint_extension import InpaintExtension
23
28
  from invokeai.backend.stable_diffusion.diffusers_pipeline import PipelineIntermediateState
24
29
  from invokeai.backend.stable_diffusion.diffusion.conditioning_data import SD3ConditioningInfo
25
30
  from invokeai.backend.util.devices import TorchDevice
@@ -30,16 +35,24 @@ from invokeai.backend.util.devices import TorchDevice
30
35
  title="SD3 Denoise",
31
36
  tags=["image", "sd3"],
32
37
  category="image",
33
- version="1.0.0",
38
+ version="1.1.0",
34
39
  classification=Classification.Prototype,
35
40
  )
36
41
  class SD3DenoiseInvocation(BaseInvocation, WithMetadata, WithBoard):
37
42
  """Run denoising process with a SD3 model."""
38
43
 
44
+ # If latents is provided, this means we are doing image-to-image.
45
+ latents: Optional[LatentsField] = InputField(
46
+ default=None, description=FieldDescriptions.latents, input=Input.Connection
47
+ )
48
+ # denoise_mask is used for image-to-image inpainting. Only the masked region is modified.
49
+ denoise_mask: Optional[DenoiseMaskField] = InputField(
50
+ default=None, description=FieldDescriptions.denoise_mask, input=Input.Connection
51
+ )
52
+ denoising_start: float = InputField(default=0.0, ge=0, le=1, description=FieldDescriptions.denoising_start)
53
+ denoising_end: float = InputField(default=1.0, ge=0, le=1, description=FieldDescriptions.denoising_end)
39
54
  transformer: TransformerField = InputField(
40
- description=FieldDescriptions.sd3_model,
41
- input=Input.Connection,
42
- title="Transformer",
55
+ description=FieldDescriptions.sd3_model, input=Input.Connection, title="Transformer"
43
56
  )
44
57
  positive_conditioning: SD3ConditioningField = InputField(
45
58
  description=FieldDescriptions.positive_cond, input=Input.Connection
@@ -61,6 +74,41 @@ class SD3DenoiseInvocation(BaseInvocation, WithMetadata, WithBoard):
61
74
  name = context.tensors.save(tensor=latents)
62
75
  return LatentsOutput.build(latents_name=name, latents=latents, seed=None)
63
76
 
77
+ def _prep_inpaint_mask(self, context: InvocationContext, latents: torch.Tensor) -> torch.Tensor | None:
78
+ """Prepare the inpaint mask.
79
+ - Loads the mask
80
+ - Resizes if necessary
81
+ - Casts to same device/dtype as latents
82
+
83
+ Args:
84
+ context (InvocationContext): The invocation context, for loading the inpaint mask.
85
+ latents (torch.Tensor): A latent image tensor. Used to determine the target shape, device, and dtype for the
86
+ inpaint mask.
87
+
88
+ Returns:
89
+ torch.Tensor | None: Inpaint mask. Values of 0.0 represent the regions to be fully denoised, and 1.0
90
+ represent the regions to be preserved.
91
+ """
92
+ if self.denoise_mask is None:
93
+ return None
94
+ mask = context.tensors.load(self.denoise_mask.mask_name)
95
+
96
+ # The input denoise_mask contains values in [0, 1], where 0.0 represents the regions to be fully denoised, and
97
+ # 1.0 represents the regions to be preserved.
98
+ # We invert the mask so that the regions to be preserved are 0.0 and the regions to be denoised are 1.0.
99
+ mask = 1.0 - mask
100
+
101
+ _, _, latent_height, latent_width = latents.shape
102
+ mask = tv_resize(
103
+ img=mask,
104
+ size=[latent_height, latent_width],
105
+ interpolation=tv_transforms.InterpolationMode.BILINEAR,
106
+ antialias=False,
107
+ )
108
+
109
+ mask = mask.to(device=latents.device, dtype=latents.dtype)
110
+ return mask
111
+
64
112
  def _load_text_conditioning(
65
113
  self,
66
114
  context: InvocationContext,
@@ -170,14 +218,20 @@ class SD3DenoiseInvocation(BaseInvocation, WithMetadata, WithBoard):
170
218
  prompt_embeds = torch.cat([neg_prompt_embeds, pos_prompt_embeds], dim=0)
171
219
  pooled_prompt_embeds = torch.cat([neg_pooled_prompt_embeds, pos_pooled_prompt_embeds], dim=0)
172
220
 
173
- # Prepare the scheduler.
174
- scheduler = FlowMatchEulerDiscreteScheduler()
175
- scheduler.set_timesteps(num_inference_steps=self.steps, device=device)
176
- timesteps = scheduler.timesteps
177
- assert isinstance(timesteps, torch.Tensor)
221
+ # Prepare the timestep schedule.
222
+ # We add an extra step to the end to account for the final timestep of 0.0.
223
+ timesteps: list[float] = torch.linspace(1, 0, self.steps + 1).tolist()
224
+ # Clip the timesteps schedule based on denoising_start and denoising_end.
225
+ timesteps = clip_timestep_schedule_fractional(timesteps, self.denoising_start, self.denoising_end)
226
+ total_steps = len(timesteps) - 1
178
227
 
179
228
  # Prepare the CFG scale list.
180
- cfg_scale = self._prepare_cfg_scale(len(timesteps))
229
+ cfg_scale = self._prepare_cfg_scale(total_steps)
230
+
231
+ # Load the input latents, if provided.
232
+ init_latents = context.tensors.load(self.latents.latents_name) if self.latents else None
233
+ if init_latents is not None:
234
+ init_latents = init_latents.to(device=device, dtype=inference_dtype)
181
235
 
182
236
  # Generate initial latent noise.
183
237
  num_channels_latents = transformer_info.model.config.in_channels
@@ -191,9 +245,34 @@ class SD3DenoiseInvocation(BaseInvocation, WithMetadata, WithBoard):
191
245
  device=device,
192
246
  seed=self.seed,
193
247
  )
194
- latents: torch.Tensor = noise
195
248
 
196
- total_steps = len(timesteps)
249
+ # Prepare input latent image.
250
+ if init_latents is not None:
251
+ # Noise the init_latents by the appropriate amount for the first timestep.
252
+ t_0 = timesteps[0]
253
+ latents = t_0 * noise + (1.0 - t_0) * init_latents
254
+ else:
255
+ # init_latents are not provided, so we are not doing image-to-image (i.e. we are starting from pure noise).
256
+ if self.denoising_start > 1e-5:
257
+ raise ValueError("denoising_start should be 0 when initial latents are not provided.")
258
+ latents = noise
259
+
260
+ # If len(timesteps) == 1, then short-circuit. We are just noising the input latents, but not taking any
261
+ # denoising steps.
262
+ if len(timesteps) <= 1:
263
+ return latents
264
+
265
+ # Prepare inpaint extension.
266
+ inpaint_mask = self._prep_inpaint_mask(context, latents)
267
+ inpaint_extension: InpaintExtension | None = None
268
+ if inpaint_mask is not None:
269
+ assert init_latents is not None
270
+ inpaint_extension = InpaintExtension(
271
+ init_latents=init_latents,
272
+ inpaint_mask=inpaint_mask,
273
+ noise=noise,
274
+ )
275
+
197
276
  step_callback = self._build_step_callback(context)
198
277
 
199
278
  step_callback(
@@ -210,11 +289,12 @@ class SD3DenoiseInvocation(BaseInvocation, WithMetadata, WithBoard):
210
289
  assert isinstance(transformer, SD3Transformer2DModel)
211
290
 
212
291
  # 6. Denoising loop
213
- for step_idx, t in tqdm(list(enumerate(timesteps))):
292
+ for step_idx, (t_curr, t_prev) in tqdm(list(enumerate(zip(timesteps[:-1], timesteps[1:], strict=True)))):
214
293
  # Expand the latents if we are doing CFG.
215
294
  latent_model_input = torch.cat([latents] * 2) if do_classifier_free_guidance else latents
216
295
  # Expand the timestep to match the latent model input.
217
- timestep = t.expand(latent_model_input.shape[0])
296
+ # Multiply by 1000 to match the default FlowMatchEulerDiscreteScheduler num_train_timesteps.
297
+ timestep = torch.tensor([t_curr * 1000], device=device).expand(latent_model_input.shape[0])
218
298
 
219
299
  noise_pred = transformer(
220
300
  hidden_states=latent_model_input,
@@ -232,21 +312,19 @@ class SD3DenoiseInvocation(BaseInvocation, WithMetadata, WithBoard):
232
312
 
233
313
  # Compute the previous noisy sample x_t -> x_t-1.
234
314
  latents_dtype = latents.dtype
235
- latents = scheduler.step(model_output=noise_pred, timestep=t, sample=latents, return_dict=False)[0]
315
+ latents = latents.to(dtype=torch.float32)
316
+ latents = latents + (t_prev - t_curr) * noise_pred
317
+ latents = latents.to(dtype=latents_dtype)
236
318
 
237
- # TODO(ryand): This MPS dtype handling was copied from diffusers, I haven't tested to see if it's
238
- # needed.
239
- if latents.dtype != latents_dtype:
240
- if torch.backends.mps.is_available():
241
- # some platforms (eg. apple mps) misbehave due to a pytorch bug: https://github.com/pytorch/pytorch/pull/99272
242
- latents = latents.to(latents_dtype)
319
+ if inpaint_extension is not None:
320
+ latents = inpaint_extension.merge_intermediate_latents_with_init_latents(latents, t_prev)
243
321
 
244
322
  step_callback(
245
323
  PipelineIntermediateState(
246
324
  step=step_idx + 1,
247
325
  order=1,
248
326
  total_steps=total_steps,
249
- timestep=int(t),
327
+ timestep=int(t_curr),
250
328
  latents=latents,
251
329
  ),
252
330
  )
@@ -0,0 +1,65 @@
1
+ import einops
2
+ import torch
3
+ from diffusers.models.autoencoders.autoencoder_kl import AutoencoderKL
4
+
5
+ from invokeai.app.invocations.baseinvocation import BaseInvocation, Classification, invocation
6
+ from invokeai.app.invocations.fields import (
7
+ FieldDescriptions,
8
+ ImageField,
9
+ Input,
10
+ InputField,
11
+ WithBoard,
12
+ WithMetadata,
13
+ )
14
+ from invokeai.app.invocations.model import VAEField
15
+ from invokeai.app.invocations.primitives import LatentsOutput
16
+ from invokeai.app.services.shared.invocation_context import InvocationContext
17
+ from invokeai.backend.model_manager.load.load_base import LoadedModel
18
+ from invokeai.backend.stable_diffusion.diffusers_pipeline import image_resized_to_grid_as_tensor
19
+
20
+
21
+ @invocation(
22
+ "sd3_i2l",
23
+ title="SD3 Image to Latents",
24
+ tags=["image", "latents", "vae", "i2l", "sd3"],
25
+ category="image",
26
+ version="1.0.0",
27
+ classification=Classification.Prototype,
28
+ )
29
+ class SD3ImageToLatentsInvocation(BaseInvocation, WithMetadata, WithBoard):
30
+ """Generates latents from an image."""
31
+
32
+ image: ImageField = InputField(description="The image to encode")
33
+ vae: VAEField = InputField(description=FieldDescriptions.vae, input=Input.Connection)
34
+
35
+ @staticmethod
36
+ def vae_encode(vae_info: LoadedModel, image_tensor: torch.Tensor) -> torch.Tensor:
37
+ with vae_info as vae:
38
+ assert isinstance(vae, AutoencoderKL)
39
+
40
+ vae.disable_tiling()
41
+
42
+ image_tensor = image_tensor.to(device=vae.device, dtype=vae.dtype)
43
+ with torch.inference_mode():
44
+ image_tensor_dist = vae.encode(image_tensor).latent_dist
45
+ # TODO: Use seed to make sampling reproducible.
46
+ latents: torch.Tensor = image_tensor_dist.sample().to(dtype=vae.dtype)
47
+
48
+ latents = vae.config.scaling_factor * latents
49
+
50
+ return latents
51
+
52
+ @torch.no_grad()
53
+ def invoke(self, context: InvocationContext) -> LatentsOutput:
54
+ image = context.images.get_pil(self.image.image_name)
55
+
56
+ image_tensor = image_resized_to_grid_as_tensor(image.convert("RGB"))
57
+ if image_tensor.dim() == 3:
58
+ image_tensor = einops.rearrange(image_tensor, "c h w -> 1 c h w")
59
+
60
+ vae_info = context.models.load(self.vae.vae)
61
+ latents = self.vae_encode(vae_info=vae_info, image_tensor=image_tensor)
62
+
63
+ latents = latents.to("cpu")
64
+ name = context.tensors.save(tensor=latents)
65
+ return LatentsOutput.build(latents_name=name, latents=latents, seed=None)
@@ -47,6 +47,7 @@ class SD3LatentsToImageInvocation(BaseInvocation, WithMetadata, WithBoard):
47
47
  vae_info = context.models.load(self.vae.vae)
48
48
  assert isinstance(vae_info.model, (AutoencoderKL))
49
49
  with SeamlessExt.static_patch_model(vae_info.model, self.vae.seamless_axes), vae_info as vae:
50
+ context.util.signal_progress("Running VAE")
50
51
  assert isinstance(vae, (AutoencoderKL))
51
52
  latents = latents.to(vae.device)
52
53
 
@@ -95,6 +95,7 @@ class Sd3TextEncoderInvocation(BaseInvocation):
95
95
  t5_text_encoder_info as t5_text_encoder,
96
96
  t5_tokenizer_info as t5_tokenizer,
97
97
  ):
98
+ context.util.signal_progress("Running T5 encoder")
98
99
  assert isinstance(t5_text_encoder, T5EncoderModel)
99
100
  assert isinstance(t5_tokenizer, (T5Tokenizer, T5TokenizerFast))
100
101
 
@@ -137,6 +138,7 @@ class Sd3TextEncoderInvocation(BaseInvocation):
137
138
  clip_tokenizer_info as clip_tokenizer,
138
139
  ExitStack() as exit_stack,
139
140
  ):
141
+ context.util.signal_progress("Running CLIP encoder")
140
142
  assert isinstance(clip_text_encoder, (CLIPTextModel, CLIPTextModelWithProjection))
141
143
  assert isinstance(clip_tokenizer, CLIPTokenizer)
142
144
 
@@ -160,6 +160,10 @@ class LoggerInterface(InvocationContextInterface):
160
160
 
161
161
 
162
162
  class ImagesInterface(InvocationContextInterface):
163
+ def __init__(self, services: InvocationServices, data: InvocationContextData, util: "UtilInterface") -> None:
164
+ super().__init__(services, data)
165
+ self._util = util
166
+
163
167
  def save(
164
168
  self,
165
169
  image: Image,
@@ -186,6 +190,8 @@ class ImagesInterface(InvocationContextInterface):
186
190
  The saved image DTO.
187
191
  """
188
192
 
193
+ self._util.signal_progress("Saving image")
194
+
189
195
  # If `metadata` is provided directly, use that. Else, use the metadata provided by `WithMetadata`, falling back to None.
190
196
  metadata_ = None
191
197
  if metadata:
@@ -336,6 +342,10 @@ class ConditioningInterface(InvocationContextInterface):
336
342
  class ModelsInterface(InvocationContextInterface):
337
343
  """Common API for loading, downloading and managing models."""
338
344
 
345
+ def __init__(self, services: InvocationServices, data: InvocationContextData, util: "UtilInterface") -> None:
346
+ super().__init__(services, data)
347
+ self._util = util
348
+
339
349
  def exists(self, identifier: Union[str, "ModelIdentifierField"]) -> bool:
340
350
  """Check if a model exists.
341
351
 
@@ -368,11 +378,15 @@ class ModelsInterface(InvocationContextInterface):
368
378
 
369
379
  if isinstance(identifier, str):
370
380
  model = self._services.model_manager.store.get_model(identifier)
371
- return self._services.model_manager.load.load_model(model, submodel_type)
372
381
  else:
373
- _submodel_type = submodel_type or identifier.submodel_type
382
+ submodel_type = submodel_type or identifier.submodel_type
374
383
  model = self._services.model_manager.store.get_model(identifier.key)
375
- return self._services.model_manager.load.load_model(model, _submodel_type)
384
+
385
+ message = f"Loading model {model.name}"
386
+ if submodel_type:
387
+ message += f" ({submodel_type.value})"
388
+ self._util.signal_progress(message)
389
+ return self._services.model_manager.load.load_model(model, submodel_type)
376
390
 
377
391
  def load_by_attrs(
378
392
  self, name: str, base: BaseModelType, type: ModelType, submodel_type: Optional[SubModelType] = None
@@ -397,6 +411,10 @@ class ModelsInterface(InvocationContextInterface):
397
411
  if len(configs) > 1:
398
412
  raise ValueError(f"More than one model found with name {name}, base {base}, and type {type}")
399
413
 
414
+ message = f"Loading model {name}"
415
+ if submodel_type:
416
+ message += f" ({submodel_type.value})"
417
+ self._util.signal_progress(message)
400
418
  return self._services.model_manager.load.load_model(configs[0], submodel_type)
401
419
 
402
420
  def get_config(self, identifier: Union[str, "ModelIdentifierField"]) -> AnyModelConfig:
@@ -467,6 +485,7 @@ class ModelsInterface(InvocationContextInterface):
467
485
  Returns:
468
486
  Path to the downloaded model
469
487
  """
488
+ self._util.signal_progress(f"Downloading model {source}")
470
489
  return self._services.model_manager.install.download_and_cache_model(source=source)
471
490
 
472
491
  def load_local_model(
@@ -489,6 +508,8 @@ class ModelsInterface(InvocationContextInterface):
489
508
  Returns:
490
509
  A LoadedModelWithoutConfig object.
491
510
  """
511
+
512
+ self._util.signal_progress(f"Loading model {model_path.name}")
492
513
  return self._services.model_manager.load.load_model_from_path(model_path=model_path, loader=loader)
493
514
 
494
515
  def load_remote_model(
@@ -514,6 +535,8 @@ class ModelsInterface(InvocationContextInterface):
514
535
  A LoadedModelWithoutConfig object.
515
536
  """
516
537
  model_path = self._services.model_manager.install.download_and_cache_model(source=str(source))
538
+
539
+ self._util.signal_progress(f"Loading model {source}")
517
540
  return self._services.model_manager.load.load_model_from_path(model_path=model_path, loader=loader)
518
541
 
519
542
 
@@ -707,12 +730,12 @@ def build_invocation_context(
707
730
  """
708
731
 
709
732
  logger = LoggerInterface(services=services, data=data)
710
- images = ImagesInterface(services=services, data=data)
711
733
  tensors = TensorsInterface(services=services, data=data)
712
- models = ModelsInterface(services=services, data=data)
713
734
  config = ConfigInterface(services=services, data=data)
714
735
  util = UtilInterface(services=services, data=data, is_canceled=is_canceled)
715
736
  conditioning = ConditioningInterface(services=services, data=data)
737
+ models = ModelsInterface(services=services, data=data, util=util)
738
+ images = ImagesInterface(services=services, data=data, util=util)
716
739
  boards = BoardsInterface(services=services, data=data)
717
740
 
718
741
  ctx = InvocationContext(