(
cls,
vae,
latent_width,
latent_height,
images,
scale_factors,
latent_downscale_factor,
crop,
use_tiled_encode,
tile_size,
tile_overlap,
)
| 103 | |
| 104 | @classmethod |
| 105 | def encode( |
| 106 | cls, |
| 107 | vae, |
| 108 | latent_width, |
| 109 | latent_height, |
| 110 | images, |
| 111 | scale_factors, |
| 112 | latent_downscale_factor, |
| 113 | crop, |
| 114 | use_tiled_encode, |
| 115 | tile_size, |
| 116 | tile_overlap, |
| 117 | ): |
| 118 | time_scale_factor, width_scale_factor, height_scale_factor = scale_factors |
| 119 | num_frames_to_keep = ( |
| 120 | (images.shape[0] - 1) // time_scale_factor |
| 121 | ) * time_scale_factor + 1 |
| 122 | images = images[:num_frames_to_keep] |
| 123 | # Divide target size by latent_downscale_factor |
| 124 | target_width = int(latent_width * width_scale_factor / latent_downscale_factor) |
| 125 | target_height = int( |
| 126 | latent_height * height_scale_factor / latent_downscale_factor |
| 127 | ) |
| 128 | pixels = comfy.utils.common_upscale( |
| 129 | images.movedim(-1, 1), |
| 130 | target_width, |
| 131 | target_height, |
| 132 | "bilinear", |
| 133 | crop=crop, |
| 134 | ).movedim(1, -1) |
| 135 | encode_pixels = pixels[:, :, :, :3] |
| 136 | if use_tiled_encode: |
| 137 | guide_latent = vae.encode_tiled( |
| 138 | encode_pixels, |
| 139 | tile_x=tile_size, |
| 140 | tile_y=tile_size, |
| 141 | overlap=tile_overlap, |
| 142 | ) |
| 143 | else: |
| 144 | guide_latent = vae.encode(encode_pixels) |
| 145 | return encode_pixels, guide_latent |
| 146 | |
| 147 | @classmethod |
| 148 | def execute( |
no outgoing calls
no test coverage detected