이 글은 생성AI Text To Video 모델 개발하는 방법을 정리한다.
머리말
얼마전 공개된 OpenAI의 SORA는 생성AI 기술이 혁신적으로 발전되고 있음을 보여준다. 현재, 이와 관련된 다양한 오픈소스 프로젝트가 진행중에 있어, 이를 간략히 살펴보도록 한다.
Text to Video(Lumiere, 2024)
이 기술은 간단히 말하면, 기존 이미지-텍스트 생성AI 기술인 스테이블 디퓨전에서 시간축을 학습 시 함께 고려한 것이다. 이와 관련된 좀 더 상세한 설명은 다음 링크를 참고한다.
오픈AI 소라 동작 메커니즘 설명
- 머신러닝 딥러닝 신경망 개념, 종류 및 개발
- 어텐션 기반 트랜스포머 딥러닝 모델 이해, 활용 사례 및 파치토치를 통한 간단한 사용방법 소개
- 트랜스포머 디코더 핵심 코드 구현을 통한 동작 메커니즘 이해하기
- 오픈소스 기반 LLM의 민주화, LLAMA-2 논문 분석 및 기술 요약
- 생성AI 멀티모달 모델 개발의 시작. OpenAI의 CLIP모델 이해, 코드 분석, 개발, 사용하기
- Computer vision deep learning: computer vision based on deep learning lecture materials, github
- 딥러닝 기반 3차원 스캔 데이터, 포인트 클라우드 학습
- 파이토치로 멀티모달 생성AI 모델, Stable Diffusion 아키텍처를 코딩, 구현해보기
Generative Models by Stability AI
2023년 11월에 릴리즈한 이 오픈소스 프로젝트는 Stability AI에서 개발한 것이다.
이 기술은 공개한 SDXL기술에 기반하여, ADD(Adversarial Diffusion Distillation)을 적용하여, 높은 해상도의 영상을 생성한다(논문 참고). ADD기술을 통해, 디퓨전 시 문제되는 흐릿한 영상 생성 이슈를 해결하고, 엉뚱하게 생성되는 손가락 문제 등을 해결한다.
칭화대학 연구소에서 개발한 CogVideo는 막대한 학습 비용 문제를 해결하기 위해, 사전학습된 모델을 상혹하여 9B 파라메터 모델 수준에서 학습이 가능한 CogVideo모델을 제안한다.
이 기술은 동영상의 각 프레임을 이미지 토큰화하고, 고정 길이 훈련 시퀀스로 만든다. 프레임 사이는 보간되도록 모델을 처리한다. 고품질 텍스트-비디오 학습 데이터를 수집하는 것은 매우 많은 비용이 소모되므로, 사전 훈련된 이미지 생성 모델을 사용한다. 트랜스포머 어텐션은 듀얼 채널로 확장되었다.
- CogVideo, https://github.com/THUDM/CogVideo
이외에 다음과 같은 생성 AI 모델이 공개되어 있다.
- Text2Video-Zero: 스테이블 디퓨전 모델을 이용해, 저비용으로 모델 학습 방법을 적용함. 깃허브 코드 공개
텍스트-to-비디오 생성AI 프로그램 개발해 보기
이와 관련된 서비스 개발 시 쉽게 사용할 수 있는 모델 위주로 라이브러리를 간단히 사용해본다. 이 글에서는 허깅페이스에서 개발한 트랜스포머의 디퓨전 라이브러리를 사용한다.
터미널에서 다음을 실행한다.
pip install transformers diffusion accelerate
새로운 파이썬 파일 text-video.py를 만들고, 다음 코드를 입력한다.
from transformers import AutoTokenizer, AutoModelForCLIP
from diffusers.pipelines import TextToVideoZeroSDXLPipeline
from torchvision import video
from transformers import AutoTokenizer, AutoModelForCLIP
from diffusers.pipelines import TextToVideoZeroSDXLPipeline
from torchvision import video
text_prompt = "A group of friends enjoy a picnic in a park on a sunny day."
text_encoder = AutoModelForCLIP.from_pretrained("laion/CLIP-ViT-bigG-14-laion2B-39B-b160k")
pipeline = TextToVideoZeroSDXLPipeline(text_encoder=text_encoder)
video_path = pipeline.generate_video(text=text_prompt, resolution="1920x1080")
video = video.VideoReader(video_path)
video.write_videofile("generated_video.mp4")
실행하면, 다음과 같이 입력된 텍스트에 맞는 영상이 생성되는 것을 확인할 수 있다.
레퍼런스
- ChenHsing/Awesome-Video-Diffusion-Models: [Arxiv] A Survey on Video Diffusion Models
- Text to Video. Generating Videos From Text with Text2Video-Zero
- Omer Bar-Tal et al, 2024.2, Lumiere: A Space-Time Diffusion Model for Video Generation
- hpcaitech/Open-Sora: Open-Sora: Democratizing Efficient Video Production for All (github.com)
- Stability-AI/generative-models: Generative Models by Stability AI
- CogVideo: Large-scale Pretraining for Text-to-Video Generation via Transformers
- THUDM/CogVideo: Text-to-video generation. The repo for ICLR2023 paper "CogVideo: Large-scale Pretraining for Text-to-Video Generation via Transformers"
- VideoPoet – Google Research
- Animate Anyone
- ChatGPT is not all you need. A State of the Art Review of large Generative AI models
- LCM-LoRA: A Universal Stable-Diffusion Acceleration Module
- Vchitect/Latte: Latte: Latent Diffusion Transformer for Video Generation
- Deep Dive into Sora’s Diffusion Transformer (DiT) by Hand ✍︎ | by Srijanie Dey, PhD | Apr, 2024 | Towards Data Science
댓글 없음:
댓글 쓰기