Files
CavinHuang-comfyui-nodes-docs/docs/ADE_UpscaleAndVAEEncode.md

3.0 KiB

Scale Ref Image and VAE Encode 🎭🅐🅓②

Documentation

ADE_UpscaleAndVAEEncode节点旨在通过首先将图像放大到更高分辨率,然后使用变分自编码器(VAE)将其编码为潜在表示来处理图像。此节点是AnimateDiff套件的一部分,专门用于在应用进一步的生成或转换过程之前增强图像质量。

Input types

Required

  • image
    • 表示要放大和编码的输入图像的参数。它在确定最终潜在表示的质量和分辨率方面起着关键作用。
    • Comfy dtype: IMAGE
    • Python dtype: torch.Tensor
  • vae
    • 指定用于将放大的图像编码为其潜在表示的变分自编码器模型。它影响编码效率和生成的潜在空间的质量。
    • Comfy dtype: VAE
    • Python dtype: torch.nn.Module
  • latent_size
    • 表示要生成的潜在表示的大小。它决定输出潜在空间的维度。
    • Comfy dtype: LATENT
    • Python dtype: torch.Tensor
  • scale_method
    • 定义用于放大图像的方法。它影响放大图像的质量。
    • Comfy dtype: COMBO[STRING]
    • Python dtype: str
  • crop
    • 指定放大后应用的裁剪方法,影响最终图像的构图。
    • Comfy dtype: COMBO[STRING]
    • Python dtype: str

Output types

  • latent
    • Comfy dtype: LATENT
    • 输出是输入图像的潜在表示,由VAE在放大后编码。它以压缩形式捕捉图像的基本特征,适合进一步的生成任务。
    • Python dtype: Dict[str, torch.Tensor]

Usage tips

  • Infra type: GPU
  • Common nodes: unknown

Source code

class UpscaleAndVaeEncode:
    @classmethod
    def INPUT_TYPES(s):
        return {
            "required": {
                "image": ("IMAGE",),
                "vae": ("VAE",),
                "latent_size": ("LATENT",),
                "scale_method": (ScaleMethods._LIST_IMAGE,),
                "crop": (CropMethods._LIST, {"default": CropMethods.CENTER},),
            }
        }
    
    RETURN_TYPES = ("LATENT",)
    FUNCTION = "preprocess_images"

    CATEGORY = "Animate Diff 🎭🅐🅓/② Gen2 nodes ②/AnimateLCM-I2V"

    def preprocess_images(self, image: torch.Tensor, vae: VAE, latent_size: torch.Tensor, scale_method: str, crop: str):
        b, c, h, w = latent_size["samples"].size()
        image = image.movedim(-1,1)
        image = comfy.utils.common_upscale(samples=image, width=w*8, height=h*8, upscale_method=scale_method, crop=crop)
        image = image.movedim(1,-1)
        # now that images are the expected size, VAEEncode them
        try:  # account for old ComfyUI versions (TODO: remove this when other changes require ComfyUI update)
            if not hasattr(vae, "vae_encode_crop_pixels"):
                image = VAEEncode.vae_encode_crop_pixels(image)
        except Exception:
            pass
        return ({"samples": vae.encode(image[:,:,:,:3])},)