이 워크플로는 댄스 비디오를 종이접기(Origami) 스타일로 변환하는 워크플로입니다. 오리가미의 색과 형태는 원하는 대로 바꿀 수 있습니다. 배경은 일반적으로 입력 비디오를 따르지만, 프롬프트로 일부 변경할 수 있습니다.
소프트웨어
이 글에서는 스테이블 디퓨전용 GUI중에서도 제가 제일 좋아하는 ComfyUI를 사용합니다. ComfyUI가 처음이시라면, 설치 및 기본 사용방법 및 초보가이드를 확인하시기 바랍니다.
워크플로의 원리
ControlNet
이 워크플로에서는 세가지 ControlNet을 사용하여 비디오의 구도를 복제합니다.
- Depth 콘트롤넷 : Depth Anything 전처리기를 하여 depth 필드를 추출합니다. 일반 Midas 전처리기는 문제가 있습니다.
- QR code 콘트롤넷 : Depth 콘트롤넷은 사람을 렌더링하는 경향이 있습니다. QR Code 콘트롤넷을 사용하면 종이접기 스타일을 끌어내는데 도움이 됩니다.
- Soft Edge 콘트롤넷 Depth 콘트롤넷 만으로는 사람의 자세를 올바르게 렌더링하지 못합니다. HED Soft Edge 로 외곽선을 수정하면 사람의 형태를 올바르게 렌더링하고, 일부 배경도 복제가 가능합니다.
또, 여기에서는 IP Adapter Plus 를 사용하여 종이접기 스타일을 이미지에 밀어넣습니다. 이를 사용하면 참조 이미지를 복제하여 전체 이미지를 가져올 수 있습니다.
아래 참조 이미지는 SDXL 1.0으로 생성한 이미지입니다.
AnimateDiff
AnimateDiff 는 프레임간의 일관성을 향상시키는데 사용합니다. 여러가지 새로운 종류의 AnimateDiff 모델이 나왔지만, 이 워크플로에서는 예전 모델이 잘 작동하다는 것을 발견했습니다. 아래는 AnimateDiff 모델 테스트중 알아낸 사실들입니다.
- mm_stabilized_high: 대비가 강한 색이 생성됩니다.
- Animatediff v3: 색상이 약간 침침합니다(이 모델에는 추가 LoRA가 필요합니다)
- Motion model v01: 다리부분이 잘 표현되지 않을 때가 있고 얼굴이 나타나기도 합니다.
이번에는 mm_stabilized_high 모델을 사용합니다.
모델
비디오를 생성할 때에는 LCM 모델을 사용하는 것을 좋아합니다(예전에 생성한 LCM 비디오 샘플을 보세요). LCM 모델을 사용하면 적어도 50% 이상의 시간을 절약할 수 있습니다. 하지만, 이 워크플로에서는 LCM 모델을 사용하지 않으려고 합니다. 어떤 이유인지 배경이 지루해지는 경향이 있기 때문입니다.
이번에는 DreamShaper 8 모델을 사용합니다.
디테일 추가
Add detail LoRA를 사용하면 디테일 수준을 조절할 수 있습니다. 원하는 수준에 따라 0.5~2.0 정도로 설정하면 됩니다.
따라하기
1단계: ComfyUI 워크플로 불러오기
아래의 JSON 파일을 다운로드 받은 후, ComfyUI 메뉴에서 Workflow -> Open을 사용해 불러옵니다.
이 워크플로는 대부분 그냥 그대로 사용할 수 있지만, 때때로 오류가 발생할 수 있습니다. 그러한 경우, 다음과 같은 작업이 필요할 수 있습니다.
- 처음 사용할 때 - ComfyUI Manager 를 설치해야 합니다.
- ComfyUI를 오랜만에 사용할 때 - ComfyUI를 최신버전으로 업데이트해야 합니다.
- 노드가 없다고 (빨간색) 경고가 뜰 때 - 빠진 커스톰 노드를 가져오기해야 합니다.
- 불러오기 혹은 수행중 에러 발생시 - 커스톰 노드를 업데이트해야 합니다.
2단계: 입력 비디오 설정
입력 비디오를 불러옵니다. 아래의 비디오를 사용하셔도 됩니다.
이 비디오를 [Load Video(Upload)] 노드에서 맨아래의 "choose video to upload" 버튼을 눌러 지정합니다.
여기에서 frame_load_cap은 사용할 최대 프레임 수입니다. 테스트할 떄에는 16으로 지정하시고, 마음에 들때 큰 수로 바꿔주시면 됩니다.
생성할 비디오의 width와 height는 원 비디오의 종횡비(aspect ratio) 와 비슷해야 합니다. 좁은 쪽(여기서는 가로)를 체크포인트 모델의 해상도(SD1.5의 경우 512)의 0.5에서 1.5배로 설정하는 것이 좋습니다. 원 비디오가 1080x1920이므로, 가로를 512로 설정하면 세로는 512*1920/1080 = 910으로 설정합니다.
3단계: 모델 다운로드
체크포인트 모델
이 워크플로에서는 DreamShaper 8 모델을 사용합니다. 파일을 다운로드 받아 ComfyUI/models/checkpoints 폴더에 넣어줍니다. A1111과 모델을 공유할 경우 여기를 참고하세요. 다운로드가 완료되면 화면을 새로고침하신 후 [Load Checkpoint w/ Noise Select] 노드에서 이 모델을 지정합니다.
IP adapter
이 워크플로에서는 얼굴 및 의복의 일관성 유지를 위해 IP-adapter를 사용합니다.
SD 1.5 IP adapter Plus 모델을 다운로드 받아 ComfyUI/models/ipadapter 폴더에 넣어줍니다. 다운로드가 완료되면 화면을 새로고침하신 후 [IPAdapter Model Loader] 노드에서 이 모델을 지정합니다.
또 SD 1.5 CLIP VISION 모델을 다운로드 받아 ComfyUI/models/clip_vision 폴더에 넣어줍니다. 다운로드 받은 후, CLIP-ViT-H-14-laion2B-s32B-b79K.safetensors 로 파일명을 바꿔줍니다. 다운로드가 완료되면 화면을 새로고침하신 후 [Load CLIP Vision] 노드에서 이 모델을 지정합니다.
LoRA
add_detail LoRA를 다운로드 받아 ComfyUI\models\loras 폴더에 넣어줍니다. 이 LoRA를 사용하면 세부 디테일이 향상됩니다. 다운로드가 완료되면 화면을 새로고침하신 후 [Load LoRA] 노드에서 이 모델을 지정합니다.
ControlNet
아래의 세 파일을 다운로드 받아 ComfyUI\models\controlnet 폴더에 넣어줍니다. 다운로드가 완료되면 화면을 새로고침하신 후 [Load Advanced ControlNet Model] 노드에서 이 모델을 지정합니다.
AnimateDiff
AnimateDiff mm-Stabilized High 모델을 다운로드 받아 ComfyUI\models\animatediff_models 폴더에 넣어줍니다. 다운로드가 완료되면 화면을 새로고침하신 후 [Load Advanced ControlNet Model] 노드에서 이 모델을 지정합니다.
4단계: IP adapter용 참조 이미지
[Load Image (IP-adapter)] 노드에 캐릭터를 위한 참조 이미지를 업로드합니다. 아래 이미지를 사용하셔도 됩니다.
참고로 이 이미지는 다음과 같은 프롬프트를 사용하여 SDXL 1.0 모델을 사용하여 생성한 것입니다.
origami of a person dancing
5단계: 이미지 생성
[Queue] 버튼을 누르면 이미지가 생성됩니다.
실행중 out-of-memory 오류가 발생할 경우, 아래와 같이 run_nvidia_gpu.bat 파일에 --disable-smart-memory를 추가하시면 됩니다.
.python_embeded\python.exe -s ComfyUI\main.py --windows-standalone-build --disable-smart-memory
또 다른 예제는 이 글을 참고하세요.
비디오 변경 방법
씨드(Seed) 값
씨드 값을 변경하면 일관성이 깨지는 문제가 해결될 수도 있습니다.
프롬프트
프롬프트와 IP-adapter 이미지를 변경하면 캐릭터를 변경할 수 있습니다. 두가지가 잘 맞을 수록 좋은 결과를 얻을 수 있습니다.
배경
배경의 외곽선은 HED 콘트롤넷을 통해 설정됩니다. 프롬프트와 IP adapter 이미지를 통해 제한된 범위내에서만 변경할 수 있습니다. HED ControlNet의 weight와 end_percent를 올려주면 배경 렌더링 결과가 좋아집니다.
비디오 입력
frame_load_cap은 최대로 불러올 프레임 수를 지정합니다. 16으로 테스트하고 원하는 결과를 얻을 수 있겠다 싶을 때 큰 값으로 되돌리시면 됩니다.
select_every_nth는 몇번째 프레임을 렌더링할 것인지를 결정합니다. 2는 하나 걸러 하나씩 생성한다는 뜻입니다. 즉, 30FPS 가 15FPS로 줄어들게 됩니다. 1로 설정하면 가장 품질이 좋아집니다.
민, 푸른하늘
이 글은 stable-diffusion-art.com의 글을 번역하며 테스트하여 작성한 글입니다.
- ComfyUI로 설치 및 사용법 기초
- ComfyUI 투토리얼
- ComfyUI를 위한 유용한 정보
- ComfyUI와 SDXL 사용법(1) - 기초
- ComfyUI에서 ControlNet 사용법
- 편리한 ComfyUI 워크플로 모음
- LCM-LoRA - 초고속 스테이블 디퓨전
- Stable Video Diffusion(비디오 스테이블 디퓨전)
- Stable Diffusion 인공지능 이미지 생초보 가이드
- Stable Diffusion 대표 UI - AUTOMATIC1111 설치방법
- Automatic1111 GUI: 초보자 가이드(메뉴 해설)
- Stable Diffusion에 대한 기본적인 이론
- ChatGPT로 스테이블 디퓨전 프롬프트 만들기