Allegro: 开源的高级视频生成模型

news2024/11/5 18:28:30

在这里插入图片描述
我们很高兴地宣布 Allegro 的开源发布,这是 Rhymes AI 先进的文本到视频模型。Allegro 是一款功能强大的人工智能工具,能将简单的文字提示转化为高质量的视频短片,为人工智能生成视频领域的创作者、开发者和研究人员开辟了新的可能性。我们希望 Allegro 能够激发社区的视觉创造力、想象力和协作能力。

Allegro 一览

Allegro 使用户能够根据简单的文字提示,以每秒 15 帧和 720p 分辨率生成高质量的 6 秒视频。这种质量水平可以高效地创建各种电影主题,从人物的细节特写、动物在各种环境中的动作,到您根据文字描述所能想象的几乎任何场景。该型号的多功能性为用户在 6 秒格式的限制下探索各种创意提供了灵活性。

主要功能:

  • 开放源代码:向社区提供完整的模型权重和代码,Apache 2.0!
  • 多功能内容创建:能够生成从人类和动物特写到各种动态场景的各种内容。
  • 高质量输出:以 15 FPS(720x1280 分辨率)的速度生成 6 秒钟的详细视频,可通过 EMA-VFI 插值到 30 FPS。
  • 小巧高效:具有 1.75 亿参数的 VideoVAE 和 2.8B 参数的 VideoDiT 模型。支持多种精度(FP32、BF16、FP16),在 BF16 模式下使用 9.3 GB GPU 内存,CPU 卸载。上下文长度为 79.2k,相当于 88 个帧。

Allegro 背后的技术

该模型的功能建立在处理视频数据、压缩原始视频和生成视频帧的核心技术基础上,可将文本提示转换为视频短片。

大规模视频数据处理

为了创建一个能够生成多样化和逼真视频的模型,需要一个能够处理海量视频数据的系统。 有鉴于此,我们设计了系统化的数据处理和过滤管道,以便从原始数据中提取训练视频。 这一过程是按顺序进行的,包括以下几个阶段:

在这里插入图片描述
接下来,根据处理过程中获得的指标,我们开发了一个结构化数据系统,可以对数据进行多维度分类和聚类,便于针对不同阶段和目的进行模型训练和微调。 我们在技术报告中分享了我们的详细配方。

将视频压缩为可视标记

视频生成的主要挑战之一是管理所涉及的大量数据。 为了解决这个问题,我们将原始视频压缩成更小的可视标记,同时保留基本细节,从而实现更流畅、更高效的视频生成。 具体来说,我们设计了一种视频变异自动编码器(VideoVAE),可将原始视频编码到时空潜空间中。 视频变异自动编码器建立在预先训练好的图像变异自动编码器的基础上,并扩展了时空建模层,以有效利用空间压缩能力。

在这里插入图片描述
提议的 VideoVAE 压缩视频的时间、高度和宽度比例分别为(4、8、8)。 这种方法减少了视频生成主干网的输入序列长度,从而能以原始帧速率生成长的高分辨率视频。

扩展视频扩散变换器

Allegro 视频生成功能的核心在于其扩展扩散变换器架构,该架构应用扩散模型生成高分辨率视频帧,确保视频运动的质量和流畅性。 Allegro 的骨干网络建立在 DiT(扩散变换器)架构的基础上,具有三维 RoPE 位置嵌入和三维全神贯注功能。 该架构可有效捕捉视频数据中的空间和时间关系。

在这里插入图片描述
与使用 UNet 架构的传统扩散模型相比,Transformer 结构更有利于模型扩展。 通过利用三维注意力,DiT 可以处理视频帧的空间维度及其时间演变,从而对运动和上下文有更细致的理解。 三维注意力机制与 DiT 模型的扩展能力相结合,大大提高了性能,从而可以生成具有丰富细节和流畅运动的高质量视频。

环境

pip install git+https://github.com/huggingface/diffusers.git torch==2.4.1 transformers==4.40.1 accelerate sentencepiece imageio imageio-ffmpeg beautifulsoup

推理

