comfyanonymous
8 months ago
2 changed files with 46 additions and 0 deletions
@ -0,0 +1,45 @@ |
|||||||
|
import torch |
||||||
|
|
||||||
|
class InstructPixToPixConditioning: |
||||||
|
@classmethod |
||||||
|
def INPUT_TYPES(s): |
||||||
|
return {"required": {"positive": ("CONDITIONING", ), |
||||||
|
"negative": ("CONDITIONING", ), |
||||||
|
"vae": ("VAE", ), |
||||||
|
"pixels": ("IMAGE", ), |
||||||
|
}} |
||||||
|
|
||||||
|
RETURN_TYPES = ("CONDITIONING","CONDITIONING","LATENT") |
||||||
|
RETURN_NAMES = ("positive", "negative", "latent") |
||||||
|
FUNCTION = "encode" |
||||||
|
|
||||||
|
CATEGORY = "conditioning/instructpix2pix" |
||||||
|
|
||||||
|
def encode(self, positive, negative, pixels, vae): |
||||||
|
x = (pixels.shape[1] // 8) * 8 |
||||||
|
y = (pixels.shape[2] // 8) * 8 |
||||||
|
|
||||||
|
if pixels.shape[1] != x or pixels.shape[2] != y: |
||||||
|
x_offset = (pixels.shape[1] % 8) // 2 |
||||||
|
y_offset = (pixels.shape[2] % 8) // 2 |
||||||
|
pixels = pixels[:,x_offset:x + x_offset, y_offset:y + y_offset,:] |
||||||
|
|
||||||
|
concat_latent = vae.encode(pixels) |
||||||
|
|
||||||
|
out_latent = {} |
||||||
|
out_latent["samples"] = torch.zeros_like(concat_latent) |
||||||
|
|
||||||
|
out = [] |
||||||
|
for conditioning in [positive, negative]: |
||||||
|
c = [] |
||||||
|
for t in conditioning: |
||||||
|
d = t[1].copy() |
||||||
|
d["concat_latent_image"] = concat_latent |
||||||
|
n = [t[0], d] |
||||||
|
c.append(n) |
||||||
|
out.append(c) |
||||||
|
return (out[0], out[1], out_latent) |
||||||
|
|
||||||
|
NODE_CLASS_MAPPINGS = { |
||||||
|
"InstructPixToPixConditioning": InstructPixToPixConditioning, |
||||||
|
} |
Loading…
Reference in new issue