AI 이미지/AI Video

춤추는 스파게티

하늘이푸른오늘 2025. 1. 15. 23:28

어떤 물체를 춤추게 한다는 아이디어를 생각해 본 적이 있으신가요? 이 글에 있는 ComfyUI 워크플로를 사용하면 쉽게 생성할 수 있습니다 이 예제 워크플로는 댄싱 비디오를 춤추는 스파게티로 전환해 줍니다.

소프트웨어

이 글에서는 스테이블 디퓨전용 GUI중에서도 제가 제일 좋아하는 ComfyUI를 사용합니다. ComfyUI가 처음이시라면, 설치 및 기본 사용방법초보가이드를 확인하시기 바랍니다.

이 워크플로의 원리

이와 비슷한 작업을 두개의 샘플링 패스로 구현한 사례가 있지만, 이는 불필요합니다. 여기서는 단일 샘플링 패스를 사용해 동일한 결과를 얻는 방법을 보여드리겠습니다 

입력 비디오는 흰색 피사체와 검은색 배경으로 이루어집니다. 이러한 비디오는 Depth 전처리기를 사용하여 생성할 수 있습니다.

다음은 이 비디오를 아래와 같은 정적인 이미지 위에 올리는 것입니다. 이는 ImageCompositeMasked 노드를 사용하여 수행할 수 있는데, 비디오를 반전시키고 마스트로 변환하는 작업이 필요합니다. 또한 피사체를 생성할 객체와 유사한 색으로 채워야 합니다.

그 다음 Animate image-to-image 기법을 이용해 비디오를 생성합니다. 여기에서는 LCM 체크포인트 모델을 사용해 생성속도를 올립니다.  LCM은 프레임당 10 샘플링 단계가 소요됩니다.

또한 IP adpater를 사용해 참조 이미지를 주입하는 데 사용합니다. 다만, 마스크로 적용된 댄서의 형상에만 적용됩니다.

아울러 QR Monster 및 Soft Edge 콘트롤넷을 사용해 춤추는 객체의 형태를 유지합니다.

따라하기

1 단계: ComfyUI 워크플로 불러오기

아래의 파일을 다운로드 받은 후, ComfyUI 화면에 Drag&Drop합니다. 또는 메뉴에서 Workflow->Open을 선택해도 됩니다.

dance-transfer-spaghetti.json
0.04MB

이 워크플로는 대부분 그냥 그대로 사용할 수 있지만, 때때로 오류가 발생할 수 있습니다. 그러한 경우, 다음과 같은 작업이 필요할 수 있습니다.

2 단계: 모델 다운로드

체크포인트 모델

이 워크플로에서는 실행속도를 올리기 위해 DreamSahper 8 LCM 모델을 사용합니다.

DreamShaper 8 LCM 모델을 다운로드 받고 ComfyUI\models\checkpoints에 넣어줍니다.

새로고침을 누르고 [Load Checkpoint] 노드에서 이 모델을 선택합니다.

IP adapter

이 워크플로는 이미지 프롬프트를 사용해 춤추는 스파게티를 생성합니다.

SD 1.5 IP adapter Plus 모델을 다운로드 받아 ComfyUI\models\ipadapter 폴더에 넣어줍니다.

또한 SD 1.5 CLIP vision 모델을 다운로드 받아 ComfyUI\models\clip_vision 폴더에 넣어줍니다. 다운 받은 후, CLIP-ViT-H-14-laion2B-s32B-b79K.safetensors로 이름을 변경해줍니다.

이 모델들은 [IPAdapter Unified Loader] 노드에서 사용됩니다. (따로 지정할 필요는 없습니다)

ControlNet

SoftEdge ControlNet 모델과 QR Monster ControlNet 모델을 다운로드 받아 ComfyUI\models\controlnet 폴더에 넣어줍니다. 새로고침(r)을 누르고 아래 그림처럼 [Load ControlNet Model] 노드에 지정합니다.

AnimateDiff

AminateDiff MM-Stablilized High 모델을 다운로드 받아, ComfyUI/models/animatediff_models에 넣어줍니다.

다운로드가 완료되면 화면을 새로고침(F5)하고 [Load AnimateDiff Model] 노드에서 선택합니다.

3 단계: 비디오 불러오기

아래 비디오를 다운로드 받은 후...

Dance-of-the-Sugar-Plum-Fairy-from-The-Nutcracker-The-Royal-Ballet.mp4
5.88MB

[Load Video (Upload)] 노드 맨아래 있는 [choose video to upload] 버튼을 이용해 선택합니다.

4 단계: 참조 이미지 불러오기

아래의 탬플릿 이미지를 다운로드 받아 [Load object template image] 노드에 불러옵니다.

spaghetti_object_template_color.png
0.00MB

또한 아래의 배경 이미지를 다운로드 받고, [Load Background image] 노드에서 지정합니다.

spaghetti_background.png
0.61MB

마지막으로 IP-adapter 참조 이미지로 사용할 이미지를 다운로드 받아 [Load IP-dapter image]노드에 지정합니다.

spagetti_ip_adapter.jpg
0.05MB

5 단계: 비디오 생성

이제 [Queue] 버튼을 누르면 비디오가 생성됩니다. 아래가 생성 결과입니다.

비디오 변경

춤추는 물체 변경

춤추는 물체는 프롬프트와 IP-adapter 이미지에 따라 제어됩니다. 이 두가지 모두를 변경해야 합니다.

또한 object template image를 춤추는 객체의 색과 비슷한 색으로 변경해야 합니다.

당연히 배경이미지도 변경해야 할테고요.

아울러 다음과 같은 매개변수의 수정이 필요할 수 있습니다.

  • 두 ControlNet의 Strength
  • 두 ControlNet의 End_percent
  • IP-adpater의 Weight
  • IP-adapter의 End_at

IP-adapter 매개변수를 크게 할 수록 참조 이미지에 가까워집니다. 좋은 결과물이 나올 때까지 조절하시면 됩니다.

비디오 길이

비디오의 길이는 [Load Video(Upload]  노드에서 frame_load_cap 값을 조정하여 조절할 수 있습니다. 처음에 시험용으로 제작할 때에는 32 정도로 놓고 생성해보고 마음에 들면 큰 값으로 변경하면 됩니다.

씨드 값

[KSampler] 노드의 씨드 값을 바꾸면 다른 비디오가 생성됩니다. 생성한 비디오에 결함이 있을 경우, 다른 씨드 값으로 바꿔 생성해보는 것이 좋습니다.

이상입니다.

이 글은 stable-diffusion-art.com의 글을 번역하여 작성하였습니다.