Stable Video Diffusion 스테이블 디퓨전으로 영상 만드는 방법

스테이블 디퓨전은 이제 단순 이미지 생성을 넘어 비디오 생성 까지 가능한 수준에 이르렀습니다. 기존에도 animated diffusion, mov2mov 등과 같은 기술로 스테이블 디퓨전을 활용한 영상 제작이 가능했지만, 최근 공개된 Stable Video Diffusion의 경우 이미지 1장만으로 수초 가량의 영상을 제작할 수 있는 획기적인 기술입니다. 본 글에서는 ComfyUI를 활용한 Stable Video Diffusion 영상제작 워크플로우소개 및 영상 제작에 대해 간략히 살펴보도록 하겠습니다.

Stable Video Diffusion

지난 11월 22일 Stability 사에서 연구용 한정으로 Stable Video Diffusion(SVD)을 오픈 소스로 공개하면서 업계에서 큰 주목을 받게 되었습니다. 하지만 발표 당시에는 VRAM 40G 이상을 요구하는 높은 사양 때문에 일반인들에게는 접근이 쉽지 않았는데요, 며칠이 지나지 않아 ComfyUI에서 VRAM 8G에서도 25프레임 비디오 생성이 가능한 소스코드가 공개되면서 가정에서도 SVD를 시도해볼 수 있게 되었습니다.

SVD 생성 방법

Stable Video Diffusion을 통해 영상을 만드는 방법은 ComfyUI 사용에 익숙한 분들께는 매우 간단합니다. 영상을 만들어내는 워크플로우(workflow)를 적용해서 이미지 한 장만 넣고 생성할 수 있기 때문입니다. 아직 ComfyUI를 설치하지 않으신 분들은 아래 글을 참고하여 설치해보시기 바랍니다.

SVD 모델 다운로드

먼저 SVD 비디오 생성에 필수적으로 필요한 모델을 다운로드 받아야 합니다. Stabilityai의 허깅페이스 Stable Video Diffusion 페이지에 가면 svd_xt.safetensors 모델이 있습니다. 해당 모델을 다운받은 뒤 ComfyUI Checkpoints 폴더에 넣어주시면 됩니다.

svd_xt.saftensors download page

SVD Example Workflow

SVD 기본 워크 플로우는 아래 그림을 참고하여, 사진(영상)을 드래그해서 ComfyUI로 끌어다 두시면 됩니다.

SVD workflows insertion

SVD 설정값

이제 비디오를 생성할 준비가 다 되었습니다. 불러온 워크플로우 내의 설정값을 한 번 살펴보겠습니다.

SVD Settings

비디오의 width, height는 현재 최대값이 1024×576입니다. min_cfg, video_frames, motion_bucket_id, fps, augmentation_level, seed, control_after_generate 등을 제어 합니다. 각 항목을 제어할 때 반영되는 부분은 다음과 같습니다.

  • min_cfg, cfg : 비디오 전반에 걸쳐 cfg값이 min_cfg에서 cfg값으로 증가합니다.
  • video_frames : 생성할 비디오의 총 프레임 수 입니다. 최대 25프레임까지 생성 가능합니다.
  • motion_bucket_id : 이 값이 높을수록 비디오 내의 움직임이 증가합니다.
  • fps : 비디오의 초당 프레임 수 입니다. fps 값과 video_frames 값으로 영상의 길이를 정할 수 있습니다. 예를 들어 25프레임, 5fps로 영상을 만들면 25/5=5초 짜리 영상이 만들어집니다.
  • augmentation_level : 최초 이미지에 노이즈를 추가하는 정도를 나타냅니다. 높을수록 초기이미지와 동떨어진 비디오가 생성됩니다.
  • seed : 그림 생성과 마찬가지로 시드값을 고정할 수 있습니다.
  • control_after_generate : 매 프레임간 시드값을 어떻게 변형할 것인지 선택합니다. 고정 또는 증가, 임의값 등을 선택할 수 있습니다. 일관성을 가지기 위해서는 고정(fixed) 값을 사용하는 것이 좋습니다.

그럼 이제 아래 이미지를 실제로 3초 길이의 영상으로 한 번 만들어 보겠습니다.

Stabel Video Diffusion Test Image

해당 이미지 또한 스테이블 디퓨전으로 생성된 이미지를 768×432로 크롭한 결과입니다. 이를 아래와 같은 세팅으로 SVD 영상으로 만들었습니다.

SVD workflows

해상도는 원본 해상도에 맞춰 768×432로 두고, 비디오 총 프레임을 24, 초당 프레임을 8fps로 설정하여, 총 3초 길이의 영상을 생성합니다. motion_bucket_id는 45를 주어 적당히 움직임이 나타나도록 했습니다.

Stable Video Diffusion Result

그 결과 마치 실제 사람의 영상을 찍은 것처럼 머리결이 흩날리는 영상이 생성되었습니다. 여기서 만약motion_bucket_id 값을 45가 아닌 조금 더 높은 값으로 설정했다면 인물의 눈깜빡임 등 더욱 역동적인 움직임을 나타낼 수도 있습니다.

고해상도 Stable Video Diffusion 워크플로우

ComfyUI는 유저들이 본인의 워크플로우를 자유롭게 공유할 수 있다는 점이 굉장한 매력입니다. Stable video diffusion 또한 소스코드가 공개된 이후 많은 유저들이 조금 더 고품질의 영상을 만들기 위한 워크플로우를 고민합니다. 그 중 하나가 바로 업스케일 및 프레임 보강을 하는 방식인데요, 아래에서 워크플로우(.json 파일을 다운 받은 후 ComfyUI에서 Load, 또는 드래그 앤 드롭)를 다운받을 수 있습니다.

SVD Hires FILM Workflows

위 그림에서 볼 수 있듯 SVD로 생성된 영상이 Hires_FILM 그룹 노드로 다시 불러들여온 뒤, Upsclae등의 작업을 거쳐 영상을 한층 더 자연스럽고 부드럽게 만들어주게 됩니다. 주의할 점은, 처음 workflow를 불러오신 뒤에는 아직 설치되지 않은 노드들이 있을 수 있다는 점인데요, 이 때는 ComfyUI Manager에서 Install Missing Custom Nodes를 눌러 필요한 노드들을 자동으로 설치되도록 조치해주시면 됩니다.

ComfyUI Manager Install Missing Nodes

세팅을 마친 뒤 위에서 사용한 이미지를 동일하게 사용하여 3초 영상을 만든 결과는 다음과 같습니다.

업스케일을 진행하고 프레임이 보강되어 움직임이 조금더 부드러워진 것을 확인할 수 있습니다.

이렇게 Stable Video Diffusion에 대해 간략히 살펴보았는데요, 아직은 결과 영상에 조금 부자연스러운 느낌이 존재하긴 하지만 이미지 1장으로부터 영상을 만들어낼 수 있다는 것만으로도 굉장히 흥미롭습니다. 앞으로 해당 기술이 더욱 발전했을 때 영상 업계에 미칠 잠재적 영향력이 기대됩니다.