|
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) |
|
|