Diffusers 文档
VAE 图像处理器
并获得增强的文档体验
开始使用
VAE 图像处理器
VaeImageProcessor
提供统一的 API,用于 StableDiffusionPipeline 准备 VAE 编码的图像输入并在解码后处理输出。这包括调整大小、归一化以及 PIL 图像、PyTorch 和 NumPy 数组之间的转换等操作。
所有带有 VaeImageProcessor
的管道都接受 PIL 图像、PyTorch 张量或 NumPy 数组作为图像输入,并根据用户提供的 output_type
参数返回输出。您可以将编码后的图像潜在特征直接传递给管道,并使用 output_type
参数(例如 output_type="latent"
)将潜在特征作为特定输出从管道返回。这允许您将一个管道生成的潜在特征传递给另一个管道作为输入,而无需离开潜在空间。它还使得通过在不同管道之间直接传递 PyTorch 张量来更容易地同时使用多个管道。
VaeImageProcessor
class diffusers.image_processor.VaeImageProcessor
< source >( do_resize: bool = True vae_scale_factor: int = 8 vae_latent_channels: int = 4 resample: str = 'lanczos' reducing_gap: int = None do_normalize: bool = True do_binarize: bool = False do_convert_rgb: bool = False do_convert_grayscale: bool = False )
参数
- do_resize (
bool
, 可选, 默认为True
) — 是否将图像的 (高度, 宽度) 尺寸缩小为vae_scale_factor
的倍数。可以接受来自 image_processor.VaeImageProcessor.preprocess() 方法的height
和width
参数。 - vae_scale_factor (
int
, 可选, 默认为8
) — VAE 缩放因子。如果do_resize
为True
,图像将自动调整为该因子的倍数。 - resample (
str
, 可选, 默认为lanczos
) — 调整图像大小时使用的重采样滤波器。 - do_normalize (
bool
, 可选, 默认为True
) — 是否将图像归一化到 [-1,1]。 - do_binarize (
bool
, 可选, 默认为False
) — 是否将图像二值化为 0/1。 - do_convert_rgb (
bool
, 可选, 默认为False
) — 是否将图像转换为 RGB 格式。 - do_convert_grayscale (
bool
, 可选, 默认为False
) — 是否将图像转换为灰度格式。
VAE 图像处理器。
应用叠加
< source >( mask: Image init_image: Image image: Image crop_coords: typing.Optional[typing.Tuple[int, int, int, int]] = None ) → PIL.Image.Image
在原始图像上叠加遮罩和修复后的图像。
二值化
< source >( image: Image ) → PIL.Image.Image
创建遮罩。
模糊
< source >( image: Image blur_factor: int = 4 ) → PIL.Image.Image
对图像应用高斯模糊。
转换为灰度
< source >( image: Image ) → PIL.Image.Image
将给定的 PIL 图像转换为灰度。
转换为 RGB
< source >( image: Image ) → PIL.Image.Image
将 PIL 图像转换为 RGB 格式。
去归一化
< source >( images: typing.Union[numpy.ndarray, torch.Tensor] ) → np.ndarray
或 torch.Tensor
将图像数组去归一化到 [0,1]。
获取裁剪区域
< source >( mask_image: Image width: int height: int pad = 0 ) → tuple
查找图像中包含所有遮罩区域的矩形区域,并扩展该区域以匹配原始图像的宽高比;例如,如果用户在 128x32 区域绘制遮罩,并且处理尺寸为 512x512,则该区域将扩展到 128x128。
获取默认高度和宽度
< source >( image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor] height: typing.Optional[int] = None width: typing.Optional[int] = None ) → Tuple[int, int]
参数
- image (
Union[PIL.Image.Image, np.ndarray, torch.Tensor]
) — 图像输入,可以是 PIL 图像、NumPy 数组或 PyTorch 张量。如果是 NumPy 数组,其形状应为[batch, height, width]
或[batch, height, width, channels]
。如果是 PyTorch 张量,其形状应为[batch, channels, height, width]
。 - height (
Optional[int]
, 可选, 默认为None
) — 预处理图像的高度。如果为None
,将使用image
输入的高度。 - width (
Optional[int]
, 可选, 默认为None
) — 预处理图像的宽度。如果为None
,将使用image
输入的宽度。
返回
Tuple[int, int]
一个包含高度和宽度的元组,两者都已调整为 vae_scale_factor
的最近整数倍。
返回图像的高度和宽度,已缩减到 vae_scale_factor
的下一个整数倍。
归一化
< source >( images: typing.Union[numpy.ndarray, torch.Tensor] ) → np.ndarray
或 torch.Tensor
将图像数组标准化为[-1,1]。
numpy_to_pil
< source >( images: ndarray ) → List[PIL.Image.Image]
将NumPy图像或图像批次转换为PIL图像。
numpy_to_pt
< source >( images: ndarray ) → torch.Tensor
将NumPy图像转换为PyTorch张量。
pil_to_numpy
< source >( images: typing.Union[typing.List[PIL.Image.Image], PIL.Image.Image] ) → np.ndarray
将PIL图像或PIL图像列表转换为NumPy数组。
postprocess
< source >( image: Tensor output_type: str = 'pil' do_denormalize: typing.Optional[typing.List[bool]] = None ) → PIL.Image.Image
, np.ndarray
or torch.Tensor
将图像输出从张量后处理为 output_type
。
preprocess
< source >( image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, typing.List[PIL.Image.Image], typing.List[numpy.ndarray], typing.List[torch.Tensor]] height: typing.Optional[int] = None width: typing.Optional[int] = None resize_mode: str = 'default' crops_coords: typing.Optional[typing.Tuple[int, int, int, int]] = None ) → torch.Tensor
参数
- image (
PipelineImageInput
) — 图像输入,接受的格式为 PIL 图像、NumPy 数组、PyTorch 张量;也接受支持的格式列表。 - height (
int
, 可选) — 预处理图像的高度。如果为None
,将使用get_default_height_width()
获取默认高度。 - width (
int
, 可选) — 预处理后的宽度。如果为None
,将使用get_default_height_width()
获取默认宽度。 - resize_mode (
str
, 可选, 默认为default
) — 调整大小模式,可以是default
或fill
之一。如果为default
,图像将调整大小以适应指定的宽度和高度,并且可能不保持原始纵横比。如果为fill
,图像将调整大小以适应指定的宽度和高度,保持纵横比,然后将图像居中放置在维度内,并用图像数据填充空余部分。如果为crop
,图像将调整大小以适应指定的宽度和高度,保持纵横比,然后将图像居中放置在维度内,并裁剪多余部分。请注意,调整大小模式fill
和crop
仅支持 PIL 图像输入。 - crops_coords (
List[Tuple[int, int, int, int]]
, 可选, 默认为None
) — 批次中每个图像的裁剪坐标。如果为None
,则不裁剪图像。
返回
torch.Tensor
预处理后的图像。
预处理图像输入。
pt_to_numpy
< source >( images: Tensor ) → np.ndarray
将 PyTorch 张量转换为 NumPy 图像。
resize
< source >( image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor] height: int width: int resize_mode: str = 'default' ) → PIL.Image.Image
, np.ndarray
or torch.Tensor
参数
- image (
PIL.Image.Image
,np.ndarray
ortorch.Tensor
) — 图像输入,可以是PIL图像、NumPy数组或PyTorch张量。 - height (
int
) — 要调整到的高度。 - width (
int
) — 要调整到的宽度。 - resize_mode (
str
, 可选, 默认为default
) — 要使用的调整大小模式,可以是default
或fill
之一。如果为default
,图像将调整大小以适应指定的宽度和高度,并且可能不保持原始纵横比。如果为fill
,图像将调整大小以适应指定的宽度和高度,保持纵横比,然后将图像居中放置在维度内,并用图像数据填充空余部分。如果为crop
,图像将调整大小以适应指定的宽度和高度,保持纵横比,然后将图像居中放置在维度内,并裁剪多余部分。请注意,调整大小模式fill
和crop
仅支持 PIL 图像输入。
返回
PIL.Image.Image
、np.ndarray
或 torch.Tensor
调整大小后的图像。
调整图像大小。
VaeImageProcessorLDM3D
VaeImageProcessorLDM3D
接受 RGB 和深度输入并返回 RGB 和深度输出。
class diffusers.image_processor.VaeImageProcessorLDM3D
< source >( do_resize: bool = True vae_scale_factor: int = 8 resample: str = 'lanczos' do_normalize: bool = True )
用于 VAE LDM3D 的图像处理器。
depth_pil_to_numpy
< source >( images: typing.Union[typing.List[PIL.Image.Image], PIL.Image.Image] ) → np.ndarray
将PIL图像或PIL图像列表转换为NumPy数组。
numpy_to_depth
< source >( images: ndarray ) → List[PIL.Image.Image]
将 NumPy 深度图像或图像批次转换为 PIL 图像列表。
numpy_to_pil
< source >( images: ndarray ) → List[PIL.Image.Image]
将 NumPy 图像或图像批次转换为 PIL 图像列表。
preprocess
< source >( rgb: typing.Union[torch.Tensor, PIL.Image.Image, numpy.ndarray] depth: typing.Union[torch.Tensor, PIL.Image.Image, numpy.ndarray] height: typing.Optional[int] = None width: typing.Optional[int] = None target_res: typing.Optional[int] = None ) → Tuple[torch.Tensor, torch.Tensor]
参数
- rgb (
Union[torch.Tensor, PIL.Image.Image, np.ndarray]
) — RGB 输入图像,可以是单张图像或批次。 - depth (
Union[torch.Tensor, PIL.Image.Image, np.ndarray]
) — 深度输入图像,可以是单张图像或批次。 - height (
Optional[int]
, 可选, 默认为None
) — 处理后图像的所需高度。如果为None
,则默认为输入图像的高度。 - width (
Optional[int]
, 可选, 默认为None
) — 处理后图像的所需宽度。如果为None
,则默认为输入图像的宽度。 - target_res (
Optional[int]
, 可选, 默认为None
) — 图像调整大小的目标分辨率。如果指定,将覆盖高度和宽度。
返回
Tuple[torch.Tensor, torch.Tensor]
包含处理后的 RGB 和深度图像(PyTorch 张量格式)的元组。
预处理图像输入。接受的格式为 PIL 图像、NumPy 数组或 PyTorch 张量。
rgblike_to_depthmap
< source >( image: typing.Union[numpy.ndarray, torch.Tensor] ) → Union[np.ndarray, torch.Tensor]
将 RGB 类似深度图像转换为深度图。
PixArtImageProcessor
class diffusers.image_processor.PixArtImageProcessor
< source >( do_resize: bool = True vae_scale_factor: int = 8 resample: str = 'lanczos' do_normalize: bool = True do_binarize: bool = False do_convert_grayscale: bool = False )
参数
- do_resize (
bool
, 可选, 默认为True
) — 是否将图像的(高度,宽度)维度缩小为vae_scale_factor
的倍数。可以接受来自 image_processor.VaeImageProcessor.preprocess() 方法的height
和width
参数。 - vae_scale_factor (
int
, 可选, 默认为8
) — VAE 缩放因子。如果do_resize
为True
,图像将自动调整大小为该因子的倍数。 - resample (
str
, 可选, 默认为lanczos
) — 调整图像大小时使用的重采样滤镜。 - do_normalize (
bool
, 可选, 默认为True
) — 是否将图像标准化为 [-1,1]。 - do_binarize (
bool
, 可选, 默认为False
) — 是否将图像二值化为 0/1。 - do_convert_rgb (
bool
, optional, 默认为False
) — 是否将图像转换为 RGB 格式。 - do_convert_grayscale (
bool
, optional, 默认为False
) — 是否将图像转换为灰度格式。
PixArt 图像处理器,用于图像大小调整和裁剪。
classify_height_width_bin
< source 源码 >( height: int width: int ratios: dict ) → Tuple[int, int]
根据纵横比返回已分箱的高度和宽度。
resize_and_crop_tensor
< source 源码 >( samples: Tensor new_width: int new_height: int ) → torch.Tensor
将图像张量调整大小并裁剪到指定尺寸。
IPAdapterMaskProcessor
class diffusers.image_processor.IPAdapterMaskProcessor
< source 源码 >( do_resize: bool = True vae_scale_factor: int = 8 resample: str = 'lanczos' do_normalize: bool = False do_binarize: bool = True do_convert_grayscale: bool = True )
参数
- do_resize (
bool
, optional, 默认为True
) — 是否将图像的 (高度, 宽度) 维度缩小为vae_scale_factor
的倍数。 - vae_scale_factor (
int
, optional, 默认为8
) — VAE 缩放因子。如果do_resize
为True
,图像将自动调整大小为该因子的倍数。 - resample (
str
, optional, 默认为'lanczos'
) — 调整图像大小时使用的重采样滤波器。 - do_normalize (
bool
, optional, 默认为False
) — 是否将图像归一化到 [-1,1]。 - do_binarize (
bool
, optional, 默认为True
) — 是否将图像二值化为 0/1。 - do_convert_grayscale (
bool
, optional, 默认为True
) — 是否将图像转换为灰度格式。
IP Adapter 图像遮罩的图像处理器。
下采样
< source 源码 >( mask: Tensor batch_size: int num_queries: int value_embed_dim: int ) → torch.Tensor
将提供的遮罩张量下采样以匹配缩放点积注意力机制的预期维度。如果遮罩的纵横比与输出图像的纵横比不匹配,则会发出警告。