diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..261eeb9 --- /dev/null +++ b/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/custom_cogvideox_transformer_3d.py b/custom_cogvideox_transformer_3d.py index 59b9544..7a5d3b0 100644 --- a/custom_cogvideox_transformer_3d.py +++ b/custom_cogvideox_transformer_3d.py @@ -35,6 +35,9 @@ from diffusers.loaders import PeftAdapterMixin from diffusers.models.embeddings import apply_rotary_emb from .embeddings import CogVideoXPatchEmbed +from .enhance_a_video.enhance import get_feta_scores +from .enhance_a_video.globals import is_enhance_enabled, set_num_frames + logger = logging.get_logger(__name__) # pylint: disable=invalid-name @@ -60,27 +63,28 @@ def set_attention_func(attention_mode, heads): elif attention_mode == "sageattn" or attention_mode == "fused_sageattn": @torch.compiler.disable() def func(q, k, v, is_causal=False, attn_mask=None): - return sageattn(q, k, v, is_causal=is_causal, attn_mask=attn_mask) + return sageattn(q.to(v), k.to(v), v, is_causal=is_causal, attn_mask=attn_mask) return func elif attention_mode == "sageattn_qk_int8_pv_fp16_cuda": from sageattention import sageattn_qk_int8_pv_fp16_cuda @torch.compiler.disable() def func(q, k, v, is_causal=False, attn_mask=None): - return sageattn_qk_int8_pv_fp16_cuda(q, k, v, is_causal=is_causal, attn_mask=attn_mask, pv_accum_dtype="fp32") + return sageattn_qk_int8_pv_fp16_cuda(q.to(v), k.to(v), v, is_causal=is_causal, attn_mask=attn_mask, pv_accum_dtype="fp32") return func elif attention_mode == "sageattn_qk_int8_pv_fp16_triton": from sageattention import sageattn_qk_int8_pv_fp16_triton @torch.compiler.disable() def func(q, k, v, is_causal=False, attn_mask=None): - return sageattn_qk_int8_pv_fp16_triton(q, k, v, is_causal=is_causal, attn_mask=attn_mask) + return sageattn_qk_int8_pv_fp16_triton(q.to(v), k.to(v), v, is_causal=is_causal, attn_mask=attn_mask) return func elif attention_mode == "sageattn_qk_int8_pv_fp8_cuda": from sageattention import sageattn_qk_int8_pv_fp8_cuda @torch.compiler.disable() def func(q, k, v, is_causal=False, attn_mask=None): - return sageattn_qk_int8_pv_fp8_cuda(q, k, v, is_causal=is_causal, attn_mask=attn_mask, pv_accum_dtype="fp32+fp32") + return sageattn_qk_int8_pv_fp8_cuda(q.to(v), k.to(v), v, is_causal=is_causal, attn_mask=attn_mask, pv_accum_dtype="fp32+fp32") return func +#for fastercache def fft(tensor): tensor_fft = torch.fft.fft2(tensor) tensor_fft_shifted = torch.fft.fftshift(tensor_fft) @@ -98,6 +102,13 @@ def fft(tensor): return low_freq_fft, high_freq_fft +#for teacache +def poly1d(coefficients, x): + result = torch.zeros_like(x) + for i, coeff in enumerate(coefficients): + result += coeff * (x ** (len(coefficients) - 1 - i)) + return result.abs() + #region Attention class CogVideoXAttnProcessor2_0: r""" @@ -159,6 +170,10 @@ class CogVideoXAttnProcessor2_0: query[:, :, text_seq_length:] = apply_rotary_emb(query[:, :, text_seq_length:], image_rotary_emb) if not attn.is_cross_attention: key[:, :, text_seq_length:] = apply_rotary_emb(key[:, :, text_seq_length:], image_rotary_emb) + + #feta + if is_enhance_enabled(): + feta_scores = get_feta_scores(attn, query, key, head_dim, text_seq_length) hidden_states = self.attn_func(query, key, value, attn_mask=attention_mask, is_causal=False) @@ -173,6 +188,10 @@ class CogVideoXAttnProcessor2_0: encoder_hidden_states, hidden_states = hidden_states.split( [text_seq_length, hidden_states.size(1) - text_seq_length], dim=1 ) + + if is_enhance_enabled(): + hidden_states *= feta_scores + return hidden_states, encoder_hidden_states #region Blocks @@ -515,7 +534,12 @@ class CogVideoXTransformer3DModel(ModelMixin, ConfigMixin, PeftAdapterMixin): self.gradient_checkpointing = False + self.attention_mode = attention_mode + + #tora self.fuser_list = None + + #fastercache self.use_fastercache = False self.fastercache_counter = 0 self.fastercache_start_step = 15 @@ -523,7 +547,16 @@ class CogVideoXTransformer3DModel(ModelMixin, ConfigMixin, PeftAdapterMixin): self.fastercache_hf_step = 30 self.fastercache_device = "cuda" self.fastercache_num_blocks_to_cache = len(self.transformer_blocks) - self.attention_mode = attention_mode + + #teacache + self.use_teacache = False + self.teacache_rel_l1_thresh = 0.0 + if not self.config.use_rotary_positional_embeddings: + #CogVideoX-2B + self.teacache_coefficients = [-3.10658903e+01, 2.54732368e+01, -5.92380459e+00, 1.75769064e+00, -3.61568434e-03] + else: + #CogVideoX-5B + self.teacache_coefficients = [-1.53880483e+03, 8.43202495e+02, -1.34363087e+02, 7.97131516e+00, -5.23162339e-02] def _set_gradient_checkpointing(self, module, value=False): @@ -543,6 +576,8 @@ class CogVideoXTransformer3DModel(ModelMixin, ConfigMixin, PeftAdapterMixin): return_dict: bool = True, ): batch_size, num_frames, channels, height, width = hidden_states.shape + + set_num_frames(num_frames) #enhance a video global # 1. Time embedding timesteps = timestep @@ -649,33 +684,56 @@ class CogVideoXTransformer3DModel(ModelMixin, ConfigMixin, PeftAdapterMixin): recovered_uncond = rearrange(recovered_uncond.to(output.dtype), "(B T) C H W -> B T C H W", B=bb, C=cc, T=tt, H=hh, W=ww) output = torch.cat([output, recovered_uncond]) else: - for i, block in enumerate(self.transformer_blocks): - hidden_states, encoder_hidden_states = block( - hidden_states=hidden_states, - encoder_hidden_states=encoder_hidden_states, - temb=emb, - image_rotary_emb=image_rotary_emb, - video_flow_feature=video_flow_features[i] if video_flow_features is not None else None, - fuser = self.fuser_list[i] if self.fuser_list is not None else None, - block_use_fastercache = i <= self.fastercache_num_blocks_to_cache, - fastercache_counter = self.fastercache_counter, - fastercache_start_step = self.fastercache_start_step, - fastercache_device = self.fastercache_device - ) - #has_nan = torch.isnan(hidden_states).any() - #if has_nan: - # raise ValueError(f"block output hidden_states has nan: {has_nan}") + if self.use_teacache: + if not hasattr(self, 'accumulated_rel_l1_distance'): + should_calc = True + self.accumulated_rel_l1_distance = 0 + else: + self.accumulated_rel_l1_distance += poly1d(self.teacache_coefficients, ((emb-self.previous_modulated_input).abs().mean() / self.previous_modulated_input.abs().mean())) + if self.accumulated_rel_l1_distance < self.teacache_rel_l1_thresh: + should_calc = False + self.teacache_counter += 1 + else: + should_calc = True + self.accumulated_rel_l1_distance = 0 + #print("self.accumulated_rel_l1_distance ", self.accumulated_rel_l1_distance) + self.previous_modulated_input = emb + if not should_calc: + hidden_states += self.previous_residual + encoder_hidden_states += self.previous_residual_encoder + + if not self.use_teacache or (self.use_teacache and should_calc): + if self.use_teacache: + ori_hidden_states = hidden_states.clone() + ori_encoder_hidden_states = encoder_hidden_states.clone() + for i, block in enumerate(self.transformer_blocks): + hidden_states, encoder_hidden_states = block( + hidden_states=hidden_states, + encoder_hidden_states=encoder_hidden_states, + temb=emb, + image_rotary_emb=image_rotary_emb, + video_flow_feature=video_flow_features[i] if video_flow_features is not None else None, + fuser = self.fuser_list[i] if self.fuser_list is not None else None, + block_use_fastercache = i <= self.fastercache_num_blocks_to_cache, + fastercache_counter = self.fastercache_counter, + fastercache_start_step = self.fastercache_start_step, + fastercache_device = self.fastercache_device + ) - #controlnet - if (controlnet_states is not None) and (i < len(controlnet_states)): - controlnet_states_block = controlnet_states[i] - controlnet_block_weight = 1.0 - if isinstance(controlnet_weights, (list, np.ndarray)) or torch.is_tensor(controlnet_weights): - controlnet_block_weight = controlnet_weights[i] - print(controlnet_block_weight) - elif isinstance(controlnet_weights, (float, int)): - controlnet_block_weight = controlnet_weights - hidden_states = hidden_states + controlnet_states_block * controlnet_block_weight + #controlnet + if (controlnet_states is not None) and (i < len(controlnet_states)): + controlnet_states_block = controlnet_states[i] + controlnet_block_weight = 1.0 + if isinstance(controlnet_weights, (list, np.ndarray)) or torch.is_tensor(controlnet_weights): + controlnet_block_weight = controlnet_weights[i] + print(controlnet_block_weight) + elif isinstance(controlnet_weights, (float, int)): + controlnet_block_weight = controlnet_weights + hidden_states = hidden_states + controlnet_states_block * controlnet_block_weight + + if self.use_teacache: + self.previous_residual = hidden_states - ori_hidden_states + self.previous_residual_encoder = encoder_hidden_states - ori_encoder_hidden_states if not self.config.use_rotary_positional_embeddings: # CogVideoX-2B @@ -718,4 +776,4 @@ class CogVideoXTransformer3DModel(ModelMixin, ConfigMixin, PeftAdapterMixin): if not return_dict: return (output,) return Transformer2DModelOutput(sample=output) - + \ No newline at end of file diff --git a/enhance_a_video/__init__.py b/enhance_a_video/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/enhance_a_video/enhance.py b/enhance_a_video/enhance.py new file mode 100644 index 0000000..12e2fa7 --- /dev/null +++ b/enhance_a_video/enhance.py @@ -0,0 +1,82 @@ +import torch +from einops import rearrange +from diffusers.models.attention import Attention +from .globals import get_enhance_weight, get_num_frames + +# def get_feta_scores(query, key): +# img_q, img_k = query, key + +# num_frames = get_num_frames() + +# B, S, N, C = img_q.shape + +# # Calculate spatial dimension +# spatial_dim = S // num_frames + +# # Add time dimension between spatial and head dims +# query_image = img_q.reshape(B, spatial_dim, num_frames, N, C) +# key_image = img_k.reshape(B, spatial_dim, num_frames, N, C) + +# # Expand time dimension +# query_image = query_image.expand(-1, -1, num_frames, -1, -1) # [B, S, T, N, C] +# key_image = key_image.expand(-1, -1, num_frames, -1, -1) # [B, S, T, N, C] + +# # Reshape to match feta_score input format: [(B S) N T C] +# query_image = rearrange(query_image, "b s t n c -> (b s) n t c") #torch.Size([3200, 24, 5, 128]) +# key_image = rearrange(key_image, "b s t n c -> (b s) n t c") + +# return feta_score(query_image, key_image, C, num_frames) + +def get_feta_scores( + attn: Attention, + query: torch.Tensor, + key: torch.Tensor, + head_dim: int, + text_seq_length: int, + ) -> torch.Tensor: + num_frames = get_num_frames() + spatial_dim = int((query.shape[2] - text_seq_length) / num_frames) + + query_image = rearrange( + query[:, :, text_seq_length:], + "B N (T S) C -> (B S) N T C", + N=attn.heads, + T=num_frames, + S=spatial_dim, + C=head_dim, + ) + key_image = rearrange( + key[:, :, text_seq_length:], + "B N (T S) C -> (B S) N T C", + N=attn.heads, + T=num_frames, + S=spatial_dim, + C=head_dim, + ) + return feta_score(query_image, key_image, head_dim, num_frames) + +def feta_score(query_image, key_image, head_dim, num_frames): + scale = head_dim**-0.5 + query_image = query_image * scale + attn_temp = query_image @ key_image.transpose(-2, -1) # translate attn to float32 + attn_temp = attn_temp.to(torch.float32) + attn_temp = attn_temp.softmax(dim=-1) + + # Reshape to [batch_size * num_tokens, num_frames, num_frames] + attn_temp = attn_temp.reshape(-1, num_frames, num_frames) + + # Create a mask for diagonal elements + diag_mask = torch.eye(num_frames, device=attn_temp.device).bool() + diag_mask = diag_mask.unsqueeze(0).expand(attn_temp.shape[0], -1, -1) + + # Zero out diagonal elements + attn_wo_diag = attn_temp.masked_fill(diag_mask, 0) + + # Calculate mean for each token's attention matrix + # Number of off-diagonal elements per matrix is n*n - n + num_off_diag = num_frames * num_frames - num_frames + mean_scores = attn_wo_diag.sum(dim=(1, 2)) / num_off_diag + + enhance_scores = mean_scores.mean() * (num_frames + get_enhance_weight()) + enhance_scores = enhance_scores.clamp(min=1) + return enhance_scores diff --git a/enhance_a_video/globals.py b/enhance_a_video/globals.py new file mode 100644 index 0000000..50d0da2 --- /dev/null +++ b/enhance_a_video/globals.py @@ -0,0 +1,31 @@ +NUM_FRAMES = None +FETA_WEIGHT = None +ENABLE_FETA = False + +def set_num_frames(num_frames: int): + global NUM_FRAMES + NUM_FRAMES = num_frames + + +def get_num_frames() -> int: + return NUM_FRAMES + + +def enable_enhance(): + global ENABLE_FETA + ENABLE_FETA = True + +def disable_enhance(): + global ENABLE_FETA + ENABLE_FETA = False + +def is_enhance_enabled() -> bool: + return ENABLE_FETA + +def set_enhance_weight(feta_weight: float): + global FETA_WEIGHT + FETA_WEIGHT = feta_weight + + +def get_enhance_weight() -> float: + return FETA_WEIGHT diff --git a/examples/cogvideox_1.0_5b_vid2vid_02.json b/example_workflows/cogvideox_1.0_5b_vid2vid_02.json similarity index 100% rename from examples/cogvideox_1.0_5b_vid2vid_02.json rename to example_workflows/cogvideox_1.0_5b_vid2vid_02.json diff --git a/examples/cogvideox_1_0_2b_controlnet_02.json b/example_workflows/cogvideox_1_0_2b_controlnet_02.json similarity index 100% rename from examples/cogvideox_1_0_2b_controlnet_02.json rename to example_workflows/cogvideox_1_0_2b_controlnet_02.json diff --git a/examples/cogvideox_1_0_5b_I2V_02.json b/example_workflows/cogvideox_1_0_5b_I2V_02.json similarity index 100% rename from examples/cogvideox_1_0_5b_I2V_02.json rename to example_workflows/cogvideox_1_0_5b_I2V_02.json diff --git a/examples/cogvideox_1_0_5b_I2V_Tora_02.json b/example_workflows/cogvideox_1_0_5b_I2V_Tora_02.json similarity index 100% rename from examples/cogvideox_1_0_5b_I2V_Tora_02.json rename to example_workflows/cogvideox_1_0_5b_I2V_Tora_02.json diff --git a/example_workflows/cogvideox_1_0_5b_I2V_noise_warp_01.json b/example_workflows/cogvideox_1_0_5b_I2V_noise_warp_01.json new file mode 100644 index 0000000..47a1c3b --- /dev/null +++ b/example_workflows/cogvideox_1_0_5b_I2V_noise_warp_01.json @@ -0,0 +1,1291 @@ +{ + "last_node_id": 84, + "last_link_id": 190, + "nodes": [ + { + "id": 31, + "type": "CogVideoTextEncode", + "pos": [ + 497, + 520 + ], + "size": [ + 463.01251220703125, + 144 + ], + "flags": {}, + "order": 10, + "mode": 0, + "inputs": [ + { + "name": "clip", + "type": "CLIP", + "link": 149 + } + ], + "outputs": [ + { + "name": "conditioning", + "type": "CONDITIONING", + "links": [ + 146 + ], + "slot_index": 0, + "shape": 3 + }, + { + "name": "clip", + "type": "CLIP", + "links": null + } + ], + "properties": { + "Node name for S&R": "CogVideoTextEncode" + }, + "widgets_values": [ + "The video is not of a high quality, it has a low resolution. Watermark present in each frame. Strange motion trajectory. ", + 1, + true + ] + }, + { + "id": 20, + "type": "CLIPLoader", + "pos": [ + -2, + 304 + ], + "size": [ + 451.30548095703125, + 82 + ], + "flags": {}, + "order": 0, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "CLIP", + "type": "CLIP", + "links": [ + 54 + ], + "slot_index": 0, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "CLIPLoader" + }, + "widgets_values": [ + "t5\\google_t5-v1_1-xxl_encoderonly-fp8_e4m3fn.safetensors", + "sd3", + "default" + ] + }, + { + "id": 74, + "type": "ImageConcatMulti", + "pos": [ + 1787.351318359375, + 513.0852661132812 + ], + "size": [ + 210, + 150 + ], + "flags": {}, + "order": 19, + "mode": 0, + "inputs": [ + { + "name": "image_1", + "type": "IMAGE", + "link": 171 + }, + { + "name": "image_2", + "type": "IMAGE", + "link": 184 + } + ], + "outputs": [ + { + "name": "images", + "type": "IMAGE", + "links": [ + 170 + ], + "slot_index": 0 + } + ], + "properties": {}, + "widgets_values": [ + 2, + "right", + false, + null + ] + }, + { + "id": 60, + "type": "CogVideoDecode", + "pos": [ + 1518.4959716796875, + -16.81044578552246 + ], + "size": [ + 315, + 198 + ], + "flags": {}, + "order": 18, + "mode": 0, + "inputs": [ + { + "name": "vae", + "type": "VAE", + "link": 132 + }, + { + "name": "samples", + "type": "LATENT", + "link": 148 + } + ], + "outputs": [ + { + "name": "images", + "type": "IMAGE", + "links": [ + 184 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "CogVideoDecode" + }, + "widgets_values": [ + true, + 240, + 360, + 0.2, + 0.2, + true + ] + }, + { + "id": 72, + "type": "CogVideoLoraSelect", + "pos": [ + 149.58236694335938, + -19.5003604888916 + ], + "size": [ + 429.9602355957031, + 108.1800765991211 + ], + "flags": {}, + "order": 1, + "mode": 0, + "inputs": [ + { + "name": "prev_lora", + "type": "COGLORA", + "link": null, + "shape": 7 + } + ], + "outputs": [ + { + "name": "lora", + "type": "COGLORA", + "links": [ + 174 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "CogVideoLoraSelect" + }, + "widgets_values": [ + "I2V5B_final_i30000_lora_weights.safetensors", + 1, + false + ] + }, + { + "id": 59, + "type": "DownloadAndLoadCogVideoModel", + "pos": [ + 620.1983032226562, + -39.41391372680664 + ], + "size": [ + 315, + 218 + ], + "flags": {}, + "order": 8, + "mode": 0, + "inputs": [ + { + "name": "block_edit", + "type": "TRANSFORMERBLOCKS", + "link": null, + "shape": 7 + }, + { + "name": "lora", + "type": "COGLORA", + "link": 174, + "shape": 7 + }, + { + "name": "compile_args", + "type": "COMPILEARGS", + "link": null, + "shape": 7 + } + ], + "outputs": [ + { + "name": "model", + "type": "COGVIDEOMODEL", + "links": [ + 144 + ] + }, + { + "name": "vae", + "type": "VAE", + "links": [ + 132, + 141, + 165 + ], + "slot_index": 1 + } + ], + "properties": { + "Node name for S&R": "DownloadAndLoadCogVideoModel" + }, + "widgets_values": [ + "THUDM/CogVideoX-5b-I2V", + "bf16", + "disabled", + false, + "sageattn", + "main_device" + ] + }, + { + "id": 30, + "type": "CogVideoTextEncode", + "pos": [ + 493, + 303 + ], + "size": [ + 471.90142822265625, + 168.08047485351562 + ], + "flags": {}, + "order": 7, + "mode": 0, + "inputs": [ + { + "name": "clip", + "type": "CLIP", + "link": 54 + } + ], + "outputs": [ + { + "name": "conditioning", + "type": "CONDITIONING", + "links": [ + 145 + ], + "slot_index": 0, + "shape": 3 + }, + { + "name": "clip", + "type": "CLIP", + "links": [ + 149 + ], + "slot_index": 1 + } + ], + "properties": { + "Node name for S&R": "CogVideoTextEncode" + }, + "widgets_values": [ + "mouse knight walking in a forest", + 1, + false + ] + }, + { + "id": 63, + "type": "CogVideoSampler", + "pos": [ + 1144.7025146484375, + 55.98257064819336 + ], + "size": [ + 330, + 594 + ], + "flags": {}, + "order": 17, + "mode": 0, + "inputs": [ + { + "name": "model", + "type": "COGVIDEOMODEL", + "link": 144 + }, + { + "name": "positive", + "type": "CONDITIONING", + "link": 145 + }, + { + "name": "negative", + "type": "CONDITIONING", + "link": 146 + }, + { + "name": "samples", + "type": "LATENT", + "link": 164, + "shape": 7 + }, + { + "name": "image_cond_latents", + "type": "LATENT", + "link": 147, + "shape": 7 + }, + { + "name": "context_options", + "type": "COGCONTEXT", + "link": null, + "shape": 7 + }, + { + "name": "controlnet", + "type": "COGVIDECONTROLNET", + "link": null, + "shape": 7 + }, + { + "name": "tora_trajectory", + "type": "TORAFEATURES", + "link": null, + "shape": 7 + }, + { + "name": "fastercache", + "type": "FASTERCACHEARGS", + "link": null, + "shape": 7 + }, + { + "name": "feta_args", + "type": "FETAARGS", + "link": null, + "shape": 7 + } + ], + "outputs": [ + { + "name": "samples", + "type": "LATENT", + "links": [ + 148 + ] + } + ], + "properties": { + "Node name for S&R": "CogVideoSampler" + }, + "widgets_values": [ + 49, + 25, + 6, + 0, + "fixed", + "CogVideoXDDIM", + 1 + ] + }, + { + "id": 79, + "type": "Note", + "pos": [ + 141.44003295898438, + -129.33815002441406 + ], + "size": [ + 436.1673889160156, + 58 + ], + "flags": {}, + "order": 2, + "mode": 0, + "inputs": [], + "outputs": [], + "properties": {}, + "widgets_values": [ + "https://huggingface.co/VGenAI-Netflix-Eyeline-Research/Go-with-the-Flow/blob/main/I2V5B_final_i38800_nearest_lora_weights.safetensors" + ], + "color": "#432", + "bgcolor": "#653" + }, + { + "id": 76, + "type": "VHS_VideoCombine", + "pos": [ + 1955.22119140625, + 841.7718505859375 + ], + "size": [ + 1141.2095947265625, + 1095.4730224609375 + ], + "flags": {}, + "order": 16, + "mode": 2, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 185 + }, + { + "name": "audio", + "type": "AUDIO", + "link": null, + "shape": 7 + }, + { + "name": "meta_batch", + "type": "VHS_BatchManager", + "link": null, + "shape": 7 + }, + { + "name": "vae", + "type": "VAE", + "link": null, + "shape": 7 + } + ], + "outputs": [ + { + "name": "Filenames", + "type": "VHS_FILENAMES", + "links": null, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "VHS_VideoCombine" + }, + "widgets_values": { + "frame_rate": 8, + "loop_count": 0, + "filename_prefix": "CogVideoX-I2V", + "format": "video/h264-mp4", + "pix_fmt": "yuv420p", + "crf": 19, + "save_metadata": true, + "trim_to_audio": false, + "pingpong": false, + "save_output": false, + "videopreview": { + "hidden": false, + "paused": false, + "params": { + "filename": "CogVideoX-I2V_00001.mp4", + "subfolder": "", + "type": "temp", + "format": "video/h264-mp4", + "frame_rate": 8, + "workflow": "CogVideoX-I2V_00001.png", + "fullpath": "N:\\AI\\ComfyUI\\temp\\CogVideoX-I2V_00001.mp4" + }, + "muted": false + } + } + }, + { + "id": 80, + "type": "Note", + "pos": [ + 1648.847900390625, + 1100.5545654296875 + ], + "size": [ + 249.00543212890625, + 58 + ], + "flags": {}, + "order": 3, + "mode": 0, + "inputs": [], + "outputs": [], + "properties": {}, + "widgets_values": [ + "This is just for testing the noise" + ], + "color": "#432", + "bgcolor": "#653" + }, + { + "id": 73, + "type": "CogVideoDecode", + "pos": [ + 1567.16064453125, + 842.2813110351562 + ], + "size": [ + 315, + 198 + ], + "flags": {}, + "order": 14, + "mode": 2, + "inputs": [ + { + "name": "vae", + "type": "VAE", + "link": 165 + }, + { + "name": "samples", + "type": "LATENT", + "link": 167 + } + ], + "outputs": [ + { + "name": "images", + "type": "IMAGE", + "links": [ + 185 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "CogVideoDecode" + }, + "widgets_values": [ + true, + 240, + 360, + 0.2, + 0.2, + true + ] + }, + { + "id": 68, + "type": "GetImageSizeAndCount", + "pos": [ + -195.5599822998047, + 1273.8702392578125 + ], + "size": [ + 277.20001220703125, + 86 + ], + "flags": {}, + "order": 9, + "mode": 0, + "inputs": [ + { + "name": "image", + "type": "IMAGE", + "link": 181 + } + ], + "outputs": [ + { + "name": "image", + "type": "IMAGE", + "links": [ + 178 + ], + "slot_index": 0 + }, + { + "name": "1024 width", + "type": "INT", + "links": null + }, + { + "name": "768 height", + "type": "INT", + "links": null + }, + { + "name": "49 count", + "type": "INT", + "links": null + } + ], + "properties": { + "Node name for S&R": "GetImageSizeAndCount" + } + }, + { + "id": 62, + "type": "CogVideoImageEncode", + "pos": [ + 612.8922729492188, + 751.6295776367188 + ], + "size": [ + 315, + 194 + ], + "flags": {}, + "order": 15, + "mode": 0, + "inputs": [ + { + "name": "vae", + "type": "VAE", + "link": 141 + }, + { + "name": "start_image", + "type": "IMAGE", + "link": 190 + }, + { + "name": "end_image", + "type": "IMAGE", + "link": null, + "shape": 7 + } + ], + "outputs": [ + { + "name": "samples", + "type": "LATENT", + "links": [ + 147 + ] + } + ], + "properties": { + "Node name for S&R": "CogVideoImageEncode" + }, + "widgets_values": [ + false, + 0, + 1, + 0, + 1 + ] + }, + { + "id": 82, + "type": "Note", + "pos": [ + -533.0764770507812, + 1158.188232421875 + ], + "size": [ + 364.71002197265625, + 58 + ], + "flags": {}, + "order": 4, + "mode": 0, + "inputs": [], + "outputs": [], + "properties": {}, + "widgets_values": [ + "Input video that's used to create the noise" + ], + "color": "#432", + "bgcolor": "#653" + }, + { + "id": 64, + "type": "GetWarpedNoiseFromVideo", + "pos": [ + 674.1111450195312, + 1289.6090087890625 + ], + "size": [ + 315, + 222 + ], + "flags": {}, + "order": 12, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 161 + } + ], + "outputs": [ + { + "name": "noise", + "type": "LATENT", + "links": [ + 164, + 167 + ], + "slot_index": 0 + }, + { + "name": "visualization", + "type": "IMAGE", + "links": null + } + ], + "properties": { + "Node name for S&R": "GetWarpedNoiseFromVideo" + }, + "widgets_values": [ + 16, + "nearest", + 13, + 0.5, + "BCTHW", + 99026504067718, + "fixed" + ] + }, + { + "id": 83, + "type": "Note", + "pos": [ + 679.4560546875, + 1179.797607421875 + ], + "size": [ + 293.1480407714844, + 58 + ], + "flags": {}, + "order": 5, + "mode": 0, + "inputs": [], + "outputs": [], + "properties": {}, + "widgets_values": [ + "https://github.com/kijai/ComfyUI-VideoNoiseWarp" + ], + "color": "#432", + "bgcolor": "#653" + }, + { + "id": 69, + "type": "VHS_LoadVideo", + "pos": [ + -536.2808837890625, + 1265.4254150390625 + ], + "size": [ + 247.455078125, + 446.3408203125 + ], + "flags": {}, + "order": 6, + "mode": 0, + "inputs": [ + { + "name": "meta_batch", + "type": "VHS_BatchManager", + "link": null, + "shape": 7 + }, + { + "name": "vae", + "type": "VAE", + "link": null, + "shape": 7 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 181 + ], + "slot_index": 0 + }, + { + "name": "frame_count", + "type": "INT", + "links": null + }, + { + "name": "audio", + "type": "AUDIO", + "links": null + }, + { + "name": "video_info", + "type": "VHS_VIDEOINFO", + "links": null + } + ], + "properties": { + "Node name for S&R": "VHS_LoadVideo" + }, + "widgets_values": { + "video": "AnimateDiff_00023 (16).mp4", + "force_rate": 0, + "force_size": "Disabled", + "custom_width": 512, + "custom_height": 512, + "frame_load_cap": 0, + "skip_first_frames": 0, + "select_every_nth": 1, + "choose video to upload": "image", + "videopreview": { + "hidden": false, + "paused": false, + "params": { + "force_rate": 0, + "frame_load_cap": 0, + "skip_first_frames": 0, + "select_every_nth": 1, + "filename": "AnimateDiff_00023 (16).mp4", + "type": "input", + "format": "video/mp4" + }, + "muted": false + } + } + }, + { + "id": 44, + "type": "VHS_VideoCombine", + "pos": [ + 2071.7626953125, + -69.11408233642578 + ], + "size": [ + 1141.2095947265625, + 721.7365112304688 + ], + "flags": {}, + "order": 20, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 170 + }, + { + "name": "audio", + "type": "AUDIO", + "link": null, + "shape": 7 + }, + { + "name": "meta_batch", + "type": "VHS_BatchManager", + "link": null, + "shape": 7 + }, + { + "name": "vae", + "type": "VAE", + "link": null, + "shape": 7 + } + ], + "outputs": [ + { + "name": "Filenames", + "type": "VHS_FILENAMES", + "links": null, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "VHS_VideoCombine" + }, + "widgets_values": { + "frame_rate": 8, + "loop_count": 0, + "filename_prefix": "CogVideoX_I2V_NoiseWarp", + "format": "video/h264-mp4", + "pix_fmt": "yuv420p", + "crf": 19, + "save_metadata": true, + "trim_to_audio": false, + "pingpong": false, + "save_output": false, + "videopreview": { + "hidden": false, + "paused": false, + "params": { + "filename": "CogVideoX-I2V_00002.mp4", + "subfolder": "", + "type": "temp", + "format": "video/h264-mp4", + "frame_rate": 8, + "workflow": "CogVideoX-I2V_00002.png", + "fullpath": "N:\\AI\\ComfyUI\\temp\\CogVideoX-I2V_00002.mp4" + }, + "muted": false + } + } + }, + { + "id": 71, + "type": "ImageResizeKJ", + "pos": [ + 204.58009338378906, + 1289.261474609375 + ], + "size": [ + 315, + 266 + ], + "flags": {}, + "order": 11, + "mode": 0, + "inputs": [ + { + "name": "image", + "type": "IMAGE", + "link": 178 + }, + { + "name": "get_image_size", + "type": "IMAGE", + "link": null, + "shape": 7 + }, + { + "name": "width_input", + "type": "INT", + "link": null, + "widget": { + "name": "width_input" + }, + "shape": 7 + }, + { + "name": "height_input", + "type": "INT", + "link": null, + "widget": { + "name": "height_input" + }, + "shape": 7 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 161, + 171, + 189 + ], + "slot_index": 0, + "shape": 3 + }, + { + "name": "width", + "type": "INT", + "links": null, + "shape": 3 + }, + { + "name": "height", + "type": "INT", + "links": null, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "ImageResizeKJ" + }, + "widgets_values": [ + 720, + 480, + "lanczos", + false, + 16, + 0, + 0, + "disabled" + ] + }, + { + "id": 84, + "type": "GetImageRangeFromBatch", + "pos": [ + 197.0398712158203, + 1077.9952392578125 + ], + "size": [ + 340.2047424316406, + 102 + ], + "flags": {}, + "order": 13, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 189, + "shape": 7 + }, + { + "name": "masks", + "type": "MASK", + "link": null, + "shape": 7 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 190 + ], + "slot_index": 0 + }, + { + "name": "MASK", + "type": "MASK", + "links": null + } + ], + "properties": { + "Node name for S&R": "GetImageRangeFromBatch" + }, + "widgets_values": [ + 0, + 1 + ] + } + ], + "links": [ + [ + 54, + 20, + 0, + 30, + 0, + "CLIP" + ], + [ + 132, + 59, + 1, + 60, + 0, + "VAE" + ], + [ + 141, + 59, + 1, + 62, + 0, + "VAE" + ], + [ + 144, + 59, + 0, + 63, + 0, + "COGVIDEOMODEL" + ], + [ + 145, + 30, + 0, + 63, + 1, + "CONDITIONING" + ], + [ + 146, + 31, + 0, + 63, + 2, + "CONDITIONING" + ], + [ + 147, + 62, + 0, + 63, + 4, + "LATENT" + ], + [ + 148, + 63, + 0, + 60, + 1, + "LATENT" + ], + [ + 149, + 30, + 1, + 31, + 0, + "CLIP" + ], + [ + 161, + 71, + 0, + 64, + 0, + "IMAGE" + ], + [ + 164, + 64, + 0, + 63, + 3, + "LATENT" + ], + [ + 165, + 59, + 1, + 73, + 0, + "VAE" + ], + [ + 167, + 64, + 0, + 73, + 1, + "LATENT" + ], + [ + 170, + 74, + 0, + 44, + 0, + "IMAGE" + ], + [ + 171, + 71, + 0, + 74, + 0, + "IMAGE" + ], + [ + 174, + 72, + 0, + 59, + 1, + "COGLORA" + ], + [ + 178, + 68, + 0, + 71, + 0, + "IMAGE" + ], + [ + 181, + 69, + 0, + 68, + 0, + "IMAGE" + ], + [ + 184, + 60, + 0, + 74, + 1, + "IMAGE" + ], + [ + 185, + 73, + 0, + 76, + 0, + "IMAGE" + ], + [ + 189, + 71, + 0, + 84, + 0, + "IMAGE" + ], + [ + 190, + 84, + 0, + 62, + 1, + "IMAGE" + ] + ], + "groups": [], + "config": {}, + "extra": { + "ds": { + "scale": 0.6115909044841579, + "offset": [ + 1276.2661497783536, + -1.7440717555266154 + ] + }, + "node_versions": { + "ComfyUI-CogVideoXWrapper": "8c5e4f812d869653a6c201af0dcd6249c18b3231", + "comfy-core": "0.3.12", + "ComfyUI-KJNodes": "c9c8dcd5e7ed2f7669f130a5ced1e3005264a2de", + "ComfyUI-VideoHelperSuite": "c47b10ca1798b4925ff5a5f07d80c51ca80a837d", + "ComfyUI-NoiseWarp": "8c5e4f812d869653a6c201af0dcd6249c18b3231" + }, + "VHS_latentpreview": true, + "VHS_latentpreviewrate": 0 + }, + "version": 0.4 +} \ No newline at end of file diff --git a/examples/cogvideox_1_0_5b_T2V_02.json b/example_workflows/cogvideox_1_0_5b_T2V_02.json similarity index 100% rename from examples/cogvideox_1_0_5b_T2V_02.json rename to example_workflows/cogvideox_1_0_5b_T2V_02.json diff --git a/examples/cogvideox_1_0_5b_interpolation_02.json b/example_workflows/cogvideox_1_0_5b_interpolation_02.json similarity index 100% rename from examples/cogvideox_1_0_5b_interpolation_02.json rename to example_workflows/cogvideox_1_0_5b_interpolation_02.json diff --git a/examples/cogvideox_1_0_5b_vid2vid_02.json b/example_workflows/cogvideox_1_0_5b_vid2vid_02.json similarity index 100% rename from examples/cogvideox_1_0_5b_vid2vid_02.json rename to example_workflows/cogvideox_1_0_5b_vid2vid_02.json diff --git a/examples/cogvideox_1_5_5b_I2V_01.json b/example_workflows/cogvideox_1_5_5b_I2V_01.json similarity index 100% rename from examples/cogvideox_1_5_5b_I2V_01.json rename to example_workflows/cogvideox_1_5_5b_I2V_01.json diff --git a/examples/cogvideox_Fun_180_orbit_01.json b/example_workflows/cogvideox_Fun_180_orbit_02.json similarity index 71% rename from examples/cogvideox_Fun_180_orbit_01.json rename to example_workflows/cogvideox_Fun_180_orbit_02.json index 599b91b..e6ce430 100644 --- a/examples/cogvideox_Fun_180_orbit_01.json +++ b/example_workflows/cogvideox_Fun_180_orbit_02.json @@ -1,295 +1,457 @@ { - "last_node_id": 73, - "last_link_id": 165, + "last_node_id": 83, + "last_link_id": 179, "nodes": [ { - "id": 20, - "type": "CLIPLoader", - "pos": { - "0": -27, - "1": 42 - }, - "size": { - "0": 451.30548095703125, - "1": 82 + "id": 59, + "type": "GIMMVFI_interpolate", + "pos": [ + 3172.496826171875, + 217.28204345703125 + ], + "size": [ + 330, + 150 + ], + "flags": {}, + "order": 36, + "mode": 0, + "inputs": [ + { + "name": "gimmvfi_model", + "type": "GIMMVIF_MODEL", + "link": 134 + }, + { + "name": "images", + "type": "IMAGE", + "link": 165 + } + ], + "outputs": [ + { + "name": "images", + "type": "IMAGE", + "links": [ + 164 + ], + "slot_index": 0 + }, + { + "name": "flow_tensors", + "type": "IMAGE", + "links": null + } + ], + "properties": { + "Node name for S&R": "GIMMVFI_interpolate" }, + "widgets_values": [ + 1, + 2, + 223874235763998, + "fixed" + ] + }, + { + "id": 58, + "type": "DownloadAndLoadGIMMVFIModel", + "pos": [ + 2802.496826171875, + 207.2820281982422 + ], + "size": [ + 315, + 58 + ], "flags": {}, "order": 0, "mode": 0, "inputs": [], "outputs": [ { - "name": "CLIP", - "type": "CLIP", + "name": "gimmvfi_model", + "type": "GIMMVIF_MODEL", "links": [ - 54 + 134 ], - "slot_index": 0, + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "DownloadAndLoadGIMMVFIModel" + }, + "widgets_values": [ + "gimmvfi_r_arb_lpips_fp32.safetensors" + ] + }, + { + "id": 44, + "type": "VHS_VideoCombine", + "pos": [ + 1731.9658203125, + -809.0521850585938 + ], + "size": [ + 592.7720947265625, + 1087.6961669921875 + ], + "flags": {}, + "order": 33, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 131 + }, + { + "name": "audio", + "type": "AUDIO", + "link": null, + "shape": 7 + }, + { + "name": "meta_batch", + "type": "VHS_BatchManager", + "link": null, + "shape": 7 + }, + { + "name": "vae", + "type": "VAE", + "link": null, + "shape": 7 + } + ], + "outputs": [ + { + "name": "Filenames", + "type": "VHS_FILENAMES", + "links": null, "shape": 3 } ], "properties": { - "Node name for S&R": "CLIPLoader" + "Node name for S&R": "VHS_VideoCombine" }, - "widgets_values": [ - "t5\\google_t5-v1_1-xxl_encoderonly-fp8_e4m3fn.safetensors", - "sd3" - ] + "widgets_values": { + "frame_rate": 8, + "loop_count": 0, + "filename_prefix": "CogVideoX_Fun", + "format": "video/h264-mp4", + "pix_fmt": "yuv420p", + "crf": 19, + "save_metadata": true, + "pingpong": false, + "save_output": false, + "videopreview": { + "hidden": false, + "paused": false, + "params": { + "filename": "CogVideoX_Fun_00001.mp4", + "subfolder": "", + "type": "temp", + "format": "video/h264-mp4", + "frame_rate": 8 + }, + "muted": false + } + } }, { - "id": 52, - "type": "CogVideoLoraSelect", - "pos": { - "0": -3, - "1": -383 - }, + "id": 69, + "type": "DownloadAndLoadFlorence2Model", + "pos": [ + -1255.9063720703125, + 695.8967895507812 + ], "size": [ - 438.44762263180314, + 442.37554931640625, 106 ], "flags": {}, "order": 1, "mode": 0, "inputs": [ - { - "name": "prev_lora", - "type": "COGLORA", - "link": null, - "shape": 7 - } - ], - "outputs": [ { "name": "lora", - "type": "COGLORA", - "links": [ - 124 - ] - } - ], - "properties": { - "Node name for S&R": "CogVideoLoraSelect" - }, - "widgets_values": [ - "DimensionX_orbit_left_lora_rank256_bf16.safetensors", - 1, - true - ] - }, - { - "id": 55, - "type": "ImageFlip+", - "pos": { - "0": 1247, - "1": 770 - }, - "size": { - "0": 315, - "1": 58 - }, - "flags": {}, - "order": 22, - "mode": 0, - "inputs": [ - { - "name": "image", - "type": "IMAGE", - "link": 130 + "type": "PEFTLORA", + "link": null, + "shape": 7 } ], "outputs": [ { - "name": "IMAGE", - "type": "IMAGE", + "name": "florence2_model", + "type": "FL2MODEL", "links": [ - 131, - 151 + 158 ], "slot_index": 0 } ], "properties": { - "Node name for S&R": "ImageFlip+" + "Node name for S&R": "DownloadAndLoadFlorence2Model" }, "widgets_values": [ - "x" + "MiaoshouAI/Florence-2-base-PromptGen-v2.0", + "fp16", + "sdpa" ] }, { - "id": 54, - "type": "ImageFlip+", - "pos": { - "0": 847, - "1": 802 - }, - "size": { - "0": 315, - "1": 58 - }, - "flags": {}, - "order": 10, - "mode": 0, - "inputs": [ - { - "name": "image", - "type": "IMAGE", - "link": 128 - } + "id": 70, + "type": "Florence2Run", + "pos": [ + -1245.906494140625, + 861.896728515625 ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 129 - ], - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "ImageFlip+" - }, - "widgets_values": [ - "x" - ] - }, - { - "id": 50, - "type": "CogVideoImageEncodeFunInP", - "pos": { - "0": 865, - "1": 567 - }, "size": [ - 253.60000610351562, - 146 + 400, + 352 ], "flags": {}, - "order": 13, + "order": 21, "mode": 0, "inputs": [ { - "name": "vae", - "type": "VAE", - "link": 119 - }, - { - "name": "start_image", + "name": "image", "type": "IMAGE", - "link": 129 + "link": 159 }, { - "name": "end_image", - "type": "IMAGE", - "link": null, - "shape": 7 - }, - { - "name": "num_frames", - "type": "INT", - "link": 126, - "widget": { - "name": "num_frames" - } + "name": "florence2_model", + "type": "FL2MODEL", + "link": 158 } ], "outputs": [ { - "name": "image_cond_latents", - "type": "LATENT", - "links": [ - 120 - ], + "name": "image", + "type": "IMAGE", + "links": null, "slot_index": 0 + }, + { + "name": "mask", + "type": "MASK", + "links": null + }, + { + "name": "caption", + "type": "STRING", + "links": [ + 161, + 162 + ], + "slot_index": 2 + }, + { + "name": "data", + "type": "JSON", + "links": null } ], "properties": { - "Node name for S&R": "CogVideoImageEncodeFunInP" + "Node name for S&R": "Florence2Run" }, "widgets_values": [ - 33, + "", + "more_detailed_caption", true, - 0.03 + false, + 226, + 3, + true, + "", + 586007018516875, + "fixed" ] }, { - "id": 63, - "type": "CogVideoImageEncodeFunInP", - "pos": { - "0": 936.3893432617188, - "1": 1048.5242919921875 - }, - "size": { - "0": 253.60000610351562, - "1": 146 - }, - "flags": {}, - "order": 11, - "mode": 0, - "inputs": [ - { - "name": "vae", - "type": "VAE", - "link": 144 - }, - { - "name": "start_image", - "type": "IMAGE", - "link": 146 - }, - { - "name": "end_image", - "type": "IMAGE", - "link": null, - "shape": 7 - }, - { - "name": "num_frames", - "type": "INT", - "link": 145, - "widget": { - "name": "num_frames" - } - } + "id": 71, + "type": "StringConstantMultiline", + "pos": [ + -792.9064331054688, + 428.8970947265625 ], + "size": [ + 400, + 200 + ], + "flags": {}, + "order": 2, + "mode": 0, + "inputs": [], "outputs": [ { - "name": "image_cond_latents", - "type": "LATENT", + "name": "STRING", + "type": "STRING", "links": [ - 147 + 160 ], "slot_index": 0 } ], "properties": { - "Node name for S&R": "CogVideoImageEncodeFunInP" + "Node name for S&R": "StringConstantMultiline" }, "widgets_values": [ - 33, - true, - 0.03 + "camera orbit", + false ] }, + { + "id": 72, + "type": "JoinStrings", + "pos": [ + -705.906494140625, + 754.896728515625 + ], + "size": [ + 315, + 106 + ], + "flags": {}, + "order": 24, + "mode": 0, + "inputs": [ + { + "name": "string1", + "type": "STRING", + "link": 160, + "widget": { + "name": "string1" + } + }, + { + "name": "string2", + "type": "STRING", + "link": 162, + "widget": { + "name": "string2" + } + } + ], + "outputs": [ + { + "name": "STRING", + "type": "STRING", + "links": [ + 163 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "JoinStrings" + }, + "widgets_values": [ + "", + "", + ", " + ] + }, + { + "id": 73, + "type": "ShowText|pysssss", + "pos": [ + -799.9064331054688, + 950.8969116210938 + ], + "size": [ + 502.3168640136719, + 180.55015563964844 + ], + "flags": {}, + "order": 23, + "mode": 0, + "inputs": [ + { + "name": "text", + "type": "STRING", + "link": 161, + "widget": { + "name": "text" + } + } + ], + "outputs": [ + { + "name": "STRING", + "type": "STRING", + "links": null, + "shape": 6 + } + ], + "properties": { + "Node name for S&R": "ShowText|pysssss" + }, + "widgets_values": [ + "", + "A digital illustration shoot from a frontal camera angle about a dark knight in shining armor stands in a dimly lit forest, with a glowing fire in the background. the image also shows a mysterious and intense atmosphere. on the middle of the image, a male knight appears to be standing, facing the viewer, with his full body visible. he is wearing a full plate armor with a red cloth draped over his shoulders. the armor is shiny and detailed, with intricate designs and a chain attached to it. he has two curved horns on his head, and his eyes are glowing yellow. the background is dark and smoky, with tall trees and a warm, glowing fire." + ] + }, + { + "id": 74, + "type": "SetNode", + "pos": [ + -208.98883056640625, + -1011.4821166992188 + ], + "size": [ + 210, + 58 + ], + "flags": { + "collapsed": true + }, + "order": 18, + "mode": 0, + "inputs": [ + { + "name": "VAE", + "type": "VAE", + "link": 166 + } + ], + "outputs": [ + { + "name": "*", + "type": "*", + "links": null + } + ], + "title": "Set_VAE", + "properties": { + "previousName": "VAE" + }, + "widgets_values": [ + "VAE" + ], + "color": "#322", + "bgcolor": "#533" + }, { "id": 51, "type": "CogVideoDecode", - "pos": { - "0": 1219, - "1": -134 - }, - "size": { - "0": 315, - "1": 198 - }, + "pos": [ + 1301.9658203125, + -479.0520324707031 + ], + "size": [ + 315, + 198 + ], "flags": {}, - "order": 20, + "order": 29, "mode": 0, "inputs": [ { "name": "vae", "type": "VAE", - "link": 122 + "link": 167 }, { "name": "samples", @@ -320,18 +482,67 @@ ] }, { - "id": 53, - "type": "PrimitiveNode", - "pos": { - "0": 117, - "1": 399 - }, + "id": 64, + "type": "CogVideoDecode", + "pos": [ + 1266.369384765625, + 889 + ], "size": [ - 261.57286031534534, + 315, + 198 + ], + "flags": {}, + "order": 30, + "mode": 0, + "inputs": [ + { + "name": "vae", + "type": "VAE", + "link": 170 + }, + { + "name": "samples", + "type": "LATENT", + "link": 148 + } + ], + "outputs": [ + { + "name": "images", + "type": "IMAGE", + "links": [ + 150, + 153 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "CogVideoDecode" + }, + "widgets_values": [ + true, + 240, + 360, + 0.2, + 0.2, + true + ] + }, + { + "id": 68, + "type": "PrimitiveNode", + "pos": [ + 1081.9658203125, + -649.0521850585938 + ], + "size": [ + 295.9042053222656, 82 ], "flags": {}, - "order": 2, + "order": 3, "mode": 0, "inputs": [], "outputs": [ @@ -339,45 +550,140 @@ "name": "INT", "type": "INT", "links": [ - 126, - 127, - 143, - 145 + 156, + 157 ], + "slot_index": 0, "widget": { - "name": "num_frames" - }, - "slot_index": 0 + "name": "seed" + } } ], - "title": "num_frames", + "title": "seed", "properties": { "Run widget replace on values": false }, "widgets_values": [ - 33, + 458091243358278, "fixed" ] }, + { + "id": 54, + "type": "ImageFlip+", + "pos": [ + 931.9658813476562, + 300.9479675292969 + ], + "size": [ + 315, + 58 + ], + "flags": {}, + "order": 19, + "mode": 0, + "inputs": [ + { + "name": "image", + "type": "IMAGE", + "link": 128 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 129 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "ImageFlip+" + }, + "widgets_values": [ + "x" + ] + }, + { + "id": 63, + "type": "CogVideoImageEncodeFunInP", + "pos": [ + 944.7587280273438, + 1048.5242919921875 + ], + "size": [ + 253.60000610351562, + 146 + ], + "flags": {}, + "order": 20, + "mode": 0, + "inputs": [ + { + "name": "vae", + "type": "VAE", + "link": 169 + }, + { + "name": "start_image", + "type": "IMAGE", + "link": 146 + }, + { + "name": "end_image", + "type": "IMAGE", + "link": null, + "shape": 7 + }, + { + "name": "num_frames", + "type": "INT", + "link": 175, + "widget": { + "name": "num_frames" + } + } + ], + "outputs": [ + { + "name": "image_cond_latents", + "type": "LATENT", + "links": [ + 147 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "CogVideoImageEncodeFunInP" + }, + "widgets_values": [ + 33, + true, + 0.03 + ] + }, { "id": 48, "type": "CogVideoSampler", - "pos": { - "0": 1200, - "1": 124 - }, + "pos": [ + 1281.9658203125, + -219.0520782470703 + ], "size": [ 330, 574 ], "flags": {}, - "order": 18, + "order": 27, "mode": 0, "inputs": [ { "name": "model", "type": "COGVIDEOMODEL", - "link": 114 + "link": 178 }, { "name": "positive", @@ -428,7 +734,7 @@ { "name": "num_frames", "type": "INT", - "link": 127, + "link": 172, "widget": { "name": "num_frames" } @@ -466,18 +772,20 @@ ] }, { - "id": 68, - "type": "PrimitiveNode", - "pos": { - "0": 514, - "1": 985 - }, - "size": [ - 295.90419649751334, - 82 + "id": 79, + "type": "GetNode", + "pos": [ + 971.9658813476562, + -8.052048683166504 ], - "flags": {}, - "order": 3, + "size": [ + 210, + 58 + ], + "flags": { + "collapsed": true + }, + "order": 4, "mode": 0, "inputs": [], "outputs": [ @@ -485,78 +793,972 @@ "name": "INT", "type": "INT", "links": [ - 156, - 157 + 172, + 173 ], - "widget": { - "name": "seed" - }, "slot_index": 0 } ], - "title": "seed", - "properties": { - "Run widget replace on values": false - }, + "title": "Get_Frames", + "properties": {}, "widgets_values": [ - 458091243358278, - "fixed" - ] + "Frames" + ], + "color": "#1b4669", + "bgcolor": "#29699c" }, { - "id": 69, - "type": "DownloadAndLoadFlorence2Model", - "pos": { - "0": -1305, - "1": -13 - }, + "id": 65, + "type": "VHS_VideoCombine", + "pos": [ + 1748.369384765625, + 682 + ], "size": [ - 442.37554309913344, - 106 + 620.0130615234375, + 1124.0174560546875 ], "flags": {}, - "order": 4, + "order": 32, "mode": 0, "inputs": [ { - "name": "lora", - "type": "PEFTLORA", + "name": "images", + "type": "IMAGE", + "link": 150 + }, + { + "name": "audio", + "type": "AUDIO", + "link": null, + "shape": 7 + }, + { + "name": "meta_batch", + "type": "VHS_BatchManager", + "link": null, + "shape": 7 + }, + { + "name": "vae", + "type": "VAE", "link": null, "shape": 7 } ], "outputs": [ { - "name": "florence2_model", - "type": "FL2MODEL", + "name": "Filenames", + "type": "VHS_FILENAMES", + "links": null, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "VHS_VideoCombine" + }, + "widgets_values": { + "frame_rate": 8, + "loop_count": 0, + "filename_prefix": "CogVideoX_Fun", + "format": "video/h264-mp4", + "pix_fmt": "yuv420p", + "crf": 19, + "save_metadata": true, + "pingpong": false, + "save_output": false, + "videopreview": { + "hidden": false, + "paused": false, + "params": { + "filename": "CogVideoX_Fun_00002.mp4", + "subfolder": "", + "type": "temp", + "format": "video/h264-mp4", + "frame_rate": 8 + }, + "muted": false + } + } + }, + { + "id": 80, + "type": "GetNode", + "pos": [ + 927.369384765625, + 1387 + ], + "size": [ + 210, + 58 + ], + "flags": { + "collapsed": true + }, + "order": 5, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "INT", + "type": "INT", "links": [ - 158 + 174, + 175 + ], + "slot_index": 0 + } + ], + "title": "Get_Frames", + "properties": {}, + "widgets_values": [ + "Frames" + ], + "color": "#1b4669", + "bgcolor": "#29699c" + }, + { + "id": 76, + "type": "GetNode", + "pos": [ + 907.369384765625, + 919 + ], + "size": [ + 210, + 58 + ], + "flags": { + "collapsed": true + }, + "order": 6, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "VAE", + "type": "VAE", + "links": [ + 169, + 170 + ] + } + ], + "title": "Get_VAE", + "properties": {}, + "widgets_values": [ + "VAE" + ], + "color": "#322", + "bgcolor": "#533" + }, + { + "id": 50, + "type": "CogVideoImageEncodeFunInP", + "pos": [ + 991.9658813476562, + 90.94794464111328 + ], + "size": [ + 253.60000610351562, + 146 + ], + "flags": {}, + "order": 22, + "mode": 0, + "inputs": [ + { + "name": "vae", + "type": "VAE", + "link": 176 + }, + { + "name": "start_image", + "type": "IMAGE", + "link": 129 + }, + { + "name": "end_image", + "type": "IMAGE", + "link": null, + "shape": 7 + }, + { + "name": "num_frames", + "type": "INT", + "link": 173, + "widget": { + "name": "num_frames" + } + } + ], + "outputs": [ + { + "name": "image_cond_latents", + "type": "LATENT", + "links": [ + 120 ], "slot_index": 0 } ], "properties": { - "Node name for S&R": "DownloadAndLoadFlorence2Model" + "Node name for S&R": "CogVideoImageEncodeFunInP" }, "widgets_values": [ - "MiaoshouAI/Florence-2-base-PromptGen-v2.0", - "fp16", - "sdpa" + 33, + true, + 0.03 + ] + }, + { + "id": 55, + "type": "ImageFlip+", + "pos": [ + 1746, + 333 + ], + "size": [ + 315, + 58 + ], + "flags": {}, + "order": 31, + "mode": 0, + "inputs": [ + { + "name": "image", + "type": "IMAGE", + "link": 130 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 131, + 151 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "ImageFlip+" + }, + "widgets_values": [ + "x" + ] + }, + { + "id": 66, + "type": "ReverseImageBatch", + "pos": [ + 2123, + 338 + ], + "size": [ + 239.40000915527344, + 26 + ], + "flags": {}, + "order": 34, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 151 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 152 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "ReverseImageBatch" + }, + "widgets_values": [] + }, + { + "id": 67, + "type": "ImageBatchMulti", + "pos": [ + 2812.2978515625, + 337.11962890625 + ], + "size": [ + 210, + 102 + ], + "flags": {}, + "order": 35, + "mode": 0, + "inputs": [ + { + "name": "image_1", + "type": "IMAGE", + "link": 152 + }, + { + "name": "image_2", + "type": "IMAGE", + "link": 153 + } + ], + "outputs": [ + { + "name": "images", + "type": "IMAGE", + "links": [ + 165 + ], + "slot_index": 0 + } + ], + "properties": {}, + "widgets_values": [ + 2, + null + ] + }, + { + "id": 60, + "type": "VHS_VideoCombine", + "pos": [ + 2909.2978515625, + 564.1198120117188 + ], + "size": [ + 552.211181640625, + 1033.6148681640625 + ], + "flags": {}, + "order": 37, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 164 + }, + { + "name": "audio", + "type": "AUDIO", + "link": null, + "shape": 7 + }, + { + "name": "meta_batch", + "type": "VHS_BatchManager", + "link": null, + "shape": 7 + }, + { + "name": "vae", + "type": "VAE", + "link": null, + "shape": 7 + } + ], + "outputs": [ + { + "name": "Filenames", + "type": "VHS_FILENAMES", + "links": null, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "VHS_VideoCombine" + }, + "widgets_values": { + "frame_rate": 16, + "loop_count": 0, + "filename_prefix": "CogVideoX_Fun_orbits", + "format": "video/h264-mp4", + "pix_fmt": "yuv420p", + "crf": 19, + "save_metadata": true, + "pingpong": false, + "save_output": true, + "videopreview": { + "hidden": false, + "paused": false, + "params": { + "filename": "CogVideoX_Fun_orbits_00001.mp4", + "subfolder": "", + "type": "output", + "format": "video/h264-mp4", + "frame_rate": 16 + }, + "muted": false + } + } + }, + { + "id": 30, + "type": "CogVideoTextEncode", + "pos": [ + 134, + 151 + ], + "size": [ + 458.8887634277344, + 119.00272369384766 + ], + "flags": {}, + "order": 25, + "mode": 0, + "inputs": [ + { + "name": "clip", + "type": "CLIP", + "link": 54 + }, + { + "name": "prompt", + "type": "STRING", + "link": 163, + "widget": { + "name": "prompt" + } + } + ], + "outputs": [ + { + "name": "conditioning", + "type": "CONDITIONING", + "links": [ + 116, + 140 + ], + "slot_index": 0, + "shape": 3 + }, + { + "name": "clip", + "type": "CLIP", + "links": [ + 110 + ], + "slot_index": 1 + } + ], + "properties": { + "Node name for S&R": "CogVideoTextEncode" + }, + "widgets_values": [ + "camera orbit around a mouse knight standing in a fantasy forest", + 1, + false + ], + "color": "#232", + "bgcolor": "#353" + }, + { + "id": 81, + "type": "SetNode", + "pos": [ + -234, + -1069 + ], + "size": [ + 210, + 58 + ], + "flags": { + "collapsed": true + }, + "order": 17, + "mode": 0, + "inputs": [ + { + "name": "COGVIDEOMODEL", + "type": "COGVIDEOMODEL", + "link": 177 + } + ], + "outputs": [ + { + "name": "*", + "type": "*", + "links": null + } + ], + "title": "Set_CogVideoXModel", + "properties": { + "previousName": "CogVideoXModel" + }, + "widgets_values": [ + "CogVideoXModel" + ], + "color": "#223", + "bgcolor": "#335" + }, + { + "id": 49, + "type": "DownloadAndLoadCogVideoModel", + "pos": [ + -710, + -1109 + ], + "size": [ + 362.1656799316406, + 218 + ], + "flags": {}, + "order": 14, + "mode": 0, + "inputs": [ + { + "name": "block_edit", + "type": "TRANSFORMERBLOCKS", + "link": null, + "shape": 7 + }, + { + "name": "lora", + "type": "COGLORA", + "link": 124, + "shape": 7 + }, + { + "name": "compile_args", + "type": "COMPILEARGS", + "link": null, + "shape": 7 + } + ], + "outputs": [ + { + "name": "model", + "type": "COGVIDEOMODEL", + "links": [ + 177 + ], + "slot_index": 0 + }, + { + "name": "vae", + "type": "VAE", + "links": [ + 166 + ], + "slot_index": 1 + } + ], + "properties": { + "Node name for S&R": "DownloadAndLoadCogVideoModel" + }, + "widgets_values": [ + "alibaba-pai/CogVideoX-Fun-V1.1-5b-InP", + "bf16", + "disabled", + false, + "sdpa", + "main_device" + ], + "color": "#223", + "bgcolor": "#335" + }, + { + "id": 52, + "type": "CogVideoLoraSelect", + "pos": [ + -1232, + -1096 + ], + "size": [ + 438.4476318359375, + 106 + ], + "flags": {}, + "order": 7, + "mode": 0, + "inputs": [ + { + "name": "prev_lora", + "type": "COGLORA", + "link": null, + "shape": 7 + } + ], + "outputs": [ + { + "name": "lora", + "type": "COGLORA", + "links": [ + 124 + ] + } + ], + "properties": { + "Node name for S&R": "CogVideoLoraSelect" + }, + "widgets_values": [ + "DimensionX_orbit_left_lora_rank256_bf16.safetensors", + 1, + true + ], + "color": "#223", + "bgcolor": "#335" + }, + { + "id": 75, + "type": "GetNode", + "pos": [ + 1037, + -446 + ], + "size": [ + 210, + 58 + ], + "flags": { + "collapsed": true + }, + "order": 8, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "VAE", + "type": "VAE", + "links": [ + 167, + 176 + ] + } + ], + "title": "Get_VAE", + "properties": {}, + "widgets_values": [ + "VAE" + ], + "color": "#322", + "bgcolor": "#533" + }, + { + "id": 82, + "type": "GetNode", + "pos": [ + 1043, + -330 + ], + "size": [ + 210, + 58 + ], + "flags": { + "collapsed": true + }, + "order": 9, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "COGVIDEOMODEL", + "type": "COGVIDEOMODEL", + "links": [ + 178 + ], + "slot_index": 0 + } + ], + "title": "Get_CogVideoXModel", + "properties": {}, + "widgets_values": [ + "CogVideoXModel" + ], + "color": "#223", + "bgcolor": "#335" + }, + { + "id": 62, + "type": "CogVideoSampler", + "pos": [ + 1266.369384765625, + 1151 + ], + "size": [ + 330, + 574 + ], + "flags": {}, + "order": 28, + "mode": 0, + "inputs": [ + { + "name": "model", + "type": "COGVIDEOMODEL", + "link": 179 + }, + { + "name": "positive", + "type": "CONDITIONING", + "link": 140 + }, + { + "name": "negative", + "type": "CONDITIONING", + "link": 141 + }, + { + "name": "samples", + "type": "LATENT", + "link": null, + "shape": 7 + }, + { + "name": "image_cond_latents", + "type": "LATENT", + "link": 147, + "shape": 7 + }, + { + "name": "context_options", + "type": "COGCONTEXT", + "link": null, + "shape": 7 + }, + { + "name": "controlnet", + "type": "COGVIDECONTROLNET", + "link": null, + "shape": 7 + }, + { + "name": "tora_trajectory", + "type": "TORAFEATURES", + "link": null, + "shape": 7 + }, + { + "name": "fastercache", + "type": "FASTERCACHEARGS", + "link": null, + "shape": 7 + }, + { + "name": "num_frames", + "type": "INT", + "link": 174, + "widget": { + "name": "num_frames" + } + }, + { + "name": "seed", + "type": "INT", + "link": 157, + "widget": { + "name": "seed" + } + } + ], + "outputs": [ + { + "name": "samples", + "type": "LATENT", + "links": [ + 148 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "CogVideoSampler" + }, + "widgets_values": [ + 33, + 40, + 6, + 458091243358278, + "fixed", + "CogVideoXDDIM", + 1 + ] + }, + { + "id": 83, + "type": "GetNode", + "pos": [ + 1044, + 1245 + ], + "size": [ + 210, + 58 + ], + "flags": { + "collapsed": true + }, + "order": 10, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "COGVIDEOMODEL", + "type": "COGVIDEOMODEL", + "links": [ + 179 + ], + "slot_index": 0 + } + ], + "title": "Get_CogVideoXModel", + "properties": {}, + "widgets_values": [ + "CogVideoXModel" + ], + "color": "#223", + "bgcolor": "#335" + }, + { + "id": 31, + "type": "CogVideoTextEncode", + "pos": [ + 134, + 337 + ], + "size": [ + 463.01251220703125, + 144 + ], + "flags": {}, + "order": 26, + "mode": 0, + "inputs": [ + { + "name": "clip", + "type": "CLIP", + "link": 110 + } + ], + "outputs": [ + { + "name": "conditioning", + "type": "CONDITIONING", + "links": [ + 117, + 141 + ], + "slot_index": 0, + "shape": 3 + }, + { + "name": "clip", + "type": "CLIP", + "links": null + } + ], + "properties": { + "Node name for S&R": "CogVideoTextEncode" + }, + "widgets_values": [ + "The video is not of a high quality, it has a low resolution. Watermark present in each frame. Strange motion trajectory. ", + 1, + true + ], + "color": "#322", + "bgcolor": "#533" + }, + { + "id": 20, + "type": "CLIPLoader", + "pos": [ + -705, + -833 + ], + "size": [ + 451.30548095703125, + 82 + ], + "flags": {}, + "order": 11, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "CLIP", + "type": "CLIP", + "links": [ + 54 + ], + "slot_index": 0, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "CLIPLoader" + }, + "widgets_values": [ + "t5\\google_t5-v1_1-xxl_encoderonly-fp8_e4m3fn.safetensors", + "sd3" + ], + "color": "#432", + "bgcolor": "#653" + }, + { + "id": 36, + "type": "LoadImage", + "pos": [ + -1250, + -382 + ], + "size": [ + 441.7763671875, + 587.7473754882812 + ], + "flags": {}, + "order": 12, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 71 + ], + "slot_index": 0, + "shape": 3 + }, + { + "name": "MASK", + "type": "MASK", + "links": null, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "LoadImage" + }, + "widgets_values": [ + "ComfyUI_temp_lhgah_00059_.png", + "image" ] }, { "id": 37, "type": "ImageResizeKJ", - "pos": { - "0": -202, - "1": 588 - }, - "size": { - "0": 315, - "1": 266 - }, + "pos": [ + -723, + -384 + ], + "size": [ + 315, + 266 + ], "flags": {}, - "order": 9, + "order": 15, "mode": 0, "inputs": [ { @@ -620,953 +1822,86 @@ 768, "lanczos", true, - 2, + 16, 0, 0, "disabled" ] }, { - "id": 71, - "type": "StringConstantMultiline", - "pos": { - "0": -709, - "1": 20 - }, - "size": { - "0": 400, - "1": 200 - }, + "id": 77, + "type": "INTConstant", + "pos": [ + 106, + -459 + ], + "size": [ + 200, + 58 + ], "flags": {}, - "order": 5, + "order": 13, "mode": 0, "inputs": [], "outputs": [ { - "name": "STRING", - "type": "STRING", + "name": "value", + "type": "INT", "links": [ - 160 + 171 ], "slot_index": 0 } ], + "title": "Frames", "properties": { - "Node name for S&R": "StringConstantMultiline" + "Node name for S&R": "INTConstant" }, "widgets_values": [ - "camera orbit", - false - ] + 33 + ], + "color": "#1b4669", + "bgcolor": "#29699c" }, { - "id": 72, - "type": "JoinStrings", - "pos": { - "0": -232, - "1": 231 - }, + "id": 78, + "type": "SetNode", + "pos": [ + 348, + -428 + ], "size": [ - 315, - 106 + 210, + 58 ], - "flags": {}, - "order": 15, - "mode": 0, - "inputs": [ - { - "name": "string1", - "type": "STRING", - "link": 160, - "widget": { - "name": "string1" - } - }, - { - "name": "string2", - "type": "STRING", - "link": 162, - "widget": { - "name": "string2" - } - } - ], - "outputs": [ - { - "name": "STRING", - "type": "STRING", - "links": [ - 163 - ], - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "JoinStrings" + "flags": { + "collapsed": true }, - "widgets_values": [ - "", - "", - ", " - ] - }, - { - "id": 70, - "type": "Florence2Run", - "pos": { - "0": -1276, - "1": 170 - }, - "size": { - "0": 400, - "1": 352 - }, - "flags": {}, - "order": 12, - "mode": 0, - "inputs": [ - { - "name": "image", - "type": "IMAGE", - "link": 159 - }, - { - "name": "florence2_model", - "type": "FL2MODEL", - "link": 158 - } - ], - "outputs": [ - { - "name": "image", - "type": "IMAGE", - "links": null, - "slot_index": 0 - }, - { - "name": "mask", - "type": "MASK", - "links": null - }, - { - "name": "caption", - "type": "STRING", - "links": [ - 161, - 162 - ], - "slot_index": 2 - }, - { - "name": "data", - "type": "JSON", - "links": null - } - ], - "properties": { - "Node name for S&R": "Florence2Run" - }, - "widgets_values": [ - "", - "more_detailed_caption", - true, - false, - 226, - 3, - true, - "", - 586007018516875, - "fixed" - ] - }, - { - "id": 73, - "type": "ShowText|pysssss", - "pos": { - "0": -793, - "1": 321 - }, - "size": [ - 502.3168660879171, - 180.55015376950485 - ], - "flags": {}, - "order": 14, - "mode": 0, - "inputs": [ - { - "name": "text", - "type": "STRING", - "link": 161, - "widget": { - "name": "text" - } - } - ], - "outputs": [ - { - "name": "STRING", - "type": "STRING", - "links": null, - "shape": 6 - } - ], - "properties": { - "Node name for S&R": "ShowText|pysssss" - }, - "widgets_values": [ - "", - "A digital illustration shoot from a frontal camera angle about a dark knight in shining armor stands in a dimly lit forest, with a glowing fire in the background. the image also shows a mysterious and intense atmosphere. on the middle of the image, a male knight appears to be standing, facing the viewer, with his full body visible. he is wearing a full plate armor with a red cloth draped over his shoulders. the armor is shiny and detailed, with intricate designs and a chain attached to it. he has two curved horns on his head, and his eyes are glowing yellow. the background is dark and smoky, with tall trees and a warm, glowing fire." - ] - }, - { - "id": 59, - "type": "GIMMVFI_interpolate", - "pos": { - "0": 2880, - "1": -200 - }, - "size": { - "0": 330, - "1": 150 - }, - "flags": {}, - "order": 27, - "mode": 0, - "inputs": [ - { - "name": "gimmvfi_model", - "type": "GIMMVIF_MODEL", - "link": 134 - }, - { - "name": "images", - "type": "IMAGE", - "link": 165 - } - ], - "outputs": [ - { - "name": "images", - "type": "IMAGE", - "links": [ - 164 - ], - "slot_index": 0 - }, - { - "name": "flow_tensors", - "type": "IMAGE", - "links": null - } - ], - "properties": { - "Node name for S&R": "GIMMVFI_interpolate" - }, - "widgets_values": [ - 1, - 2, - 223874235763998, - "fixed" - ] - }, - { - "id": 67, - "type": "ImageBatchMulti", - "pos": { - "0": 2900, - "1": 20 - }, - "size": { - "0": 210, - "1": 102 - }, - "flags": {}, - "order": 26, - "mode": 0, - "inputs": [ - { - "name": "image_1", - "type": "IMAGE", - "link": 152 - }, - { - "name": "image_2", - "type": "IMAGE", - "link": 153 - } - ], - "outputs": [ - { - "name": "images", - "type": "IMAGE", - "links": [ - 165 - ], - "slot_index": 0 - } - ], - "properties": {}, - "widgets_values": [ - 2, - null - ] - }, - { - "id": 66, - "type": "ReverseImageBatch", - "pos": { - "0": 2590, - "1": -20 - }, - "size": { - "0": 239.40000915527344, - "1": 26 - }, - "flags": {}, - "order": 25, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 151 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 152 - ], - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "ReverseImageBatch" - } - }, - { - "id": 58, - "type": "DownloadAndLoadGIMMVFIModel", - "pos": { - "0": 2510, - "1": -210 - }, - "size": { - "0": 315, - "1": 58 - }, - "flags": {}, - "order": 6, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "gimmvfi_model", - "type": "GIMMVIF_MODEL", - "links": [ - 134 - ], - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "DownloadAndLoadGIMMVFIModel" - }, - "widgets_values": [ - "gimmvfi_r_arb_lpips_fp32.safetensors" - ] - }, - { - "id": 36, - "type": "LoadImage", - "pos": { - "0": -808, - "1": 573 - }, - "size": [ - 556.7343073028583, - 502.50569947324857 - ], - "flags": {}, - "order": 7, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 71 - ], - "slot_index": 0, - "shape": 3 - }, - { - "name": "MASK", - "type": "MASK", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "LoadImage" - }, - "widgets_values": [ - "ComfyUI_temp_lhgah_00059_.png", - "image" - ] - }, - { - "id": 60, - "type": "VHS_VideoCombine", - "pos": { - "0": 2520, - "1": 180 - }, - "size": [ - 860.5738525390625, - 1444.76513671875 - ], - "flags": {}, - "order": 28, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 164 - }, - { - "name": "audio", - "type": "AUDIO", - "link": null, - "shape": 7 - }, - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null, - "shape": 7 - }, - { - "name": "vae", - "type": "VAE", - "link": null, - "shape": 7 - } - ], - "outputs": [ - { - "name": "Filenames", - "type": "VHS_FILENAMES", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "VHS_VideoCombine" - }, - "widgets_values": { - "frame_rate": 16, - "loop_count": 0, - "filename_prefix": "CogVideoX_Fun_orbits", - "format": "video/h264-mp4", - "pix_fmt": "yuv420p", - "crf": 19, - "save_metadata": true, - "pingpong": false, - "save_output": true, - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "filename": "CogVideoX_Fun_orbits_00003.mp4", - "subfolder": "", - "type": "temp", - "format": "video/h264-mp4", - "frame_rate": 16 - }, - "muted": false - } - } - }, - { - "id": 30, - "type": "CogVideoTextEncode", - "pos": { - "0": 478, - "1": 90 - }, - "size": [ - 471.90142822265625, - 168.08047485351562 - ], - "flags": {}, "order": 16, "mode": 0, "inputs": [ { - "name": "clip", - "type": "CLIP", - "link": 54 - }, - { - "name": "prompt", - "type": "STRING", - "link": 163, - "widget": { - "name": "prompt" - } + "name": "INT", + "type": "INT", + "link": 171 } ], "outputs": [ { - "name": "conditioning", - "type": "CONDITIONING", - "links": [ - 116, - 140 - ], - "slot_index": 0, - "shape": 3 - }, - { - "name": "clip", - "type": "CLIP", - "links": [ - 110 - ], - "slot_index": 1 - } - ], - "properties": { - "Node name for S&R": "CogVideoTextEncode" - }, - "widgets_values": [ - "camera orbit around a mouse knight standing in a fantasy forest", - 1, - false - ] - }, - { - "id": 31, - "type": "CogVideoTextEncode", - "pos": { - "0": 493, - "1": 334 - }, - "size": { - "0": 463.01251220703125, - "1": 144 - }, - "flags": {}, - "order": 17, - "mode": 0, - "inputs": [ - { - "name": "clip", - "type": "CLIP", - "link": 110 - } - ], - "outputs": [ - { - "name": "conditioning", - "type": "CONDITIONING", - "links": [ - 117, - 141 - ], - "slot_index": 0, - "shape": 3 - }, - { - "name": "clip", - "type": "CLIP", + "name": "*", + "type": "*", "links": null } ], + "title": "Set_Frames", "properties": { - "Node name for S&R": "CogVideoTextEncode" + "previousName": "Frames" }, "widgets_values": [ - "The video is not of a high quality, it has a low resolution. Watermark present in each frame. Strange motion trajectory. ", - 1, - true - ] - }, - { - "id": 62, - "type": "CogVideoSampler", - "pos": { - "0": 1258, - "1": 1151 - }, - "size": [ - 330, - 574 + "Frames" ], - "flags": {}, - "order": 19, - "mode": 0, - "inputs": [ - { - "name": "model", - "type": "COGVIDEOMODEL", - "link": 139 - }, - { - "name": "positive", - "type": "CONDITIONING", - "link": 140 - }, - { - "name": "negative", - "type": "CONDITIONING", - "link": 141 - }, - { - "name": "samples", - "type": "LATENT", - "link": null, - "shape": 7 - }, - { - "name": "image_cond_latents", - "type": "LATENT", - "link": 147, - "shape": 7 - }, - { - "name": "context_options", - "type": "COGCONTEXT", - "link": null, - "shape": 7 - }, - { - "name": "controlnet", - "type": "COGVIDECONTROLNET", - "link": null, - "shape": 7 - }, - { - "name": "tora_trajectory", - "type": "TORAFEATURES", - "link": null, - "shape": 7 - }, - { - "name": "fastercache", - "type": "FASTERCACHEARGS", - "link": null, - "shape": 7 - }, - { - "name": "num_frames", - "type": "INT", - "link": 143, - "widget": { - "name": "num_frames" - } - }, - { - "name": "seed", - "type": "INT", - "link": 157, - "widget": { - "name": "seed" - } - } - ], - "outputs": [ - { - "name": "samples", - "type": "LATENT", - "links": [ - 148 - ], - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "CogVideoSampler" - }, - "widgets_values": [ - 33, - 40, - 6, - 458091243358278, - "fixed", - "CogVideoXDDIM", - 1 - ] - }, - { - "id": 64, - "type": "CogVideoDecode", - "pos": { - "0": 1258, - "1": 889 - }, - "size": { - "0": 315, - "1": 198 - }, - "flags": {}, - "order": 21, - "mode": 0, - "inputs": [ - { - "name": "vae", - "type": "VAE", - "link": 149 - }, - { - "name": "samples", - "type": "LATENT", - "link": 148 - } - ], - "outputs": [ - { - "name": "images", - "type": "IMAGE", - "links": [ - 150, - 153 - ], - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "CogVideoDecode" - }, - "widgets_values": [ - true, - 240, - 360, - 0.2, - 0.2, - true - ] - }, - { - "id": 44, - "type": "VHS_VideoCombine", - "pos": { - "0": 1652, - "1": -465 - }, - "size": [ - 592.7721081788095, - 1087.6961669921875 - ], - "flags": {}, - "order": 24, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 131 - }, - { - "name": "audio", - "type": "AUDIO", - "link": null, - "shape": 7 - }, - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null, - "shape": 7 - }, - { - "name": "vae", - "type": "VAE", - "link": null, - "shape": 7 - } - ], - "outputs": [ - { - "name": "Filenames", - "type": "VHS_FILENAMES", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "VHS_VideoCombine" - }, - "widgets_values": { - "frame_rate": 8, - "loop_count": 0, - "filename_prefix": "CogVideoX_Fun", - "format": "video/h264-mp4", - "pix_fmt": "yuv420p", - "crf": 19, - "save_metadata": true, - "pingpong": false, - "save_output": false, - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "filename": "CogVideoX_Fun_00027.mp4", - "subfolder": "", - "type": "temp", - "format": "video/h264-mp4", - "frame_rate": 8 - }, - "muted": false - } - } - }, - { - "id": 65, - "type": "VHS_VideoCombine", - "pos": { - "0": 1674, - "1": 688 - }, - "size": [ - 620.0130829180325, - 1124.0174560546875 - ], - "flags": {}, - "order": 23, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 150 - }, - { - "name": "audio", - "type": "AUDIO", - "link": null, - "shape": 7 - }, - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null, - "shape": 7 - }, - { - "name": "vae", - "type": "VAE", - "link": null, - "shape": 7 - } - ], - "outputs": [ - { - "name": "Filenames", - "type": "VHS_FILENAMES", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "VHS_VideoCombine" - }, - "widgets_values": { - "frame_rate": 8, - "loop_count": 0, - "filename_prefix": "CogVideoX_Fun", - "format": "video/h264-mp4", - "pix_fmt": "yuv420p", - "crf": 19, - "save_metadata": true, - "pingpong": false, - "save_output": false, - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "filename": "CogVideoX_Fun_00026.mp4", - "subfolder": "", - "type": "temp", - "format": "video/h264-mp4", - "frame_rate": 8 - }, - "muted": false - } - } - }, - { - "id": 49, - "type": "DownloadAndLoadCogVideoModel", - "pos": { - "0": 450, - "1": -217 - }, - "size": { - "0": 362.1656799316406, - "1": 218 - }, - "flags": {}, - "order": 8, - "mode": 0, - "inputs": [ - { - "name": "block_edit", - "type": "TRANSFORMERBLOCKS", - "link": null, - "shape": 7 - }, - { - "name": "lora", - "type": "COGLORA", - "link": 124, - "shape": 7 - }, - { - "name": "compile_args", - "type": "COMPILEARGS", - "link": null, - "shape": 7 - } - ], - "outputs": [ - { - "name": "model", - "type": "COGVIDEOMODEL", - "links": [ - 114, - 139 - ] - }, - { - "name": "vae", - "type": "VAE", - "links": [ - 119, - 122, - 144, - 149 - ], - "slot_index": 1 - } - ], - "properties": { - "Node name for S&R": "DownloadAndLoadCogVideoModel" - }, - "widgets_values": [ - "alibaba-pai/CogVideoX-Fun-V1.1-5b-InP", - "bf16", - "disabled", - false, - "sdpa", - "main_device" - ] + "color": "#1b4669", + "bgcolor": "#29699c" } ], "links": [ @@ -1594,14 +1929,6 @@ 0, "CLIP" ], - [ - 114, - 49, - 0, - 48, - 0, - "COGVIDEOMODEL" - ], [ 116, 30, @@ -1618,14 +1945,6 @@ 2, "CONDITIONING" ], - [ - 119, - 49, - 1, - 50, - 0, - "VAE" - ], [ 120, 50, @@ -1634,14 +1953,6 @@ 4, "LATENT" ], - [ - 122, - 49, - 1, - 51, - 0, - "VAE" - ], [ 123, 48, @@ -1658,22 +1969,6 @@ 1, "COGLORA" ], - [ - 126, - 53, - 0, - 50, - 3, - "INT" - ], - [ - 127, - 53, - 0, - 48, - 9, - "INT" - ], [ 128, 37, @@ -1714,14 +2009,6 @@ 0, "GIMMVIF_MODEL" ], - [ - 139, - 49, - 0, - 62, - 0, - "COGVIDEOMODEL" - ], [ 140, 30, @@ -1738,30 +2025,6 @@ 2, "CONDITIONING" ], - [ - 143, - 53, - 0, - 62, - 9, - "INT" - ], - [ - 144, - 49, - 1, - 63, - 0, - "VAE" - ], - [ - 145, - 53, - 0, - 63, - 3, - "INT" - ], [ 146, 37, @@ -1786,14 +2049,6 @@ 1, "LATENT" ], - [ - 149, - 49, - 1, - 64, - 0, - "VAE" - ], [ 150, 64, @@ -1905,16 +2160,199 @@ 59, 1, "IMAGE" + ], + [ + 166, + 49, + 1, + 74, + 0, + "*" + ], + [ + 167, + 75, + 0, + 51, + 0, + "VAE" + ], + [ + 169, + 76, + 0, + 63, + 0, + "VAE" + ], + [ + 170, + 76, + 0, + 64, + 0, + "VAE" + ], + [ + 171, + 77, + 0, + 78, + 0, + "*" + ], + [ + 172, + 79, + 0, + 48, + 9, + "INT" + ], + [ + 173, + 79, + 0, + 50, + 3, + "INT" + ], + [ + 174, + 80, + 0, + 62, + 9, + "INT" + ], + [ + 175, + 80, + 0, + 63, + 3, + "INT" + ], + [ + 176, + 75, + 0, + 50, + 0, + "VAE" + ], + [ + 177, + 49, + 0, + 81, + 0, + "*" + ], + [ + 178, + 82, + 0, + 48, + 0, + "COGVIDEOMODEL" + ], + [ + 179, + 83, + 0, + 62, + 0, + "COGVIDEOMODEL" ] ], - "groups": [], + "groups": [ + { + "id": 1, + "title": "Autoprompt", + "bounding": [ + -1333.6951904296875, + 307.17431640625, + 1163.29296875, + 942.3335571289062 + ], + "color": "#3f789e", + "font_size": 24, + "flags": {} + }, + { + "id": 2, + "title": "OrbitRight", + "bounding": [ + 811.9992065429688, + -916.5665283203125, + 1616.8448486328125, + 1372.9599609375 + ], + "color": "#3f789e", + "font_size": 24, + "flags": {} + }, + { + "id": 3, + "title": "Join and interpolate", + "bounding": [ + 2641.15380859375, + 36.47324752807617, + 1039.7998046875, + 1633.928955078125 + ], + "color": "#3f789e", + "font_size": 24, + "flags": {} + }, + { + "id": 4, + "title": "OrbitLeft", + "bounding": [ + 823.7742919921875, + 504.1250915527344, + 1597.70068359375, + 1384.0621337890625 + ], + "color": "#3f789e", + "font_size": 24, + "flags": {} + }, + { + "id": 5, + "title": "InputImage", + "bounding": [ + -1323.1298828125, + -495.65478515625, + 1164.93603515625, + 770.36083984375 + ], + "color": "#3f789e", + "font_size": 24, + "flags": {} + }, + { + "id": 6, + "title": "Models", + "bounding": [ + -1306.8953857421875, + -1216.529052734375, + 1272.3226318359375, + 494.4677429199219 + ], + "color": "#a1309b", + "font_size": 24, + "flags": {} + } + ], "config": {}, "extra": { "ds": { - "scale": 0.47362440744777223, + "scale": 0.38554328942953225, "offset": [ - 1633.9967545643788, - 525.3824652843582 + 3283.3233389403267, + 1116.9679324983256 ] } }, diff --git a/examples/cogvideox_Fun_I2V_02.json b/example_workflows/cogvideox_Fun_I2V_02.json similarity index 100% rename from examples/cogvideox_Fun_I2V_02.json rename to example_workflows/cogvideox_Fun_I2V_02.json diff --git a/examples/cogvideox_Fun_I2V_Tora.json b/example_workflows/cogvideox_Fun_I2V_Tora.json similarity index 100% rename from examples/cogvideox_Fun_I2V_Tora.json rename to example_workflows/cogvideox_Fun_I2V_Tora.json diff --git a/examples/cogvideox_Fun_pose_02.json b/example_workflows/cogvideox_Fun_pose_02.json similarity index 100% rename from examples/cogvideox_Fun_pose_02.json rename to example_workflows/cogvideox_Fun_pose_02.json diff --git a/example_workflows/cut_and_drag_for_noisewarp_01.json b/example_workflows/cut_and_drag_for_noisewarp_01.json new file mode 100644 index 0000000..363b466 --- /dev/null +++ b/example_workflows/cut_and_drag_for_noisewarp_01.json @@ -0,0 +1,454 @@ +{ + "last_node_id": 26, + "last_link_id": 31, + "nodes": [ + { + "id": 12, + "type": "SplineEditor", + "pos": [ + -688.39111328125, + 700.787353515625 + ], + "size": [ + 1069, + 1198 + ], + "flags": {}, + "order": 2, + "mode": 0, + "inputs": [ + { + "name": "bg_image", + "type": "IMAGE", + "link": 12, + "shape": 7 + } + ], + "outputs": [ + { + "name": "mask", + "type": "MASK", + "links": null + }, + { + "name": "coord_str", + "type": "STRING", + "links": [ + 14 + ], + "slot_index": 1 + }, + { + "name": "float", + "type": "FLOAT", + "links": [], + "slot_index": 2 + }, + { + "name": "count", + "type": "INT", + "links": null + }, + { + "name": "normalized_str", + "type": "STRING", + "links": null + } + ], + "properties": { + "Node name for S&R": "SplineEditor", + "points": "SplineEditor", + "imgData": { + "name": "bg_image", + "base64": [ + "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" + ] + } + }, + "widgets_values": [ + "[{\"x\":492.1590523879336,\"y\":385.8788583506722},{\"x\":711.2597600955187,\"y\":448.01189486476346},{\"x\":923.8201481700415,\"y\":618.0602053243817}]", + "[{\"x\":492.1590576171875,\"y\":385.87884521484375},{\"x\":502.47125244140625,\"y\":387.5565185546875},{\"x\":512.7724609375,\"y\":389.300537109375},{\"x\":523.0609130859375,\"y\":391.1180725097656},{\"x\":533.3355712890625,\"y\":393.0121154785156},{\"x\":543.5950927734375,\"y\":394.9867248535156},{\"x\":553.8377075195312,\"y\":397.046875},{\"x\":564.0616455078125,\"y\":399.1977844238281},{\"x\":574.2648315429688,\"y\":401.4451599121094},{\"x\":584.4448852539062,\"y\":403.7951354980469},{\"x\":594.5986938476562,\"y\":406.2559814453125},{\"x\":604.7234497070312,\"y\":408.8337707519531},{\"x\":614.8148193359375,\"y\":411.53912353515625},{\"x\":624.8687133789062,\"y\":414.38067626953125},{\"x\":634.879638671875,\"y\":417.3697814941406},{\"x\":644.8414306640625,\"y\":420.5189208984375},{\"x\":654.7462768554688,\"y\":423.8428039550781},{\"x\":664.5849609375,\"y\":427.3575134277344},{\"x\":674.3461303710938,\"y\":431.0820007324219},{\"x\":684.015869140625,\"y\":435.03741455078125},{\"x\":693.5767822265625,\"y\":439.2491455078125},{\"x\":703.0067138671875,\"y\":443.7462158203125},{\"x\":712.277587890625,\"y\":448.56243896484375},{\"x\":721.3695678710938,\"y\":453.7084045410156},{\"x\":730.3035888671875,\"y\":459.12445068359375},{\"x\":739.1012573242188,\"y\":464.7593994140625},{\"x\":747.7813110351562,\"y\":470.5741271972656},{\"x\":756.35791015625,\"y\":476.540283203125},{\"x\":764.8431396484375,\"y\":482.6358642578125},{\"x\":773.2467041015625,\"y\":488.8434753417969},{\"x\":781.576416015625,\"y\":495.1499328613281},{\"x\":789.8392333984375,\"y\":501.54388427734375},{\"x\":798.0416870117188,\"y\":508.0149841308594},{\"x\":806.1887817382812,\"y\":514.5556640625},{\"x\":814.2850952148438,\"y\":521.1590576171875},{\"x\":822.3330688476562,\"y\":527.8214111328125},{\"x\":830.3378295898438,\"y\":534.5355834960938},{\"x\":838.3020629882812,\"y\":541.2977294921875},{\"x\":846.228271484375,\"y\":548.1045532226562},{\"x\":854.1182861328125,\"y\":554.9531860351562},{\"x\":861.974609375,\"y\":561.8403930664062},{\"x\":869.799560546875,\"y\":568.7633056640625},{\"x\":877.5947265625,\"y\":575.7197265625},{\"x\":885.3613891601562,\"y\":582.7079467773438},{\"x\":893.1011352539062,\"y\":589.7260131835938},{\"x\":900.8156127929688,\"y\":596.7717895507812},{\"x\":908.506103515625,\"y\":603.8438110351562},{\"x\":916.1738891601562,\"y\":610.9403686523438},{\"x\":923.8201293945312,\"y\":618.0601806640625}]", + 1024, + 768, + 49, + "path", + "cardinal", + 0.5, + 1, + "list", + 0, + 1, + null, + null, + null + ] + }, + { + "id": 17, + "type": "INPAINT_LoadInpaintModel", + "pos": [ + -631.4315795898438, + 152.6876220703125 + ], + "size": [ + 405.83160400390625, + 80.33563232421875 + ], + "flags": {}, + "order": 0, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "INPAINT_MODEL", + "type": "INPAINT_MODEL", + "links": [ + 18 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "INPAINT_LoadInpaintModel" + }, + "widgets_values": [ + "big-lama.pt" + ] + }, + { + "id": 11, + "type": "LoadImage", + "pos": [ + -620.6697998046875, + 302.7655029296875 + ], + "size": [ + 315, + 314 + ], + "flags": {}, + "order": 1, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 12, + 19, + 22 + ], + "slot_index": 0 + }, + { + "name": "MASK", + "type": "MASK", + "links": [ + 10, + 20 + ], + "slot_index": 1 + } + ], + "properties": { + "Node name for S&R": "LoadImage" + }, + "widgets_values": [ + "clipspace/clipspace-mask-6709059.199999999.png [input]", + "image" + ] + }, + { + "id": 18, + "type": "INPAINT_InpaintWithModel", + "pos": [ + -32.909523010253906, + 158.2882843017578 + ], + "size": [ + 355.20001220703125, + 142 + ], + "flags": {}, + "order": 3, + "mode": 0, + "inputs": [ + { + "name": "inpaint_model", + "type": "INPAINT_MODEL", + "link": 18 + }, + { + "name": "image", + "type": "IMAGE", + "link": 19 + }, + { + "name": "mask", + "type": "MASK", + "link": 20 + }, + { + "name": "optional_upscale_model", + "type": "UPSCALE_MODEL", + "link": null, + "shape": 7 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 24 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "INPAINT_InpaintWithModel" + }, + "widgets_values": [ + 534667941392889, + "fixed" + ] + }, + { + "id": 10, + "type": "CutAndDragOnPath", + "pos": [ + 8.958178520202637, + 395.44854736328125 + ], + "size": [ + 315, + 166 + ], + "flags": {}, + "order": 4, + "mode": 0, + "inputs": [ + { + "name": "image", + "type": "IMAGE", + "link": 22 + }, + { + "name": "mask", + "type": "MASK", + "link": 10 + }, + { + "name": "coordinates", + "type": "STRING", + "link": 14, + "widget": { + "name": "coordinates" + } + }, + { + "name": "bg_image", + "type": "IMAGE", + "link": 24, + "shape": 7 + } + ], + "outputs": [ + { + "name": "image", + "type": "IMAGE", + "links": [ + 17 + ], + "slot_index": 0 + }, + { + "name": "mask", + "type": "MASK", + "links": [], + "slot_index": 1 + } + ], + "properties": { + "Node name for S&R": "CutAndDragOnPath" + }, + "widgets_values": [ + "", + 1024, + 768, + false + ] + }, + { + "id": 16, + "type": "VHS_VideoCombine", + "pos": [ + 442.3276672363281, + 149.1554412841797 + ], + "size": [ + 680.5087890625, + 843.381591796875 + ], + "flags": {}, + "order": 5, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 17 + }, + { + "name": "audio", + "type": "AUDIO", + "link": null, + "shape": 7 + }, + { + "name": "meta_batch", + "type": "VHS_BatchManager", + "link": null, + "shape": 7 + }, + { + "name": "vae", + "type": "VAE", + "link": null, + "shape": 7 + } + ], + "outputs": [ + { + "name": "Filenames", + "type": "VHS_FILENAMES", + "links": null + } + ], + "properties": { + "Node name for S&R": "VHS_VideoCombine" + }, + "widgets_values": { + "frame_rate": 8, + "loop_count": 0, + "filename_prefix": "AnimateDiff", + "format": "video/h264-mp4", + "pix_fmt": "yuv420p", + "crf": 19, + "save_metadata": true, + "trim_to_audio": false, + "pingpong": false, + "save_output": false, + "videopreview": { + "hidden": false, + "paused": false, + "params": { + "filename": "AnimateDiff_00023.mp4", + "subfolder": "", + "type": "temp", + "format": "video/h264-mp4", + "frame_rate": 8, + "workflow": "AnimateDiff_00023.png", + "fullpath": "N:\\AI\\ComfyUI\\temp\\AnimateDiff_00023.mp4" + }, + "muted": false + } + } + } + ], + "links": [ + [ + 10, + 11, + 1, + 10, + 1, + "MASK" + ], + [ + 12, + 11, + 0, + 12, + 0, + "IMAGE" + ], + [ + 14, + 12, + 1, + 10, + 2, + "STRING" + ], + [ + 17, + 10, + 0, + 16, + 0, + "IMAGE" + ], + [ + 18, + 17, + 0, + 18, + 0, + "INPAINT_MODEL" + ], + [ + 19, + 11, + 0, + 18, + 1, + "IMAGE" + ], + [ + 20, + 11, + 1, + 18, + 2, + "MASK" + ], + [ + 22, + 11, + 0, + 10, + 0, + "IMAGE" + ], + [ + 24, + 18, + 0, + 10, + 3, + "IMAGE" + ] + ], + "groups": [], + "config": {}, + "extra": { + "ds": { + "scale": 0.6115909044841531, + "offset": [ + 1484.5868334338145, + 0.8454987040198461 + ] + }, + "node_versions": { + "ComfyUI-KJNodes": "c9c8dcd5e7ed2f7669f130a5ced1e3005264a2de", + "comfyui-inpaint-nodes": "6fcdf5523d53e82029e0af6cf4887e17d182b7ec", + "comfy-core": "0.3.12", + "ComfyUI-VideoHelperSuite": "c47b10ca1798b4925ff5a5f07d80c51ca80a837d" + }, + "VHS_latentpreview": true, + "VHS_latentpreviewrate": 0 + }, + "version": 0.4 +} \ No newline at end of file diff --git a/example_workflows/noise_warp_example_input_video.mp4 b/example_workflows/noise_warp_example_input_video.mp4 new file mode 100644 index 0000000..3f00fb5 Binary files /dev/null and b/example_workflows/noise_warp_example_input_video.mp4 differ diff --git a/latent_preview.py b/latent_preview.py deleted file mode 100644 index 5ed78d6..0000000 --- a/latent_preview.py +++ /dev/null @@ -1,79 +0,0 @@ -import io - -import torch -from PIL import Image -import struct -import numpy as np -from comfy.cli_args import args, LatentPreviewMethod -from comfy.taesd.taesd import TAESD -import comfy.model_management -import folder_paths -import comfy.utils -import logging - -MAX_PREVIEW_RESOLUTION = args.preview_size - -def preview_to_image(latent_image): - latents_ubyte = (((latent_image + 1.0) / 2.0).clamp(0, 1) # change scale from -1..1 to 0..1 - .mul(0xFF) # to 0..255 - ).to(device="cpu", dtype=torch.uint8, non_blocking=comfy.model_management.device_supports_non_blocking(latent_image.device)) - - return Image.fromarray(latents_ubyte.numpy()) - -class LatentPreviewer: - def decode_latent_to_preview(self, x0): - pass - - def decode_latent_to_preview_image(self, preview_format, x0): - preview_image = self.decode_latent_to_preview(x0) - return ("GIF", preview_image, MAX_PREVIEW_RESOLUTION) - -class Latent2RGBPreviewer(LatentPreviewer): - def __init__(self): - latent_rgb_factors = [[0.11945946736445662, 0.09919175788574555, -0.004832707433877734], [-0.0011977028264356232, 0.05496505130267682, 0.021321622433638193], [-0.014088548986590666, -0.008701477861945644, -0.020991313281459367], [0.03063921972519621, 0.12186477097625073, 0.0139593690235148], [0.0927403067854673, 0.030293187650929136, 0.05083134241694003], [0.0379112441305742, 0.04935199882777209, 0.058562766246777774], [0.017749911959153715, 0.008839453404921545, 0.036005638019226294], [0.10610119248526109, 0.02339855688237826, 0.057154257614084596], [0.1273639464837117, -0.010959856130713416, 0.043268631260428896], [-0.01873510946881321, 0.08220930648486932, 0.10613256772247093], [0.008429116376722327, 0.07623856561000408, 0.09295712117576727], [0.12938137079617007, 0.12360403483892413, 0.04478930933220116], [0.04565908794779364, 0.041064156741596365, -0.017695041535528512], [0.00019003240570281826, -0.013965147883381978, 0.05329669529635849], [0.08082391586738358, 0.11548306825496074, -0.021464170006615893], [-0.01517932393230994, -0.0057985555313003236, 0.07216646476618871]] - - self.latent_rgb_factors = torch.tensor(latent_rgb_factors, device="cpu").transpose(0, 1) - self.latent_rgb_factors_bias = None - # if latent_rgb_factors_bias is not None: - # self.latent_rgb_factors_bias = torch.tensor(latent_rgb_factors_bias, device="cpu") - - def decode_latent_to_preview(self, x0): - self.latent_rgb_factors = self.latent_rgb_factors.to(dtype=x0.dtype, device=x0.device) - if self.latent_rgb_factors_bias is not None: - self.latent_rgb_factors_bias = self.latent_rgb_factors_bias.to(dtype=x0.dtype, device=x0.device) - - latent_image = torch.nn.functional.linear(x0[0].permute(1, 2, 0), self.latent_rgb_factors, - bias=self.latent_rgb_factors_bias) - return preview_to_image(latent_image) - - -def get_previewer(): - previewer = None - method = args.preview_method - if method != LatentPreviewMethod.NoPreviews: - # TODO previewer method - - if method == LatentPreviewMethod.Auto: - method = LatentPreviewMethod.Latent2RGB - - if previewer is None: - previewer = Latent2RGBPreviewer() - return previewer - -def prepare_callback(model, steps, x0_output_dict=None): - preview_format = "JPEG" - if preview_format not in ["JPEG", "PNG"]: - preview_format = "JPEG" - - previewer = get_previewer() - - pbar = comfy.utils.ProgressBar(steps) - def callback(step, x0, x, total_steps): - if x0_output_dict is not None: - x0_output_dict["x0"] = x0 - preview_bytes = None - if previewer: - preview_bytes = previewer.decode_latent_to_preview_image(preview_format, x0) - pbar.update_absolute(step + 1, total_steps, preview_bytes) - return callback - diff --git a/model_loading.py b/model_loading.py index 932bd99..e9c9e4c 100644 --- a/model_loading.py +++ b/model_loading.py @@ -70,6 +70,7 @@ class CogVideoLoraSelect: RETURN_NAMES = ("lora", ) FUNCTION = "getlorapath" CATEGORY = "CogVideoWrapper" + DESCRIPTION = "Select a LoRA model from ComfyUI/models/CogVideo/loras" def getlorapath(self, lora, strength, prev_lora=None, fuse_lora=False): cog_loras_list = [] @@ -86,6 +87,43 @@ class CogVideoLoraSelect: cog_loras_list.append(cog_lora) print(cog_loras_list) return (cog_loras_list,) + +class CogVideoLoraSelectComfy: + @classmethod + def INPUT_TYPES(s): + return { + "required": { + "lora": (folder_paths.get_filename_list("loras"), + {"tooltip": "LORA models are expected to be in ComfyUI/models/loras with .safetensors extension"}), + "strength": ("FLOAT", {"default": 1.0, "min": -10.0, "max": 10.0, "step": 0.0001, "tooltip": "LORA strength, set to 0.0 to unmerge the LORA"}), + }, + "optional": { + "prev_lora":("COGLORA", {"default": None, "tooltip": "For loading multiple LoRAs"}), + "fuse_lora": ("BOOLEAN", {"default": False, "tooltip": "Fuse the LoRA weights into the transformer"}), + } + } + + RETURN_TYPES = ("COGLORA",) + RETURN_NAMES = ("lora", ) + FUNCTION = "getlorapath" + CATEGORY = "CogVideoWrapper" + DESCRIPTION = "Select a LoRA model from ComfyUI/models/loras" + + def getlorapath(self, lora, strength, prev_lora=None, fuse_lora=False): + cog_loras_list = [] + + cog_lora = { + "path": folder_paths.get_full_path("loras", lora), + "strength": strength, + "name": lora.split(".")[0], + "fuse_lora": fuse_lora + } + if prev_lora is not None: + cog_loras_list.extend(prev_lora) + + cog_loras_list.append(cog_lora) + print(cog_loras_list) + return (cog_loras_list,) #region DownloadAndLoadCogVideoModel class DownloadAndLoadCogVideoModel: @@ -109,6 +147,7 @@ class DownloadAndLoadCogVideoModel: "alibaba-pai/CogVideoX-Fun-V1.1-2b-Pose", "alibaba-pai/CogVideoX-Fun-V1.1-5b-Pose", "alibaba-pai/CogVideoX-Fun-V1.1-5b-Control", + "alibaba-pai/CogVideoX-Fun-V1.5-5b-InP", "feizhengcong/CogvideoX-Interpolation", "NimVideo/cogvideox-2b-img2vid" ], @@ -177,7 +216,7 @@ class DownloadAndLoadCogVideoModel: download_path = folder_paths.get_folder_paths("CogVideo")[0] if "Fun" in model: - if not "1.1" in model: + if "1.1" not in model and "1.5" not in model: repo_id = "kijai/CogVideoX-Fun-pruned" if "2b" in model: base_path = os.path.join(folder_paths.models_dir, "CogVideoX_Fun", "CogVideoX-Fun-2b-InP") # location of the official model @@ -187,7 +226,7 @@ class DownloadAndLoadCogVideoModel: base_path = os.path.join(folder_paths.models_dir, "CogVideoX_Fun", "CogVideoX-Fun-5b-InP") # location of the official model if not os.path.exists(base_path): base_path = os.path.join(download_path, "CogVideoX-Fun-5b-InP") - elif "1.1" in model: + else: repo_id = model base_path = os.path.join(folder_paths.models_dir, "CogVideoX_Fun", (model.split("/")[-1])) # location of the official model if not os.path.exists(base_path): @@ -240,7 +279,7 @@ class DownloadAndLoadCogVideoModel: transformer = CogVideoXTransformer3DModel.from_pretrained(base_path, subfolder=subfolder, attention_mode=attention_mode) transformer = transformer.to(dtype).to(transformer_load_device) - if "1.5" in model: + if "1.5" in model and not "fun" in model: transformer.config.sample_height = 300 transformer.config.sample_width = 300 @@ -295,6 +334,8 @@ class DownloadAndLoadCogVideoModel: pipe.transformer = merge_lora(pipe.transformer, l["path"], l["strength"], device=transformer_load_device, state_dict=lora_sd) except: raise ValueError(f"Can't recognize LoRA {l['path']}") + del lora_sd + mm.soft_empty_cache() if adapter_list: pipe.set_adapters(adapter_list, adapter_weights=adapter_weights) if fuse: @@ -302,6 +343,7 @@ class DownloadAndLoadCogVideoModel: if dimensionx_lora: lora_scale = lora_scale / lora_rank pipe.fuse_lora(lora_scale=lora_scale, components=["transformer"]) + pipe.delete_adapters(adapter_list) if "fused" in attention_mode: @@ -660,7 +702,7 @@ class CogVideoXModelLoader: def loadmodel(self, model, base_precision, load_device, enable_sequential_cpu_offload, block_edit=None, compile_args=None, lora=None, attention_mode="sdpa", quantization="disabled"): - + transformer = None if "sage" in attention_mode: try: from sageattention import sageattn @@ -689,6 +731,8 @@ class CogVideoXModelLoader: model_type = "5b_I2V_1_5" elif sd["patch_embed.proj.weight"].shape == (1920, 33, 2, 2): model_type = "fun_2b" + elif sd["patch_embed.proj.weight"].shape == (1920, 32, 2, 2): + model_type = "cogvideox-2b-img2vid" elif sd["patch_embed.proj.weight"].shape == (1920, 16, 2, 2): model_type = "2b" elif sd["patch_embed.proj.weight"].shape == (3072, 32, 2, 2): @@ -710,7 +754,7 @@ class CogVideoXModelLoader: with open(transformer_config_path) as f: transformer_config = json.load(f) - if model_type in ["I2V", "I2V_5b", "fun_5b_pose", "5b_I2V_1_5"]: + if model_type in ["I2V", "I2V_5b", "fun_5b_pose", "5b_I2V_1_5", "cogvideox-2b-img2vid"]: transformer_config["in_channels"] = 32 if "1_5" in model_type: transformer_config["ofs_embed_dim"] = 512 @@ -736,6 +780,10 @@ class CogVideoXModelLoader: #dtype_to_use = base_dtype if any(keyword in name for keyword in params_to_keep) else dtype set_module_tensor_to_device(transformer, name, device=transformer_load_device, dtype=base_dtype, value=sd[name]) del sd + # TODO fix for transformer model patch_embed.pos_embedding dtype + # or at add line ComfyUI-CogVideoXWrapper/embeddings.py:129 code + # pos_embedding = pos_embedding.to(embeds.device, dtype=embeds.dtype) + transformer = transformer.to(base_dtype).to(transformer_load_device) #scheduler with open(scheduler_config_path) as f: @@ -759,7 +807,8 @@ class CogVideoXModelLoader: dtype=base_dtype, is_fun_inpaint="fun" in model.lower() and not ("pose" in model.lower() or "control" in model.lower()) ) - + if "cogvideox-2b-img2vid" == model_type: + pipe.input_with_padding = False if enable_sequential_cpu_offload: pipe.enable_sequential_cpu_offload() @@ -925,6 +974,7 @@ class DownloadAndLoadToraModel: "model": ( [ "kijai/CogVideoX-5b-Tora", + "kijai/CogVideoX-5b-Tora-I2V", ], ), }, @@ -954,14 +1004,17 @@ class DownloadAndLoadToraModel: pass download_path = os.path.join(folder_paths.models_dir, 'CogVideo', "CogVideoX-5b-Tora") - fuser_path = os.path.join(download_path, "fuser", "fuser.safetensors") + + + fuser_model = "fuser.safetensors" if not "I2V" in model else "fuser_I2V.safetensors" + fuser_path = os.path.join(download_path, "fuser", fuser_model) if not os.path.exists(fuser_path): log.info(f"Downloading Fuser model to: {fuser_path}") from huggingface_hub import snapshot_download snapshot_download( repo_id=model, - allow_patterns=["*fuser.safetensors*"], + allow_patterns=[fuser_model], local_dir=download_path, local_dir_use_symlinks=False, ) @@ -983,14 +1036,15 @@ class DownloadAndLoadToraModel: param.data = param.data.to(torch.bfloat16).to(device) del fuser_sd - traj_extractor_path = os.path.join(download_path, "traj_extractor", "traj_extractor.safetensors") + traj_extractor_model = "traj_extractor.safetensors" if not "I2V" in model else "traj_extractor_I2V.safetensors" + traj_extractor_path = os.path.join(download_path, "traj_extractor", traj_extractor_model) if not os.path.exists(traj_extractor_path): log.info(f"Downloading trajectory extractor model to: {traj_extractor_path}") from huggingface_hub import snapshot_download snapshot_download( repo_id="kijai/CogVideoX-5b-Tora", - allow_patterns=["*traj_extractor.safetensors*"], + allow_patterns=[traj_extractor_model], local_dir=download_path, local_dir_use_symlinks=False, ) @@ -1078,6 +1132,7 @@ NODE_CLASS_MAPPINGS = { "CogVideoLoraSelect": CogVideoLoraSelect, "CogVideoXVAELoader": CogVideoXVAELoader, "CogVideoXModelLoader": CogVideoXModelLoader, + "CogVideoLoraSelectComfy": CogVideoLoraSelectComfy } NODE_DISPLAY_NAME_MAPPINGS = { "DownloadAndLoadCogVideoModel": "(Down)load CogVideo Model", @@ -1087,4 +1142,5 @@ NODE_DISPLAY_NAME_MAPPINGS = { "CogVideoLoraSelect": "CogVideo LoraSelect", "CogVideoXVAELoader": "CogVideoX VAE Loader", "CogVideoXModelLoader": "CogVideoX Model Loader", + "CogVideoLoraSelectComfy": "CogVideo LoraSelect Comfy" } \ No newline at end of file diff --git a/nodes.py b/nodes.py index feade09..338d9f5 100644 --- a/nodes.py +++ b/nodes.py @@ -49,6 +49,25 @@ if not "CogVideo" in folder_paths.folder_names_and_paths: if not "cogvideox_loras" in folder_paths.folder_names_and_paths: folder_paths.add_model_folder_path("cogvideox_loras", os.path.join(folder_paths.models_dir, "CogVideo", "loras")) +class CogVideoEnhanceAVideo: + @classmethod + def INPUT_TYPES(s): + return { + "required": { + "weight": ("FLOAT", {"default": 1.0, "min": 0, "max": 100, "step": 0.01, "tooltip": "The feta Weight of the Enhance-A-Video"}), + "start_percent": ("FLOAT", {"default": 0.0, "min": 0.0, "max": 1.0, "step": 0.01, "tooltip": "Start percentage of the steps to apply Enhance-A-Video"}), + "end_percent": ("FLOAT", {"default": 1.0, "min": 0.0, "max": 1.0, "step": 0.01, "tooltip": "End percentage of the steps to apply Enhance-A-Video"}), + }, + } + RETURN_TYPES = ("FETAARGS",) + RETURN_NAMES = ("feta_args",) + FUNCTION = "setargs" + CATEGORY = "CogVideoWrapper" + DESCRIPTION = "https://github.com/NUS-HPC-AI-Lab/Enhance-A-Video" + + def setargs(self, **kwargs): + return (kwargs, ) + class CogVideoContextOptions: @classmethod def INPUT_TYPES(s): @@ -263,13 +282,14 @@ class CogVideoImageEncode: start_latents = vae.encode(start_image).latent_dist.sample(generator) start_latents = start_latents.permute(0, 2, 1, 3, 4) # B, T, C, H, W + if end_image is not None: end_image = (end_image * 2.0 - 1.0).to(vae.dtype).to(device).unsqueeze(0).permute(0, 4, 1, 2, 3) if noise_aug_strength > 0: end_image = add_noise_to_reference_video(end_image, ratio=noise_aug_strength) end_latents = vae.encode(end_image).latent_dist.sample(generator) end_latents = end_latents.permute(0, 2, 1, 3, 4) # B, T, C, H, W - latents_list.append(end_latents) + latents_list = [start_latents, end_latents] final_latents = torch.cat(latents_list, dim=1) else: final_latents = start_latents @@ -284,32 +304,6 @@ class CogVideoImageEncode: "start_percent": start_percent, "end_percent": end_percent }, ) - -class CogVideoConcatLatent: - @classmethod - def INPUT_TYPES(s): - return {"required": { - "samples_to": ("LATENT", ), - "samples_from": ("LATENT",), - }, - } - - RETURN_TYPES = ("LATENT",) - RETURN_NAMES = ("samples",) - FUNCTION = "encode" - CATEGORY = "CogVideoWrapper" - - def encode(self, samples_from, samples_to): - - insert_from = samples_from["samples"].clone() - insert_to = samples_to["samples"].clone() - new_latents = torch.cat((insert_to, insert_from), dim=1) - print("new latents shape: ", new_latents.shape) - return ({ - "samples": new_latents, - "start_percent": samples_from["start_percent"], - "end_percent": samples_from["end_percent"] - }, ) class CogVideoImageEncodeFunInP: @classmethod @@ -385,8 +379,8 @@ class CogVideoImageEncodeFunInP: masked_image_latents = masked_image_latents.permute(0, 2, 1, 3, 4) # B, T, C, H, W mask = torch.zeros_like(masked_image_latents[:, :, :1, :, :]) - if end_image is not None: - mask[:, -1, :, :, :] = 0 + #if end_image is not None: + # mask[:, -1, :, :, :] = 0 mask[:, 0, :, :, :] = vae_scaling_factor final_latents = masked_image_latents * vae_scaling_factor @@ -590,6 +584,26 @@ class CogVideoXFasterCache: "num_blocks_to_cache" : num_blocks_to_cache, } return (fastercache,) + +class CogVideoXTeaCache: + @classmethod + def INPUT_TYPES(s): + return { + "required": { + "rel_l1_thresh": ("FLOAT", {"default": 0.3, "min": 0.0, "max": 10.0, "step": 0.01, "tooltip": "Cache threshold, higher values are faster while sacrificing quality"}), + } + } + + RETURN_TYPES = ("TEACACHEARGS",) + RETURN_NAMES = ("teacache_args",) + FUNCTION = "args" + CATEGORY = "CogVideoWrapper" + + def args(self, rel_l1_thresh): + teacache = { + "rel_l1_thresh": rel_l1_thresh + } + return (teacache,) #region Sampler class CogVideoSampler: @@ -617,6 +631,8 @@ class CogVideoSampler: "controlnet": ("COGVIDECONTROLNET",), "tora_trajectory": ("TORAFEATURES", ), "fastercache": ("FASTERCACHEARGS", ), + "feta_args": ("FETAARGS", ), + "teacache_args": ("TEACACHEARGS", ), } } @@ -626,7 +642,7 @@ class CogVideoSampler: CATEGORY = "CogVideoWrapper" def process(self, model, positive, negative, steps, cfg, seed, scheduler, num_frames, samples=None, - denoise_strength=1.0, image_cond_latents=None, context_options=None, controlnet=None, tora_trajectory=None, fastercache=None): + denoise_strength=1.0, image_cond_latents=None, context_options=None, controlnet=None, tora_trajectory=None, fastercache=None, feta_args=None, teacache_args=None): mm.unload_all_models() mm.soft_empty_cache() @@ -648,7 +664,7 @@ class CogVideoSampler: image_conds = image_cond_latents["samples"] image_cond_start_percent = image_cond_latents.get("start_percent", 0.0) image_cond_end_percent = image_cond_latents.get("end_percent", 1.0) - if "1.5" in model_name or "1_5" in model_name: + if ("1.5" in model_name or "1_5" in model_name) and not "fun" in model_name.lower(): image_conds = image_conds / 0.7 # needed for 1.5 models else: if not "fun" in model_name.lower(): @@ -711,6 +727,13 @@ class CogVideoSampler: pipe.transformer.use_fastercache = False pipe.transformer.fastercache_counter = 0 + if teacache_args is not None: + pipe.transformer.use_teacache = True + pipe.transformer.teacache_rel_l1_thresh = teacache_args["rel_l1_thresh"] + log.info(f"TeaCache enabled with rel_l1_thresh: {pipe.transformer.teacache_rel_l1_thresh}") + else: + pipe.transformer.use_teacache = False + if not isinstance(cfg, list): cfg = [cfg for _ in range(steps)] else: @@ -747,6 +770,7 @@ class CogVideoSampler: tora=tora_trajectory if tora_trajectory is not None else None, image_cond_start_percent=image_cond_start_percent if image_cond_latents is not None else 0.0, image_cond_end_percent=image_cond_end_percent if image_cond_latents is not None else 1.0, + feta_args=feta_args, ) if not model["cpu_offloading"] and model["manual_offloading"]: pipe.transformer.to(offload_device) @@ -758,6 +782,9 @@ class CogVideoSampler: block.cached_encoder_hidden_states = None print_memory(device) + + if teacache_args is not None: + log.info(f"TeaCache skipped steps: {pipe.transformer.teacache_counter}") mm.soft_empty_cache() try: torch.cuda.reset_peak_memory_stats(device) @@ -936,7 +963,8 @@ class CogVideoLatentPreview: latents = latents.permute(0, 2, 1, 3, 4) # [batch_size, num_channels, num_frames, height, width] #[[0.0658900170023352, 0.04687556512203313, -0.056971557475649186], [-0.01265770449940036, -0.02814809569100843, -0.0768912512529372], [0.061456544746314665, 0.0005511617552452358, -0.0652574975291287], [-0.09020669168815276, -0.004755440180558637, -0.023763970904494294], [0.031766964513999865, -0.030959599938418375, 0.08654669098083616], [-0.005981764690055846, -0.08809119252349802, -0.06439852368217663], [-0.0212114426433989, 0.08894281999597677, 0.05155629477559985], [-0.013947446911030725, -0.08987475069900677, -0.08923124751217484], [-0.08235967967978511, 0.07268025379974379, 0.08830486164536037], [-0.08052049179735378, -0.050116143175332195, 0.02023752569687405], [-0.07607527759162447, 0.06827156419895981, 0.08678111754261035], [-0.04689089232553825, 0.017294986041038893, -0.10280492336438908], [-0.06105783150270304, 0.07311850680875913, 0.019995735372550075], [-0.09232589996527711, -0.012869815059053047, -0.04355587834255975], [-0.06679931010802251, 0.018399815879067458, 0.06802404982033876], [-0.013062632927118165, -0.04292991477896661, 0.07476243356192845]] - latent_rgb_factors =[[0.11945946736445662, 0.09919175788574555, -0.004832707433877734], [-0.0011977028264356232, 0.05496505130267682, 0.021321622433638193], [-0.014088548986590666, -0.008701477861945644, -0.020991313281459367], [0.03063921972519621, 0.12186477097625073, 0.0139593690235148], [0.0927403067854673, 0.030293187650929136, 0.05083134241694003], [0.0379112441305742, 0.04935199882777209, 0.058562766246777774], [0.017749911959153715, 0.008839453404921545, 0.036005638019226294], [0.10610119248526109, 0.02339855688237826, 0.057154257614084596], [0.1273639464837117, -0.010959856130713416, 0.043268631260428896], [-0.01873510946881321, 0.08220930648486932, 0.10613256772247093], [0.008429116376722327, 0.07623856561000408, 0.09295712117576727], [0.12938137079617007, 0.12360403483892413, 0.04478930933220116], [0.04565908794779364, 0.041064156741596365, -0.017695041535528512], [0.00019003240570281826, -0.013965147883381978, 0.05329669529635849], [0.08082391586738358, 0.11548306825496074, -0.021464170006615893], [-0.01517932393230994, -0.0057985555313003236, 0.07216646476618871]] + #latent_rgb_factors =[[0.11945946736445662, 0.09919175788574555, -0.004832707433877734], [-0.0011977028264356232, 0.05496505130267682, 0.021321622433638193], [-0.014088548986590666, -0.008701477861945644, -0.020991313281459367], [0.03063921972519621, 0.12186477097625073, 0.0139593690235148], [0.0927403067854673, 0.030293187650929136, 0.05083134241694003], [0.0379112441305742, 0.04935199882777209, 0.058562766246777774], [0.017749911959153715, 0.008839453404921545, 0.036005638019226294], [0.10610119248526109, 0.02339855688237826, 0.057154257614084596], [0.1273639464837117, -0.010959856130713416, 0.043268631260428896], [-0.01873510946881321, 0.08220930648486932, 0.10613256772247093], [0.008429116376722327, 0.07623856561000408, 0.09295712117576727], [0.12938137079617007, 0.12360403483892413, 0.04478930933220116], [0.04565908794779364, 0.041064156741596365, -0.017695041535528512], [0.00019003240570281826, -0.013965147883381978, 0.05329669529635849], [0.08082391586738358, 0.11548306825496074, -0.021464170006615893], [-0.01517932393230994, -0.0057985555313003236, 0.07216646476618871]] + latent_rgb_factors = [[0.03197404301362048, 0.04091260743347359, 0.0015679806301828524], [0.005517101026578029, 0.0052348639043457755, -0.005613441650464035], [0.0012485338264583965, -0.016096744206117782, 0.025023940031635054], [0.01760126794276171, 0.0036818415416642893, -0.0006019202528157255], [0.000444954842288864, 0.006102128982092191, 0.0008457999272962447], [-0.010531904354560697, -0.0032275501924977175, -0.00886595780267917], [-0.0001454543946122991, 0.010199210750845965, -0.00012702234832386188], [0.02078497279904325, -0.001669617778939972, 0.006712703698951264], [0.005529571599763264, 0.009733929789086743, 0.001887302765339838], [0.012138415094654218, 0.024684961927224837, 0.037211249767461915], [0.0010364484570000384, 0.01983636315929172, 0.009864602025627755], [0.006802862648143341, -0.0010509255113510681, -0.007026003345126021], [0.0003532208468418043, 0.005351971582801936, -0.01845912126717106], [-0.009045079994694397, -0.01127941143183089, 0.0042294057970470806], [0.002548289972720752, 0.025224244654428216, -0.0006086130121693347], [-0.011135669222532816, 0.0018181308593668505, 0.02794541485349922]] import random random.seed(seed) latent_rgb_factors = [[random.uniform(min_val, max_val) for _ in range(3)] for _ in range(16)] @@ -985,7 +1013,8 @@ NODE_CLASS_MAPPINGS = { "CogVideoLatentPreview": CogVideoLatentPreview, "CogVideoXTorchCompileSettings": CogVideoXTorchCompileSettings, "CogVideoImageEncodeFunInP": CogVideoImageEncodeFunInP, - "CogVideoConcatLatent": CogVideoConcatLatent, + "CogVideoEnhanceAVideo": CogVideoEnhanceAVideo, + "CogVideoXTeaCache": CogVideoXTeaCache, } NODE_DISPLAY_NAME_MAPPINGS = { "CogVideoSampler": "CogVideo Sampler", @@ -1002,5 +1031,6 @@ NODE_DISPLAY_NAME_MAPPINGS = { "CogVideoLatentPreview": "CogVideo LatentPreview", "CogVideoXTorchCompileSettings": "CogVideo TorchCompileSettings", "CogVideoImageEncodeFunInP": "CogVideo ImageEncode FunInP", - "CogVideoConcatLatent": "CogVideo Concat Latent", + "CogVideoEnhanceAVideo": "CogVideo Enhance-A-Video", + "CogVideoXTeaCache": "CogVideoX TeaCache", } diff --git a/pipeline_cogvideox.py b/pipeline_cogvideox.py index d1391d3..3fdf043 100644 --- a/pipeline_cogvideox.py +++ b/pipeline_cogvideox.py @@ -29,6 +29,7 @@ from diffusers.loaders import CogVideoXLoraLoaderMixin from .embeddings import get_3d_rotary_pos_embed from .custom_cogvideox_transformer_3d import CogVideoXTransformer3DModel +from .enhance_a_video.globals import enable_enhance, disable_enhance, set_enhance_weight from comfy.utils import ProgressBar @@ -110,6 +111,34 @@ def retrieve_timesteps( timesteps = scheduler.timesteps return timesteps, num_inference_steps +class CogVideoXLatentFormat(): + latent_channels = 16 + latent_dimensions = 3 + scale_factor = 0.7 + taesd_decoder_name = None + + latent_rgb_factors = [[0.03197404301362048, 0.04091260743347359, 0.0015679806301828524], + [0.005517101026578029, 0.0052348639043457755, -0.005613441650464035], + [0.0012485338264583965, -0.016096744206117782, 0.025023940031635054], + [0.01760126794276171, 0.0036818415416642893, -0.0006019202528157255], + [0.000444954842288864, 0.006102128982092191, 0.0008457999272962447], + [-0.010531904354560697, -0.0032275501924977175, -0.00886595780267917], + [-0.0001454543946122991, 0.010199210750845965, -0.00012702234832386188], + [0.02078497279904325, -0.001669617778939972, 0.006712703698951264], + [0.005529571599763264, 0.009733929789086743, 0.001887302765339838], + [0.012138415094654218, 0.024684961927224837, 0.037211249767461915], + [0.0010364484570000384, 0.01983636315929172, 0.009864602025627755], + [0.006802862648143341, -0.0010509255113510681, -0.007026003345126021], + [0.0003532208468418043, 0.005351971582801936, -0.01845912126717106], + [-0.009045079994694397, -0.01127941143183089, 0.0042294057970470806], + [0.002548289972720752, 0.025224244654428216, -0.0006086130121693347], + [-0.011135669222532816, 0.0018181308593668505, 0.02794541485349922]] + latent_rgb_factors_bias = [ -0.023, 0.0, -0.017] + +class CogVideoXModelPlaceholder(): + def __init__(self): + self.latent_format = CogVideoXLatentFormat + class CogVideoXPipeline(DiffusionPipeline, CogVideoXLoraLoaderMixin): r""" Pipeline for text-to-video generation using CogVideoX. @@ -195,7 +224,7 @@ class CogVideoXPipeline(DiffusionPipeline, CogVideoXLoraLoaderMixin): noise[:, place_idx:place_idx + delta, :, :, :] = noise[:, list_idx, :, :, :] if latents is None: latents = noise.to(device) - else: + elif denoise_strength < 1.0: latents = latents.to(device) timesteps, num_inference_steps = self.get_timesteps(num_inference_steps, denoise_strength, device) latent_timestep = timesteps[:1] @@ -212,6 +241,8 @@ class CogVideoXPipeline(DiffusionPipeline, CogVideoXLoraLoaderMixin): latents = latents[:, :frames_needed, :, :, :] latents = self.scheduler.add_noise(latents, noise.to(device), latent_timestep) + else: + latents = latents.to(device) latents = latents * self.scheduler.init_noise_sigma # scale the initial noise by the standard deviation required by the scheduler return latents, timesteps @@ -351,6 +382,7 @@ class CogVideoXPipeline(DiffusionPipeline, CogVideoXLoraLoaderMixin): tora: Optional[dict] = None, image_cond_start_percent: float = 0.0, image_cond_end_percent: float = 1.0, + feta_args: Optional[dict] = None, ): """ @@ -471,50 +503,9 @@ class CogVideoXPipeline(DiffusionPipeline, CogVideoXLoraLoaderMixin): # 5.5. if image_cond_latents is not None: - if image_cond_latents.shape[1] == 3: - logger.info("More than one image conditioning frame received, interpolating") - total_padding = latents.shape[1] - 3 - half_padding = total_padding // 2 - - padding_shape = ( - batch_size, - half_padding, - self.vae_latent_channels, - height // self.vae_scale_factor_spatial, - width // self.vae_scale_factor_spatial, - ) - latent_padding = torch.zeros(padding_shape, device=device, dtype=self.vae_dtype) - middle_frame = image_cond_latents[:, 1, :, :, :].unsqueeze(1) - - image_cond_latents = torch.cat([ - image_cond_latents[:, 0, :, :, :].unsqueeze(1), - latent_padding, - middle_frame, - latent_padding, - image_cond_latents[:, -1, :, :, :].unsqueeze(1) - ], dim=1) - - # If total_padding is odd, add one more padding after the middle frame - if total_padding % 2 != 0: - extra_padding = torch.zeros( - (batch_size, 1, self.vae_latent_channels, - height // self.vae_scale_factor_spatial, - width // self.vae_scale_factor_spatial), - device=device, dtype=self.vae_dtype - ) - image_cond_latents = torch.cat([image_cond_latents, extra_padding], dim=1) - - if self.transformer.config.patch_size_t is not None: - first_frame = image_cond_latents[:, : image_cond_latents.size(1) % self.transformer.config.patch_size_t, ...] - image_cond_latents = torch.cat([first_frame, image_cond_latents], dim=1) - - middle_frame_idx = image_cond_latents.shape[1] // 2 - print("middle_frame_idx", middle_frame_idx) - print(middle_frame.shape) - print(image_cond_latents.shape) - - - elif image_cond_latents.shape[1] == 2: + image_cond_frame_count = image_cond_latents.size(1) + patch_size_t = self.transformer.config.patch_size_t + if image_cond_frame_count == 2: logger.info("More than one image conditioning frame received, interpolating") padding_shape = ( batch_size, @@ -525,12 +516,12 @@ class CogVideoXPipeline(DiffusionPipeline, CogVideoXLoraLoaderMixin): ) latent_padding = torch.zeros(padding_shape, device=device, dtype=self.vae_dtype) image_cond_latents = torch.cat([image_cond_latents[:, 0, :, :, :].unsqueeze(1), latent_padding, image_cond_latents[:, -1, :, :, :].unsqueeze(1)], dim=1) - if self.transformer.config.patch_size_t is not None: - first_frame = image_cond_latents[:, : image_cond_latents.size(1) % self.transformer.config.patch_size_t, ...] + if patch_size_t: + first_frame = image_cond_latents[:, : image_cond_latents.size(1) % patch_size_t, ...] image_cond_latents = torch.cat([first_frame, image_cond_latents], dim=1) logger.info(f"image cond latents shape: {image_cond_latents.shape}") - elif image_cond_latents.shape[1] == 1: + elif image_cond_frame_count == 1: logger.info("Only one image conditioning frame received, img2vid") if self.input_with_padding: padding_shape = ( @@ -543,13 +534,20 @@ class CogVideoXPipeline(DiffusionPipeline, CogVideoXLoraLoaderMixin): latent_padding = torch.zeros(padding_shape, device=device, dtype=self.vae_dtype) image_cond_latents = torch.cat([image_cond_latents, latent_padding], dim=1) # Select the first frame along the second dimension - if self.transformer.config.patch_size_t is not None: - first_frame = image_cond_latents[:, : image_cond_latents.size(1) % self.transformer.config.patch_size_t, ...] + if patch_size_t: + first_frame = image_cond_latents[:, : image_cond_latents.size(1) % patch_size_t, ...] image_cond_latents = torch.cat([first_frame, image_cond_latents], dim=1) else: image_cond_latents = image_cond_latents.repeat(1, latents.shape[1], 1, 1, 1) else: logger.info(f"Received {image_cond_latents.shape[1]} image conditioning frames") + if fun_mask is not None and patch_size_t: + logger.info(f"1.5 model received {fun_mask.shape[1]} masks") + first_frame = image_cond_latents[:, : image_cond_frame_count % patch_size_t, ...] + image_cond_latents = torch.cat([first_frame, image_cond_latents], dim=1) + fun_mask_first_frame = fun_mask[:, : image_cond_frame_count % patch_size_t, ...] + fun_mask = torch.cat([fun_mask_first_frame, fun_mask], dim=1) + fun_mask[:, 1:, ...] = 0 image_cond_latents = image_cond_latents.to(self.vae_dtype) # 6. Prepare extra step kwargs. TODO: Logic should ideally just be moved out of the pipeline @@ -607,7 +605,7 @@ class CogVideoXPipeline(DiffusionPipeline, CogVideoXLoraLoaderMixin): else: controlnet_states = None control_weights= None - + # 9. Tora if tora is not None: trajectory_length = tora["video_flow_features"].shape[1] logger.info(f"Tora trajectory length: {trajectory_length}") @@ -619,16 +617,41 @@ class CogVideoXPipeline(DiffusionPipeline, CogVideoXLoraLoaderMixin): logger.info(f"Sampling {num_frames} frames in {latent_frames} latent frames at {width}x{height} with {num_inference_steps} inference steps") - from .latent_preview import prepare_callback - callback = prepare_callback(self.transformer, num_inference_steps) + if feta_args is not None: + set_enhance_weight(feta_args["weight"]) + feta_start_percent = feta_args["start_percent"] + feta_end_percent = feta_args["end_percent"] + enable_enhance() + else: + disable_enhance() + + # reset TeaCache + if hasattr(self.transformer, 'accumulated_rel_l1_distance'): + delattr(self.transformer, 'accumulated_rel_l1_distance') + self.transformer.teacache_counter = 0 + + # 11. Denoising loop + #from .latent_preview import prepare_callback + #callback = prepare_callback(self.transformer, num_inference_steps) + from latent_preview import prepare_callback + self.model = CogVideoXModelPlaceholder() + self.load_device = device + callback = prepare_callback(self, num_inference_steps) - # 9. Denoising loop comfy_pbar = ProgressBar(len(timesteps)) with self.progress_bar(total=len(timesteps)) as progress_bar: old_pred_original_sample = None # for DPM-solver++ for i, t in enumerate(timesteps): if self.interrupt: continue + + current_step_percentage = i / num_inference_steps + + if feta_args is not None: + if feta_start_percent <= current_step_percentage <= feta_end_percent: + enable_enhance() + else: + disable_enhance() # region context schedule sampling if use_context_schedule: latent_model_input = torch.cat([latents] * 2) if do_classifier_free_guidance else latents @@ -636,31 +659,13 @@ class CogVideoXPipeline(DiffusionPipeline, CogVideoXLoraLoaderMixin): counter = torch.zeros_like(latent_model_input) noise_pred = torch.zeros_like(latent_model_input) - current_step_percentage = i / num_inference_steps - if image_cond_latents is not None: - if not image_cond_start_percent <= current_step_percentage <= image_cond_end_percent: - latent_image_input = torch.zeros_like(latent_model_input) - else: - latent_image_input = torch.cat([image_cond_latents] * 2) if do_classifier_free_guidance else image_cond_latents - if fun_mask is not None: #for fun img2vid and interpolation - fun_inpaint_mask = torch.cat([fun_mask] * 2) if do_classifier_free_guidance else fun_mask - masks_input = torch.cat([fun_inpaint_mask, latent_image_input], dim=2) - latent_model_input = torch.cat([latent_model_input, masks_input], dim=2) - else: - latent_model_input = torch.cat([latent_model_input, latent_image_input], dim=2) - else: # for Fun inpaint vid2vid - if fun_mask is not None: - fun_inpaint_mask = torch.cat([fun_mask] * 2) if do_classifier_free_guidance else fun_mask - fun_inpaint_masked_video_latents = torch.cat([fun_masked_video_latents] * 2) if do_classifier_free_guidance else fun_masked_video_latents - fun_inpaint_latents = torch.cat([fun_inpaint_mask, fun_inpaint_masked_video_latents], dim=2).to(latents.dtype) - latent_model_input = torch.cat([latent_model_input, fun_inpaint_latents], dim=2) + latent_image_input = torch.cat([image_cond_latents] * 2) if do_classifier_free_guidance else image_cond_latents + latent_model_input = torch.cat([latent_model_input, latent_image_input], dim=2) # broadcast to batch dimension in a way that's compatible with ONNX/Core ML timestep = t.expand(latent_model_input.shape[0]) - current_step_percentage = i / num_inference_steps - # use same rotary embeddings for all context windows image_rotary_emb = ( self._prepare_rotary_positional_embeddings(height, width, context_frames, device) @@ -770,8 +775,6 @@ class CogVideoXPipeline(DiffusionPipeline, CogVideoXLoraLoaderMixin): latent_model_input = torch.cat([latents] * 2) if do_classifier_free_guidance else latents latent_model_input = self.scheduler.scale_model_input(latent_model_input, t) - current_step_percentage = i / num_inference_steps - if image_cond_latents is not None: if not image_cond_start_percent <= current_step_percentage <= image_cond_end_percent: latent_image_input = torch.zeros_like(latent_model_input) @@ -849,8 +852,11 @@ class CogVideoXPipeline(DiffusionPipeline, CogVideoXLoraLoaderMixin): if i == len(timesteps) - 1 or ((i + 1) > num_warmup_steps and (i + 1) % self.scheduler.order == 0): progress_bar.update() - if callback is not None: - callback(i, latents.detach()[-1], None, num_inference_steps) + if callback is not None: + alpha_prod_t = self.scheduler.alphas_cumprod[t] + beta_prod_t = 1 - alpha_prod_t + callback_tensor = (alpha_prod_t**0.5) * latent_model_input[0][:, :16, :, :] - (beta_prod_t**0.5) * noise_pred.detach()[0] + callback(i, callback_tensor * 5, None, num_inference_steps) else: comfy_pbar.update(1) diff --git a/pyproject.toml b/pyproject.toml index 1ca05f7..1e0c087 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,7 +1,7 @@ [project] name = "comfyui-cogvideoxwrapper" -description = "Diffusers wrapper for CogVideoX -models: [a/https://github.com/THUDM/CogVideo](https://github.com/THUDM/CogVideo)" -version = "1.5.0" +description = "Diffusers wrapper for CogVideoX -models: https://github.com/THUDM/CogVideo" +version = "1.5.1" license = {file = "LICENSE"} dependencies = ["huggingface_hub", "diffusers>=0.31.0", "accelerate>=0.33.0"] diff --git a/readme.md b/readme.md index cfe0578..bd79141 100644 --- a/readme.md +++ b/readme.md @@ -2,6 +2,19 @@ Spreadsheet (WIP) of supported models and their supported features: https://docs.google.com/spreadsheets/d/16eA6mSL8XkTcu9fSWkPSHfRIqyAKJbR1O99xnuGdCKY/edit?usp=sharing +## Update 9 +Added preliminary support for [Go-with-the-Flow](https://github.com/VGenAI-Netflix-Eyeline-Research/Go-with-the-Flow) + +This uses LoRA weights available here: https://huggingface.co/Eyeline-Research/Go-with-the-Flow/tree/main + +To create the input videos for the NoiseWarp process, I've added a node to KJNodes that works alongside my SplineEditor, and either [comfyui-inpaint-nodes](https://github.com/Acly/comfyui-inpaint-nodes) or just cv2 inpainting to create the cut and drag input videos. + +The workflows are in the example_workflows -folder. + +Quick video to showcase: First mask the subject, then use the cut and drag -workflow to create a video as seen here, then that video is used as input to the NoiseWarp node in the main workflow. + +https://github.com/user-attachments/assets/112706b0-a38b-4c3c-b779-deba0827af4f + ## BREAKING Update8 This is big one, and unfortunately to do the necessary cleanup and refactoring this will break every old workflow as they are.