Spaces:
Running
on
Zero
Running
on
Zero
""" | |
Multi-scale diffusion presets for quality and performance optimization. | |
This module provides predefined configurations for multi-scale diffusion that balance | |
quality and performance based on different use cases. | |
""" | |
from typing import NamedTuple, Dict, Any | |
class MultiscalePreset(NamedTuple): | |
"""#### Class representing a multi-scale diffusion preset. | |
#### Args: | |
- `name` (str): The name of the preset. | |
- `description` (str): Description of the preset's purpose. | |
- `enable_multiscale` (bool): Whether multi-scale diffusion is enabled. | |
- `multiscale_factor` (float): Scale factor for intermediate steps (0.1-1.0). | |
- `multiscale_fullres_start` (int): Number of first steps at full resolution. | |
- `multiscale_fullres_end` (int): Number of last steps at full resolution. | |
- `multiscale_intermittent_fullres` (bool): Whether to use intermittent full-res. | |
""" | |
name: str | |
description: str | |
enable_multiscale: bool | |
multiscale_factor: float | |
multiscale_fullres_start: int | |
multiscale_fullres_end: int | |
multiscale_intermittent_fullres: bool | |
def as_dict(self) -> Dict[str, Any]: | |
"""#### Convert the preset to a dictionary. | |
#### Returns: | |
- `Dict[str, Any]`: The preset parameters as a dictionary. | |
""" | |
return { | |
"enable_multiscale": self.enable_multiscale, | |
"multiscale_factor": self.multiscale_factor, | |
"multiscale_fullres_start": self.multiscale_fullres_start, | |
"multiscale_fullres_end": self.multiscale_fullres_end, | |
"multiscale_intermittent_fullres": self.multiscale_intermittent_fullres, | |
} | |
# Predefined multi-scale diffusion presets | |
MULTISCALE_PRESETS = { | |
"quality": MultiscalePreset( | |
name="Quality", | |
description="High quality preset with intermittent full-res for best image quality", | |
enable_multiscale=True, | |
multiscale_factor=0.5, | |
multiscale_fullres_start=10, | |
multiscale_fullres_end=8, | |
multiscale_intermittent_fullres=True, | |
), | |
"performance": MultiscalePreset( | |
name="Performance", | |
description="Performance-oriented preset with aggressive downscaling for maximum speed", | |
enable_multiscale=True, | |
multiscale_factor=0.25, | |
multiscale_fullres_start=5, | |
multiscale_fullres_end=8, | |
multiscale_intermittent_fullres=True, | |
), | |
"balanced": MultiscalePreset( | |
name="Balanced", | |
description="Balanced preset offering good quality and performance", | |
enable_multiscale=True, | |
multiscale_factor=0.5, | |
multiscale_fullres_start=5, | |
multiscale_fullres_end=8, | |
multiscale_intermittent_fullres=True, | |
), | |
"disabled": MultiscalePreset( | |
name="Disabled", | |
description="Multi-scale diffusion disabled - full resolution throughout", | |
enable_multiscale=False, | |
multiscale_factor=1.0, | |
multiscale_fullres_start=0, | |
multiscale_fullres_end=0, | |
multiscale_intermittent_fullres=False, | |
), | |
} | |
def get_preset(preset_name: str) -> MultiscalePreset: | |
"""#### Get a multi-scale diffusion preset by name. | |
#### Args: | |
- `preset_name` (str): The name of the preset to retrieve. | |
#### Returns: | |
- `MultiscalePreset`: The requested preset. | |
#### Raises: | |
- `KeyError`: If the preset name is not found. | |
""" | |
if preset_name not in MULTISCALE_PRESETS: | |
available_presets = ", ".join(MULTISCALE_PRESETS.keys()) | |
raise KeyError( | |
f"Preset '{preset_name}' not found. Available presets: {available_presets}" | |
) | |
return MULTISCALE_PRESETS[preset_name] | |
def get_preset_parameters(preset_name: str) -> Dict[str, Any]: | |
"""#### Get multi-scale diffusion parameters for a preset. | |
#### Args: | |
- `preset_name` (str): The name of the preset. | |
#### Returns: | |
- `Dict[str, Any]`: The preset parameters. | |
""" | |
return get_preset(preset_name).as_dict | |
def list_presets() -> Dict[str, str]: | |
"""#### List all available multi-scale diffusion presets. | |
#### Returns: | |
- `Dict[str, str]`: Dictionary mapping preset names to descriptions. | |
""" | |
return {name: preset.description for name, preset in MULTISCALE_PRESETS.items()} | |
def apply_preset_to_kwargs(preset_name: str, kwargs: Dict[str, Any]) -> Dict[str, Any]: | |
"""#### Apply a multi-scale preset to keyword arguments. | |
#### Args: | |
- `preset_name` (str): The name of the preset to apply. | |
- `kwargs` (Dict[str, Any]): Existing keyword arguments. | |
#### Returns: | |
- `Dict[str, Any]`: Updated keyword arguments with preset parameters. | |
""" | |
preset_params = get_preset_parameters(preset_name) | |
kwargs.update(preset_params) | |
return kwargs | |