Diffusers 文档

VAE 图像处理器

Hugging Face's logo
加入Hugging Face社区

并获取增强文档体验权限

开始使用

VAE图像处理器

VaeImageProcessorStableDiffusionPipeline提供统一的API,以准备图像输入进行VAE编码和解码后的后处理输出。包括诸如调整大小、归一化和在PIL Image、PyTorch和NumPy数组之间的转换等变换。

所有带有VaeImageProcessor的流程都接受PIL Image、PyTorch张量或NumPy数组作为图像输入,并基于用户的output_type参数返回输出。您可以直接将编码的图像潜在向量传递到流程中,并通过output_type参数(例如output_type="latent")以特定输出形式返回流程中的潜在向量。这使得您可以从一个流程中获取生成的潜在向量并将其作为输入传递给另一个流程,而无需离开潜在空间。这也使得通过在不同流程之间直接传递PyTorch张量来使用多个流程变得容易得多。

VaeImageProcessor

diffusers.image_processor.VaeImageProcessor

< >

( 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() 方法的 heightwidth 参数。
  • vae_scale_factor (int, 可选,默认为 8) — VAE 缩放因子。如果 do_resizeTrue,图像将自动调整大小为此因子的倍数。
  • 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 的图像处理器。

应用叠加层

< >

( mask: Image init_image: Image image: Image crop_coords: Optional = None )

将修复输出叠加到原始图像

二值化

< >

( image: Image ) PIL.Image.Image

参数

  • image (PIL.Image.Image) — 输入的图像,应该是一个 PIL 图像。

返回值

PIL.Image.Image

二值化图像。小于 0.5 的值设置为 0,大于 0.5 的值设置为 1。

创建一个掩码。

模糊

< >

( image: 图像 blur_factor: int = 4 )

将图像应用高斯模糊。

convert_to_grayscale

< >

( image: 图像 )

将PIL图像转换为灰度格式。

convert_to_rgb

< >

( image: 图像 )

将PIL图像转换为RGB格式。

denormalize

< >

( images: 联合 )

将图像数组归一化至[0,1]。

get_crop_region

< >

( mask_image: 图像 width: int height: int pad = 0 ) tuple

参数

  • mask_image (PIL.Image.Image) — 遮罩图像。
  • width (int) — 处理的图像宽度。
  • height (int) — 处理的图像高度。
  • pad (int, optional) — 要添加到裁剪区域的填充。默认为0。

返回值

元组

(x1, y1, x2, y2)表示包含图像中所有遮罩区域且与原始宽高比相匹配的矩形区域。

找到一个包含图像中所有遮罩区域的矩形区域,并将该区域扩展以匹配原始图像的纵横比;例如,如果用户在一个128x32的区域中绘制了遮罩,并且处理尺寸为512x512,则区域将扩展到128x128。

get_default_height_width

< >

( image: Union height: Optional = None width: Optional = None )

参数

  • image(PIL.Image.Image, np.ndarraytorch.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下一个整数倍的高度和宽度。

标准化

< >

( images: 联合 )

将图像数组标准化为[-1,1]。

numpy_to_pil

< >

( images: ndarray )

将NumPy图像或图像批处理转换为PIL图像。

numpy_to_pt

< >

( images: ndarray )

将NumPy图像转换为PyTorch张量。

pil_to_numpy

< >

( images: 联合 )

将PIL图像或PIL图像列表转换为NumPy数组。

后处理

< >

( image: Tensor output_type: str = 'pil' do_denormalize: Optional = None ) PIL.Image.Image, np.ndarraytorch.Tensor

参数

  • image (torch.Tensor) — 图片输入,应是一个形状为 B x C x H x W 的 Pytorch 矩阵。
  • output_type (str, 可选, 默认为 pil) — 图片输出的类型,可以是 pilnpptlatent 之一。
  • do_denormalize (List[bool], 可选, 默认为 None) — 是否将图片归一化到 [0,1]。如果为 None,则将使用 VaeImageProcessor 配置中的 do_normalize 的值。

返回值

PIL.Image.Imagenp.ndarraytorch.Tensor

处理后的图片。

将张量输出的图片后处理为 output_type

预处理

< >

( 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) -- 调整大小模式,可以是 defaultfill。如果为 default,则将图像调整大小以适合指定的宽度和高度,可能不会保持原始长宽比。如果为 fill,则将图像调整大小以适合指定的宽度和高度,保持长宽比,并在维度中居中图像,用图像数据填充空白。如果为 crop,则将图像调整大小以适合指定的宽度和高度,保持长宽比,并在维度中居中图像,裁剪多余的图像。请注意,resize_mode fillcrop 只支持 PIL 图像输入。
  • crops_coords (列表[Tuple[int, int, int, int]], 可选, 默认为 None) -- 批处理中每个图像的裁剪坐标。如果为 None,则不会裁剪图像。

预处理图像输入。

pt_to_numpy

< >

( images: Tensor )

将 PyTorch 张量转换为 NumPy 图像。

调整大小

< >

( image: Union height: int width: int resize_mode: str = 'default' ) PIL.Image.Image, np.ndarray or torch.Tensor

参数

  • image (PIL.Image.Image, np.ndarray or torch.Tensor) — 图像输入,可以是 PIL 图像、numpy 数组或 pytorch 张量。
  • height (int) — 调整后的高度。
  • width (int) — 调整后的宽度。
  • resize_mode (str, 可选,默认为 default) — 要使用的调整模式,可以是 defaultfill。如果为 default,将调整图像大小以适应指定的宽度和高度,可能无法保持原始的纵横比。如果为 fill,将调整图像大小以适应指定的宽度和高度,保持纵横比,并将在尺寸内的图像居中,使用图像数据填充空白区域。如果为 crop,将调整图像大小以适应指定的宽度和高度,保持纵横比,并将在尺寸内的图像居中,裁剪多余部分。请注意,resize_mode fillcrop 只支持 PIL 图像输入。

返回值

PIL.Image.Imagenp.ndarraytorch.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 )

参数

  • do_resize (bool, 可选, 默认为 True) — 是否将图像的高度和宽度尺寸下采样为 vae_scale_factor 的倍数。
  • vae_scale_factor (int, 可选,默认为 8) — VAE 尺度因子。如果 do_resizeTrue,则图像将自动调整大小为此因子的倍数。
  • resample (str, 可选,默认为 lanczos) — 调整图像大小时使用的重采样滤波器。
  • do_normalize (bool, 可选,默认为 True) — 是否将图像归一化到 [-1,1]。

VAE LDM3D 的图像处理器。

depth_pil_to_numpy

< >

( images: 联合 )

将PIL图像或PIL图像列表转换为NumPy数组。

numpy_to_depth

< >

( images: ndarray )

将NumPy深度图像或图像批次转换为PIL图像。

numpy_to_pil

< >

( images: ndarray )

将NumPy图像或图像批次转换为PIL图像。

预处理

< >

( rgb: Union depth: Union height: Optional = None width: Optional = None target_res: Optional = None )

预处理图像输入。接受的格式为PIL图像、NumPy数组或PyTorch张量。

rgblike_to_depthmap

< >

( image: 联合 )

返回值:深度图

PixArtImageProcessor

diffusers.image_processor.PixArtImageProcessor

< >

( 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() 方法中的 heightwidth 参数。
  • vae_scale_factor (int, 可选,默认为 8) — VAE 缩放因子。如果 do_resizeTrue,则自动将图像缩放到此因子的倍数。
  • 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.

classify_height_width_bin

< >

( height: int width: int ratios: dict )

返回归一化的高度和宽度。

IPAdapterMaskProcessor

diffusers.image_processor.IPAdapterMaskProcessor

< >

( 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 to False) — 是否对图像进行归一化到[-1,1]。
  • do_binarize (bool, optional, defaults to True) — 是否对图像进行二值化到0/1。
  • do_convert_grayscale (bool, optional, defaults to be True) — 是否将图像转换为灰度格式。

IP适配器图像掩码的图像处理器。

下采样

< >

( mask: Tensor batch_size: int num_queries: int value_embed_dim: int ) torch.Tensor

参数

  • mask (torch.Tensor) — 使用 IPAdapterMaskProcessor.preprocess() 生成的输入掩码张量。
  • batch_size (int) — 批量大小。
  • num_queries (int) — 查询的数量。
  • value_embed_dim (int) — 值嵌入的维度。

返回值

torch.Tensor

降采样的掩码张量。

将提供的掩码张量降采样以匹配缩放点积注意力的预期维度。如果掩码的宽高比与输出图像的宽高比不匹配,则发出警告。

<>更新于GitHub