From 0565156f49f727157deddcc07a0cb831e48ae124 Mon Sep 17 00:00:00 2001 From: Jianqi Pan Date: Wed, 20 Mar 2024 18:10:45 +0900 Subject: [PATCH] :wrench: chore(ignore): clean workspace --- .gitignore | 1 + __init__.py | 96 ++++++++++++++---- __pycache__/__init__.cpython-311.pyc | Bin 18403 -> 0 bytes __pycache__/__init__.cpython-39.pyc | Bin 1168 -> 0 bytes pipelines/__init__.py | 11 +- .../__pycache__/__init__.cpython-311.pyc | Bin 3607 -> 0 bytes 6 files changed, 83 insertions(+), 25 deletions(-) create mode 100644 .gitignore delete mode 100644 __pycache__/__init__.cpython-311.pyc delete mode 100644 __pycache__/__init__.cpython-39.pyc delete mode 100644 pipelines/__pycache__/__init__.cpython-311.pyc diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ed8ebf5 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +__pycache__ \ No newline at end of file diff --git a/__init__.py b/__init__.py index 53fbc3e..4688725 100644 --- a/__init__.py +++ b/__init__.py @@ -35,9 +35,25 @@ def get_prompt_embeds(pipe, prompt, negative_prompt): return prompt_embeds, negative_prompt_embeds -def latents_to_tensor(pipeline, latents): - image_numpy = pipeline.decode_latents(latents) # numpy - return torch.tensor(image_numpy) +def latents_to_img_tensor(pipeline, latents): + # 1. 输入的 latents 是一个 -1 ~ 1 之间的 tensor + # 2. 先进行缩放 + scaled_latents = latents / pipeline.vae.config.scaling_factor + # 3. 解码,返回的是 -1 ~ 1 之间的 tensor + dec_tensor = pipeline.vae.decode(scaled_latents, return_dict=False)[0] + # 4. 缩放到 0 ~ 1 之间 + dec_images = pipeline.image_processor.postprocess( + dec_tensor, + output_type="pt", + do_denormalize=[True for _ in range(scaled_latents.shape[0])], + ) + # 5. 转换成 tensor, + res = torch.nan_to_num(dec_images).to(dtype=torch.float32) + # 6. 将 channel 放到最后 + # res shape torch.Size([1, 3, 512, 512]) => torch.Size([1, 512, 512, 3]) + res = res.permute(0, 2, 3, 1) + print('res shape', res.shape) + return res def prepare_latents( @@ -73,6 +89,29 @@ def prepare_latents( return latents +def prepare_image( + pipeline: StableDiffusionPipeline, + seed=47, + batch_size=1, + num_channels_latents=4, + height=512, + width=512, +): + generator = torch.Generator() + generator.manual_seed(seed) + latents = prepare_latents( + pipe=pipeline, + batch_size=batch_size, + num_channels_latents=num_channels_latents, + height=height, + width=width, + generator=generator, + device=comfy.model_management.get_torch_device(), + dtype=comfy.model_management.VAE_DTYPE, + ) + return latents_to_img_tensor(pipeline, latents) + + class GetFilledColorImage: RETURN_TYPES = ("IMAGE",) FUNCTION = "run" @@ -367,10 +406,11 @@ class DiffusersDecoder: } def run(self, pipeline: StableDiffusionPipeline, latents: torch.Tensor): - return (latents_to_tensor(pipeline, latents),) + res = latents_to_img_tensor(pipeline, latents) + return (res,) -class DiffusersGenerate: +class DiffusersGenerator: CATEGORY = "Jannchie" FUNCTION = "run" RETURN_TYPES = ("IMAGE",) @@ -391,9 +431,10 @@ class DiffusersGenerate: "INT", {"default": 30, "min": 1, "max": 100, "step": 1}, ), - }, - "optional": { - "images": ("IMAGE",), + "guidance_scale": ( + "FLOAT", + {"default": 7.0, "min": 0.0, "max": 30.0, "step": 0.02}, + ), "seed": ( "INT", {"default": 0, "min": 0, "step": 1, "max": 999999999999}, @@ -417,6 +458,13 @@ class DiffusersGenerate: "step": 64, }, ), + "num_channels_latents": ( + "INT", + {"default": 4, "min": 1, "max": 4, "step": 1}, + ), + }, + "optional": { + "images": ("IMAGE",), }, } @@ -431,8 +479,11 @@ class DiffusersGenerate: images: torch.Tensor | None = None, num_inference_steps: int = 30, strength: float = 1.0, + num_channels_latents: int = 4, + guidance_scale: float = 7.0, seed=None, ): + latents = None pbar = ProgressBar(int(num_inference_steps * strength)) device = comfy.model_management.get_torch_device() if not seed: @@ -444,16 +495,17 @@ class DiffusersGenerate: latents = prepare_latents( pipe=pipeline, batch_size=batch_size, - num_channels_latents=4, + num_channels_latents=num_channels_latents, height=height, width=width, generator=generator, - dtype=comfy.model_management.VAE_DTYPE, device=device, + dtype=comfy.model_management.VAE_DTYPE, ) - images = latents_to_tensor(pipeline, latents).permute(0, 3, 1, 2) + images = latents_to_img_tensor(pipeline, latents) else: - images = images.permute(0, 3, 1, 2) + images = images + # positive_prompt_embedding 和 negative_prompt_embedding 需要匹配 batch_size positive_prompt_embedding = positive_prompt_embedding.repeat(batch_size, 1, 1) negative_prompt_embedding = negative_prompt_embedding.repeat(batch_size, 1, 1) @@ -463,10 +515,14 @@ class DiffusersGenerate: result = pipeline( image=images, + # latents=latents, generator=generator, + width=width, + height=height, prompt_embeds=positive_prompt_embedding, negative_prompt_embeds=negative_prompt_embedding, num_inference_steps=num_inference_steps, + guidance_scale=guidance_scale, callback_steps=1, strength=strength, callback=callback, @@ -475,7 +531,7 @@ class DiffusersGenerate: # image = result["images"][0] # images to torch.Tensor imgs = [np.array(img) for img in result["images"]] - imgs = torch.tensor(imgs, dtype=images.dtype) + imgs = torch.tensor(imgs) result["images"][0].save("1.png") # 0 ~ 255 to 0 ~ 1 imgs = imgs / 255 @@ -487,7 +543,7 @@ NODE_CLASS_MAPPINGS = { "GetFilledColorImage": GetFilledColorImage, "GetAverageColorFromImage": GetAverageColorFromImage, "DiffusersPipeline": DiffusersPipeline, - "DiffusersGenerate": DiffusersGenerate, + "DiffusersGenerator": DiffusersGenerator, "DiffusersPrepareLatents": DiffusersPrepareLatents, "DiffusersDecoder": DiffusersDecoder, "DiffusersCompelPromptEmbedding": DiffusersCompelPromptEmbedding, @@ -496,10 +552,10 @@ NODE_CLASS_MAPPINGS = { NODE_DISPLAY_NAME_MAPPINGS = { "GetFilledColorImage": "Get Filled Color Image Jannchie", "GetAverageColorFromImage": "Get Average Color From Image Jannchie", - "DiffusersPipeline": "Diffusers Pipeline", - "DiffusersGenerate": "Diffusers Generate", - "DiffusersPrepareLatents": "Diffusers Prepare Latents", - "DiffusersDecoder": "Diffusers Decoder", - "DiffusersCompelPromptEmbedding": "Diffusers Compel Prompt Embedding", - "DiffusersTextureInversionLoader": "Diffusers Texture Inversion Embedding Loader", + "DiffusersPipeline": "🤗 Diffusers Pipeline", + "DiffusersGenerator": "🤗 Diffusers Generator", + "DiffusersPrepareLatents": "🤗 Diffusers Prepare Latents", + "DiffusersDecoder": "🤗 Diffusers Decoder", + "DiffusersCompelPromptEmbedding": "🤗 Diffusers Compel Prompt Embedding", + "DiffusersTextureInversionLoader": "🤗 Diffusers Texture Inversion Embedding Loader", } diff --git a/__pycache__/__init__.cpython-311.pyc b/__pycache__/__init__.cpython-311.pyc deleted file mode 100644 index 77815f940004336cb4ac0d2698e921ded29dc5ea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18403 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 Hi~#>XQH5W) diff --git a/__pycache__/__init__.cpython-39.pyc b/__pycache__/__init__.cpython-39.pyc deleted file mode 100644 index 49a8eda1439c21582fc83e77b1a9afffbba36bb6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1168 zcmbtTPfrs;6rY*h*)A=hf*R%2cxz%jBOyvtN>c+%Lt7IzB$K5xrDJxtW&cEJmJ|3b zIOx$&WHMJz{RT!8@y!;n7!nV@&HL@ln>TOXo8KF6VWEgX7P{Ysv=REIC$nO}WCJvQ z2GBqpaeNMXMqEIFBz7^!oWP%Oqm3$N5BzS)O@!xQ76|;2ON60!ouf1Cn%rCU@c}LliI8J3GxH6hfMf3h!%YH{WO1((tpmsnwR61+f=@oIT~uB&7Eqa4h5&7vafUPSvs97 zf#yUMG^cwF20%CR(W#YLpKwMpAir;9);scgnVA9e0yHf8NT%2)>nJM#iG~xI z5MiQQvtlR;Y{6~Nv51DTqNxm%)rt)~3BMmLf=_f$!+i}8G%Nuq5{?v=fp;YSkP$u7 z%TEAagT^{%gl+N=ui)|0Ul#zSI?&=aW1$xa##E89V8~NnkLMXXPCfr>rPTAiI1WTI z81m>b#8mTp^-g!snNp|ht*%q+GG@vAegQCoz*)-Y6^7PG>^G8>{ro*Wixrt~8XrJ}vfDo{Oeqam&WP0rD^sfdBvi diff --git a/pipelines/__init__.py b/pipelines/__init__.py index 79c5e5d..fb6d5c9 100644 --- a/pipelines/__init__.py +++ b/pipelines/__init__.py @@ -1,4 +1,3 @@ -import torch from diffusers import AutoencoderKL, StableDiffusionImg2ImgPipeline from diffusers.schedulers import ( DEISMultistepScheduler, @@ -15,6 +14,8 @@ from diffusers.schedulers import ( import comfy.model_management +from .jannchie import JannchiePipeline + schedulers = { "DPM++ 2M": DPMSolverMultistepScheduler(), "DPM++ 2M Karras": DPMSolverMultistepScheduler(use_karras_sigmas=True), @@ -47,12 +48,12 @@ class PipelineWrapper: device = comfy.model_management.get_torch_device() dtype = comfy.model_management.VAE_DTYPE if ckpt_path.endswith(".safetensors"): - self.pipeline = StableDiffusionImg2ImgPipeline.from_single_file( + self.pipeline = JannchiePipeline.from_single_file( ckpt_path, torch_dtype=dtype, ) else: - self.pipeline = StableDiffusionImg2ImgPipeline.from_pretrained( + self.pipeline = JannchiePipeline.from_pretrained( ckpt_path, torch_dtype=dtype, ) @@ -60,12 +61,12 @@ class PipelineWrapper: if vae_path.endswith(".safetensors"): self.pipeline.vae = AutoencoderKL.from_single_file( vae_path, - torch_dtype=torch.bfloat16, + torch_dtype=dtype, ) else: self.pipeline.vae = AutoencoderKL.from_pretrained( vae_path, - torch_dtype=torch.bfloat16, + torch_dtype=dtype, ) if scheduler: self.pipeline.scheduler = scheduler diff --git a/pipelines/__pycache__/__init__.cpython-311.pyc b/pipelines/__pycache__/__init__.cpython-311.pyc deleted file mode 100644 index 8240ebc45beae27db2eeb86ab9950dde9bfb7d47..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3607 zcmcgu&2QVt6(3TfOi84^Wy!W|%NyBQRkfXH7mFYb+`5smjV-$loNZAe0HGBrM~*0| zLpntS1;}9w_>e=<7RVlbC{h%gKVWaW*F6*<0|F5U7+7FWy)j7k&^`4HB`T8TZVN21 zqsKQhzxUp}H^X_4`a91D5VSA;`EU6v7=1$~Zu1QWuUQ(Qr$|B))j$I2=?10H0sV3?0W`o zK68DdzfclGP|5dv>KO$Rc=`<_5C};8&jS;ZVBZF0+%t&wGkAtpJjkXdyo3mPp_ed7 zxC#9TK`+#gf+RShA0z06`f-r>C-f75vJ+?$(7*&b4Jbc>rU-hW$23To3H=#BL+4Qe zcJm>UW-9A8YarS2a{;( zqh@{o=H#wAEVwBYvc=s_*d1keDi~MPJ9)~A9;>o=-9d4+0P}=H*RY_iz z+KTF&TA=_op-SVhh3ncqMbsX);wrP zKpmemsdV^$?`ks60e7aHE?cp@_a@*8k@OlLXPmzoS zNYv~c3cgK_Q9u4CaL#|fyCu6I=jr<3#+Vx_t>+PZukHd2v zMNdikOtdaD{#M9`Zq!PQx+W5WGV0muaBFI%2F0qWwy+8r9MoF4dQX%{`sQO+V0d>` z%X27e7E^60wTD(jfr8r*l}fX6C@XSPvmziB2gdS)dR4akzuDXpOLu;^zh$v(dr9e?3rBtld8?wc=2Nl{1JF+$uP+WnEEn#w{Eyh{dVn41mS{3c;2bKrY z%kmGSvuLelg`BNC6d~QJ_hp=)vb?I?sNoq{0nZXPM_7R@=#%HQde>qE)Kr+a_iJKZo6MKe)6@t;Mf&FJNq(Q7ZF*No_OGkX2RcNR&Skrgv?<%H=4 z6EB1FFM{)*HjUt_8C2vt%=#`Oqr_>5yWa-T{LjqH z_J38eS;Qr56!6D-;nd4;_C+{*x?qH_nBgnnfsdW#u9~@D_7a)1?DF42;A1%kK9*zP zV>$LG?_YT{vZP0rz|V5g%x!+ZB5{_q5#_(qTUjRon%t!x%RS*=vgsFW`qOEH&6;dh zXS2P_g%j@+-ehySL$BfNP@dk~%QNJtNkJ7wDk_wV@?!*e_Uw{Bp&!A<09Dn z1L60e!&eC-Y45N+4Ae5P$HSlPLp#*3DciHa{M1IkdNUbk(tEei?@J%P6*?N{Sl9ebmHVjK7d2*|fa{UdyXY!5|IJ;XhBem!(kzldx) zNYOU>@!2e*7IZY>bBG8w2^whSI+BQ?$HUk29 zw@h45tP}eAzMi;kByO9D+x8TZv51+~=RN@H%`WKczpy=Y#`g*VdqbG*CrTm2MD*w? zkP%%sqw98@D2AAz&bQp<5EIkmd7#fr zdVJG}Z<_H2eFrg7 zJ+=b$c|wnE7_kjAwqai)qTKmSEfaLb2_&cUIfGv@`4#&zppOIgT9$%Lnq;pC_T~bC Hb4~vP`k`o*