import torch
from diffusers import AutoencoderKLAllegro, AllegroPipeline
from diffusers.utils import export_to_video
vae = AutoencoderKLAllegro.from_pretrained("rhymes-ai/Allegro", subfolder="vae", torch_dtype=torch.float32)
pipe = AllegroPipeline.from_pretrained(
    "rhymes-ai/Allegro", vae=vae, torch_dtype=torch.bfloat16
)
pipe.to("cuda")
pipe.vae.enable_tiling()
prompt = "A seaside harbor with bright sunlight and sparkling seawater, with many boats in the water. From an aerial view, the boats vary in size and color, some moving and some stationary. Fishing boats in the water suggest that this location might be a popular spot for docking fishing boats."

positive_prompt = """
(masterpiece), (best quality), (ultra-detailed), (unwatermarked), 
{} 
emotional, harmonious, vignette, 4k epic detailed, shot on kodak, 35mm photo, 
sharp focus, high budget, cinemascope, moody, epic, gorgeous
"""

negative_prompt = """
nsfw, lowres, bad anatomy, bad hands, text, error, missing fingers, extra digit, fewer digits, cropped, worst quality, 
low quality, normal quality, jpeg artifacts, signature, watermark, username, blurry.
"""

prompt = prompt.format(prompt.lower().strip())

video = pipe(prompt, negative_prompt=negative_prompt, guidance_scale=7.5, max_sequence_length=512, num_inference_steps=100, generator = torch.Generator(device="cuda:0").manual_seed(42)).frames[0]
export_to_video(video, "output.mp4", fps=15)

使用 pipe.enable_sequential_cpu_offload(),将模型卸载到 CPU,可减少 GPU 内存成本(约 9.3G,而不启用 CPU 卸载时为 27.5G),但推理时间将大幅增加。

模型

https://huggingface.co/rhymes-ai/Allegro

Github

https://github.com/rhymes-ai/Allegro

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2230200.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【OD-支持在线评测】智能驾驶(200分)

📎 在线评测链接 https://app5938.acapp.acwing.com.cn/contest/11/problem/OD1073 🍓 OJ题目截图 🍿 最新机试E卷,全、新、准,题目覆盖率达 95% 以上,支持题目在线评测,专栏文章质量平均 94 分 🌍 评测功能需要 ⇒ 订阅专栏 ⇐ 后私信联系解锁~ 文章目录 📎…

SpringBoot【实用篇】- 配置高级

文章目录 目标:1.ConfigurationProperties2.宽松绑定/松散绑定3. 常用计量单位绑定4.数据校验 目标: ConfigurationProperties宽松绑定/松散绑定常用计量单位绑定数据校验 1.ConfigurationProperties ConfigurationProperties 在学习yml的时候我们了解…

构造小练习

一。 二。 构造函数的调用顺序: 先走全局,再main函数,而局部静态的函数是走到它那里才开始初始化。所以先构造C,再A,B,最后D。 析构函数的顺序: 先析构局部的,再析构全局的。后定义的先析构。…

openapi回调地址请求不通过

