본문 바로가기
IT

우분투 (Ubuntu) 클라우드 서버에서 WebUI로 Stable Diffusion 기반 Text-to-Video 모델 사용 방법

by dino_think 2023. 3. 25.

며칠 전, WebUI에서도 text-to-video (t2v) 모델을 사용해볼 수 있다는 글을 읽어 보았습니다. 하지만 아직 우분투 클라우드 서버의 WebUI를 통해서 text-to-video 모델을 사용하는 방법에 대한 글을 찾아보기 힘들어서, 직접 사용법에 대한 글을 올리게 되었습니다.

 

 

우분투 (Ubuntu) 클라우드 서버에서 WebUI로 Stable Diffusion 기반 Text-to-Image 모델 사용 방법

OpenAI의 DALL-E 시리즈가 2021년부터 나오기 시작한 게 엊그제인 것 같았는데, 지금은 누구나 손쉽게 Text-to-Image 모델을 활용해서 그림을 그리는 세상이 되었네요. 특히, 다양한 stable diffusion 모델을

dino-thinking.tistory.com

 

아직 우분투 클라우드 서버에 stable diffusion webui가 설치되지 않은 분들은 위에 링크된 글을 참조해서 webui 설치를 먼저 진행하신 이후, 본문을 읽어 보시기 바랍니다.

 

 

우분투 클라우드 서버에서 WebUI로 Text-to-Video 모델 사용 방법

 

우분투 클라우드 서버에 WebUI 설치를 완료하셨다면, WebUI를 실행해서 모델 업로드를 진행합니다. 모델 업로드가 완료되면 아래와 같은 메세지가 출력됩니다.

 

Running on local URL:  [실행시킨 서버의 hostname]:[port]

 

이제 웹 브라우저를 통해서 WebUI에 접속합니다. 설치는 각 단계마다 순차적으로 진행 해보겠습니다.

 

 

단계 1: WebUI의 extension으로 text2video 관련 코드 설치

 

처음 접속하시면 아래 [사진 1]과 같은 화면이 보이실텐데요, 여기서 붉은색 박스로 표시한 “Extensions”를 클릭합니다.

 

사진1-Stable-Diffusion-WebUI-접속-화면
[사진 1] Stable Diffusion WebUI 접속 화면

 

아래 [사진 2]와 같은 화면이 보이신다면, 붉은색 박스로 표시한 “Available”을 클릭합니다.

 

사진2-Stable-Diffusion-WebUI의-Extensions-화면
[사진 2] Stable Diffusion WebUI의 Extensions 화면

 

여기서 아래 [사진 3]과 같이, 붉은색 박스로 표시한 “Load from” 버튼을 클릭합니다.

 

사진3-Stable-Diffusion-WebUI의-Available-화면
[사진 3] Stable Diffusion WebUI의 Available 화면

 

다양한 Extension을 확인할 수 있는데요, 우리가 설치해야 할 Extension은 “ModelScope text2video”입니다. WebUI에 도입된지 일주일도 채 안되었네요. 아래 [사진 4]의 붉은색 박스로 표시한 “Install” 버튼을 클릭합니다.

 

사진4-Stable-Diffusion-WebUI의-Load-from-버튼-클릭한-화면
[사진 4] Stable Diffusion WebUI의 Load from 버튼 클릭한 화면

 

우분투 클라우드 서버에 ssh로 접속한 상태라면, 버튼을 클릭했을 때, 아래와 같은 메세지가 출력됩니다.

 

Installing ModelScope-text2video requirement: imageio_ffmpeg

 

그리고 방금 전 [사진 4]에서 “ModelScope text2video” 항목이 없어진 것을 확인할 수 있습니다. 설치가 되었는지 확인하기 위해, 아래 [사진 5]에서 “Apply and restart UI”를 클릭합니다.

 

사진5-Stable-Diffusion-WebUI의-Extensions-화면2
[사진 5] Stable Diffusion WebUI의 Extensions 화면 2

 

이후, 다시 Extensions 탭을 눌러보면, 아래 [사진 6]과 같이, sd-webui-modelscope-text2video가 생성된 것을 확인할 수 있습니다.

 

사진6-Stable-Diffusion-WebUI의-Extensions에-sd-webui-modelscope-text2video-생성된-화면
[사진 6] Stable Diffusion WebUI의 Extensions에 sd-webui-modelscope-text2video 생성된 화면

 

다음 단계에서는 우분투 클라우드 서버에 github으로 설치한 stable-diffusion-webui 디렉토리로 이동해서 진행해보겠습니다.

 

 

 

