| from dataclasses import dataclass |
| from enum import Enum |
| from typing import TYPE_CHECKING, List, Optional, Union |
|
|
| import numpy as np |
| import PIL |
| from PIL import Image |
|
|
| from ...utils import ( |
| DIFFUSERS_SLOW_IMPORT, |
| BaseOutput, |
| OptionalDependencyNotAvailable, |
| _LazyModule, |
| get_objects_from_module, |
| is_torch_available, |
| is_transformers_available, |
| ) |
|
|
|
|
| @dataclass |
| class SafetyConfig(object): |
| WEAK = { |
| "sld_warmup_steps": 15, |
| "sld_guidance_scale": 20, |
| "sld_threshold": 0.0, |
| "sld_momentum_scale": 0.0, |
| "sld_mom_beta": 0.0, |
| } |
| MEDIUM = { |
| "sld_warmup_steps": 10, |
| "sld_guidance_scale": 1000, |
| "sld_threshold": 0.01, |
| "sld_momentum_scale": 0.3, |
| "sld_mom_beta": 0.4, |
| } |
| STRONG = { |
| "sld_warmup_steps": 7, |
| "sld_guidance_scale": 2000, |
| "sld_threshold": 0.025, |
| "sld_momentum_scale": 0.5, |
| "sld_mom_beta": 0.7, |
| } |
| MAX = { |
| "sld_warmup_steps": 0, |
| "sld_guidance_scale": 5000, |
| "sld_threshold": 1.0, |
| "sld_momentum_scale": 0.5, |
| "sld_mom_beta": 0.7, |
| } |
|
|
|
|
| _dummy_objects = {} |
| _additional_imports = {} |
| _import_structure = {} |
|
|
| _additional_imports.update({"SafetyConfig": SafetyConfig}) |
|
|
| try: |
| if not (is_transformers_available() and is_torch_available()): |
| raise OptionalDependencyNotAvailable() |
| except OptionalDependencyNotAvailable: |
| from ...utils import dummy_torch_and_transformers_objects |
|
|
| _dummy_objects.update(get_objects_from_module(dummy_torch_and_transformers_objects)) |
| else: |
| _import_structure.update( |
| { |
| "pipeline_output": ["StableDiffusionSafePipelineOutput"], |
| "pipeline_stable_diffusion_safe": ["StableDiffusionPipelineSafe"], |
| "safety_checker": ["StableDiffusionSafetyChecker"], |
| } |
| ) |
|
|
|
|
| if TYPE_CHECKING or DIFFUSERS_SLOW_IMPORT: |
| try: |
| if not (is_transformers_available() and is_torch_available()): |
| raise OptionalDependencyNotAvailable() |
| except OptionalDependencyNotAvailable: |
| from ...utils.dummy_torch_and_transformers_objects import * |
| else: |
| from .pipeline_output import StableDiffusionSafePipelineOutput |
| from .pipeline_stable_diffusion_safe import StableDiffusionPipelineSafe |
| from .safety_checker import SafeStableDiffusionSafetyChecker |
|
|
| else: |
| import sys |
|
|
| sys.modules[__name__] = _LazyModule( |
| __name__, |
| globals()["__file__"], |
| _import_structure, |
| module_spec=__spec__, |
| ) |
|
|
| for name, value in _dummy_objects.items(): |
| setattr(sys.modules[__name__], name, value) |
| for name, value in _additional_imports.items(): |
| setattr(sys.modules[__name__], name, value) |
|
|