__init__.py 4.1 KB
Newer Older
1
from dataclasses import dataclass
2
from typing import List, Optional, Union
3
4
5
6
7
8

import numpy as np

import PIL
from PIL import Image

9
10
from ...utils import (
    BaseOutput,
11
    OptionalDependencyNotAvailable,
12
    is_flax_available,
13
    is_k_diffusion_available,
14
15
16
17
18
    is_onnx_available,
    is_torch_available,
    is_transformers_available,
    is_transformers_version,
)
19
20
21
22
23
24
25
26
27
28
29
30
31


@dataclass
class StableDiffusionPipelineOutput(BaseOutput):
    """
    Output class for Stable Diffusion pipelines.

    Args:
        images (`List[PIL.Image.Image]` or `np.ndarray`)
            List of denoised PIL images of length `batch_size` or numpy array of shape `(batch_size, height, width,
            num_channels)`. PIL images or numpy array present the denoised images of the diffusion pipeline.
        nsfw_content_detected (`List[bool]`)
            List of flags denoting whether the corresponding generated image likely represents "not-safe-for-work"
32
            (nsfw) content, or `None` if safety checking could not be performed.
33
34
35
    """

    images: Union[List[PIL.Image.Image], np.ndarray]
36
    nsfw_content_detected: Optional[List[bool]]
Suraj Patil's avatar
Suraj Patil committed
37
38


39
if is_transformers_available() and is_torch_available():
40
    from .pipeline_cycle_diffusion import CycleDiffusionPipeline
41
42
43
    from .pipeline_stable_diffusion import StableDiffusionPipeline
    from .pipeline_stable_diffusion_img2img import StableDiffusionImg2ImgPipeline
    from .pipeline_stable_diffusion_inpaint import StableDiffusionInpaintPipeline
44
    from .pipeline_stable_diffusion_inpaint_legacy import StableDiffusionInpaintPipelineLegacy
45
    from .pipeline_stable_diffusion_upscale import StableDiffusionUpscalePipeline
46
    from .safety_checker import StableDiffusionSafetyChecker
47

48
try:
49
    if not (is_transformers_available() and is_torch_available()):
50
51
        raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
52
    from ...utils.dummy_torch_and_transformers_objects import StableDiffusionImageVariationPipeline
53
54
else:
    from .pipeline_stable_diffusion_image_variation import StableDiffusionImageVariationPipeline
55

56
57
58
59
60
61
62
63
64
65

try:
    if not (is_transformers_available() and is_torch_available() and is_transformers_version(">=", "4.26.0.dev0")):
        raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
    from ...utils.dummy_torch_and_transformers_objects import StableDiffusionDepth2ImgPipeline
else:
    from .pipeline_stable_diffusion_depth2img import StableDiffusionDepth2ImgPipeline


66
67
68
69
70
71
try:
    if not (is_torch_available() and is_transformers_available() and is_k_diffusion_available()):
        raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
    from ...utils.dummy_torch_and_transformers_and_k_diffusion_objects import *  # noqa F403
else:
72
73
    from .pipeline_stable_diffusion_k_diffusion import StableDiffusionKDiffusionPipeline

74
if is_transformers_available() and is_onnx_available():
75
    from .pipeline_onnx_stable_diffusion import OnnxStableDiffusionPipeline, StableDiffusionOnnxPipeline
76
77
    from .pipeline_onnx_stable_diffusion_img2img import OnnxStableDiffusionImg2ImgPipeline
    from .pipeline_onnx_stable_diffusion_inpaint import OnnxStableDiffusionInpaintPipeline
78
    from .pipeline_onnx_stable_diffusion_inpaint_legacy import OnnxStableDiffusionInpaintPipelineLegacy
79
80
81
82
83
84
85
86
87
88

if is_transformers_available() and is_flax_available():
    import flax

    @flax.struct.dataclass
    class FlaxStableDiffusionPipelineOutput(BaseOutput):
        """
        Output class for Stable Diffusion pipelines.

        Args:
89
90
            images (`np.ndarray`)
                Array of shape `(batch_size, height, width, num_channels)` with images from the diffusion pipeline.
91
92
93
94
95
            nsfw_content_detected (`List[bool]`)
                List of flags denoting whether the corresponding generated image likely represents "not-safe-for-work"
                (nsfw) content.
        """

96
        images: np.ndarray
97
98
99
100
101
        nsfw_content_detected: List[bool]

    from ...schedulers.scheduling_pndm_flax import PNDMSchedulerState
    from .pipeline_flax_stable_diffusion import FlaxStableDiffusionPipeline
    from .safety_checker_flax import FlaxStableDiffusionSafetyChecker