diffusers 0.30.2__py3-none-any.whl → 0.31.0__py3-none-any.whl

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 (173) hide show
  1. diffusers/__init__.py +38 -2
  2. diffusers/configuration_utils.py +12 -0
  3. diffusers/dependency_versions_table.py +1 -1
  4. diffusers/image_processor.py +257 -54
  5. diffusers/loaders/__init__.py +2 -0
  6. diffusers/loaders/ip_adapter.py +5 -1
  7. diffusers/loaders/lora_base.py +14 -7
  8. diffusers/loaders/lora_conversion_utils.py +332 -0
  9. diffusers/loaders/lora_pipeline.py +707 -41
  10. diffusers/loaders/peft.py +1 -0
  11. diffusers/loaders/single_file_utils.py +81 -4
  12. diffusers/loaders/textual_inversion.py +2 -0
  13. diffusers/loaders/unet.py +39 -8
  14. diffusers/models/__init__.py +4 -0
  15. diffusers/models/adapter.py +53 -53
  16. diffusers/models/attention.py +86 -10
  17. diffusers/models/attention_processor.py +169 -133
  18. diffusers/models/autoencoders/autoencoder_kl.py +71 -11
  19. diffusers/models/autoencoders/autoencoder_kl_cogvideox.py +287 -85
  20. diffusers/models/controlnet_flux.py +536 -0
  21. diffusers/models/controlnet_sd3.py +7 -3
  22. diffusers/models/controlnet_sparsectrl.py +0 -1
  23. diffusers/models/embeddings.py +238 -61
  24. diffusers/models/embeddings_flax.py +23 -9
  25. diffusers/models/model_loading_utils.py +182 -14
  26. diffusers/models/modeling_utils.py +283 -46
  27. diffusers/models/normalization.py +79 -0
  28. diffusers/models/transformers/__init__.py +1 -0
  29. diffusers/models/transformers/auraflow_transformer_2d.py +1 -0
  30. diffusers/models/transformers/cogvideox_transformer_3d.py +58 -36
  31. diffusers/models/transformers/pixart_transformer_2d.py +9 -1
  32. diffusers/models/transformers/transformer_cogview3plus.py +386 -0
  33. diffusers/models/transformers/transformer_flux.py +161 -44
  34. diffusers/models/transformers/transformer_sd3.py +7 -1
  35. diffusers/models/unets/unet_2d_condition.py +8 -8
  36. diffusers/models/unets/unet_motion_model.py +41 -63
  37. diffusers/models/upsampling.py +6 -6
  38. diffusers/pipelines/__init__.py +40 -7
  39. diffusers/pipelines/animatediff/__init__.py +2 -0
  40. diffusers/pipelines/animatediff/pipeline_animatediff.py +45 -21
  41. diffusers/pipelines/animatediff/pipeline_animatediff_controlnet.py +44 -20
  42. diffusers/pipelines/animatediff/pipeline_animatediff_sdxl.py +18 -4
  43. diffusers/pipelines/animatediff/pipeline_animatediff_sparsectrl.py +2 -0
  44. diffusers/pipelines/animatediff/pipeline_animatediff_video2video.py +104 -66
  45. diffusers/pipelines/animatediff/pipeline_animatediff_video2video_controlnet.py +1341 -0
  46. diffusers/pipelines/aura_flow/pipeline_aura_flow.py +1 -1
  47. diffusers/pipelines/auto_pipeline.py +39 -8
  48. diffusers/pipelines/cogvideo/__init__.py +6 -0
  49. diffusers/pipelines/cogvideo/pipeline_cogvideox.py +32 -34
  50. diffusers/pipelines/cogvideo/pipeline_cogvideox_fun_control.py +794 -0
  51. diffusers/pipelines/cogvideo/pipeline_cogvideox_image2video.py +837 -0
  52. diffusers/pipelines/cogvideo/pipeline_cogvideox_video2video.py +825 -0
  53. diffusers/pipelines/cogvideo/pipeline_output.py +20 -0
  54. diffusers/pipelines/cogview3/__init__.py +47 -0
  55. diffusers/pipelines/cogview3/pipeline_cogview3plus.py +674 -0
  56. diffusers/pipelines/cogview3/pipeline_output.py +21 -0
  57. diffusers/pipelines/controlnet/pipeline_controlnet.py +9 -1
  58. diffusers/pipelines/controlnet/pipeline_controlnet_img2img.py +8 -0
  59. diffusers/pipelines/controlnet/pipeline_controlnet_inpaint.py +8 -0
  60. diffusers/pipelines/controlnet/pipeline_controlnet_inpaint_sd_xl.py +36 -13
  61. diffusers/pipelines/controlnet/pipeline_controlnet_sd_xl.py +9 -1
  62. diffusers/pipelines/controlnet/pipeline_controlnet_sd_xl_img2img.py +8 -1
  63. diffusers/pipelines/controlnet_hunyuandit/pipeline_hunyuandit_controlnet.py +17 -3
  64. diffusers/pipelines/controlnet_sd3/__init__.py +4 -0
  65. diffusers/pipelines/controlnet_sd3/pipeline_stable_diffusion_3_controlnet.py +3 -1
  66. diffusers/pipelines/controlnet_sd3/pipeline_stable_diffusion_3_controlnet_inpainting.py +1153 -0
  67. diffusers/pipelines/ddpm/pipeline_ddpm.py +2 -2
  68. diffusers/pipelines/deepfloyd_if/pipeline_output.py +6 -5
  69. diffusers/pipelines/deprecated/alt_diffusion/pipeline_alt_diffusion.py +16 -4
  70. diffusers/pipelines/deprecated/alt_diffusion/pipeline_alt_diffusion_img2img.py +1 -1
  71. diffusers/pipelines/deprecated/versatile_diffusion/modeling_text_unet.py +1 -1
  72. diffusers/pipelines/flux/__init__.py +10 -0
  73. diffusers/pipelines/flux/pipeline_flux.py +53 -20
  74. diffusers/pipelines/flux/pipeline_flux_controlnet.py +984 -0
  75. diffusers/pipelines/flux/pipeline_flux_controlnet_image_to_image.py +988 -0
  76. diffusers/pipelines/flux/pipeline_flux_controlnet_inpainting.py +1182 -0
  77. diffusers/pipelines/flux/pipeline_flux_img2img.py +850 -0
  78. diffusers/pipelines/flux/pipeline_flux_inpaint.py +1015 -0
  79. diffusers/pipelines/free_noise_utils.py +365 -5
  80. diffusers/pipelines/hunyuandit/pipeline_hunyuandit.py +15 -3
  81. diffusers/pipelines/kandinsky2_2/pipeline_kandinsky2_2_combined.py +2 -2
  82. diffusers/pipelines/kolors/pipeline_kolors.py +1 -1
  83. diffusers/pipelines/kolors/pipeline_kolors_img2img.py +14 -11
  84. diffusers/pipelines/kolors/tokenizer.py +4 -0
  85. diffusers/pipelines/latent_consistency_models/pipeline_latent_consistency_img2img.py +1 -1
  86. diffusers/pipelines/latent_consistency_models/pipeline_latent_consistency_text2img.py +1 -1
  87. diffusers/pipelines/latte/pipeline_latte.py +2 -2
  88. diffusers/pipelines/ledits_pp/pipeline_leditspp_stable_diffusion.py +15 -3
  89. diffusers/pipelines/ledits_pp/pipeline_leditspp_stable_diffusion_xl.py +15 -3
  90. diffusers/pipelines/lumina/pipeline_lumina.py +2 -2
  91. diffusers/pipelines/pag/__init__.py +6 -0
  92. diffusers/pipelines/pag/pag_utils.py +8 -2
  93. diffusers/pipelines/pag/pipeline_pag_controlnet_sd.py +1 -1
  94. diffusers/pipelines/pag/pipeline_pag_controlnet_sd_inpaint.py +1544 -0
  95. diffusers/pipelines/pag/pipeline_pag_controlnet_sd_xl.py +2 -2
  96. diffusers/pipelines/pag/pipeline_pag_controlnet_sd_xl_img2img.py +1685 -0
  97. diffusers/pipelines/pag/pipeline_pag_hunyuandit.py +17 -5
  98. diffusers/pipelines/pag/pipeline_pag_kolors.py +1 -1
  99. diffusers/pipelines/pag/pipeline_pag_pixart_sigma.py +1 -1
  100. diffusers/pipelines/pag/pipeline_pag_sd.py +18 -6
  101. diffusers/pipelines/pag/pipeline_pag_sd_3.py +12 -3
  102. diffusers/pipelines/pag/pipeline_pag_sd_animatediff.py +5 -1
  103. diffusers/pipelines/pag/pipeline_pag_sd_img2img.py +1091 -0
  104. diffusers/pipelines/pag/pipeline_pag_sd_xl.py +18 -6
  105. diffusers/pipelines/pag/pipeline_pag_sd_xl_img2img.py +31 -16
  106. diffusers/pipelines/pag/pipeline_pag_sd_xl_inpaint.py +42 -19
  107. diffusers/pipelines/pia/pipeline_pia.py +2 -0
  108. diffusers/pipelines/pipeline_loading_utils.py +225 -27
  109. diffusers/pipelines/pipeline_utils.py +123 -180
  110. diffusers/pipelines/pixart_alpha/pipeline_pixart_alpha.py +1 -1
  111. diffusers/pipelines/pixart_alpha/pipeline_pixart_sigma.py +1 -1
  112. diffusers/pipelines/stable_cascade/pipeline_stable_cascade.py +35 -3
  113. diffusers/pipelines/stable_cascade/pipeline_stable_cascade_prior.py +2 -2
  114. diffusers/pipelines/stable_diffusion/pipeline_stable_diffusion.py +28 -6
  115. diffusers/pipelines/stable_diffusion/pipeline_stable_diffusion_img2img.py +1 -1
  116. diffusers/pipelines/stable_diffusion/pipeline_stable_diffusion_inpaint.py +1 -1
  117. diffusers/pipelines/stable_diffusion/pipeline_stable_diffusion_latent_upscale.py +241 -81
  118. diffusers/pipelines/stable_diffusion_3/pipeline_stable_diffusion_3.py +12 -3
  119. diffusers/pipelines/stable_diffusion_3/pipeline_stable_diffusion_3_img2img.py +20 -4
  120. diffusers/pipelines/stable_diffusion_3/pipeline_stable_diffusion_3_inpaint.py +3 -3
  121. diffusers/pipelines/stable_diffusion_k_diffusion/pipeline_stable_diffusion_k_diffusion.py +1 -1
  122. diffusers/pipelines/stable_diffusion_ldm3d/pipeline_stable_diffusion_ldm3d.py +16 -4
  123. diffusers/pipelines/stable_diffusion_panorama/pipeline_stable_diffusion_panorama.py +16 -4
  124. diffusers/pipelines/stable_diffusion_xl/pipeline_stable_diffusion_xl.py +16 -4
  125. diffusers/pipelines/stable_diffusion_xl/pipeline_stable_diffusion_xl_img2img.py +29 -14
  126. diffusers/pipelines/stable_diffusion_xl/pipeline_stable_diffusion_xl_inpaint.py +29 -14
  127. diffusers/pipelines/stable_video_diffusion/pipeline_stable_video_diffusion.py +1 -1
  128. diffusers/pipelines/t2i_adapter/pipeline_stable_diffusion_adapter.py +1 -1
  129. diffusers/pipelines/t2i_adapter/pipeline_stable_diffusion_xl_adapter.py +16 -4
  130. diffusers/pipelines/text_to_video_synthesis/pipeline_text_to_video_zero_sdxl.py +15 -3
  131. diffusers/quantizers/__init__.py +16 -0
  132. diffusers/quantizers/auto.py +126 -0
  133. diffusers/quantizers/base.py +233 -0
  134. diffusers/quantizers/bitsandbytes/__init__.py +2 -0
  135. diffusers/quantizers/bitsandbytes/bnb_quantizer.py +558 -0
  136. diffusers/quantizers/bitsandbytes/utils.py +306 -0
  137. diffusers/quantizers/quantization_config.py +391 -0
  138. diffusers/schedulers/scheduling_ddim.py +4 -1
  139. diffusers/schedulers/scheduling_ddim_cogvideox.py +4 -1
  140. diffusers/schedulers/scheduling_ddim_parallel.py +4 -1
  141. diffusers/schedulers/scheduling_ddpm.py +4 -1
  142. diffusers/schedulers/scheduling_ddpm_parallel.py +4 -1
  143. diffusers/schedulers/scheduling_deis_multistep.py +78 -1
  144. diffusers/schedulers/scheduling_dpmsolver_multistep.py +82 -1
  145. diffusers/schedulers/scheduling_dpmsolver_multistep_inverse.py +80 -1
  146. diffusers/schedulers/scheduling_dpmsolver_sde.py +125 -10
  147. diffusers/schedulers/scheduling_dpmsolver_singlestep.py +82 -1
  148. diffusers/schedulers/scheduling_edm_euler.py +8 -6
  149. diffusers/schedulers/scheduling_euler_ancestral_discrete.py +4 -1
  150. diffusers/schedulers/scheduling_euler_discrete.py +92 -7
  151. diffusers/schedulers/scheduling_flow_match_heun_discrete.py +4 -5
  152. diffusers/schedulers/scheduling_heun_discrete.py +114 -8
  153. diffusers/schedulers/scheduling_k_dpm_2_ancestral_discrete.py +116 -11
  154. diffusers/schedulers/scheduling_k_dpm_2_discrete.py +110 -8
  155. diffusers/schedulers/scheduling_lms_discrete.py +76 -1
  156. diffusers/schedulers/scheduling_sasolver.py +78 -1
  157. diffusers/schedulers/scheduling_unclip.py +4 -1
  158. diffusers/schedulers/scheduling_unipc_multistep.py +78 -1
  159. diffusers/training_utils.py +48 -18
  160. diffusers/utils/__init__.py +2 -1
  161. diffusers/utils/dummy_pt_objects.py +60 -0
  162. diffusers/utils/dummy_torch_and_transformers_objects.py +195 -0
  163. diffusers/utils/hub_utils.py +16 -4
  164. diffusers/utils/import_utils.py +31 -8
  165. diffusers/utils/loading_utils.py +28 -4
  166. diffusers/utils/peft_utils.py +3 -3
  167. diffusers/utils/testing_utils.py +59 -0
  168. {diffusers-0.30.2.dist-info → diffusers-0.31.0.dist-info}/METADATA +7 -6
  169. {diffusers-0.30.2.dist-info → diffusers-0.31.0.dist-info}/RECORD +173 -147
  170. {diffusers-0.30.2.dist-info → diffusers-0.31.0.dist-info}/WHEEL +1 -1
  171. {diffusers-0.30.2.dist-info → diffusers-0.31.0.dist-info}/LICENSE +0 -0
  172. {diffusers-0.30.2.dist-info → diffusers-0.31.0.dist-info}/entry_points.txt +0 -0
  173. {diffusers-0.30.2.dist-info → diffusers-0.31.0.dist-info}/top_level.txt +0 -0
