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

我们很高兴地宣布 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 模型的扩展能力相结合,大大提高了性能,从而可以生成具有丰富细节和流畅运动的高质量视频。

环境

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

推理

python 复制代码
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

相关推荐
QN1幻化引擎4 分钟前
Dalin L — 我造了一门支持中文编程的语言,完整移植到 Rust 了
人工智能·算法·机器学习
龙智DevSecOps解决方案14 分钟前
Perforce Intelligence 三大平台全新发布:当自动化升级为“自主化”,AI 时代的工作流该如何编排?
软件测试·人工智能·devops·perforce
珠***格15 分钟前
XGF10-Z-4典型接入方式解析:10千伏专变用户380伏多点分布式光伏如何并网?
网络·人工智能·分布式·安全·边缘计算
Aa998833417 分钟前
黑灯工厂中AI视觉检测的实现条件——AI检测的检出边界与工程原理
人工智能
sunywz23 分钟前
【AI大模型微调】第 2 章 大模型适配概述
人工智能·深度学习
ZZZMMM.zip28 分钟前
竞品分析框架-基于鸿蒙的AI竞品分析应用开发实践
人工智能·华为·harmonyos·鸿蒙系统
2601_9583529036 分钟前
用 A-59F 做扩音喊话产品:从啸叫噩梦到“随便开音量都不叫“的工程实战指南
人工智能·回声消除·语音模块·通话对讲·拾音降噪
盟接之桥38 分钟前
跨越数字鸿沟,重塑全球信任:盟接之桥EDI如何以长期主义赋能中国制造出海
网络·人工智能·安全·汽车·制造
KaMeidebaby1 小时前
卡梅德生物技术快报|如何制备单克隆抗体:小众禽类靶点单抗制备实操流程:双载体抗原交叉筛选完整工艺记录
人工智能·python·深度学习·算法·机器学习
Georgeviewer1 小时前
数字化工程落地复盘:通用SaaS架构的本地化缺陷与自研系统最优解|皖禾数智实战
大数据·人工智能·架构