단계 2: 우분투 클라우드 서버에 text-to-video 모델 다운로드 받기

 

Extensions로 text-to-video 모듈은 설치했지만, 비디오 생성을 위한 모델 파일은 없는 상황입니다. 따라서, 우분투 클라우드 서버 안에 github으로 설치한 stable-diffusion-webui 디렉토리에 모델 파일을 다운로드 받아야 합니다. 우선 [사진 6]에서 붉은색 박스로 표시한 부분의 오른쪽에 https로 시작하는 github URL을 클릭합니다. 이후, 화면을 밑으로 내리다 보면, 아래 [사진 7]과 같은 문구를 발견할 수 있습니다. 여기서 붉은색 박스로 표시된 HuggingFace repository를 클릭합니다.

 

사진7-sd-webui-modelscope-text2video의-github-화면
[사진 7] sd-webui-modelscope-text2video의 github 화면

 

이제 아래 [사진 8]과 같은 화면을 볼 수 있는데요, 붉은색 박스로 표시한 4개의 파일들을 전부 우분투 클라우드 서버에 다운로드 받아야 합니다. 우선 VQGAN_autoencoder.pth 파일을 예시로 들어서, 설명해보겠습니다. [사진 8]에서 “VQGAN_autoencoder.pth”를 클릭합니다.

 

사진8-HuggingFace의-modelscope-damo-text-to-video-synthesis-repository-화면
[사진 8] HuggingFace의 modelscope-damo-text-to-video-synthesis repository 화면

 

아래 [사진 9]와 같은 화면을 보셨다면, 붉은색 박스로 표시한 “download”를 오른쪽 클릭 후, “링크 주소 복사”를 클릭하고 메모장이나 다른 곳에 붙여넣기 해둡니다. 이 URL이 나중에 우분투 클라우드 서버에서 파일을 다운로드 받을 때 사용됩니다.

 

사진9-VQGAN_autoencoder-파일-클릭한-화면
[사진 9] HuggingFace의 modelscope-damo-text-to-video-synthesis repository에서 VQGAN_autoencoder.pth 파일 클릭한 화면

 

이제 우분투 클라우드 서버에 접속해서 stable-diffusion-webui 디렉토리 → models 디렉토리로 이동합니다.

 

cd stable-diffusion-webui/models

 

여기에 아래 명령어를 입력해서 ModelScope/t2v 디렉토리를 생성합니다. mkdir은 우분투에서 디렉토리를 생성할 때 사용하는 명령어입니다. p 옵션은 생성하려는 디렉토리 내부의 하위 디렉토리까지 한 번에 생성한다는 의미입니다.

 

mkdir -p ModelScope/t2v

 

이후, ModelScope 디렉토리 → t2v 디렉토리로 이동합니다.

 

cd ModelScope/t2v

 

여기에 방금 전 [사진8]에서 붉은색 박스로 표시된 4개의 파일을 전부 다운로드 받습니다. VQGAN_autoencoder.pth 파일을 예시로, 아래 명령어를 사용해서 다운로드 받습니다. 이 방법으로 open_clip_pytorch_model.bin 파일, text2video_pytorch_model.pth 파일에 대해서, [사진9]에서 “download”를 오른쪽 클릭 후 URL 복사 → wget으로 다운로드 받으면 됩니다.

 

wget https://huggingface.co/damo-vilab/modelscope-damo-text-to-video-synthesis/resolve/main/VQGAN_autoencoder.pth

 

configuration.json 파일의 경우, 아래 [사진 10]과 같이 “download” 버튼이 보이지 않습니다. 이 때는 “raw” 버튼을 오른쪽 클릭해서 “링크 주소 복사” 후, wget으로 다운로드 받으면 됩니다.

 

사진10-configuration-json-파일-클릭한-화면
[사진 10] HuggingFace의 modelscope-damo-text-to-video-synthesis repository에서 configuration.json 파일 클릭한 화면

 

4개의 파일을 모두 다운로드 받았다면, t2v 디렉토리에서 ls 를 입력했을 때, 아래의 4개의 파일이 보이게 됩니다.

 

ls

VQGAN_autoencoder.pth  configuration.json  open_clip_pytorch_model.bin  text2video_pytorch_model.pth

 

이제 앞서서 실행시켰던 WebUI를 종료 후, 다시 실행해서 비디오를 생성해보겠습니다.

 

 

단계 3: WebUI에서 ModelScope text2video로 비디오 생성

 