@@ -1,6 +1,7 @@
1
1
  import os
2
2
  import tempfile
3
- from typing import Callable, List, Optional, Union
3
+ from typing import Any, Callable, List, Optional, Tuple, Union
4
+ from urllib.parse import unquote, urlparse
4
5
 
5
6
  import PIL.Image
6
7
  import PIL.ImageOps
@@ -80,12 +81,22 @@ def load_video(
80
81
  )
81
82
 
82
83
  if is_url:
83
- video_data = requests.get(video, stream=True).raw
84
- suffix = os.path.splitext(video)[1] or ".mp4"
84
+ response = requests.get(video, stream=True)
85
+ if response.status_code != 200:
86
+ raise ValueError(f"Failed to download video. Status code: {response.status_code}")
87
+
88
+ parsed_url = urlparse(video)
89
+ file_name = os.path.basename(unquote(parsed_url.path))
90
+
91
+ suffix = os.path.splitext(file_name)[1] or ".mp4"
85
92
  video_path = tempfile.NamedTemporaryFile(suffix=suffix, delete=False).name
93
+
86
94
  was_tempfile_created = True
95
+
96
+ video_data = response.iter_content(chunk_size=8192)
87
97
  with open(video_path, "wb") as f:
88
- f.write(video_data.read())
98
+ for chunk in video_data:
99
+ f.write(chunk)
89
100
 
