AI 이미지/워크플로 따라하기

스테이블 디퓨전 - 벤자민 버튼의 시간은 거꾸로 간다.

하늘이푸른오늘 2024. 1. 1. 00:33

브레드 피트가 열연을 펼친 "벤자민 버튼의 시간은 거꾸로 간다"라는 영화를 보며,  자기에 맞는 얼굴을 갖는 게 얼마나 중요한지에 대해 생각했던 기억이 있습니다.

오늘 소개시켜드릴 워크플로도 사람이 점점 거꾸로 나이가 들어가는 동영상을 만드는 방법입니다. 이 기법은 ComfyUI + AnimateDiff 를 사용합니다. 아래는 생성 예입니다.

이 글의 목차는 아래와 같습니다.

소프트웨어 설정

스테이블 디퓨전을 사용할 수 있는 GUI는 여러가지 종류가 있지만, 이 글에서는 ComfyUI를 사용합니다. ComfyUI가 처음이신 분은 설치 및 기본 사용 방법초보자 가이드를 읽어보시기 바랍니다.

따라 하기

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

아래 그림을 다운로드 받은 후, ComfyUI 캔버스에 Drag & Drop하면 워크플로를 불러올 수 있습니다.

이 워크플로를 실행시키기 위해서는 다음과 같은 작업이 필요할 수 있습니다.

2 단계 : 모델 선택하기

BeautifulRealisticAsian (동양인 용) 또는 DreamShaper 8 체크포인트 파일을 다운로드 받아, ComfyUI\models\checkpoints 폴더에 넣습니다(AUTOMATIC1111과 모델 파일을 공유할 경우에는 여기를 참고하세요). 

다운로드가 완료된 후, ComfyUI 화면을 새로고침(F5)해주면 적용됩니다.

[Load Checkpoint] 노드에서 ckpt_name을 클릭하고 beautifuRealistic_v40.safetensors 를 선택해 줍니다.

다음으로 vae-ft-ema-560000-ema-pruned 라는 VAE 파일을 다운로드 받아 ComfyUI\models\vae 폴더에 넣습니다 (AUTOMATIC1111과 모델 파일을 공유할 경우에는 여기를 참고하세요) .

다운로드가 완료된 후, ComfyUI 화면을 새로고침(F5)해주면 적용됩니다.

[Load VAE] 노드에서 vae_name을 클릭하고 vae-ft-ema-560000-ema-pruned.ckpt 를 선택해 줍니다.

3 단계 : AnimateDiff 모델 선택하기

Stable Diffusion으로 비디오를 생성할 때 가장 중요한 모델인 AnimateDiff 1.5 v2를 다운로드 받아 ComfyUI\custom_nodes\ComfyUI-AnimateDiff-Evolved\models 폴더에 넣습니다. 

다운로드가 완료된 후, ComfyUI 화면을 새로고침(F5)해주면 적용됩니다. 

[AnimateDiff Loader] 노드에서 model_name을 클릭하고 mm_sd_v15_v2.ckpt 를 선택합니다.

4 단계 : 부정적 Embedding 선택하기

이 워크플로는 BadDream 이라는 부정적 Embedding 을 사용합니다. 이 임베딩은 아래와 같이 부정적 프롬프트에서 사용됩니다.

다운로드 받은 후 ComfyUI\models\embeddings 폴더에 넣어줍니다 (AUTOMATIC1111과 모델 파일을 공유할 경우에는 여기를 참고하세요) .

5 단계 : 비디오 생성

[Queue Prompt] 버튼을 누르면 비디오가 생성되기 시작합니다. 먼저 위쪽에 있는 KSampler 노드에서 각각의 비디오 프레임을 생성하고(3060에서 10분 정도 소요됩니다), 그 다음 이를 결합해서 비디오를 생성합니다.

그런데, 현재의 워크플로는 Hires.Fix를 사용하지 않아서 얼굴이 깨집니다. 그러므로 전체적인 구도만 확인한 후, 마음에 들면 아래와 같이 워크플로를 약간 수정시킨 후 새로 돌려주면 품질이 조금 나아진 비디오가 생성됩니다.

Hires. Fix 사용하지 않을 때 Hires. Fix 사용시

이렇게 하는 이유는 Hires. Fix 를 추가할 경우, 비디오 생성시간이 3배 정도로 늘어나기 때문입니다. 하지만, 새로 Hires. Fix를 추가해서 수행해도 앞쪽 프로세스인 비디오 프레임을 다시 생성하는 건 아니기 때문에 이렇게 사용하는 것이 시간을 훨씬 절약할 수 있습니다.

아래는 이렇게 생성한 비디오입니다.

참고사항 및 변경 방법

이 워크플로는 총 240개의 비디오 프레임을 제작한 후, 이를 비디오로 전환합니다. 이 과정에서 가장 중요한 것이 아래에 보시는 [Batch Prompt Schedule] 노드 입니다. 보시는 것처럼 10개의 프레임마다 새로운 프롬프트를 지정하여 형태를 바꾸도록 설정 되어 있습니다.

여기에서 아래쪽에 있는 "a happy male, best quality, (looking at viewer:1.2), one person, full body, casual clothing"은 공통 프롬프트라고 생각하시면 됩니다. 이 내용을 수정하면 등장 인물의 전반적인 모습을 바꿀 수 있습니다. 

프롬프트는 그대로 두고 [KSampler] 노드의 씨드번호를 바꿔도 인물의 모습이 변경됩니다. 마음에 들때까지 변경시키면서 테스트해보고 최종적으로 Hires. Fix 를 시켜주는 게 좋겠네요. 

인생을 25초로

아래는 위와 비슷하지만 태어나서 자라고 죽을 때까지의 모습을 순차적으로 보여주는 비디오를 제작하는 워크플로입니다.

사용하는 모델도, 워크플로도 동일합니다. 다만, [Batch Prompt Schedule] 노드에 포함된 프롬프트만 차이가 있습니다.

"0" : "a new born baby girl lying on a crib crying, top view",
"10" : "a new born baby girl lying on a crib crying, top view",
"20" : "a 5 years old toddler",
"30" : "a 5 years old toddler",
"40" : "10 year old girl running",
"50" : "10 year old girl running",
"60" : "20 year old woman graduates from college, on campus",
"70" : "20 year old woman graduates from college, on campus",
"80" : "25 year old woman working in office, professional suit",
"90" : "25 year old woman working in office professional suit",
"100" : "35 year old woman holding a baby, casual clothing",
"110" : "35 year old woman holding a baby, casual clothing",
"120" : "50 year old woman, looking at viewer, casual clothing",
"130" : "50 year old woman, looking at viewer, casual clothing",
"140" : "80 year old woman, looking at viewer, casual clothing",
"150" : "80 year old woman, looking at viewer, casual clothing",
"160" : "90 year old woman, top view, lying on death bed, hospital clothing, eyes closed",
"170" : "90 year old woman, top view, lying on death bed, hospital clothing, eyes closed"

총 180 프레임인데, [Video Combine] 노드에서 프레임속도를 8fps로 정하므로 총 22.5초가 됩니다. 아래는 이렇게 생성한 비디오입니다.

이상입니다.

====

이 글은 https://stable-diffusion-art.com/a-curious-case/을 번역하면서 제 나름대로 수정하여 작성한 글입니다.