diff options
| author | Volpeon <git@volpeon.ink> | 2023-03-03 23:37:40 +0100 |
|---|---|---|
| committer | Volpeon <git@volpeon.ink> | 2023-03-03 23:37:40 +0100 |
| commit | 55fc031aebf48f22c9e646eb4d72246bfdbc5068 (patch) | |
| tree | 318c1eb5351fd96a3b408d7baf0d5ee6adcefa69 /pipelines | |
| parent | Removed offset noise from training, added init offset to pipeline (diff) | |
| download | textual-inversion-diff-55fc031aebf48f22c9e646eb4d72246bfdbc5068.tar.gz textual-inversion-diff-55fc031aebf48f22c9e646eb4d72246bfdbc5068.tar.bz2 textual-inversion-diff-55fc031aebf48f22c9e646eb4d72246bfdbc5068.zip | |
Changed init noise algorithm
Diffstat (limited to 'pipelines')
| -rw-r--r-- | pipelines/stable_diffusion/vlpn_stable_diffusion.py | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/pipelines/stable_diffusion/vlpn_stable_diffusion.py b/pipelines/stable_diffusion/vlpn_stable_diffusion.py index c4f7401..242be29 100644 --- a/pipelines/stable_diffusion/vlpn_stable_diffusion.py +++ b/pipelines/stable_diffusion/vlpn_stable_diffusion.py | |||
| @@ -306,13 +306,19 @@ class VlpnStableDiffusion(DiffusionPipeline): | |||
| 306 | 306 | ||
| 307 | return timesteps | 307 | return timesteps |
| 308 | 308 | ||
| 309 | def prepare_image(self, batch_size, width, height, dtype, device, generator=None): | 309 | def prepare_image(self, batch_size, width, height, max_offset, dtype, device, generator=None): |
| 310 | return torch.randn( | 310 | offset = (max_offset * (2 * torch.rand( |
| 311 | (batch_size, 1, 1, 1), | 311 | (batch_size, 1, 1, 1), |
| 312 | dtype=dtype, | 312 | dtype=dtype, |
| 313 | device=device, | 313 | device=device, |
| 314 | generator=generator | 314 | generator=generator |
| 315 | ).expand(batch_size, 3, width, height) | 315 | ) - 1)).expand(batch_size, 3, width, height) |
| 316 | image = (.1 * torch.normal( | ||
| 317 | mean=offset, | ||
| 318 | std=1, | ||
| 319 | generator=generator | ||
| 320 | )).clamp(-1, 1) | ||
| 321 | return image | ||
| 316 | 322 | ||
| 317 | def prepare_latents(self, init_image, timestep, batch_size, dtype, device, generator=None): | 323 | def prepare_latents(self, init_image, timestep, batch_size, dtype, device, generator=None): |
| 318 | init_image = init_image.to(device=device, dtype=dtype) | 324 | init_image = init_image.to(device=device, dtype=dtype) |
| @@ -376,6 +382,7 @@ class VlpnStableDiffusion(DiffusionPipeline): | |||
| 376 | eta: float = 0.0, | 382 | eta: float = 0.0, |
| 377 | generator: Optional[Union[torch.Generator, List[torch.Generator]]] = None, | 383 | generator: Optional[Union[torch.Generator, List[torch.Generator]]] = None, |
| 378 | image: Optional[Union[torch.FloatTensor, PIL.Image.Image]] = None, | 384 | image: Optional[Union[torch.FloatTensor, PIL.Image.Image]] = None, |
| 385 | max_image_offset: float = 1.0, | ||
| 379 | output_type: str = "pil", | 386 | output_type: str = "pil", |
| 380 | return_dict: bool = True, | 387 | return_dict: bool = True, |
| 381 | callback: Optional[Callable[[int, int, torch.FloatTensor], None]] = None, | 388 | callback: Optional[Callable[[int, int, torch.FloatTensor], None]] = None, |
| @@ -469,6 +476,7 @@ class VlpnStableDiffusion(DiffusionPipeline): | |||
| 469 | batch_size * num_images_per_prompt, | 476 | batch_size * num_images_per_prompt, |
| 470 | width, | 477 | width, |
| 471 | height, | 478 | height, |
| 479 | max_image_offset, | ||
| 472 | prompt_embeds.dtype, | 480 | prompt_embeds.dtype, |
| 473 | device, | 481 | device, |
| 474 | generator | 482 | generator |
