Diffusers documentation
Bộ xử lý hình ảnh VAE
Bộ xử lý hình ảnh VAE
VaeImageProcessor cung cấp API thống nhất cho các StableDiffusionPipeline để chuẩn bị đầu vào hình ảnh cho quá trình mã hóa VAE và xử lý hậu đầu ra sau khi chúng được giải mã. Điều này bao gồm các phép biến đổi như thay đổi kích thước, chuẩn hóa và chuyển đổi giữa mảng PIL Image, PyTorch và NumPy.
Tất cả các pipeline có VaeImageProcessor đều chấp nhận PIL Image, tensor PyTorch hoặc mảng NumPy làm đầu vào hình ảnh và trả về kết quả dựa trên đối số output_type do người dùng cung cấp. Bạn có thể truyền trực tiếp các latent của hình ảnh đã mã hóa vào pipeline và nhận lại latent từ pipeline dưới dạng một đầu ra cụ thể bằng đối số output_type (ví dụ output_type="latent"). Điều này cho phép bạn lấy các latent được tạo ra từ một pipeline và truyền chúng vào một pipeline khác làm đầu vào mà không cần rời khỏi không gian latent. Nó cũng giúp việc sử dụng nhiều pipeline cùng nhau trở nên dễ dàng hơn rất nhiều bằng cách truyền trực tiếp các tensor PyTorch giữa các pipeline khác nhau.
VaeImageProcessor
lớp diffusers.VaeImageProcessor
< source >( do_resize: bool = Truevae_scale_factor: int = 8vae_latent_channels: int = 4resample: str = 'lanczos'reducing_gap: int | None = Nonedo_normalize: bool = Truedo_binarize: bool = Falsedo_convert_rgb: bool = Falsedo_convert_grayscale: bool = False )
Tham số
- do_resize (
bool, tùy chọn, mặc định làTrue) — Có nên giảm kích thước chiều (height, width) của ảnh xuống các bội số củavae_scale_factorhay không. Có thể nhận các đối sốheightvàwidthtừ phương thức image_processor.VaeImageProcessor.preprocess(). - vae_scale_factor (
int, tùy chọn, mặc định là8) — Hệ số tỷ lệ của VAE. Nếudo_resizelàTrue, hình ảnh sẽ được tự động thay đổi kích thước thành bội số của hệ số này. - resample (
str, tùy chọn, mặc định làlanczos) — Bộ lọc lấy mẫu lại (resampling filter) được sử dụng khi thay đổi kích thước ảnh. - do_normalize (
bool, tùy chọn, mặc định làTrue) — Có nên chuẩn hóa ảnh về khoảng [-1,1] hay không. - do_binarize (
bool, tùy chọn, mặc định làFalse) — Có nên nhị phân hóa ảnh thành 0/1 hay không. - do_convert_rgb (
bool, tùy chọn, mặc định làFalse) — Có chuyển đổi các hình ảnh sang định dạng RGB hay không. - do_convert_grayscale (
bool, tùy chọn, mặc định làFalse) — Có chuyển đổi các hình ảnh sang định dạng đen trắng hay không.
Bộ xử lý ảnh cho VAE.
apply_overlay
< source >( mask: Imageinit_image: Imageimage: Imagecrop_coords: tuple[int, int, int, int] | None = None ) → PIL.Image.Image
Tham số
- mask (
PIL.Image.Image) — Ảnh mask làm nổi bật các vùng cần phủ chồng lên. - init_image (
PIL.Image.Image) — Hình ảnh gốc mà lớp phủ được áp dụng lên. - image (
PIL.Image.Image) — Hình ảnh cần phủ lên hình gốc. - crop_coords (
tuple[int, int, int, int], tuỳ chọn) — Tọa độ để cắt ảnh. Nếu được cung cấp, ảnh sẽ được cắt theo đó.
Trả về
PIL.Image.Image
Hình ảnh cuối cùng sau khi áp dụng lớp phủ.
Áp dụng lớp phủ của mặt nạ và hình ảnh đã được inpaint lên hình ảnh gốc.
binarize
< source >( image: Image ) → PIL.Image.Image
Tạo một mặt nạ.
làm mờ
< source >( image: Imageblur_factor: int = 4 ) → PIL.Image.Image
Áp dụng làm mờ Gaussian lên một hình ảnh.
convert_to_grayscale
< source >( image: Image ) → PIL.Image.Image
Chuyển đổi một hình ảnh PIL cho trước sang thang xám.
convert_to_rgb
< source >( image: Image ) → PIL.Image.Image
Chuyển đổi ảnh PIL sang định dạng RGB.
denormalize
< source >( images: typing.Union[numpy.ndarray, torch.Tensor] ) → np.ndarray or torch.Tensor
Chuẩn hóa lại một mảng ảnh về [0,1].
get_crop_region
< source >( mask_image: Imagewidth: intheight: intpad = 0 ) → tuple
Tham số
- mask_image (PIL.Image.Image) — Ảnh mask.
- width (int) — Độ rộng của hình ảnh cần xử lý.
- height (int) — Chiều cao của hình ảnh cần xử lý.
- pad (int, tùy chọn) — Phần đệm được thêm vào vùng cắt. Mặc định là 0.
Trả về
tuple
(x1, y1, x2, y2) đại diện cho một vùng hình chữ nhật chứa tất cả các vùng bị che (masked areas) trong một hình ảnh và khớp với tỷ lệ khung hình gốc.
Tìm một vùng hình chữ nhật chứa tất cả các vùng bị che (masked areas) trong ảnh, sau đó mở rộng vùng đó để khớp với tỷ lệ khung hình của ảnh gốc; ví dụ, nếu người dùng vẽ mask trong một vùng 128x32 và kích thước để xử lý là 512x512, vùng đó sẽ được mở rộng thành 128x128.
get_default_height_width
< source >( image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor]height: int | None = Nonewidth: int | None = None ) → tuple[int, int]
Tham số
- image (
PIL.Image.Image | np.ndarray | torch.Tensor) — Đầu vào hình ảnh, có thể là hình ảnh PIL, mảng NumPy hoặc tensor PyTorch. Nếu là mảng NumPy, nó phải có hình dạng[batch, height, width]hoặc[batch, height, width, channels]. Nếu là tensor PyTorch, nó phải có hình dạng[batch, channels, height, width]. - height (
int | None, tùy chọn, mặc định làNone) — Chiều cao của ảnh đã được tiền xử lý. Nếu làNone, chiều cao của đầu vàoimagesẽ được sử dụng. - width (
int | None, tùy chọn, mặc định làNone) — Chiều rộng của ảnh đã được tiền xử lý. Nếu làNone, chiều rộng của đầu vàoimagesẽ được sử dụng.
Trả về
tuple[int, int]
Một tuple chứa chiều cao và chiều rộng, cả hai đều được điều chỉnh kích thước đến bội số nguyên gần nhất của
vae_scale_factor.
Trả về chiều cao và chiều rộng của hình ảnh, được thu nhỏ xuống bội số nguyên gần nhất của vae_scale_factor.
normalize
< source >( images: typing.Union[numpy.ndarray, torch.Tensor] ) → np.ndarray or torch.Tensor
Chuẩn hóa một mảng ảnh về khoảng [-1,1].
numpy_to_pil
< source >( images: ndarray ) → list[PIL.Image.Image]
Chuyển đổi một ảnh numpy hoặc một lô ảnh thành ảnh PIL.
numpy_to_pt
< source >( images: ndarray ) → torch.Tensor
Chuyển đổi một hình ảnh NumPy thành tensor PyTorch.
pil_to_numpy
< source >( images: list[PIL.Image.Image] | PIL.Image.Image ) → np.ndarray
Chuyển đổi một hình ảnh PIL hoặc danh sách các hình ảnh PIL thành các mảng NumPy.
postprocess
< source >( image: Tensoroutput_type: str = 'pil'do_denormalize: list[bool] | None = None ) → PIL.Image.Image, np.ndarray or torch.Tensor
Tham số
- image (
torch.Tensor) — Đầu vào hình ảnh, phải là một tensor pytorch có hình dạngB x C x H x W. - output_type (
str, tùy chọn, mặc định làpil) — Loại đầu ra của hình ảnh, có thể là một trongpil,np,pt,latent. - do_denormalize (
list[bool], tùy chọn, mặc định làNone) — Có nên khử chuẩn hóa (denormalize) ảnh về [0,1] hay không. Nếu làNone, sẽ sử dụng giá trị củado_normalizetrong cấu hìnhVaeImageProcessor.
Trả về
PIL.Image.Image, np.ndarray hoặc torch.Tensor
Hình ảnh sau khi xử lý hậu kỳ.
Xử lý hậu xử lý ảnh đầu ra từ tensor sang output_type.
preprocess
< source >( image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]]height: int | None = Nonewidth: int | None = Noneresize_mode: str = 'default'crops_coords: tuple[int, int, int, int] | None = None ) → torch.Tensor
Tham số
- image (
PipelineImageInput) — Đầu vào hình ảnh, các định dạng được chấp nhận là hình ảnh PIL, mảng NumPy, tensor PyTorch; Cũng chấp nhận danh sách các định dạng được hỗ trợ. - height (
int, tùy chọn) — Chiều cao trong ảnh đã tiền xử lý. Nếu làNone, sẽ sử dụngget_default_height_width()để lấy chiều cao mặc định. - width (
int, tùy chọn) — Chiều rộng trong dữ liệu đã tiền xử lý. Nếu làNone, sẽ sử dụng get_default_height_width()` để lấy chiều rộng mặc định. - resize_mode (
str, tùy chọn, mặc định làdefault) — Chế độ resize, có thể làdefaulthoặcfill. Nếu làdefault, ảnh sẽ được resize để vừa với chiều rộng và chiều cao được chỉ định, và có thể không giữ nguyên tỷ lệ khung hình gốc. Nếu làfill, ảnh sẽ được resize để vừa với chiều rộng và chiều cao được chỉ định, giữ nguyên tỷ lệ khung hình, sau đó đặt ảnh ở giữa trong các kích thước đó, lấp đầy phần trống bằng dữ liệu từ ảnh. Nếu làcrop, ảnh sẽ được resize để vừa với chiều rộng và chiều cao được chỉ định, giữ nguyên tỷ lệ khung hình, sau đó đặt ảnh ở giữa trong các kích thước đó, cắt bỏ phần thừa. Lưu ý rằng resize_modefillvàcropchỉ được hỗ trợ cho đầu vào ảnh PIL. - crops_coords (
list[tuple[int, int, int, int]], tuỳ chọn, mặc định làNone) — Tọa độ cắt cho từng hình ảnh trong lô. Nếu làNone, sẽ không cắt hình ảnh.
Trả về
torch.Tensor
Hình ảnh đã được tiền xử lý.
Tiền xử lý đầu vào hình ảnh.
pt_to_numpy
< source >( images: Tensor ) → np.ndarray
Chuyển đổi một tensor PyTorch thành một ảnh NumPy.
resize
< source >( image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor]height: intwidth: intresize_mode: str = 'default' ) → PIL.Image.Image, np.ndarray or torch.Tensor
Tham số
- image (
PIL.Image.Image,np.ndarrayhoặctorch.Tensor) — Đầu vào hình ảnh, có thể là hình ảnh PIL, mảng numpy hoặc tensor pytorch. - height (
int) — Chiều cao để thay đổi kích thước. - width (
int) — Chiều rộng để thay đổi kích thước. - resize_mode (
str, tùy chọn, mặc định làdefault) — Chế độ resize cần sử dụng, có thể làdefaulthoặcfill. Nếu làdefault, hình ảnh sẽ được resize để vừa với chiều rộng và chiều cao đã chỉ định, và có thể không giữ nguyên tỷ lệ khung hình gốc. Nếu làfill, hình ảnh sẽ được resize để vừa với chiều rộng và chiều cao đã chỉ định, giữ nguyên tỷ lệ khung hình, sau đó đặt hình ảnh ở vị trí trung tâm trong các kích thước đó, lấp đầy phần trống bằng dữ liệu từ hình ảnh. Nếu làcrop, hình ảnh sẽ được resize để vừa với chiều rộng và chiều cao đã chỉ định, giữ nguyên tỷ lệ khung hình, sau đó đặt hình ảnh ở vị trí trung tâm trong các kích thước đó, cắt bỏ phần thừa. Lưu ý rằng resize_modefillvàcropchỉ được hỗ trợ cho đầu vào hình ảnh PIL.
Trả về
PIL.Image.Image, np.ndarray hoặc torch.Tensor
Hình ảnh đã được thay đổi kích thước.
Đổi kích thước ảnh.
InpaintProcessor
InpaintProcessor nhận các đầu vào mask và image và xử lý chúng cùng nhau. Tùy chọn, nó có thể nhận padding_mask_crop và áp dụng lớp phủ mask.
lớp diffusers.InpaintProcessor
< source >( do_resize: bool = Truevae_scale_factor: int = 8vae_latent_channels: int = 4resample: str = 'lanczos'reducing_gap: int | None = Nonedo_normalize: bool = Truedo_binarize: bool = Falsedo_convert_grayscale: bool = Falsemask_do_normalize: bool = Falsemask_do_binarize: bool = Truemask_do_convert_grayscale: bool = True )
Bộ xử lý ảnh cho việc inpainting ảnh và mask.
postprocess
< source >( image: Tensoroutput_type: str = 'pil'original_image: PIL.Image.Image | None = Noneoriginal_mask: PIL.Image.Image | None = Nonecrops_coords: tuple[int, int, int, int] | None = None )
Xử lý hậu kỳ hình ảnh, tùy chọn áp dụng lớp phủ mặt nạ
preprocess
< source >( image: Imagemask: PIL.Image.Image | None = Noneheight: int | None = Nonewidth: int | None = Nonepadding_mask_crop: int | None = None )
Tiền xử lý ảnh và mặt nạ.
VaeImageProcessorLDM3D
VaeImageProcessorLDM3D nhận đầu vào RGB và độ sâu, sau đó trả về đầu ra RGB và độ sâu.
lớp diffusers.VaeImageProcessorLDM3D
< source >( do_resize: bool = Truevae_scale_factor: int = 8resample: str = 'lanczos'do_normalize: bool = True )
Tham số
- do_resize (
bool, tùy chọn, mặc định làTrue) — Có nên giảm kích thước chiều (chiều cao, chiều rộng) của ảnh xuống các bội số củavae_scale_factorhay không. - vae_scale_factor (
int, tùy chọn, mặc định là8) — Hệ số tỷ lệ của VAE. Nếudo_resizelàTrue, hình ảnh sẽ được tự động thay đổi kích thước thành bội số của hệ số này. - resample (
str, tùy chọn, mặc định làlanczos) — Bộ lọc lấy mẫu lại (resampling filter) được sử dụng khi thay đổi kích thước ảnh. - do_normalize (
bool, tùy chọn, mặc định làTrue) — Có nên chuẩn hóa ảnh về khoảng [-1,1] hay không.
Bộ xử lý ảnh cho VAE LDM3D.
depth_pil_to_numpy
< source >( images: list[PIL.Image.Image] | PIL.Image.Image ) → np.ndarray
Chuyển đổi một hình ảnh PIL hoặc danh sách các hình ảnh PIL thành các mảng NumPy.
numpy_to_depth
< source >( images: ndarray ) → list[PIL.Image.Image]
Chuyển đổi một ảnh độ sâu NumPy hoặc một lô ảnh thành một danh sách ảnh PIL.
numpy_to_pil
< source >( images: ndarray ) → list[PIL.Image.Image]
Chuyển đổi một ảnh NumPy hoặc một lô ảnh thành một danh sách ảnh PIL.
preprocess
< source >( rgb: typing.Union[torch.Tensor, PIL.Image.Image, numpy.ndarray]depth: typing.Union[torch.Tensor, PIL.Image.Image, numpy.ndarray]height: int | None = Nonewidth: int | None = Nonetarget_res: int | None = None ) → tuple[torch.Tensor, torch.Tensor]
Tham số
- rgb (
torch.Tensor | PIL.Image.Image | np.ndarray) — Ảnh đầu vào RGB, có thể là một ảnh đơn hoặc một lô (batch). - depth (
torch.Tensor | PIL.Image.Image | np.ndarray) — Ảnh đầu vào độ sâu, có thể là một ảnh đơn hoặc một lô (batch). - height (
int | None, tùy chọn, mặc định làNone) — Chiều cao mong muốn của ảnh đã xử lý. Nếu làNone, mặc định sẽ là chiều cao của ảnh đầu vào. - width (
int | None, tùy chọn, mặc định làNone) — Chiều rộng mong muốn của ảnh đã xử lý. Nếu làNone, mặc định sẽ là chiều rộng của ảnh đầu vào. - target_res (
int | None, tùy chọn, mặc định làNone) — Độ phân giải đích để thay đổi kích thước các hình ảnh. Nếu được chỉ định, sẽ ghi đè lên chiều cao và chiều rộng.
Trả về
tuple[torch.Tensor, torch.Tensor]
Một tuple chứa các hình ảnh RGB và độ sâu đã được xử lý dưới dạng tensor PyTorch.
Tiền xử lý đầu vào hình ảnh. Các định dạng được chấp nhận là hình ảnh PIL, mảng NumPy hoặc tensor PyTorch.
Chuyển đổi ảnh độ sâu dạng RGB thành bản đồ độ sâu.
PixArtImageProcessor
lớp diffusers.PixArtImageProcessor
< source >( do_resize: bool = Truevae_scale_factor: int = 8resample: str = 'lanczos'do_normalize: bool = Truedo_binarize: bool = Falsedo_convert_grayscale: bool = False )
Tham số
- do_resize (
bool, tùy chọn, mặc định làTrue) — Có nên giảm kích thước chiều (height, width) của ảnh xuống các bội số củavae_scale_factorhay không. Có thể nhận các đối sốheightvàwidthtừ phương thức image_processor.VaeImageProcessor.preprocess(). - vae_scale_factor (
int, tùy chọn, mặc định là8) — Hệ số tỷ lệ của VAE. Nếudo_resizelàTrue, hình ảnh sẽ được tự động thay đổi kích thước thành bội số của hệ số này. - resample (
str, tùy chọn, mặc định làlanczos) — Bộ lọc lấy mẫu lại (resampling filter) được sử dụng khi thay đổi kích thước ảnh. - do_normalize (
bool, tùy chọn, mặc định làTrue) — Có nên chuẩn hóa ảnh về khoảng [-1,1] hay không. - do_binarize (
bool, tùy chọn, mặc định làFalse) — Có nên nhị phân hóa ảnh thành 0/1 hay không. - do_convert_rgb (
bool, tùy chọn, mặc định làFalse) — Có chuyển đổi các hình ảnh sang định dạng RGB hay không. - do_convert_grayscale (
bool, tùy chọn, mặc định làFalse) — Có chuyển đổi các hình ảnh sang định dạng đen trắng hay không.
Bộ xử lý ảnh để thay đổi kích thước và cắt ảnh PixArt.
classify_height_width_bin
< source >( height: intwidth: intratios: dict ) → tuple[int, int]
Trả về chiều cao và chiều rộng đã được phân loại dựa trên tỷ lệ khung hình.
resize_and_crop_tensor
< source >( samples: Tensornew_width: intnew_height: int ) → torch.Tensor
Tham số
- samples (
torch.Tensor) — Một tensor có hình dạng (N, C, H, W) trong đó N là kích thước lô (batch size), C là số kênh, H là chiều cao, và W là chiều rộng. - new_width (
int) — Độ rộng mong muốn của các hình ảnh đầu ra. - new_height (
int) — Chiều cao mong muốn của các hình ảnh đầu ra.
Trả về
torch.Tensor
Một tensor chứa các hình ảnh đã được thay đổi kích thước và cắt.
Đổi kích thước và cắt một tensor ảnh thành các kích thước được chỉ định.
IPAdapterMaskProcessor
lớp diffusers.IPAdapterMaskProcessor
< source >( do_resize: bool = Truevae_scale_factor: int = 8resample: str = 'lanczos'do_normalize: bool = Falsedo_binarize: bool = Truedo_convert_grayscale: bool = True )
Tham số
- do_resize (
bool, tùy chọn, mặc định làTrue) — Có nên giảm kích thước chiều (chiều cao, chiều rộng) của ảnh xuống các bội số củavae_scale_factorhay không. - vae_scale_factor (
int, tùy chọn, mặc định là8) — Hệ số tỷ lệ của VAE. Nếudo_resizelàTrue, hình ảnh sẽ được tự động thay đổi kích thước thành bội số của hệ số này. - resample (
str, tùy chọn, mặc định làlanczos) — Bộ lọc lấy mẫu lại (resampling filter) được sử dụng khi thay đổi kích thước ảnh. - do_normalize (
bool, tùy chọn, mặc định làFalse) — Có nên chuẩn hóa ảnh về khoảng [-1,1] hay không. - do_binarize (
bool, tùy chọn, mặc định làTrue) — Có nên nhị phân hóa ảnh thành 0/1 hay không. - do_convert_grayscale (
bool, tùy chọn, mặc định làTrue) — Có chuyển đổi các hình ảnh sang định dạng đen trắng hay không.
Bộ xử lý ảnh cho mặt nạ ảnh IP Adapter.
downsample
< source >( mask: Tensorbatch_size: intnum_queries: intvalue_embed_dim: int ) → torch.Tensor
Thực hiện giảm mẫu (downsample) tensor mask được cung cấp để khớp với các kích thước mong đợi cho scaled dot-product attention. Nếu tỷ lệ khung hình (aspect ratio) của mask không khớp với tỷ lệ khung hình của ảnh đầu ra, một cảnh báo sẽ được phát ra.