mirror of
https://github.com/invoke-ai/InvokeAI
synced 2024-08-30 20:32:17 +00:00
Remove dead code related to an old symmetry feature.
This commit is contained in:
parent
845c4e93ae
commit
cad3e5dbd7
@ -58,7 +58,6 @@ from ...backend.stable_diffusion.diffusers_pipeline import (
|
|||||||
T2IAdapterData,
|
T2IAdapterData,
|
||||||
image_resized_to_grid_as_tensor,
|
image_resized_to_grid_as_tensor,
|
||||||
)
|
)
|
||||||
from ...backend.stable_diffusion.diffusion.shared_invokeai_diffusion import PostprocessingSettings
|
|
||||||
from ...backend.stable_diffusion.schedulers import SCHEDULER_MAP
|
from ...backend.stable_diffusion.schedulers import SCHEDULER_MAP
|
||||||
from ...backend.util.devices import choose_precision, choose_torch_device
|
from ...backend.util.devices import choose_precision, choose_torch_device
|
||||||
from .baseinvocation import (
|
from .baseinvocation import (
|
||||||
@ -374,12 +373,6 @@ class DenoiseLatentsInvocation(BaseInvocation):
|
|||||||
cond_text_embedding_masks=cond_text_embedding_masks,
|
cond_text_embedding_masks=cond_text_embedding_masks,
|
||||||
guidance_scale=self.cfg_scale,
|
guidance_scale=self.cfg_scale,
|
||||||
guidance_rescale_multiplier=self.cfg_rescale_multiplier,
|
guidance_rescale_multiplier=self.cfg_rescale_multiplier,
|
||||||
postprocessing_settings=PostprocessingSettings(
|
|
||||||
threshold=0.0, # threshold,
|
|
||||||
warmup=0.2, # warmup,
|
|
||||||
h_symmetry_time_pct=None, # h_symmetry_time_pct,
|
|
||||||
v_symmetry_time_pct=None, # v_symmetry_time_pct,
|
|
||||||
),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
conditioning_data = conditioning_data.add_scheduler_args_if_applicable(
|
conditioning_data = conditioning_data.add_scheduler_args_if_applicable(
|
||||||
|
@ -461,15 +461,6 @@ class StableDiffusionGeneratorPipeline(StableDiffusionPipeline):
|
|||||||
ip_adapter_unet_patcher=ip_adapter_unet_patcher,
|
ip_adapter_unet_patcher=ip_adapter_unet_patcher,
|
||||||
)
|
)
|
||||||
latents = step_output.prev_sample
|
latents = step_output.prev_sample
|
||||||
|
|
||||||
latents = self.invokeai_diffuser.do_latent_postprocessing(
|
|
||||||
postprocessing_settings=conditioning_data.postprocessing_settings,
|
|
||||||
latents=latents,
|
|
||||||
sigma=batched_t,
|
|
||||||
step_index=i,
|
|
||||||
total_step_count=len(timesteps),
|
|
||||||
)
|
|
||||||
|
|
||||||
predicted_original = getattr(step_output, "pred_original_sample", None)
|
predicted_original = getattr(step_output, "pred_original_sample", None)
|
||||||
|
|
||||||
if callback is not None:
|
if callback is not None:
|
||||||
|
@ -43,14 +43,6 @@ class SDXLConditioningInfo(BasicConditioningInfo):
|
|||||||
return super().to(device=device, dtype=dtype)
|
return super().to(device=device, dtype=dtype)
|
||||||
|
|
||||||
|
|
||||||
@dataclass(frozen=True)
|
|
||||||
class PostprocessingSettings:
|
|
||||||
threshold: float
|
|
||||||
warmup: float
|
|
||||||
h_symmetry_time_pct: Optional[float]
|
|
||||||
v_symmetry_time_pct: Optional[float]
|
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
class IPAdapterConditioningInfo:
|
class IPAdapterConditioningInfo:
|
||||||
cond_image_prompt_embeds: torch.Tensor
|
cond_image_prompt_embeds: torch.Tensor
|
||||||
@ -82,10 +74,6 @@ class ConditioningData:
|
|||||||
"""
|
"""
|
||||||
guidance_rescale_multiplier: float = 0
|
guidance_rescale_multiplier: float = 0
|
||||||
scheduler_args: dict[str, Any] = field(default_factory=dict)
|
scheduler_args: dict[str, Any] = field(default_factory=dict)
|
||||||
"""
|
|
||||||
Additional arguments to pass to invokeai_diffuser.do_latent_postprocessing().
|
|
||||||
"""
|
|
||||||
postprocessing_settings: Optional[PostprocessingSettings] = None
|
|
||||||
|
|
||||||
ip_adapter_conditioning: Optional[list[IPAdapterConditioningInfo]] = None
|
ip_adapter_conditioning: Optional[list[IPAdapterConditioningInfo]] = None
|
||||||
|
|
||||||
|
@ -14,7 +14,6 @@ from invokeai.backend.stable_diffusion.diffusion.conditioning_data import (
|
|||||||
BasicConditioningInfo,
|
BasicConditioningInfo,
|
||||||
ConditioningData,
|
ConditioningData,
|
||||||
ExtraConditioningInfo,
|
ExtraConditioningInfo,
|
||||||
PostprocessingSettings,
|
|
||||||
SDXLConditioningInfo,
|
SDXLConditioningInfo,
|
||||||
)
|
)
|
||||||
from invokeai.backend.stable_diffusion.diffusion.regional_prompt_attention import Range, RegionalPromptData
|
from invokeai.backend.stable_diffusion.diffusion.regional_prompt_attention import Range, RegionalPromptData
|
||||||
@ -374,19 +373,6 @@ class InvokeAIDiffuserComponent:
|
|||||||
|
|
||||||
return unconditioned_next_x, conditioned_next_x
|
return unconditioned_next_x, conditioned_next_x
|
||||||
|
|
||||||
def do_latent_postprocessing(
|
|
||||||
self,
|
|
||||||
postprocessing_settings: PostprocessingSettings,
|
|
||||||
latents: torch.Tensor,
|
|
||||||
sigma,
|
|
||||||
step_index,
|
|
||||||
total_step_count,
|
|
||||||
) -> torch.Tensor:
|
|
||||||
if postprocessing_settings is not None:
|
|
||||||
percent_through = step_index / total_step_count
|
|
||||||
latents = self.apply_symmetry(postprocessing_settings, latents, percent_through)
|
|
||||||
return latents
|
|
||||||
|
|
||||||
def _concat_conditionings_for_batch(self, unconditioning, conditioning):
|
def _concat_conditionings_for_batch(self, unconditioning, conditioning):
|
||||||
def _pad_conditioning(cond, target_len, encoder_attention_mask):
|
def _pad_conditioning(cond, target_len, encoder_attention_mask):
|
||||||
conditioning_attention_mask = torch.ones(
|
conditioning_attention_mask = torch.ones(
|
||||||
@ -676,64 +662,3 @@ class InvokeAIDiffuserComponent:
|
|||||||
scaled_delta = (conditioned_next_x - unconditioned_next_x) * guidance_scale
|
scaled_delta = (conditioned_next_x - unconditioned_next_x) * guidance_scale
|
||||||
combined_next_x = unconditioned_next_x + scaled_delta
|
combined_next_x = unconditioned_next_x + scaled_delta
|
||||||
return combined_next_x
|
return combined_next_x
|
||||||
|
|
||||||
def apply_symmetry(
|
|
||||||
self,
|
|
||||||
postprocessing_settings: PostprocessingSettings,
|
|
||||||
latents: torch.Tensor,
|
|
||||||
percent_through: float,
|
|
||||||
) -> torch.Tensor:
|
|
||||||
# Reset our last percent through if this is our first step.
|
|
||||||
if percent_through == 0.0:
|
|
||||||
self.last_percent_through = 0.0
|
|
||||||
|
|
||||||
if postprocessing_settings is None:
|
|
||||||
return latents
|
|
||||||
|
|
||||||
# Check for out of bounds
|
|
||||||
h_symmetry_time_pct = postprocessing_settings.h_symmetry_time_pct
|
|
||||||
if h_symmetry_time_pct is not None and (h_symmetry_time_pct <= 0.0 or h_symmetry_time_pct > 1.0):
|
|
||||||
h_symmetry_time_pct = None
|
|
||||||
|
|
||||||
v_symmetry_time_pct = postprocessing_settings.v_symmetry_time_pct
|
|
||||||
if v_symmetry_time_pct is not None and (v_symmetry_time_pct <= 0.0 or v_symmetry_time_pct > 1.0):
|
|
||||||
v_symmetry_time_pct = None
|
|
||||||
|
|
||||||
dev = latents.device.type
|
|
||||||
|
|
||||||
latents.to(device="cpu")
|
|
||||||
|
|
||||||
if (
|
|
||||||
h_symmetry_time_pct is not None
|
|
||||||
and self.last_percent_through < h_symmetry_time_pct
|
|
||||||
and percent_through >= h_symmetry_time_pct
|
|
||||||
):
|
|
||||||
# Horizontal symmetry occurs on the 3rd dimension of the latent
|
|
||||||
width = latents.shape[3]
|
|
||||||
x_flipped = torch.flip(latents, dims=[3])
|
|
||||||
latents = torch.cat(
|
|
||||||
[
|
|
||||||
latents[:, :, :, 0 : int(width / 2)],
|
|
||||||
x_flipped[:, :, :, int(width / 2) : int(width)],
|
|
||||||
],
|
|
||||||
dim=3,
|
|
||||||
)
|
|
||||||
|
|
||||||
if (
|
|
||||||
v_symmetry_time_pct is not None
|
|
||||||
and self.last_percent_through < v_symmetry_time_pct
|
|
||||||
and percent_through >= v_symmetry_time_pct
|
|
||||||
):
|
|
||||||
# Vertical symmetry occurs on the 2nd dimension of the latent
|
|
||||||
height = latents.shape[2]
|
|
||||||
y_flipped = torch.flip(latents, dims=[2])
|
|
||||||
latents = torch.cat(
|
|
||||||
[
|
|
||||||
latents[:, :, 0 : int(height / 2)],
|
|
||||||
y_flipped[:, :, int(height / 2) : int(height)],
|
|
||||||
],
|
|
||||||
dim=2,
|
|
||||||
)
|
|
||||||
|
|
||||||
self.last_percent_through = percent_through
|
|
||||||
return latents.to(device=dev)
|
|
||||||
|
Loading…
Reference in New Issue
Block a user