Implementierung von Lumiere, SOTA-Text-zu-Video-Generierung von Google Deepmind, in Pytorch
Yannics Papierrezension
Da es sich in diesem Artikel größtenteils nur um einige Schlüsselideen zusätzlich zum Text-zu-Bild-Modell handelt, werde ich noch einen Schritt weiter gehen und das neue Karras U-Net in diesem Repository auf Video erweitern.
$ pip install lumiere-pytorch
import torch
from lumiere_pytorch import MPLumiere
from denoising_diffusion_pytorch import KarrasUnet
karras_unet = KarrasUnet (
image_size = 256 ,
dim = 8 ,
channels = 3 ,
dim_max = 768 ,
)
lumiere = MPLumiere (
karras_unet ,
image_size = 256 ,
unet_time_kwarg = 'time' ,
conv_module_names = [
'downs.1' ,
'ups.1' ,
'downs.2' ,
'ups.2' ,
],
attn_module_names = [
'mids.0'
],
upsample_module_names = [
'ups.2' ,
'ups.1' ,
],
downsample_module_names = [
'downs.1' ,
'downs.2'
]
)
noised_video = torch . randn ( 2 , 3 , 8 , 256 , 256 )
time = torch . ones ( 2 ,)
denoised_video = lumiere ( noised_video , time = time )
assert noised_video . shape == denoised_video . shape
Fügen Sie alle zeitlichen Ebenen hinzu
Legen Sie nur zeitliche Parameter zum Lernen offen, frieren Sie alles andere ein
Finden Sie heraus, wie Sie mit der Zeitkonditionierung nach dem zeitlichen Downsampling am besten umgehen können. Anstelle der Pytree-Transformation zu Beginn müssen Sie wahrscheinlich alle Module einbinden und die Stapelgrößen überprüfen
Behandeln Sie mittlere Module, die möglicherweise die Ausgabeform (batch, seq, dim)
haben.
Im Anschluss an die Schlussfolgerungen von Tero Karras eine Variante der 4 Module mit Größenerhaltung improvisieren
Testen Sie es auf imagen-pytorch
Schauen Sie sich Multidiffusion an und prüfen Sie, ob daraus ein einfacher Wrapper werden kann
@inproceedings { BarTal2024LumiereAS ,
title = { Lumiere: A Space-Time Diffusion Model for Video Generation } ,
author = { Omer Bar-Tal and Hila Chefer and Omer Tov and Charles Herrmann and Roni Paiss and Shiran Zada and Ariel Ephrat and Junhwa Hur and Yuanzhen Li and Tomer Michaeli and Oliver Wang and Deqing Sun and Tali Dekel and Inbar Mosseri } ,
year = { 2024 } ,
url = { https://api.semanticscholar.org/CorpusID:267095113 }
}
@article { Karras2023AnalyzingAI ,
title = { Analyzing and Improving the Training Dynamics of Diffusion Models } ,
author = { Tero Karras and Miika Aittala and Jaakko Lehtinen and Janne Hellsten and Timo Aila and Samuli Laine } ,
journal = { ArXiv } ,
year = { 2023 } ,
volume = { abs/2312.02696 } ,
url = { https://api.semanticscholar.org/CorpusID:265659032 }
}