video-diffusion-pytorch

video-diffusion-pytorch

开源项目实现文本到视频生成新突破

video-diffusion-pytorch项目实现了基于扩散模型的文本到视频生成技术。该开源项目采用时空分解U-net结构,将2D图像生成扩展至3D视频领域。支持文本条件生成、BERT编码和批量训练等功能。目前在移动MNIST数据集上表现良好,为研究人员和开发者提供了探索视频生成新前沿的工具。该技术有望在复杂视频生成任务中取得进展。

视频生成深度学习PytorchU-net文本到视频Github开源项目

机器想象的烟花

这些烟花并不存在

视频扩散 - Pytorch

文本到视频生成,正在实现!<a href="https://video-diffusion.github.io/">官方项目页面</a>

<a href="https://arxiv.org/abs/2204.03458">视频扩散模型</a>的Pytorch实现,这是<a href="http://www.jonathanho.me/">Jonathan Ho</a>将DDPM扩展到视频生成的新论文。它使用了特殊的时空因子分解U-net,将生成从2D图像扩展到3D视频

<img src="https://yellow-cdn.veclightyear.com/0a4dffa0/0515b257-fea0-4614-ab40-632dc14927f1.png" width="500px"></img>

当前状态

对于困难的移动MNIST数据集,14k步(收敛速度比<a href="https://wandb.ai/lucidrains/nuwa-moving-mnist/reports/moving-mnist-nuwa--VmlldzoxNjk3MjI3?accessToken=cx03lswmr4bxj9dhrzzm5c3xebdmfq28a4dqzsoq9n89by6ppofukq7bxp19078j">NUWA</a>快得多且效果更好)- 进行中

<img src="https://yellow-cdn.veclightyear.com/0a4dffa0/d79147ed-d5fc-414f-a616-0e2b9e093f41.gif" width="250px">

上述实验仅得益于<a href="https://stability.ai/">Stability.ai</a>提供的资源

文本到视频合成的任何新进展都将集中在<a href="https://github.com/lucidrains/imagen-pytorch#text-to-video-ongoing-research">Imagen-pytorch</a>

安装

$ pip install video-diffusion-pytorch

使用方法

