AI 이미지/SD Video

Stable Video Diffusion(SVD) Movie

하늘이푸른오늘 2023. 12. 18. 23:11

이 글에서는 비디오 스테이블 디퓨전(SVD, Stable Video Diffusion)으로 생성한 3개의 비디오를 합쳐, 하나의 비디오로 만드는 워크플로를 소개합니다. 

이 글의 내용은 아래와 같습니다.

소프트웨어

이 글에 있는 내용을 따라 해보기 위해서는 ComfyUI 를 설치해야 합니다. ComfyUI 초보자 가이드도 도움이 되실 겁니다.

따라해 보기

1단계: 아래의 워크플로 이미지를 다운로드 받은 후, ComfyUI 캔버스에 Drag&Drop하면 워크플로를 불러들일 수 있습니다.

필요시에는 ComfyUI를 최신 버전으로 갱신하거나, 빠진 커스톰 노드를 설치하거나, 혹은 모든 커스톰 노드를 갱신해야 할 수 있습니다.

2단계: txt2img 모델 설정

먼저 SDXL 체크포인트 모델을 설정합니다. 이 글에서는 Juggernaut XL 모델을 사용합니다. 다운로드 받은 후, ComfyUI\models\checkpoints 폴더에 넣어줍니다. (AUTOMATIC1111과 모델을 공유할 경우 여기를 읽어보세요)

화면을 Refresh[F5] 후, [Load Checkpoint] 노드 드롭다운 메뉴에서 해당 모델을 선택합니다.

다음으로 SVD 모델을 설정합니다. SDV XT 모델을 다운로드 받고, 역시 ComfyUI\models\checkpoints 폴더에 넣어줍니다. (AUTOMATIC1111과 모델을 공유할 경우 여기를 읽어보세요)

화면을 Refresh[F5] 후, [Image Only Checkpoint Loader(img2vid model)] 노드 드롭다운 메뉴에서 해당 모델을 선택합니다.

3단계: 이미지를 생성합니다.

[Queue Prompt] 버튼을 누르면 비디오가 생성됩니다. RTX 3070으로 7분 40초 정도 걸렸네요. 아래가 최종 생성된 MP4 Video입니다.

설정 변경

프롬프트 변경

만들고 싶은 비디오가 있다면, 그에 맞춰 프롬프트를 변경해야 할 것입니다. 시간을 절약하기 위해서는, 먼저 각각의 이미지가 마음에 들때까지 프롬프트를 조정할 필요가 있습니다.

비디오 생성을 막으려면, [Image Only Checkpoint Loader(img2vid model)] 노드를 선택하고 Ctrl+M(Mute) 버튼을 눌러 모델을 불러오지 못하도록 막아버리면 됩니다(이렇게 하면 노드가 반투명하게 변경됩니다.

동일한 프롬프트에서 다른 이미지를 생성하고 싶다면 [KSampler]노드의 씨드 번호를 바꿔주면 됩니다. 계속 실행시키면서 모든 이미지가 마음에 들면  [SVD_img2vid_Conditioning] 노드를 선택하고 Cntl+M을 눌러 활성화시킨 뒤 [Queue Prompt]를 눌러주시면 됩니다. 

아래는 동일한 프롬프트로 이미지만 변경하여 생성한 비디오입니다.

비디오 변경

입력한 이미지가 좋더라도 생성된 비디오가 마음에 들지 않을 수 있습니다. 이때에도 씨드 번호를 바꿔주면 다른 비디오가 생성됩니다. 

원한다면 비디오의 길이를 늘리거나 줄일 수도 있습니다. [SVD_img2vid_Conditioning] 노드의 video_frames 입력 위젯의 값을 수정하면 됩니다. 단, 너무 길이를 늘리면 품질이 떨어질 가능성이 높습니다.

또한 현재는 3개의 비디오클립을 생성하여 합치는 방식인데, text-to-image와 image-to-video 블록을 복제해서 늘리면 비디오 클립을 늘릴 수도 있습니다.

실습

직접 비디오를 만들어보기 위해 잠자는 숲속의 공주 이야기를 사용해 생성해 보았습니다. 4가지 장면이 포함된 비디오를 만들기 위해  text-to-image와 image-to-video 블록을 복제해서 늘렸고, ChatGPT를 사용해 프롬프트를 생성했습니다.

첫번째 씬은 "어두운 숲 가운데로 볕이 들고 아름다운 동물들과 꽃들이 많이 있는 그림"
프롬프트: image portraying a sunlit clearing in the heart of a dark forest, with an abundance of beautiful animals and flowers. Emphasize the contrast between the sunlight filtering through the dense canopy and the shadows of the surrounding trees, showcasing the vibrant colors of the flora and the diverse array of charming wildlife.

두번째 씬은 "동물과 꽃들 사이로 아름다운 공주가 잠들어 있는 모습을 그린 그림"입니다.
프롬프트: image illustrating a serene scene where a beautiful princess is peacefully sleeping amidst a variety of enchanting animals and flowers. Capture the ethereal atmosphere, emphasizing the harmonious interaction between the slumbering princess, the delicate blooms, and the gentle creatures surrounding her.

세번째 씬은 "왕자가 누워 있는 공주의 뺨에 키스를 하는 모습"입니다.
프롬프트: image illustrating a scene where a prince, lying down, gently kisses the cheek of the sleeping princess. Emphasize the tender and romantic atmosphere, capturing the quiet intimacy of the moment as the prince expresses his affection through the gentle touch of his lips on the princess's cheek. Highlight the serenity and magic surrounding the enchanting scene.

네번째 씬은 "왕자와 공주가 동물들과 함께 춤추는 모습"입니다.
프롬프트: image portraying a scene where a prince and princess joyfully dance amidst a group of animals. Capture the whimsical atmosphere, showcasing the harmonious interaction between the royal couple and the friendly animals. Emphasize the enchanting and celebratory nature of the moment, with the characters gracefully moving in a magical dance surrounded by nature's beauty

아래는 이와 같은 과정을 거쳐 생성한 비디오입니다.

그리고 아래는 이 비디오를 생성하기 위한 워크플로입니다. 이 워크플로를 불러들인후 [Queue Prompt]를 누르면 위와 동일한 비디오가 생성됩니다.

민, 푸른하늘

====