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

import numpy as np
import PIL
from PIL import Image

8
9
from ...utils import (
    BaseOutput,
10
    OptionalDependencyNotAvailable,
11
    is_flax_available,
12
    is_k_diffusion_available,
13
    is_k_diffusion_version,
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


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

    Args:
        images (`List[PIL.Image.Image]` or `np.ndarray`)
28
29
            List of denoised PIL images of length `batch_size` or NumPy array of shape `(batch_size, height, width,
            num_channels)`.
30
        nsfw_content_detected (`List[bool]`)
31
32
            List indicating whether the corresponding generated image contains "not-safe-for-work" (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
40
41
42
43
44
try:
    if not (is_transformers_available() and is_torch_available()):
        raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
    from ...utils.dummy_torch_and_transformers_objects import *  # noqa F403
else:
45
    from .pipeline_cycle_diffusion import CycleDiffusionPipeline
46
    from .pipeline_stable_diffusion import StableDiffusionPipeline
YiYi Xu's avatar
YiYi Xu committed
47
    from .pipeline_stable_diffusion_attend_and_excite import StableDiffusionAttendAndExcitePipeline
48
    from .pipeline_stable_diffusion_gligen import StableDiffusionGLIGENPipeline
49
50
    from .pipeline_stable_diffusion_img2img import StableDiffusionImg2ImgPipeline
    from .pipeline_stable_diffusion_inpaint import StableDiffusionInpaintPipeline
51
    from .pipeline_stable_diffusion_inpaint_legacy import StableDiffusionInpaintPipelineLegacy
52
    from .pipeline_stable_diffusion_instruct_pix2pix import StableDiffusionInstructPix2PixPipeline
53
    from .pipeline_stable_diffusion_latent_upscale import StableDiffusionLatentUpscalePipeline
estelleafl's avatar
estelleafl committed
54
    from .pipeline_stable_diffusion_ldm3d import StableDiffusionLDM3DPipeline
55
    from .pipeline_stable_diffusion_model_editing import StableDiffusionModelEditingPipeline
56
    from .pipeline_stable_diffusion_panorama import StableDiffusionPanoramaPipeline
57
    from .pipeline_stable_diffusion_paradigms import StableDiffusionParadigmsPipeline
58
    from .pipeline_stable_diffusion_sag import StableDiffusionSAGPipeline
59
    from .pipeline_stable_diffusion_upscale import StableDiffusionUpscalePipeline
Will Berman's avatar
Will Berman committed
60
61
    from .pipeline_stable_unclip import StableUnCLIPPipeline
    from .pipeline_stable_unclip_img2img import StableUnCLIPImg2ImgPipeline
62
    from .safety_checker import StableDiffusionSafetyChecker
Will Berman's avatar
Will Berman committed
63
    from .stable_unclip_image_normalizer import StableUnCLIPImageNormalizer
64

65
try:
66
    if not (is_transformers_available() and is_torch_available() and is_transformers_version(">=", "4.25.0")):
67
68
        raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
69
    from ...utils.dummy_torch_and_transformers_objects import StableDiffusionImageVariationPipeline
70
71
else:
    from .pipeline_stable_diffusion_image_variation import StableDiffusionImageVariationPipeline
72

73
74

try:
75
    if not (is_transformers_available() and is_torch_available() and is_transformers_version(">=", "4.26.0")):
76
77
        raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
78
79
    from ...utils.dummy_torch_and_transformers_objects import (
        StableDiffusionDepth2ImgPipeline,
80
        StableDiffusionDiffEditPipeline,
81
82
        StableDiffusionPix2PixZeroPipeline,
    )
83
84
else:
    from .pipeline_stable_diffusion_depth2img import StableDiffusionDepth2ImgPipeline
85
    from .pipeline_stable_diffusion_diffedit import StableDiffusionDiffEditPipeline
86
    from .pipeline_stable_diffusion_pix2pix_zero import StableDiffusionPix2PixZeroPipeline
87
88


89
try:
90
91
92
93
94
95
    if not (
        is_torch_available()
        and is_transformers_available()
        and is_k_diffusion_available()
        and is_k_diffusion_version(">=", "0.0.12")
    ):
96
97
98
99
        raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
    from ...utils.dummy_torch_and_transformers_and_k_diffusion_objects import *  # noqa F403
else:
100
101
    from .pipeline_stable_diffusion_k_diffusion import StableDiffusionKDiffusionPipeline

102
103
104
105
106
107
try:
    if not (is_transformers_available() and is_onnx_available()):
        raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
    from ...utils.dummy_onnx_objects import *  # noqa F403
else:
108
    from .pipeline_onnx_stable_diffusion import OnnxStableDiffusionPipeline, StableDiffusionOnnxPipeline
109
110
    from .pipeline_onnx_stable_diffusion_img2img import OnnxStableDiffusionImg2ImgPipeline
    from .pipeline_onnx_stable_diffusion_inpaint import OnnxStableDiffusionInpaintPipeline
111
    from .pipeline_onnx_stable_diffusion_inpaint_legacy import OnnxStableDiffusionInpaintPipelineLegacy
112
    from .pipeline_onnx_stable_diffusion_upscale import OnnxStableDiffusionUpscalePipeline
113
114
115
116
117
118
119

if is_transformers_available() and is_flax_available():
    import flax

    @flax.struct.dataclass
    class FlaxStableDiffusionPipelineOutput(BaseOutput):
        """
120
        Output class for Flax-based Stable Diffusion pipelines.
121
122

        Args:
123
124
125
126
127
            images (`np.ndarray`):
                Denoised images of array shape of `(batch_size, height, width, num_channels)`.
            nsfw_content_detected (`List[bool]`):
                List indicating whether the corresponding generated image contains "not-safe-for-work" (nsfw) content
                or `None` if safety checking could not be performed.
128
129
        """

130
        images: np.ndarray
131
132
133
134
        nsfw_content_detected: List[bool]

    from ...schedulers.scheduling_pndm_flax import PNDMSchedulerState
    from .pipeline_flax_stable_diffusion import FlaxStableDiffusionPipeline
135
    from .pipeline_flax_stable_diffusion_img2img import FlaxStableDiffusionImg2ImgPipeline
136
    from .pipeline_flax_stable_diffusion_inpaint import FlaxStableDiffusionInpaintPipeline
137
    from .safety_checker_flax import FlaxStableDiffusionSafetyChecker