<p align="center">
<img src="https://yellow-cdn.veclightyear.com/0a4dffa0/a3b9a03b-7e1f-41fa-87d7-a02e4cae78d7.png" height=170>
</p>
<p align="center"> [CVPR 2024] | LAMP: 学习运动模式的少样本视频生成 </p>

本仓库是LAMP的官方实现
LAMP: 学习运动模式的少样本视频生成<br>
吴瑞琦, 陈良宇, 杨桐, 郭春乐, 李崇义, 张祥雨
<br>( * 表示通讯作者)
[Arxiv 论文]
[项目网页]
[Google Drive]
[百度网盘 (密码: ffsp)]
[Colab 笔记本]
:rocket: LAMP 是一种基于少样本的文本到视频生成方法。您只需要**8~16个视频和1个GPU(显存 > 15 GB)**进行训练!然后您就可以用学习到的运动模式生成视频。
新闻
- [2024/02/27] 我们的论文被CVPR2024接收!
- [2023/11/15] 发布了将LAMP应用于视频编辑的代码!
- [2023/11/02] Colab演示已发布!感谢@ShashwatNigam99的PR。
- [2023/10/21] 我们添加了Google Drive链接,提供我们的检查点和训练数据。
- [2023/10/17] 我们发布了我们的检查点和Arxiv论文。
- [2023/10/16] 我们的代码已公开可用。
准备工作
依赖项和安装
- Ubuntu > 18.04
- CUDA=11.3
- 其他:
# 克隆仓库
git clone https://github.com/RQ-Wu/LAMP.git
cd LAMP
# 创建虚拟环境
conda create -n LAMP python=3.8
conda activate LAMP
# 安装包
pip install torch==1.12.1+cu113 torchvision==0.13.1+cu113 torchaudio==0.12.1 --extra-index-url https://download.pytorch.org/whl/cu113
pip install -r requirements.txt
pip install xformers==0.0.13
权重和数据
-
您可以在Hugging Face上下载预训练的T2I扩散模型。
在我们的工作中,我们使用Stable Diffusion v1.4作为我们的骨干网络。使用git-lfs
克隆预训练权重并将它们放在./checkpoints
中
-
我们的检查点和训练数据列表如下。您也可以自行收集视频数据(推荐网站:pexels, frozen-in-time),并将.mp4文件放在./training_videos/[motion_name]/
中
-
[更新] 您可以在 assets/run.mp4
中找到视频编辑演示的培训视频
<table class="center">
<tr>
<td align="center"> 动作名称 </td>
<td align="center"> 检查点链接 </td>
<td align="center"> 训练数据 </td>
</tr>
<tr>
<td align="center">鸟飞</td>
<td align="center"><a href="https://pan.baidu.com/s/1nuZVRj-xRqkHySQQ3jCFkw">百度网盘 (密码: jj0o)</a></td>
<td align="center"><a href="https://pan.baidu.com/s/10fi8KoBrGJMpLQKhUIaFSQ">百度网盘 (密码: w96b)</a></td>
</tr>
<tr>
<td align="center">烟花</td>
<td align="center"><a href="https://pan.baidu.com/s/1zJnn5bZpGzChRHJdO9x6WA">百度网盘 (密码: wj1p)</a></td>
<td align="center"><a href="https://pan.baidu.com/s/1uIyw0Q70svWNM5z7DFYkiQ">百度网盘 (密码: oamp)</a></td>
</tr>
<tr>
<td align="center">直升机</td>
<td align="center"><a href="https://pan.baidu.com/s/1oj6t_VFo9cX0vTZWDq8q3w">百度网盘 (密码: egpe)</a></td>
<td align="center"><a href="https://pan.baidu.com/s/1MYMjIFyFTiLGEX1w0ees2Q">百度网盘 (密码: t4ba)</a></td>
</tr>
<tr>
<td align="center">马奔跑</td>
<td align="center"><a href="https://pan.baidu.com/s/1lkAFZuEnot4JGruLe6pR3g">百度网盘 (密码: 19ld)</a></td>
<td align="center"><a href="https://pan.baidu.com/s/1z7FHN-aotdOF2MPUk4lDJg">百度网盘 (密码: mte7)</a></td>
</tr>
<tr>
<td align="center">弹吉他</td>
<td align="center"><a href="https://pan.baidu.com/s/1uY47E08_cUofmlmKWfi46A">百度网盘 (密码: l4dw)</a></td>
<td align="center"><a href="https://pan.baidu.com/s/1cemrtzJtS_Lm8y8nZM9kSw">百度网盘 (密码: js26)</a></td>
</tr>
<tr>
<td align="center">下雨</td>
<td align="center"><a href="https://pan.baidu.com/s/1Cvsyg7Ld2O0DEK_U__2aXg">百度网盘 (密码: jomu)</a></td>
<td align="center"><a href="https://pan.baidu.com/s/1hMGrHCLNRDLJQ-4XKk6hZg">百度网盘 (密码: 31ug)</a></td>
</tr>
<tr>
<td align="center">转向微笑</td>
<td align="center"><a href="https://pan.baidu.com/s/1UYjWncrxYiAhwpNAafH5WA">百度网盘 (密码: 2bkl)</a></td>
<td align="center"><a href="https://pan.baidu.com/s/1ErFSm6t-CtYBzsuzxi08dg">百度网盘 (密码: l984)</a></td>
</tr>
<tr>
<td align="center">瀑布</td>
<td align="center"><a href="https://pan.baidu.com/s/1tWArxOw6CMceaW_49rIoSA">百度网盘 (密码: vpkk)</a></td>
<td align="center"><a href="https://pan.baidu.com/s/1hjlqRwa35nZ2pc2D-gIX9A">百度网盘 (密码: 2edp)</a></td>
</tr>
<tr>
<td align="center">全部</td>
<td align="center"><a href="https://pan.baidu.com/s/1vRG7kMCTC7b9YUd4qsSP_A">百度网盘 (密码: ifsm)</a></td>
<td align="center"><a href="https://pan.baidu.com/s/1h5HrIGWP5OlMqp9gkD9cyQ">百度网盘 (密码: 2i2k)</a></td>
</tr>
</table>
开始使用
1. 训练
# 学习动作模式的训练代码
CUDA_VISIBLE_DEVICES=X accelerate launch train_lamp.py config="configs/horse-run.yaml"
# 视频编辑的训练代码(训练视频可在 assets/run.mp4 中找到)
CUDA_VISIBLE_DEVICES=X accelerate launch train_lamp.py config="configs/run.yaml"
2. 推理
以下是推理的示例命令
# 动作模式
python inference_script.py --weight ./my_weight/turn_to_smile/unet --pretrain_weight ./checkpoints/stable-diffusion-v1-4 --first_frame_path ./benchmark/turn_to_smile/head_photo_of_a_cute_girl,_comic_style.png --prompt "head photo of a cute girl, comic style, turns to smile"
# 视频编辑
python inference_script.py --weight ./outputs/run/unet --pretrain_weight ./checkpoints/stable-diffusion-v1-4 --first_frame_path ./bemchmark/editing/a_girl_runs_beside_a_river,_Van_Gogh_style.png --length 24 --editing
#########################################################################################################
# --weight: 我们模型的路径
# --pretrain_weight: 预训练模型的路径(例如 SDv1.4)
# --first_frame_path: 由 T2I 模型生成的第一帧的路径(例如 SD-XL)
# --prompt: 输入提示,默认值与第一帧的文件名对齐
# --output: 输出路径,默认: ./results
# --height: 视频高度,默认: 320
# --width: 视频宽度,默认: 512
# --length 视频长度,默认: 16
# --cfg: 无分类器引导,默认: 12.5
#########################################################################################################
视觉示例
少样本文本到视频生成
<table class="center">
<tr>
<td align="center" style="width: 7%">马奔跑</td>
<td align="center">
<img src="https://yellow-cdn.veclightyear.com/0a4dffa0/7b49ea89-deec-4018-95ad-58b462a72651.gif">
</td>
<td align="center">
<img src="https://yellow-cdn.veclightyear.com/0a4dffa0/80932ba0-195c-4c9d-a05c-07dba575755e.gif">
</td>
<td align="center">
<img src="https://yellow-cdn.veclightyear.com/0a4dffa0/0da3004c-9b2e-4c7e-b644-ffe798c257cd.gif">
</td>
</tr>
<tr class="prompt-row">
<td align="center" style="width: 7%"> </td>
<td align="center">一匹马在宇宙中奔跑。</td>
<td align="center">一匹马在火星上奔跑。</td>
<td align="center">一匹马在路上奔跑。</td>
</tr>
<tr>
<td align="center" style="width: 7%">烟花</td>
<td align="center">
<img src="https://yellow-cdn.veclightyear.com/0a4dffa0/8fc67b75-2e50-4184-b4ed-5bdb59b6757d.gif">
</td>
<td align="center">
<img src="https://yellow-cdn.veclightyear.com/0a4dffa0/ab955dd6-19f0-49cf-ba6a-ba594664edf8.gif">
</td>
<td align="center">
<img src="https://yellow-cdn.veclightyear.com/0a4dffa0/97907aa8-25a4-4460-8799-551e80c670eb.gif">
</td>
</tr>
<tr class="prompt-row">
<td align="center" style="width: 7%"> </td>
<td align="center">沙漠夜空中的烟花。</td>
<td align="center">山峦上空的烟花。</td>
<td align="center">夜晚城市中的烟花。</td>
</tr>
<tr>
<td align="center" style="width: 7%">弹吉他</td>
<td align="center">
<img src="https://yellow-cdn.veclightyear.com/0a4dffa0/ee0e862d-aa9d-4287-a6b9-d67715382dfe.gif">
</td>
<td align="center">
<img src="https://yellow-cdn.veclightyear.com/0a4dffa0/d6e3d100-7b02-4fae-b245-55d0e088d3be.gif">
</td>
<td align="center">
<img src="https://yellow-cdn.veclightyear.com/0a4dffa0/7e87dc4c-6b19-4ab0-a2f2-56ddfcbbe086.gif">
</td>
</tr>
<tr class="prompt-row">
<td align="center" style="width: 7%"> </td>
<td align="center">GTA5海报,一个男人弹吉他。</td>
<td align="center">一个女人弹吉他。</td>
<td align="center">一个宇航员弹吉他,逼真风格。</td>
</tr>
<tr>
<td align="center" style="width: 7%">鸟飞翔</td>
<td align="center">
<img src="https://yellow-cdn.veclightyear.com/0a4dffa0/c51e5fe1-4fc7-4362-9697-99dea1e159d0.gif">
</td>
<td align="center">
<img src="https://yellow-cdn.veclightyear.com/0a4dffa0/509e2f84-a4b2-45f3-8f12-e6cf9650094c.gif">
</td>
<td align="center">
<img src="https://yellow-cdn.veclightyear.com/0a4dffa0/c84e1373-0318-456c-b315-ca546801fbb7.gif">
</td>
</tr>
<tr class="prompt-row">
<td align="center" style="width: 7%"></td>
<td align="center">鸟儿在粉色天空中飞翔。</td>
<td align="center">鸟儿在天空中飞翔,海面上空。</td>
<td align="center">许多鸟儿在广场上空飞翔。</td>
</tr>
<table>
### 视频编辑
<table style="width: 100%;">
<tbody>
<tr class="prompt-row">
<td align="center">原始视频</td>
<td align="center">编辑结果-1</td>
<td align="center">编辑结果-2</td>
</tr>
<tr class="result-row">
<td align="center">
<img src="https://yellow-cdn.veclightyear.com/0a4dffa0/e09c5db4-c847-4b21-bdf4-92cdc0a36d0e.gif">
</td>
<td align="center">
<img src="https://yellow-cdn.veclightyear.com/0a4dffa0/eef954e3-bda6-4114-abaa-8cc740e9c5fb.gif">
</td>
<td align="center">
<img src="https://yellow-cdn.veclightyear.com/0a4dffa0/b7551f45-eafd-4925-9c88-d42064378d30.gif">
</td>
</tr>
<tr class="prompt-row">
<td align="center"></td>
<td align="center">一个穿黑衣的女孩在路上跑步。</td>
<td align="center">一个男人在路上跑步。</td>
</tr>
<tr class="result-row">
<td align="center">
<img src="https://yellow-cdn.veclightyear.com/0a4dffa0/b8841c00-b6a4-43d4-aabc-f0adb89bf479.gif">
</td>
<td align="center">
<img src="https://yellow-cdn.veclightyear.com/0a4dffa0/c919226f-a035-43bc-af03-c506a7ef0ea1.gif">
</td>
<td align="center">
<img src="https://yellow-cdn.veclightyear.com/0a4dffa0/011e47ce-d192-418f-a7e5-31a97792b9eb.gif">
</td>
</tr>
<tr class="prompt-row">
<td align="center"></td>
<td align="center">一个男人在跳舞。</td>
<td align="center">一个穿白衣的女孩在跳舞。</td>
</tr>
</tbody>
</table>
引用
如果您发现我们的仓库对您的研究有用,请引用我们:
@inproceedings{wu2024lamp,
title={LAMP: Learn A Motion Pattern for Few-Shot Video Generation},
author={Wu, Ruiqi and Chen, Liangyu and Yang, Tong and Guo, Chunle and Li, Chongyi and Zhang, Xiangyu},
booktitle={IEEE Conference on Computer Vision and Pattern Recognition (CVPR)},
year={2024}
许可证
根据知识共享署名-非商业性使用 4.0 国际许可协议获得许可,仅供非商业用途使用。
任何商业用途都应首先获得正式许可。
致谢
本仓库由吴瑞琪维护。
代码基于Tune-A-Video构建。感谢这个优秀的开源代码!