Spaces:
Running
on
Zero
Running
on
Zero
File size: 5,001 Bytes
8a58a6e |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 |
"""
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
@property
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
|