import torch from video_diffusion_pytorch import Unet3D, GaussianDiffusion model = Unet3D( dim = 64, dim_mults = (1, 2, 4, 8) ) diffusion = GaussianDiffusion( model, image_size = 32, num_frames = 5, timesteps = 1000, # 步数 loss_type = 'l1' # L1或L2 ) videos = torch.randn(1, 3, 5, 32, 32) # 视频 (批次, 通道数, 帧数, 高度, 宽度) - 归一化到-1到+1 loss = diffusion(videos) loss.backward() # 经过大量训练后 sampled_videos = diffusion.sample(batch_size = 4) sampled_videos.shape # (4, 3, 5, 32, 32)

对于文本条件,他们通过先将标记化的文本传入BERT-large来获得文本嵌入。然后你只需要这样训练:

import torch from video_diffusion_pytorch import Unet3D, GaussianDiffusion model = Unet3D( dim = 64, cond_dim = 64, dim_mults = (1, 2, 4, 8) ) diffusion = GaussianDiffusion( model, image_size = 32, num_frames = 5, timesteps = 1000, # 步数 loss_type = 'l1' # L1或L2 ) videos = torch.randn(2, 3, 5, 32, 32) # 视频 (批次, 通道数, 帧数, 高度, 宽度) text = torch.randn(2, 64) # 假设BERT-large的输出维度为64 loss = diffusion(videos, cond = text) loss.backward() # 经过大量训练后 sampled_videos = diffusion.sample(cond = text) sampled_videos.shape # (2, 3, 5, 32, 32)

如果你打算使用BERT-base进行文本条件,你也可以直接传入视频的描述字符串

import torch from video_diffusion_pytorch import Unet3D, GaussianDiffusion model = Unet3D( dim = 64, use_bert_text_cond = True, # 必须设置为True以自动使用bert模型维度 dim_mults = (1, 2, 4, 8), ) diffusion = GaussianDiffusion( model, image_size = 32, # 帧的高度和宽度 num_frames = 5, # 视频帧数 timesteps = 1000, # 步数 loss_type = 'l1' # L1或L2 ) videos = torch.randn(3, 3, 5, 32, 32) # 视频 (批次, 通道数, 帧数, 高度, 宽度) text = [ '远处一头鲸鱼跃出水面', '小女孩正在吹灭生日蛋糕上的蜡烛', '蓝色和绿色火花的烟花' ] loss = diffusion(videos, cond = text) loss.backward() # 经过大量训练后 sampled_videos = diffusion.sample(cond = text, cond_scale = 2) sampled_videos.shape # (3, 3, 5, 32, 32)

训练

这个仓库还包含一个方便的Trainer类,用于在包含gif文件的文件夹上进行训练。每个gif必须具有正确的image_sizenum_frames尺寸。

import torch from video_diffusion_pytorch import Unet3D, GaussianDiffusion, Trainer model = Unet3D( dim = 64, dim_mults = (1, 2, 4, 8), ) diffusion = GaussianDiffusion( model, image_size = 64, num_frames = 10, timesteps = 1000, # 步骤数 loss_type = 'l1' # L1或L2 ).cuda() trainer = Trainer( diffusion, './data', # 该文件夹路径需包含所有训练数据,以.gif文件形式存储,图像大小和帧数正确 train_batch_size = 32, train_lr = 1e-4, save_and_sample_every = 1000, train_num_steps = 700000, # 总训练步骤 gradient_accumulate_every = 2, # 梯度累积步骤 ema_decay = 0.995, # 指数移动平均衰减 amp = True # 启用混合精度 ) trainer.train() 示例视频(以gif文件形式)将定期保存到./results目录,扩散模型参数也会保存。 ## 图像和视频的联合训练 论文中的一个观点是,通过进行因子化的时空注意力,可以强制网络在联合训练图像和视频时关注当前时刻,从而获得更好的结果。 他们如何实现这一点并不清楚,但我做了一个猜测。 要在训练过程中让一定比例的批次视频样本将注意力集中在当前时刻,只需在扩散前向方法中传入prob_focus_present = <prob> loss = diffusion(videos, cond = text, prob_focus_present = 0.5) # 50%的视频在训练时聚焦当前 loss.backward() 如果你有更好的实现方法,请开一个GitHub issue。 ## 待办事项 - [x] 连接文本条件,使用无分类器引导 - [x] 注意力中的相对位置编码(空间和时间)- 使用T5相对位置偏置而非他们使用的方法 - [x] 添加一个前向关键字参数,用于抑制跨时间的注意力(如论文所报告/声称,这种图像+视频同时训练的方式可以改善结果) - [x] 考虑制作CLIP的3D版本,以便最终将DALL-E2的经验应用到视频中 https://github.com/lucidrains/dalle2-video - [x] 为Trainer提供截短或填充帧的方法,以应对过长的gif - [ ] 找到一个类似torchvideo的好库(torchvideo似乎不够成熟)用于烟花数据集的训练 - [ ] 将文本投影为4-8个标记,并将它们用作内存键/值来同时调节注意力块中的时间和空间 - [ ] 准备一个jax版本用于大规模TPU训练 - [ ] 让Trainer处理条件视频生成,文本作为相应的{video_filename}.txt存储在同一文件夹中 - [ ] 看看ffcv或squirrel-core是否适合 - [ ] 引入时间和空间的标记移位 ## 引用 (引用内容保持原文)

编辑推荐精选

问小白

问小白

全能AI智能助手,随时解答生活与工作的多样问题

问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。

聊天机器人AI助手热门AI工具AI对话
Transly

Transly

实时语音翻译/同声传译工具

Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

热门AI工具AI办公办公工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

模型训练热门AI工具内容创作智能问答AI开发讯飞星火大模型多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

Trae

Trae

字节跳动发布的AI编程神器IDE

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

热门AI工具生产力协作转型TraeAI IDE
咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

AI助手热门AI工具AI创作AI辅助写作讯飞绘文内容运营个性化文章多平台分发
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

下拉加载更多