目录 1. 验证url接口get请求本地自测报错 2. 测试回调模式成功不返回结果 3. 测试回调模式返回结果带双引号 对接企业微信 产生会话回调事件 接口问题解决 1. 验证url接口get请求本地自测报错 java.lang.IllegalArgumentException: Last encoded character (before the pa…

探索Unity:从游戏引擎到元宇宙体验,聚焦内容创作

unity是实时3D互动内容创作和运营平台,包括游戏开发、美术、建筑、汽车设计、影视在内的所有创作者,借助Unity将创意变成现实。提供一整套完善的软件解决方案,可用于创作、运营和变现任何实时互动的2D和3D内容,支持平台包括手机、…

数据结构与算法实验练习(三)(排序及线性表的应用)

数据结构与算法分析课下实验练习,现记录一下解答过程,欢迎大家批评指正。 声明:本题目来源于西安交通大学电信学院原盛老师,任何单位或个人在使用、转载或引用本题目时,请务必标明出处为“西安交通大学电信学院原盛老…

mac|安装redis及RedisDesk可视化软件

一、安装 通过Homebrew安装 brew install redis 在安装过程可以得到以下信息: 1、启动redis或重新登陆redis brew services start redis 如果只想在前端运行,而不是在后端,则使用以下命令 /opt/homebrew/opt/redis/bin/redis-server /opt…

基于hive分析Flask为后端框架echarts为前端框架的招聘网站可视化大屏项目

基于hive分析Flask为后端框架echarts为前端框架的招聘网站可视化大屏项目 1. 项目概述 项目目标是构建一个大数据分析系统,包含以下核心模块: 1、数据爬取:通过request请求获取猎聘网的就业数据。 2、数据存储和分析:使用 Hive …

Rust 力扣 - 2841. 几乎唯一子数组的最大和

文章目录 题目描述题解思路题解代码题目链接 题目描述 题解思路 我们遍历长度为k的窗口,用一个哈希表记录窗口内的所有元素(用来对窗口内元素去重),我们取哈希表中元素数量大于等于m的窗口总和的最大值 题解代码 use std::coll…

Blender进阶:贴图与UV

9 UV 9.1 贴图与UV UV,指定每个面顶点在贴图上的坐标 演示: 1、添加物体 2、添加贴图,即图片纹理节点 3、进入UV Edit工作区 4、右边,选择一个面 5、左边,选择一个面,移动这个面 9.2 电子表格 电子…

UiPath调用Python脚本的完整示例

一、主要步骤: 1、创建Python脚本 2、安装UiPath.Python.Activities库 3、使用方法: a、添加python作用域 b、加载python脚本 c、调用python方法 d、获取python对象 e、显示Python结果的消息对话框 二、详细步骤 1、安装UiPath.Python.Activities库 …

[pdf,epub]105页《分析模式》漫谈合集01

105页的《分析模式》漫谈合集第1集的pdf、epub文件,已上传到本账号的CSDN资源。 如果无法下载,也可以访问umlchina.com/url/ap.html 已排版成适合手机阅读,pdf的排版更好一些。 ★UMLChina为什么叒要翻译《分析模式》? ★[缝合故…

科技资讯|谷歌Play应用商店有望支持 XR 头显,AR / VR设备有望得到发展

据 Android Authority 报道,谷歌似乎正在为其 Play 商店增加对 XR 头显的支持。该媒体在 Play 商店的代码中发现了相关的线索,包括一个代表头显的小图标以及对“XR 头显”的提及。 谷歌也可能改变了此前拒绝将 Play 商店引入 Meta Quest 头显的决定。今…

ES跟Kafka集成

配合流程 1. Kafka作为分布式流处理平台,能够实时收集和处理不同数据源的数据流; 2. 通过Kafka Connect或者Logstash等中间件,可以将Kafka中的数据流实时推送到Elasticsearch中; 3. Elasticsearch接收到数据后,会根据…

查缺补漏----关于计组两道题辨析

答案:A 指令字由操作码、寻址特征和地址码三个字段组成,寻址特征字段用来指明指令属于哪种寻址方式。若寻址方式是寄存器直接寻址,则地址码所指的通用寄存器中存放的是操作数,若寻址方式是寄存器间接寻址,则对应通用寄…

uniapp学习(010-2 实现抖音小程序上线)

零基础入门uniapp Vue3组合式API版本到咸虾米壁纸项目实战,开发打包微信小程序、抖音小程序、H5、安卓APP客户端等 总时长 23:40:00 共116P 此文章包含第113p的内容 文章目录 抖音小程序下载抖音开发者工具先去开发者工具里进行测试 抖音开放平台配置开始打包上传…

[Approaching any Machine Learning] Supervised vs unsupervised learning - Note

Page 11 single_image pixel_values[1, :].reshape(28, 28) plt.imshow(single_image, cmapgray)用这个代码运行是会出错的,应该改为以下代码: pixel_np pixel_values.iloc[1, :].values single_image pixel_np.reshape(28, 28) plt.imshow(single_…

buu easyRE

这道题目我想写的东西不是很多,前面的部分按常规流程走,第一步我们写逆脚本,推算出数组v15的值,但是输出值却没有啥用,只是告诉我们,the first parts are flag ,没多大用,然后后…

qt QProgressBar详解

1、概述 QProgressBar是Qt框架中的一个控件,专门用于显示任务的进度。它提供了一个可视化的进度条,让用户能够直观地了解任务的完成程度。QProgressBar支持水平和垂直两种显示方向,并且可以通过设置最小值和最大值来指定进度条的范围。此外&…

Nginx 实现动态封禁IP,详细教程来了

Nginx 实现动态封禁IP,详细教程来了 需求环境准备设计方案在操作系统层面,配置 iptables,来拦截指定 IP 的网络请求在 Web 服务器层面,通过 Nginx 自身的 deny 选项或者 lua 插件配置 IP 黑名单在应用层面,在处理请求之…