VAST-AI, HoloPart 출시: 생성형 3D 부품 아모달 분할 기술
2025. 04. 12.
ComfyUI WanFunControlToVideo 노드
이 노드는 비디오 생성을 위한 Alibaba Wan Fun Control 모델을 지원하기 위해 추가되었으며, 이 커밋 이후에 추가되었습니다.
- 목적: Wan 2.1 Fun Control 모델을 사용하여 비디오 생성을 위해 필요한 조건 정보를 준비합니다.
WanFunControlToVideo 노드는 비디오 생성을 위한 Wan Fun Control 모델을 지원하도록 설계된 ComfyUI의 추가 기능으로, 비디오 제작을 위해 WanFun 제어를 활용하는 것을 목표로 합니다.
이 노드는 필수 조건 정보를 준비하는 지점 역할을 하며, 잠재 공간의 중심점을 초기화하여 Wan 2.1 Fun 모델을 사용하여 후속 비디오 생성 프로세스를 안내합니다. 노드의 이름은 그 기능을 명확하게 나타내며, 다양한 입력을 수용하고 이를 WanFun 프레임워크 내에서 비디오 생성을 제어하는 데 적합한 형식으로 변환합니다.
노드의 ComfyUI 노드 계층 내 위치는 비디오 생성 파이프라인의 초기 단계에서 작동하며, 실제 샘플링이나 비디오 프레임의 디코딩 전에 조건 신호를 조작하는 데 중점을 둡니다.
WanFunControlToVideo 노드 상세 분석
입력 매개변수
매개변수 이름 | 필수 | 데이터 유형 | 설명 | 기본값 |
---|---|---|---|---|
positive | 예 | CONDITIONING | 표준 ComfyUI 긍정 조건 데이터로, 일반적으로 “CLIP Text Encode” 노드에서 가져옵니다. 긍정 프롬프트는 사용자가 생성할 비디오의 내용, 주제 및 예술 스타일을 설명합니다. | N/A |
negative | 예 | CONDITIONING | 표준 ComfyUI 부정 조건 데이터로, 일반적으로 “CLIP Text Encode” 노드에 의해 생성됩니다. 부정 프롬프트는 사용자가 생성할 비디오에서 피하고 싶은 요소, 스타일 또는 아티팩트를 지정합니다. | N/A |
vae | 예 | VAE | Wan 2.1 Fun 모델 패밀리와 호환되는 VAE(변분 오토인코더) 모델이 필요하며, 이미지/비디오 데이터의 인코딩 및 디코딩에 사용됩니다. | N/A |
width | 예 | INT | 출력 비디오 프레임의 원하는 너비(픽셀 단위)로, 기본값은 832, 최소값은 16, 최대값은 nodes.MAX_RESOLUTION에 의해 결정되며, 단계 크기는 16입니다. | 832 |
height | 예 | INT | 출력 비디오 프레임의 원하는 높이(픽셀 단위)로, 기본값은 480, 최소값은 16, 최대값은 nodes.MAX_RESOLUTION에 의해 결정되며, 단계 크기는 16입니다. | 480 |
length | 예 | INT | 생성된 비디오의 총 프레임 수로, 기본값은 81, 최소값은 1, 최대값은 nodes.MAX_RESOLUTION에 의해 결정되며, 단계 크기는 4입니다. | 81 |
batch_size | 예 | INT | 한 번에 생성되는 비디오 수로, 기본값은 1, 최소값은 1, 최대값은 4096입니다. | 1 |
clip_vision_output | 아니오 | CLIP_VISION_OUTPUT | (선택 사항) CLIP 비전 모델에 의해 추출된 시각적 특징으로, 시각적 스타일 및 콘텐츠 안내를 가능하게 합니다. | 없음 |
start_image | 아니오 | IMAGE | (선택 사항) 생성된 비디오의 시작에 영향을 미치는 초기 이미지입니다. | 없음 |
control_video | 아니오 | IMAGE | (선택 사항) 사용자가 생성된 비디오의 움직임과 잠재적 구조를 안내할 수 있도록 전처리된 ControlNet 참조 비디오를 제공할 수 있게 합니다. | 없음 |
출력 매개변수
매개변수 이름 | 데이터 유형 | 설명 |
---|---|---|
positive | CONDITIONING | 인코딩된 start_image와 control_video를 포함한 향상된 긍정 조건 데이터를 제공합니다. |
negative | CONDITIONING | 동일한 concat_latent_image를 포함한 향상된 부정 조건 데이터를 제공합니다. |
latent | LATENT | ”samples” 키를 가진 빈 잠재 텐서를 포함하는 사전입니다. |
노드 예제 워크플로우
Wan Fun Control 노드 예제 워크플로우를 방문하여 ComfyUI가 Wan Fun Control 모델을 어떻게 네이티브로 지원하는지 이해하세요.
노드 소스 코드
노드 소스 코드, 코드 버전 3661c833bcc41b788a7c9f0e7bc48524f8ee5f82
class WanFunControlToVideo:
@classmethod
def INPUT_TYPES(s):
return {"required": {"positive": ("CONDITIONING", ),
"negative": ("CONDITIONING", ),
"vae": ("VAE", ),
"width": ("INT", {"default": 832, "min": 16, "max": nodes.MAX_RESOLUTION, "step": 16}),
"height": ("INT", {"default": 480, "min": 16, "max": nodes.MAX_RESOLUTION, "step": 16}),
"length": ("INT", {"default": 81, "min": 1, "max": nodes.MAX_RESOLUTION, "step": 4}),
"batch_size": ("INT", {"default": 1, "min": 1, "max": 4096}),
},
"optional": {"clip_vision_output": ("CLIP_VISION_OUTPUT", ),
"start_image": ("IMAGE", ),
"control_video": ("IMAGE", ),
}}
RETURN_TYPES = ("CONDITIONING", "CONDITIONING", "LATENT")
RETURN_NAMES = ("positive", "negative", "latent")
FUNCTION = "encode"
CATEGORY = "conditioning/video_models"
def encode(self, positive, negative, vae, width, height, length, batch_size, start_image=None, clip_vision_output=None, control_video=None):
latent = torch.zeros([batch_size, 16, ((length - 1) // 4) + 1, height // 8, width // 8], device=comfy.model_management.intermediate_device())
concat_latent = torch.zeros([batch_size, 16, ((length - 1) // 4) + 1, height // 8, width // 8], device=comfy.model_management.intermediate_device())
concat_latent = comfy.latent_formats.Wan21().process_out(concat_latent)
concat_latent = concat_latent.repeat(1, 2, 1, 1, 1)
if start_image is not None:
start_image = comfy.utils.common_upscale(start_image[:length].movedim(-1, 1), width, height, "bilinear", "center").movedim(1, -1)
concat_latent_image = vae.encode(start_image[:, :, :, :3])
concat_latent[:,16:,:concat_latent_image.shape[2]] = concat_latent_image[:,:,:concat_latent.shape[2]]
if control_video is not None:
control_video = comfy.utils.common_upscale(control_video[:length].movedim(-1, 1), width, height, "bilinear", "center").movedim(1, -1)
concat_latent_image = vae.encode(control_video[:, :, :, :3])
concat_latent[:,:16,:concat_latent_image.shape[2]] = concat_latent_image[:,:,:concat_latent.shape[2]]
positive = node_helpers.conditioning_set_values(positive, {"concat_latent_image": concat_latent})
negative = node_helpers.conditioning_set_values(negative, {"concat_latent_image": concat_latent})
if clip_vision_output is not None:
positive = node_helpers.conditioning_set_values(positive, {"clip_vision_output": clip_vision_output})
negative = node_helpers.conditioning_set_values(negative, {"clip_vision_output": clip_vision_output})
out_latent = {}
out_latent["samples"] = latent
return (positive, negative, out_latent)
인코드 함수 분석
WanFunControlToVideo 노드의 인코드 함수는 입력 매개변수를 조건 정보와 잠재 공간으로 변환하여 후속 비디오 생성 모델에서 사용하도록 하는 역할을 합니다.
이 함수는 먼저 특정 형태를 가진 빈 잠재 텐서인 latent를 초기화합니다: [batch_size, 16, ((length - 1) // 4) + 1, height // 8, width // 8]. 이 텐서는 일반적으로 사용 가능한 GPU인 comfy.model_management.intermediate_device()에 배치됩니다. 다음으로, 동일한 형태의 또 다른 잠재 텐서 concat_latent가 초기화되어 선택적 start_image 및 control_video 입력에서 인코딩된 정보를 저장하는 데 사용됩니다.
선택적 시각 입력을 처리한 후, concat_latent 텐서는 이제 start_image 및 control_video(제공된 경우)에서 인코딩된 정보를 포함하게 되며, node_helpers.conditioning_set_values 함수를 사용하여 “concat_latent_image” 키 아래의 긍정적 및 부정적 조건 정보에 추가됩니다.
마지막으로, 함수는 clip_vision_output이 제공되었는지 확인합니다. 제공된 경우, 이는 “clip_vision_output” 키 아래의 긍정적 및 부정적 조건에도 추가됩니다. 이를 통해 CLIP 모델에 의해 추출된 시각적 특징이 생성 과정을 더욱 정교하게 만듭니다.
추가 Wan Fun Control 관련 콘텐츠
WanFun Control은 주로 Wan 2.1 모델 계열과 함께 사용됩니다. 이 방법은 다양한 공간적 및 구조적 입력을 통해 출력을 조정하는 데 널리 사용되는 강력한 기술인 ControlNet에서 영감을 받았습니다. WanFun Control은 이러한 원칙을 비디오의 시간적 영역으로 확장하여 사용자가 생성된 비디오 콘텐츠에 대해 높은 영향을 미칠 수 있도록 하며, 순수한 텍스트 기반 방법의 한계를 넘어섭니다. 이는 깊이 맵, 에지 윤곽(Canny) 또는 인간 포즈(OpenPose)와 같은 입력 비디오에서 추출된 시각적 정보를 활용하여 제어된 비디오 생성에 도움을 줍니다.
Wan 2.1 모델 계열은 WanFun Control의 기초를 제공하며, 1.3B 및 14B 모델을 포함한 다양한 매개변수 변형을 제공합니다. 이를 통해 사용자는 계산 자원과 원하는 출력 품질 및 복잡성 간의 균형을 맞출 수 있는 옵션을 제공합니다.
WanFun Control의 기본 개념은 참조 비디오에서 시각적 단서를 활용하여 AI의 창의적 프로세스를 안내하는 것입니다. 사용자는 생성된 비디오의 동작이나 공간적 배열을 구현하는 “제어 비디오”를 제공할 수 있으며, 이는 생성된 비디오의 동작, 구조 및 스타일을 결정하는 데 텍스트 프롬프트에만 의존하지 않도록 합니다. 이를 통해 특정 특성을 가진 비디오를 보다 직접적이고 직관적으로 생성할 수 있습니다. 예를 들어, 사용자가 걷고 있는 사람의 비디오를 제공하면, WanFun Control 시스템은 동일한 걷기 동작을 수행하는 다른 주체의 새로운 비디오를 생성하며, 주체의 외모와 전체 장면에 대한 텍스트 프롬프트를 준수합니다. 시각적 데이터와 텍스트 설명을 결합한 이러한 구조화된 비디오 생성 접근 방식은 더 높은 동작 정확도, 개선된 스타일화 효과 및 보다 의도적인 시각적 변환을 달성할 수 있는 출력을 제공합니다.