VAE图像处理器
VaeImageProcessor
为StableDiffusionPipeline提供统一的API,以准备图像输入进行VAE编码和解码后的后处理输出。包括诸如调整大小、归一化和在PIL Image、PyTorch和NumPy数组之间的转换等变换。
所有带有VaeImageProcessor
的流程都接受PIL Image、PyTorch张量或NumPy数组作为图像输入,并基于用户的output_type
参数返回输出。您可以直接将编码的图像潜在向量传递到流程中,并通过output_type
参数(例如output_type="latent"
)以特定输出形式返回流程中的潜在向量。这使得您可以从一个流程中获取生成的潜在向量并将其作为输入传递给另一个流程,而无需离开潜在空间。这也使得通过在不同流程之间直接传递PyTorch张量来使用多个流程变得容易得多。
VaeImageProcessor
类 diffusers.image_processor.VaeImageProcessor
< source >( do_resize: bool = True vae_scale_factor: int = 8 vae_latent_channels: int = 4 resample: str = 'lanczos' 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 >( image: Image ) → PIL.Image.Image
创建一个掩码。
将图像应用高斯模糊。
将PIL图像转换为灰度格式。
将PIL图像转换为RGB格式。
将图像数组归一化至[0,1]。
get_crop_region
< source >( mask_image: 图像 width: int height: int pad = 0 ) → tuple
找到一个包含图像中所有遮罩区域的矩形区域,并将该区域扩展以匹配原始图像的纵横比;例如,如果用户在一个128x32的区域中绘制了遮罩,并且处理尺寸为512x512,则区域将扩展到128x128。
get_default_height_width
< 来源 >( image: Union height: Optional = None width: Optional = None )
参数
- image(
PIL.Image.Image
,np.ndarray
或torch.Tensor
) — 图像输入,可以是 PIL 图像、numpy 数组或 pytorch 张量。如果是 numpy 数组,应为形状为[batch, height, width]
或[batch, height, width, channel]
的数组;如果是 pytorch 张量,应为形状为[batch, channel, height, width]
的数组。 - height (
int
, 可选,默认为None
) — 预处理图像中的高度。如果为None
,将使用image
输入的高度。 - 宽度 (
int
, 可选,默认为
None) -- 前处理时的宽度。如果为
None,将使用图像输入的宽度。
此函数返回降采样到vae_scale_factor
下一个整数倍的高度和宽度。
将图像数组标准化为[-1,1]。
将NumPy图像或图像批处理转换为PIL图像。
将NumPy图像转换为PyTorch张量。
将PIL图像或PIL图像列表转换为NumPy数组。
后处理
< source >( image: Tensor output_type: str = 'pil' do_denormalize: Optional = None ) → PIL.Image.Image
, np.ndarray
或 torch.Tensor
参数
- image (
torch.Tensor
) — 图片输入,应是一个形状为B x C x H x W
的 Pytorch 矩阵。 - output_type (
str
, 可选, 默认为pil
) — 图片输出的类型,可以是pil
、np
、pt
或latent
之一。 - do_denormalize (
List[bool]
, 可选, 默认为None
) — 是否将图片归一化到 [0,1]。如果为None
,则将使用VaeImageProcessor
配置中的do_normalize
的值。
返回值
PIL.Image.Image
、np.ndarray
或 torch.Tensor
处理后的图片。
将张量输出的图片后处理为 output_type
。
预处理
< source >( image: 联合 height: 可选 = None width: 可选 = None resize_mode: str = 'default' crops_coords: 可选 = None )
参数
- image (
pipeline_image_input
) — 图像输入,支持的格式包括 PIL 图像、NumPy 数组、PyTorch 张量;也接受支持格式的列表。 - height (
int
, 可选, 默认为None
) — 预处理图像的高度。如果为None
,将使用get_default_height_width()
获取默认高度。 - width (
int
, 可选,默认为
None) -- 预处理图像的宽度。如果为
None
,则使用 get_default_height_width() 获取默认宽度。 - resize_mode (
str
, 可选, 默认为default
) -- 调整大小模式,可以是default
或fill
。如果为default
,则将图像调整大小以适合指定的宽度和高度,可能不会保持原始长宽比。如果为fill
,则将图像调整大小以适合指定的宽度和高度,保持长宽比,并在维度中居中图像,用图像数据填充空白。如果为crop
,则将图像调整大小以适合指定的宽度和高度,保持长宽比,并在维度中居中图像,裁剪多余的图像。请注意,resize_modefill
和crop
只支持 PIL 图像输入。 - crops_coords (
列表[Tuple[int, int, int, int]]
, 可选, 默认为None
) -- 批处理中每个图像的裁剪坐标。如果为None
,则不会裁剪图像。
预处理图像输入。
将 PyTorch 张量转换为 NumPy 图像。
调整大小
< source >( image: Union 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
,将调整图像大小以适应指定的宽度和高度,保持纵横比,并将在尺寸内的图像居中,裁剪多余部分。请注意,resize_modefill
和crop
只支持 PIL 图像输入。
返回值
PIL.Image.Image
、np.ndarray
或 torch.Tensor
调整大小后的图像。
调整图像大小。
VaeImageProcessorLDM3D
VaeImageProcessorLDM3D
接受 RGB 和深度输入,并返回 RGB 和深度输出。
类 diffusers.image_processor.VaeImageProcessorLDM3D
< 源代码 >( do_resize: bool = True vae_scale_factor: int = 8 resample: str = 'lanczos' do_normalize: bool = True )
VAE LDM3D 的图像处理器。
将PIL图像或PIL图像列表转换为NumPy数组。
将NumPy深度图像或图像批次转换为PIL图像。
将NumPy图像或图像批次转换为PIL图像。
预处理
< source >( rgb: Union depth: Union height: Optional = None width: Optional = None target_res: Optional = None )
预处理图像输入。接受的格式为PIL图像、NumPy数组或PyTorch张量。
返回值:深度图
PixArtImageProcessor
类 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
, 可选,默认为False
) — 是否将图像转换为RGB格式。 - do_convert_grayscale (
bool
, 可选,默认为False
) — 是否将图像转换为灰度格式。
Image processor for PixArt image resize and crop.
返回归一化的高度和宽度。
IPAdapterMaskProcessor
类 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
,可选,默认为True
)— 是否将图像的长宽尺寸下采样到vae_scale_factor的倍数。 - vae_scale_factor (
int
,可选,默认为8
)— VAE缩放因子。如果do_resize为True,则图像将自动调整大小到本因子的倍数。 - resample (
str
,可选,默认为lanczos
)— 在调整图像大小时使用的重采样过滤器。 - do_normalize (
bool
, optional, defaults toFalse
) — 是否对图像进行归一化到[-1,1]。 - do_binarize (
bool
, optional, defaults toTrue
) — 是否对图像进行二值化到0/1。 - do_convert_grayscale (
bool
, optional, defaults to beTrue
) — 是否将图像转换为灰度格式。
IP适配器图像掩码的图像处理器。
下采样
< source >( mask: Tensor batch_size: int num_queries: int value_embed_dim: int ) → torch.Tensor
将提供的掩码张量降采样以匹配缩放点积注意力的预期维度。如果掩码的宽高比与输出图像的宽高比不匹配,则发出警告。