90
101
  video = video_path
91
102
 
@@ -124,3 +135,16 @@ def load_video(
124
135
  pil_images = convert_method(pil_images)
125
136
 
126
137
  return pil_images
138
+
139
+
140
+ # Taken from `transformers`.
141
+ def get_module_from_name(module, tensor_name: str) -> Tuple[Any, str]:
142
+ if "." in tensor_name:
143
+ splits = tensor_name.split(".")
144
+ for split in splits[:-1]:
145
+ new_module = getattr(module, split)
146
+ if new_module is None:
147
+ raise ValueError(f"{module} has no attribute {split}.")
148
+ module = new_module
149
+ tensor_name = splits[-1]
150
+ return module, tensor_name
@@ -134,14 +134,14 @@ def unscale_lora_layers(model, weight: Optional[float] = None):
134
134
  """
135
135
  from peft.tuners.tuners_utils import BaseTunerLayer
136
136
 
137
- if weight == 1.0:
137
+ if weight is None or weight == 1.0:
138
138
  return
139
139
 
140
140
  for module in model.modules():
141
141
  if isinstance(module, BaseTunerLayer):
142
- if weight is not None and weight != 0:
142
+ if weight != 0:
143
143
  module.unscale_layer(weight)
144
- elif weight is not None and weight == 0:
144
+ else:
145
145
  for adapter_name in module.active_adapters:
146
146
  # if weight == 0 unscale should re-set the scale to the original value.
147
147
  module.set_scale(adapter_name, 1.0)
@@ -1,5 +1,6 @@
1
1
  import functools
2
2
  import importlib
3
+ import importlib.metadata
3
4
  import inspect
4
5
  import io
5
6
  import logging
@@ -27,6 +28,8 @@ from packaging import version
27
28
 
28
29
  from .import_utils import (
29
30
  BACKENDS_MAPPING,
31
+ is_accelerate_available,
32
+ is_bitsandbytes_available,
30
33
  is_compel_available,
31
34
  is_flax_available,
32
35
  is_note_seq_available,
@@ -252,6 +255,18 @@ def require_torch_2(test_case):
252
255
  )
253
256
 
254
257
 
258
+ def require_torch_version_greater_equal(torch_version):
259
+ """Decorator marking a test that requires torch with a specific version or greater."""
260
+
261
+ def decorator(test_case):
262
+ correct_torch_version = is_torch_available() and is_torch_version(">=", torch_version)
263
+ return unittest.skipUnless(
264
+ correct_torch_version, f"test requires torch with the version greater than or equal to {torch_version}"
265
+ )(test_case)
266
+
267
+ return decorator
268
+
269
+
255
270
  def require_torch_gpu(test_case):
256
271
  """Decorator marking a test that requires CUDA and PyTorch."""
257
272
  return unittest.skipUnless(is_torch_available() and torch_device == "cuda", "test requires PyTorch+CUDA")(
@@ -359,6 +374,20 @@ def require_timm(test_case):
359
374
  return unittest.skipUnless(is_timm_available(), "test requires timm")(test_case)
360
375
 
361
376
 
377
+ def require_bitsandbytes(test_case):
378
+ """
379
+ Decorator marking a test that requires bitsandbytes. These tests are skipped when bitsandbytes isn't installed.
380
+ """
381
+ return unittest.skipUnless(is_bitsandbytes_available(), "test requires bitsandbytes")(test_case)
382
+
383
+
384
+ def require_accelerate(test_case):
385
+ """
386
+ Decorator marking a test that requires accelerate. These tests are skipped when accelerate isn't installed.
387
+ """
388
+ return unittest.skipUnless(is_accelerate_available(), "test requires accelerate")(test_case)
389
+
390
+
362
391
  def require_peft_version_greater(peft_version):
363
392
  """
364
393
  Decorator marking a test that requires PEFT backend with a specific version, this would require some specific
@@ -376,6 +405,24 @@ def require_peft_version_greater(peft_version):
376
405
  return decorator
377
406
 
378
407
 
408
+ def require_transformers_version_greater(transformers_version):
409
+ """
410
+ Decorator marking a test that requires transformers with a specific version, this would require some specific
411
+ versions of PEFT and transformers.
412
+ """
413
+
414
+ def decorator(test_case):
415
+ correct_transformers_version = is_transformers_available() and version.parse(
416
+ version.parse(importlib.metadata.version("transformers")).base_version
417
+ ) > version.parse(transformers_version)
418
+ return unittest.skipUnless(
419
+ correct_transformers_version,
420
+ f"test requires transformers with the version greater than {transformers_version}",
421
+ )(test_case)
422
+
423
+ return decorator
424
+
425
+
379
426
  def require_accelerate_version_greater(accelerate_version):
380
427
  def decorator(test_case):
381
428
  correct_accelerate_version = is_peft_available() and version.parse(
@@ -388,6 +435,18 @@ def require_accelerate_version_greater(accelerate_version):
388
435
  return decorator
389
436
 
390
437
 
438
+ def require_bitsandbytes_version_greater(bnb_version):
439
+ def decorator(test_case):
440
+ correct_bnb_version = is_bitsandbytes_available() and version.parse(
441
+ version.parse(importlib.metadata.version("bitsandbytes")).base_version
442
+ ) > version.parse(bnb_version)
443
+ return unittest.skipUnless(
444
+ correct_bnb_version, f"Test requires bitsandbytes with the version greater than {bnb_version}."
445
+ )(test_case)
446
+
447
+ return decorator
448
+
449
+
391
450
  def deprecate_after_peft_backend(test_case):
392
451
  """
393
452
  Decorator marking a test that will be skipped after PEFT backend
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: diffusers
3
- Version: 0.30.2
3
+ Version: 0.31.0
4
4
  Summary: State-of-the-art diffusion in PyTorch and JAX.
5
5
  Home-page: https://github.com/huggingface/diffusers
6
6
  Author: The Hugging Face team (past and future) with the help of all our contributors (https://github.com/huggingface/diffusers/graphs/contributors)
@@ -55,7 +55,7 @@ Requires-Dist: accelerate>=0.31.0; extra == "dev"
55
55
  Requires-Dist: protobuf<4,>=3.20.3; extra == "dev"
56
56
  Requires-Dist: tensorboard; extra == "dev"
57
57
  Requires-Dist: peft>=0.6.0; extra == "dev"
58
- Requires-Dist: torch>=1.4; extra == "dev"
58
+ Requires-Dist: torch<2.5.0,>=1.4; extra == "dev"
59
59
  Requires-Dist: jax>=0.4.1; extra == "dev"
60
60
  Requires-Dist: jaxlib>=0.4.1; extra == "dev"
61
61
  Requires-Dist: flax>=0.4.1; extra == "dev"
@@ -89,7 +89,7 @@ Requires-Dist: scipy; extra == "test"
89
89
  Requires-Dist: torchvision; extra == "test"
90
90
  Requires-Dist: transformers>=4.41.2; extra == "test"
91
91
  Provides-Extra: torch
92
- Requires-Dist: torch>=1.4; extra == "torch"
92
+ Requires-Dist: torch<2.5.0,>=1.4; extra == "torch"
93
93
  Requires-Dist: accelerate>=0.31.0; extra == "torch"
94
94
  Provides-Extra: training
95
95
  Requires-Dist: accelerate>=0.31.0; extra == "training"
@@ -174,7 +174,7 @@ Generating outputs is super easy with 🤗 Diffusers. To generate an image from
174
174
  from diffusers import DiffusionPipeline
175
175
  import torch
176
176
 
177
- pipeline = DiffusionPipeline.from_pretrained("runwayml/stable-diffusion-v1-5", torch_dtype=torch.float16)
177
+ pipeline = DiffusionPipeline.from_pretrained("stable-diffusion-v1-5/stable-diffusion-v1-5", torch_dtype=torch.float16)
178
178
  pipeline.to("cuda")
179
179
  pipeline("An image of a squirrel in Picasso style").images[0]
180
180
  ```
@@ -245,7 +245,7 @@ Also, say 👋 in our public Discord channel <a href="https://discord.gg/G7tWnz9
245
245
  <tr style="border-top: 2px solid black">
246
246
  <td>Text-to-Image</td>
247
247
  <td><a href="https://huggingface.co/docs/diffusers/api/pipelines/stable_diffusion/text2img">Stable Diffusion Text-to-Image</a></td>
248
- <td><a href="https://huggingface.co/runwayml/stable-diffusion-v1-5"> runwayml/stable-diffusion-v1-5 </a></td>
248
+ <td><a href="https://huggingface.co/stable-diffusion-v1-5/stable-diffusion-v1-5"> stable-diffusion-v1-5/stable-diffusion-v1-5 </a></td>
249
249
  </tr>
250
250
  <tr>
251
251
  <td>Text-to-Image</td>
@@ -275,7 +275,7 @@ Also, say 👋 in our public Discord channel <a href="https://discord.gg/G7tWnz9
275
275
  <tr>
276
276
  <td>Text-guided Image-to-Image</td>
277
277
  <td><a href="https://huggingface.co/docs/diffusers/api/pipelines/stable_diffusion/img2img">Stable Diffusion Image-to-Image</a></td>
278
- <td><a href="https://huggingface.co/runwayml/stable-diffusion-v1-5"> runwayml/stable-diffusion-v1-5 </a></td>
278
+ <td><a href="https://huggingface.co/stable-diffusion-v1-5/stable-diffusion-v1-5"> stable-diffusion-v1-5/stable-diffusion-v1-5 </a></td>
279
279
  </tr>
280
280
  <tr style="border-top: 2px solid black">
281
281
  <td>Text-guided Image Inpainting</td>
@@ -303,6 +303,7 @@ Also, say 👋 in our public Discord channel <a href="https://discord.gg/G7tWnz9
303
303
 
304
304
  - https://github.com/microsoft/TaskMatrix
305
305
  - https://github.com/invoke-ai/InvokeAI
306
+ - https://github.com/InstantID/InstantID
306
307
  - https://github.com/apple/ml-stable-diffusion
307
308
  - https://github.com/Sanster/lama-cleaner
308
309
  - https://github.com/IDEA-Research/Grounded-Segment-Anything