WebUI에 접속하면 아래 [사진 11]과 같이, “ModelScope text2video” 탭이 생성된 것을 확인할 수 있습니다. “ModelScope text2video” 탭을 클릭합니다.

 

사진11-WebUI에-ModelScope-text2video-탭-추가-화면
[사진 11] WebUI에 ModelScope text2video 탭이 추가된 화면

 

이제 아래 [사진 12]의 화면에서 첫번째 붉은색 박스에 생성하고 싶은 비디오에 대한 prompt를 입력합니다. 이후, 두번째 붉은색 박스로 표시된 “Generate”를 클릭합니다. 우선 모든 옵션은 디폴트로 설정해두었습니다. 물론 다른 옵션을 선택해서 진행해도 좋습니다.

 

사진12-WebUI의-ModelScope-text2video-탭-클릭-화면
[사진 12] WebUI의 ModelScope text2video 탭 클릭한 화면

 

“Generate”를 클릭 후, 우분투 클라우드 서버에서 출력되는 메세지는 아래와 같습니다.

 

ModelScope text2video extension for auto1111 webui
Git commit: aa53579f (06:37:26 2023)
Starting text2video
Pipeline setup
config namespace(framework='pytorch', task='text-to-video-synthesis', model={'type': 'latent-text-to-video-synthesis', 'model_args': {'ckpt_clip': 'open_clip_pytorch_model.bin', 'ckpt_unet': 'text2video_pytorch_model.pth', 'ckpt_autoencoder': 'VQGAN_autoencoder.pth', 'max_frames': 16, 'tiny_gpu': 1}, 'model_cfg': {'unet_in_dim': 4, 'unet_dim': 320, 'unet_y_dim': 768, 'unet_context_dim': 1024, 'unet_out_dim': 4, 'unet_dim_mult': [1, 2, 4, 4], 'unet_num_heads': 8, 'unet_head_dim': 64, 'unet_res_blocks': 2, 'unet_attn_scales': [1, 0.5, 0.25], 'unet_dropout': 0.1, 'temporal_attention': 'True', 'num_timesteps': 1000, 'mean_type': 'eps', 'var_type': 'fixed_small', 'loss_type': 'mse'}}, pipeline={'type': 'latent-text-to-video-synthesis'})
device cuda
Working in txt2vid mode
latents torch.Size([1, 4, 24, 32, 32]) tensor(-0.0042, device='cuda:0') tensor(1.0032, device='cuda:0')
huh tensor(34) tensor([34], device='cuda:0')
adding noise tensor(34) tensor(0.9838, dtype=torch.float64) tensor(0.1792, dtype=torch.float64)
DDIM sampling tensor(1): 100%|__________________________________________________________________| 1/1 [00:03<00:00,  3.89s/it]
STARTING VAE ON GPU. 24 CHUNKS TO PROCESS
VAE HALVED
DECODING FRAMES
VAE FINISHED
torch.Size([24, 3, 256, 256])
output/mp4s/20230324_081907736303.mp4
text2video finished, saving frames to stable-diffusion-webui/outputs/img2img-images/text2video-modelscope/20230324081754
Got a request to stitch frames to video using FFmpeg.
Frames:
stable-diffusion-webui/outputs/img2img-images/text2video-modelscope/20230324081754/%06d.png
To Video:
stable-diffusion-webui/outputs/img2img-images/text2video-modelscope/20230324081754/vid.mp4
Stitching *video*...
Stitching *video*...
Video stitching done in 0.31 seconds!
t2v complete, result saved at stable-diffusion-webui/outputs/img2img-images/text2video-modelscope/20230324081754

 

생성된 비디오를 WebUI에서 보려면, 위 [사진 12]의 “Generate” 버튼 밑의 “Click here after the generation to show the video” 버튼을 클릭하면 됩니다.

 

 


우분투 클라우드 서버에서 WebUI로 Text-to-Video 모델 사용 방법 요약

 

지금까지 설명한 우분투 클라우드 서버에서 WebUI로 Text-to-Video 모델 사용 방법은 아래의 세 단계로 요약할 수 있습니다.

 

  1. 단계 1: WebUI의 extension으로 text2video 관련 코드 설치
  2. 단계 2: 우분투 클라우드 서버에 text-to-video 모델 다운로드 받기
  3. 단계 3: WebUI에서 ModelScope text2video로 비디오 생성

 

아직 WebUI에 Text-to-video가 적용된 기간이 짧기 때문에, 설치 과정에서 변동 사항이 있다면 업데이트 해두겠습니다.

 

 

댓글