# Latte ## 论文 **Latte: Latent Diffusion Transformer for Video Generation** * https://arxiv.org/abs/2401.03048v1 ## 模型结构 该模型主要使用Transformer结构作为去噪模型。大概流程是这样的,输视频的Embedding,获取相应的Token,然后使用`Transformer Blocks`获取相应的时空信息,接着使用`Layer Norm`和`Linear and Reshape`得到`Noise`和`Variance`。下图的四种变体为不同的时空信息提取方式。 ![alt text](readme_imgs/image-1.png) ## 算法原理 该算法的主要思想是将较为常见的`Unet`结构替换为`Transformer`结构作为去噪模型。相较于使用`Unet`,使用`Transformer`可以提升模型的速度,同时`Transformer`可以较好的对时空信息进行建模。 ![alt text](readme_imgs/image-2.png) ## 环境配置 ### Docker(方法一) docker pull image.sourcefind.cn:5000/dcu/admin/base/pytorch:2.1.0-ubuntu20.04-dtk24.04.1-py3.10 docker run --shm-size 10g --network=host --name=latte --privileged --device=/dev/kfd --device=/dev/dri --group-add video --cap-add=SYS_PTRACE --security-opt seccomp=unconfined -v /opt/hyhal:/opt/hyhal -v 项目地址(绝对路径):/home/ -it bash pip install -r requirements.txt pip install timm --no-deps pip uninstall apex ### Dockerfile(方法二) # 需要在对应的目录下 docker build -t : . docker run --shm-size 10g --network=host --name=latte --privileged --device=/dev/kfd --device=/dev/dri --group-add video --cap-add=SYS_PTRACE --security-opt seccomp=unconfined -v /opt/hyhal:/opt/hyhal -v 项目地址(绝对路径):/home/ -it bash pip install -r requirements.txt pip install timm --no-deps pip uninstall apex ### Anaconda (方法三) 1、关于本项目DCU显卡所需的特殊深度学习库可从光合开发者社区下载安装: https://developer.sourcefind.cn/tool/ DTK驱动: dtk24.04.1 python: python3.10 Tips:以上dtk驱动、python、torch等DCU相关工具版本需要严格一一对应 2、其它非特殊库参照requirements.txt安装 pip install -r requirements.txt pip install timm --no-deps ## 数据集 |名称|URL| |:---|:---| |UCF101|[原链接](https://www.crcv.ucf.edu/research/data-sets/ucf101/)/[SCNet]| |FaceForensics|[原链接](https://github.com/ondyari/FaceForensics/tree/original)/[SCNet]| |Tachi|[原链接](https://github.com/AliaksandrSiarohin/first-order-model/blob/master/data/taichi-loading/README.md)/[SCNet]| |SkyTimelapse|[原链接](https://drive.google.com/file/d/1xWLiU-MBGN7MrsFHQm4_yXmfHBsMbJQo/view)/[SCNet]| 数据结构,这里为示例数据(仅展示UCF-101),完整数据请按如下结构准备。 train_datasets/ └── UCF-101_tiny ├── ApplyEyeMakeup │   └── v_ApplyEyeMakeup_g01_c01.avi ├── ApplyLipstick │   └── v_ApplyLipstick_g01_c01.avi ├── Archery │   └── v_Archery_g01_c01.avi ├── BabyCrawling │   └── v_BabyCrawling_g01_c01.avi ├── BalanceBeam │   └── v_BalanceBeam_g01_c01.avi ├── BandMarching │   └── v_BandMarching_g01_c01.avi ## 训练 # 训练UCF-101 torchrun --nnodes=1 --nproc_per_node=N train.py --config ./configs/ucf101/ucf101_train.yaml 注意:训练前需要准备相应的预训练模型,具体参考`推理-模型下载`。 ## 推理 ### 模型下载 latte: [huggingface](https://hf-mirror.com/maxin-cn/Latte/tree/main) | [SCNet] pixart: [huggingface](https://hf-mirror.com/PixArt-alpha/PixArt-XL-2-512x512/tree/main/transformer) | [SCNet] share_ckpts/ ├── ffs.pt ├── skytimelapse.pt ├── t2v.pt └── ... pretrained_models/ ├── sd-vae-ft-ema │ ├── config.json │ └── diffusion_pytorch_model.bin ├── sd-vae-ft-mse │ ├── config.json │ └── diffusion_pytorch_model.bin ├── .... ├── t2v_required_models │ ├── model_index.json │ ├── scheduler │ │ └── scheduler_config.json │ ├── text_encoder │ │ ├── config.json │ │ ├── model-00001-of-00004.safetensors │ │ ├── model-00002-of-00004.safetensors │ │ ├── model-00003-of-00004.safetensors │ │ ├── model-00004-of-00004.safetensors │ │ └── model.safetensors.index.json │ ├── tokenizer │ │ ├── added_tokens.json │ │ ├── special_tokens_map.json │ │ ├── spiece.model │ │ └── tokenizer_config.json │ ├── transformer │ │ ├── config.json │ │ └── diffusion_pytorch_model.safetensors │ └── vae │ ├── config.json │ └── diffusion_pytorch_model.safetensors └── vae ├── config.json └── diffusion_pytorch_model.bin ### 命令 # FaceForensics(面部视频) # 获取一个视频 bash sample/ffs.sh # 获取多个视频 bash sample/ffs_ddp.sh # sky(天空视频) bash sample/sky.sh bash sample/sky_ddp.sh # taichi(打太极视频) bash sample/taichi.sh bash sample/taichi_ddp.sh #ucf101(动作视频) bash sample/ucf101.sh bash sample/ucf101_ddp.sh # 文本->视频 bash sample/t2v.sh ## result ![alt text](readme_imgs/test.gif) ### 精度 无 ## 应用场景 ### 算法类别 `视频生成` ### 热点应用行业 `媒体,科研,教育` ## 源码仓库及问题反馈 * https://developer.sourcefind.cn/codes/modelzoo/latte_pytorch ## 参考资料 * https://github.com/Vchitect/Latte