Hunyuan video는 텍스트 설명을 비디오로 바꾸어주는 비디오 모델입니다. 하지만 이미지를 비디오로 바꾸려면 어떻게 해야 할까요? 해답은 Image-to-video 모델입니다만, 아쉽게도 Hunyuan은 아직 공개하지 않고 있습니다. 만약 나온다면 일약 게임 체인저가 될텐데요. 당분간은 Image Prompt를 사용해 비디오를 제작하는 IP2V 를 사용해 비슷한 효과를 얻어야 합니다.
이 워크플로는 이미지와 프롬프트를 입력받아 비디오를 생성합니다. 예를 들어, 배경이미지를 제공하고 프롬프트로 사람을 추가하면 아래와 같은 이미지를 생성할 수 있습니다.
소프트웨어
이 글에서는 스테이블 디퓨전용 GUI중에서도 제가 제일 좋아하는 ComfyUI를 사용합니다. ComfyUI가 처음이시라면, 설치 및 기본 사용방법 및 초보가이드를 확인하시기 바랍니다.
작동 원리
이 Hunyuan IP2V 워크플로는 Hunyuan text-to-video 모델을 이용합니다. Hunyuan 은 대형 언어 및 비전 어시스턴트(LLaVA, Large Language and Vision Assistant)를 사용해 프롬프트를 전처리하는데, 이 과정에서 LLaVA가 텍스트와 함께 이미지도 읽어들입니다. 즉, 이 워크플로는 Hunyuan 텍스트 인코더의 기능을 활용하여 이미지를 판독하고 프롬프트를 보원하는 방식입니다.
Img2Vid와 IP2V의 차이
image-to-video 워크플로는 생성되는 비디오의 첫번째 프레임에 들어가게 됩니다. 반면, image-prompt-to-video 워크플로는 이미지를 프롬프트의 일부로만 사용합니다. 즉, 이미지의 전반적인 개념이나 구도를 사용하기는 하지만, 첫번째 프레임에 나타나는 것은 아닙니다.
유즈케이스
이미지를 배경으로 사용할 경우
아래의 터널 이미지를 배경으로 사용하고, 프롬프트를 사용해 사람을 비디오에 추가할 수 있습니다.
프롬프트: A fashionable beautiful woman with long blonde hair, black short skirt, white blouse, high heel, walking towards the camera, <image>, camera zooming in.
주의할 점은 프롬프트의 어느 위치에 이미지 프롬프트를 삽입할 곳을 명시하여 <image>라는 이미지 토큰을 삽입해야 한다는 점입니다.
아래는 생성되는 비디오 입니다.
Hunyuan IP2V 워크플로를 사용하면 터널을 걷고 있는 사람을 아주 잘 생성해 줍니다. 프롬프트를 다시 살펴보면, 어디에도 터널이라는 단어는 없습니다. 이 워크플로는 비주얼 LLM으로 하여금 배경이미지를 파싱하여 비디오에 삽입시키는 것입니다.
또한 입력한 이미지의 터널과, 생성된 비디오의 터널이 비슷해 보이기는 하지만 동일하지 않다는 것을 느끼실 것입니다. 이것이 IP2V 워크플로에서 중요한 점입니다. 비주얼 LLM은 이미지를 읽어 이미지 토큰으로 변환합니다. 이 토큰들이 장면을 설명하여 비디오에 영향을 미치는 것입니다. IP-adapter와는 달리 비디오에 이미지를 복제해 넣는 것이 아닙니다.
이미지 애니메이션
Hunyuan Video는 콘텐트 크리에이터에서 아주 훌륭한 도구입니다. Hunyuan Video의 아주 뛰어난 비디오 품질은 B-roll (보조영상)을 생성할 가능성을 가지고 있습니다.
또한 로열티가 없는 B-roll 이 존재합니다. 이 링크와 비슷한 무료 비디오 사이트에서 찾으실 수 있습니다. 하지만 무료 이미지 사이트에 비해서는 아주 소량에 불과합니다. 이 때 Hunyuan IP2V 워크플로를 이용해 무료 이미지를 독특한 B-roll 비디오를 만들 수 있다면 어떨까요?
예를 들어, 자금 계획과 관련된 비디오를 만든다고 해봅시다. 아래와 같은 이미지라면 B-roll 에 아주 적합할 것입니다.
이 이미지를 입력으로 사용하고, 텍스트 프롬프트에는 아래와 같이 이미지 토큰만 사용해 보겠습니다.
프롬프트: <image>
아주 훌륭한 B-roll 이 만들어졌습니다!
따라하기
0 단계: ComfyUI 업데이트
이 워크플로를 사용하려면 최신 버전의 ComfyUI가 설치되어 있어야 합니다. 이 글에 있는 내용에 따라 업데이트 하시면 됩니다.
1 단계: 비디오 모델 다운로드
hunyuan_video_FastVideo_720_fp8_e4m3fn.safetensors 를 다운로드 받아 ComfyUI\models\diffusion_models 폴더에 넣어줍니다.
2 단계: VAE 다운로드
hunyuan_video_vae_bf16.safetensors 파일을 다운로드 받아 ComfyUI\models\vae에 넣어줍니다.이 VAE 파일은 ComfyUI가 공개하고 text-to-video에서 사용하는 것과 다른 파일입니다. 다운로드 받은 후, 이름을 hunyuan_video_vae_bf16-kj.safetensors로 변경해줍니다.
3 단계: 워크플로 불러오기
아래의 JSON파일을 다운로드 받은 후, 화면에 Drag&Drop합니다. 또는 좌측 위 메뉴에서 Workflow->Open을 선택해 불러와도 됩니다.
이 워크플로는 대부분 그냥 그대로 사용할 수 있지만, 때때로 오류가 발생할 수 있습니다. 그러한 경우, 다음과 같은 작업이 필요할 수 있습니다.
- 처음 사용할 때 - ComfyUI Manager 를 설치해야 합니다.
- ComfyUI를 오랜만에 사용할 때 - ComfyUI를 최신버전으로 업데이트해야 합니다.
- 노드가 없다고 (빨간색) 경고가 뜰 때 - 빠진 커스톰 노드를 가져오기해야 합니다.
- 불러오기 혹은 수행중 에러 발생시 - 커스톰 노드를 업데이트해야 합니다.
5 단계: 이미지 지정
아래의 이미지를 다운로드 받아, [Load Image] 노드에서 선택합니다.
6 단계: 비디오 생성
이제 [Queue] 버튼을 누르면 비디오가 생성됩니다. 처음에 실행시키면 약간(상당히 많이) 시간이 걸립니다. 모델을 다운로드 받기 때문입니다.
이미지 프롬프트 조정
이미지 토큰 다운샘플링
이미지가 비디오에 영향을 미치는 정도는 image_tocken_selection_expr에 의해 제어됩니다. 값을 ::4 로 두면 이미지 토큰이 1/4 정도만 사용하도록 다운샘플링 됩니다. ::8, ::16과 같이높은 값을 사용할 수록 이미지의 영향이 줄어 들게 됩니다.
다운샘플링 율을 ::16으로 변경하면 아래처럼 터널이 그래피티가 있는 낡은 건물로 변경될 수도 있습니다. 이때에도 여자는 동일한 프롬프트를 사용하므로, 동일한 복장을 하게 됩니다.
이미지 토큰을 전달하는 다른 옵션
llava-llama-3 모델은 576개의 이미지 토큰을 가지고 있습니다. 다운샘플링 대신 아래와 같이 설정하면 토큰의 일부만 전달하도록 지정할 수도 있습니다.
- :128 - 최초의 128 토큰만 사용
- -128 - 마지막 128개의 토큰만 사용
- :128, -128: - 최초의 128개와 마지막 128개를 사용
=====
이 글은 Stable-diffusion-art.com의 글을 번역하고 약간 수정한 글입니다. 다만, 이 워크플로는 제 3070에서는 메모리 부족으로 실행이 안되어 직접 테스트해보지 못했습니다.
- 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로 스테이블 디퓨전 프롬프트 만들기