【AIGC系列】5:视频生成模型数据处理和预训练流程介绍(Sora、MovieGen、HunyuanVideo)

devtools/2025/3/5 9:45:54/

AIGC系列博文:
AIGC系列】1:自编码器(AutoEncoder, AE)
AIGC系列】2:DALL·E 2模型介绍(内含扩散模型介绍)
AIGC系列】3:Stable Diffusion模型原理介绍
AIGC系列】4:Stable Diffusion应用实践和代码分析
AIGC系列】5:视频生成模型数据处理和预训练流程介绍(Sora、MovieGen、HunyuanVideo)

目录

  • 1 Sora介绍
    • 1.1 前言
    • 1.2 Feature
    • 1.3 Benchmarks
  • 2 Movie Gen
    • 2.1 预训练数据
      • 2.1.1 视觉过滤(Visual filtering)
      • 2.1.2 运动过滤
      • 2.1.3 内容过滤
      • 2.1.4 字幕生成
      • 2.1.5 多阶段数据整理
      • 2.1.6 分桶处理可变时长和尺寸
    • 2.2 预训练
    • 2.3 Finetuning
  • 3 HunyuanVideo
    • 3.1 Data Filtering
    • 3.2 Data Annotation

1 Sora介绍

1.1 前言

OpenAI做Sora的目的:

  1. 视觉有吸引力,OpenAI喜欢做这种带有创造力的生产力工具;
  2. 他们希望这个世界不仅仅只有文本,更应该像人一样,用更多的感官去感知这个世界,这样才能改变我们最终跟电脑或AI机器人交互的方式;
  3. 视频生成是通向AGI道路一个非常关键的部分。

1.2 Feature

  1. Remix:video editing,支持一些替换、移除或者想象出来的一些元素等操作。

  2. Recut:重新生成、重新剪辑,把选取想要的内容部分,删除不想要的部分,根据已有的好的部分,再去往前或者往后做扩展。

  3. Story board:给定一个视频的timeline,细化到每一帧去剪辑和生成新的视频。

  4. Loop:把一个视频的头和尾稍微剪辑一下,再把它拼起来变成一个无限循环的新视频。

  5. Blend:把两个视频合并成同一个视频,例如物体的合并或者style的合并。

  6. Style presets:先定义一个style,把你的视频都变成这个style。

1.3 Benchmarks

我们来看一下谷歌的Veo2 发布的视频生成模型之间的PK,如下图所示,x轴是不同的视频生成模型,包括Meta的 Movie Gen、快手的可灵、Minimax和Sora Turbo,y轴是用户整体的喜好度。

粉红色是指用户喜欢其他家生成的视频,不喜欢Veo 2;绿色是指用户非常喜欢Veo 2,但不喜欢其他家的生成结果;白色是平局。

benchmarks

整体上,快手的可灵效果还不错,仅次于谷歌的Veo 2,而Sora是最差的,起了个大早,赶了个晚集。

Sora没有发表论文,所以没法精度。

2 Movie Gen

Meta在2024年10月份的时候发表了Movie Gen论文,内容非常详实,总共有96页,效果也不错。

论文:MovieGen: ACastofMediaFoundationModels

Movie Gen是一系列基础模型,能够生成高质量、1080p高清视频,支持不同的宽高比和同步音频。此外,论文还展示了其他能力,例如基于精确指令的视频编辑以及根据用户提供的图像生成个性化视频。模型在多个任务上达到了新的技术水平,包括文本到视频合成、视频个性化、视频编辑、视频到音频生成以及文本到音频生成。Movie Gen最大的视频生成模型是一个拥有300亿参数的Transformer,训练时的最大上下文长度为73,000个视频tokens,这意味着可以以每秒16帧的速度生成长达16秒的视频。

论文在架构、潜在空间、训练目标与方法、数据管理、评估协议、并行化技术和推理优化方面做出了多项技术革新和简化,这些改进使我们能够充分利用扩展预训练数据、模型大小和训练计算的优势来训练大规模媒体生成模型。

2.1 预训练数据

预训练数据集包括O(100)M个视频-文本对和O(1)B个图像-文本对,遵循类似(Dai et al., 2023)的图像-文本数据整理策略,并专注于视频数据的整理。

原始数据池由长度为4秒至2分钟的视频组成,涵盖了来自不同领域如人类、自然、动物和物体的概念。数据整理流程最终生成了一个剪辑-提示对的预训练集,每个剪辑长度为4秒至16秒,这样能确保每个视频尽可能都是描述同一个概念(with single-shot camera and non-trivial motion)。

数据整理流程下图所示,它包括三个过滤阶段:1)视觉过滤,2)运动过滤,和3)内容过滤,以及一个字幕生成阶段。过滤后的剪辑被标注有平均包含100词的详细生成字幕。

数据整理流程

2.1.1 视觉过滤(Visual filtering)

应用6个过滤器去除低视觉质量的视频。

  1. 过滤掉分辨率小于720px的视频

  2. 数据集中60%的视频为横屏视频,40%为竖屏视频

  3. 删去文字特别多的视频

  4. 从长视频中抽取出单场景的4-16s的片段

  5. 保证视频美学品质

  6. 保证视频没有边框

2.1.2 运动过滤

自动过滤掉低运动的视频。

首先,我们使用内部静态视频检测模型移除没有运动的视频。接着,基于VMAF运动分数和运动向量(FFmpeg开发者),识别出具有“合理”运动的视频。此外,使用了PySceneDetect库中的Shot Boundary Detection移除频繁抖动的摄像机运动视频。最后,移除了带有特殊运动效果的视频,例如幻灯片视频。

2.1.3 内容过滤

删除重复的视频片段、对不同类型的数据进行重新采样,保证内容的均匀性。

首先是抽Embedding,因为数据量太大,需要先做一次聚类(clustering),把常见的concept全部抽出来,再根据每个cluster的大小和相似度,把cluster合并起来。最后再从每个cluster中均匀地(平方根倒数)抽取视频数据。

值得注意的是,LLaMa 3里Vision Model的训练数据的准备,也是使用这套流程。

2.1.4 字幕生成

通过使用LLaMa3-Video模型为视频创建准确而详细的文本提示。在底座模型基础之上,微调了该模型的8B和70B变体用于视频字幕任务,并用这些模型为整个训练集的视频添加字幕,最终的训练集包含了70%的8B字幕和30%的70B字幕。用两个模型来做,主要是模型的训练很贵,推理也不便宜,训练集有几个亿的视频的话,用70B的模型也是需要很多卡去跑好几周。另外可能还考虑了多样性,虽然70B模型很好,但是如果全用它来生成的话,会存在bias,换一个模型的话数据的多样性会好一点。

为了实现电影摄像机运动控制,训练了一个摄像机运动分类器,它可以预测16种摄像机运动类别之一,例如缩放、平移等。将高置信度的摄像机运动预测加入到之前生成的文本字幕中,在推理时,这允许用户指定视频生成时的具体摄像机控制。

2.1.5 多阶段数据整理

作者根据逐渐严格的视觉、运动和内容阈值整理出预训练数据的三个子集,以满足不同预训练阶段的需求。

  • 首先,整理了一组最低宽度和高度为720像素的视频用于低分辨率训练。
  • 接着,过滤该集合,提供最低宽度和高度为768像素的视频用于高分辨率训练。
  • 最后,整理了新的视频以扩充我们的高分辨率训练集。

高分辨率集包含80%的横屏视频和20%的竖屏视频,其中至少60%包含人类。在整理过程中,作者建立了一个包含600个人类动作和表情的分类法,并使用该分类法进行了零样本文本到视频检索,以选择包含人类的视频,在内容重新采样期间保留了这些人视频的频率。

经过最终的处理,数据越来越少,最终只保留了少于1%的数据。

剩余数据

2.1.6 分桶处理可变时长和尺寸

为了适应不同的视频长度和宽高比,作者根据宽高比和长度对训练数据进行分桶处理,每个分桶中的视频具有完全相同的latent shape,从而便于训练数据的批量处理。图像和视频数据集都使用了五个宽高比分桶,因此,我们的模型可以生成不同宽高比的图像和视频,例如,横屏为1024×576,竖屏为576×1024。作者定义了五个时长分桶(4秒至16秒),并根据视频长度调整潜在帧的数量,如下表所示。通过向文本字幕添加FPS tokens引入了FPS控制,这样可以以不同的帧率(16至32 FPS)采样视频。

fps

2.2 预训练

这些训练细节都是针对30B模型的。

为了使训练更快更稳定,作者采取了多阶段训练的策略。主要是以下三个步骤,如下表所示:

  1. 首先使用text-to-image的数据对模型进行warm up热身训练,随后使用text-to-image和text-tovideo的数据进行联合训练。

  2. 视频数据分辨率首先由256px提升至768px。

  3. 不断用更好的数据集和优化后的超参数对模型进行训练。

作者保持一个验证集,里面是数据是模型从来没有见过的,可以拿来测试模型的性能,validation loss和人类评估结果是耦合得很好的。

stage

2.3 Finetuning

为了保证生成结果的质量,finetuning的数据集规模可以较小,但是数据质量一定要有保障。因此finetuning的数据均由人为标注,所以这个阶段就是SFT。

高质量的定义:良好的运镜、真实性、美学性、内容丰富、文本描述详细。

为了筛选高质量的数据集,Movie Gen使用连续的四个步骤对数据进行筛选:

  1. 创建一个候选子集,这一步是自动化完成的,作者设置了一个严格的阈值,从美观、运动和场景切换上对每个视频进行严格的限制。此外,使用目标检测模型移除了只有小物体的视频。

  2. 与Content Filtering一样,对第一阶段筛选后的视频进行重新采样,保证各个类别的视频均匀分布。具体做法是,沿用分词表(human verbs and expressions),再做一次视频检索,从而把相关概念的视频抽出来。作者既做了文本k-NN,也做了视频k-NN。对于视频k-NN,做法是每个概念里人工选了几个非常好的视频作为种子视频,再去做视频k-NN,从而拿到concept-balanced的子集。这一步也是自动化完成。

  3. 这一步是人工做的,人为找出具有电影质感的、适合做视频生成训练样本的视频。此外,标注人员还需要把视频中最好看的那一个片段挑出来。

  4. 人为对模型生成的提示词进行润色修改,同时加入详细的原数据:运镜、人物表情、物体和背景信息、具体的运动描述和光线信息。

SFT数据集长度都在10.6s到16s之间,其中50%是16s,剩下50%是10.6s到16s之间。

最后,再做一个Model Averaging操作:不同数据子集、不同超参数训练出来的模型各有所长,为了利用不同checkpoint模型的优势、提升模型泛化性Movie Gen对SFT阶段不同的模型参数进行了平均操作,类似于Llama 3。

3 HunyuanVideo

论文:HunyuanVideo: A Systematic Framework For Large Video Generation Model

GitHub:HunyuanVideo

HuggingFace:HunyuanVideo

与Movie Gen一样,Hunyuan Viedoe使用了图像-视频联合训练的策略,将视频分为五类、图像分为两类,以满足不同训练需求。原始数据涵盖人物、动物、风景等多个领域,筛选时设定了最低时长、画质、构图、色彩等严格标准,优先选用高质量数据,显著提升了模型性能。

3.1 Data Filtering

  1. 使用PySceneDetect把原始视频分割为单镜头拍摄的视频片段。

  2. 使用OpenCV中的拉普拉斯算子找出视频中最“干净”的一帧作为视频开头。

  3. 使用内部的VideoCLIP模型计算每个视频的embeddings,使用embeddings计算余弦距离,删去重复数据。使用K-Means算法对数据进行重新采样以保持各种类型数据的多样性。

  4. 使用Dover模型筛选更为美观的视频片段。单独训练了一个用于筛选清晰度的视频。

  5. 删去了完全禁止和动作幅度较小的视频。(estimated optical flow)

  6. 使用PySceneDetect和Transnet v2获得场景边界信息

  7. 使用OCR模型移除文字过多的视频片段

  8. 使用目标检测模型移除敏感信息

SFT阶段,约有100万条数据,同样采用人为标注的数据进行微调。

数据

3.2 Data Annotation

结构化说明文本:HunYuanVideo使用JSON来对图片信息进行说明。JSON数据包括:Short Description描述场景的主要内容、Dense Description详细、完整的描述、Background描述物体所在的背景、Style描述视频的风格、Shot Type描述视频的具体视角、Lighting描述视频的光线情况、Atmosphere描述视频氛围如Cozy、Tense等。

此外,HunYuanVideo扩展了JSON结构,以包含额外的元数据派生元素,包括源标签、质量标签以及来自图像和视频元信息的其他相关标签。

为了防止过拟合,HunYuanVideo通过精心设计的Dropout及排列和组合策略,根据这些多维度的描述信息来合成长度和模式各异的字幕,旨在提高生成模型的泛化能力。

HunYuanVideo训练了一个运镜分类器来预测14个不同的运镜类型,包括变焦放大、变焦缩小、向上平移、向下平移等。高置信度的分类结果将被添加至数据的JSON说明文本中。


http://www.ppmy.cn/devtools/164018.html

相关文章

Deepseek对ChatGPT的冲击?

从测试工程师的视角来看,DeepSeek对ChatGPT的冲击主要体现在**测试场景的垂直化需求与通用模型局限性之间的博弈**。以下从技术适配性、效率优化、风险控制及未来趋势四个维度展开分析: --- ### **一、技术适配性:垂直领域能力决定工具选择…

vllm源码解析(一):整体架构与推理代码

vlllm官方代码更新频发,每个版本都有极大变动, 很难说哪个版本好用. 第一次阅读vllm源码是0.4.0版本,对这版圈复杂度极高的调度代码印象深刻 0.4.1对调度逻辑进行重构,完全大变样, 读代码速度快赶不上迭代的速度了。 现在已经更新到0.5.4, 经过长时间观察,发现主要的…

wifi5和wifi6,WiFi 2.4G、5G,五类网线和六类网线,4G和5G的区别

wifi5和wifi6的区别 是Wi-Fi 5和Wi-Fi 6的选择与路由器密切相关。路由器是创建和管理无线网络的设备,它决定了网络的类型和性能。具体来说: 路由器的标准支持:路由器可以支持不同的Wi-Fi标准,如Wi-Fi 5(802.11ac)和Wi-Fi 6(802.11ax)。支持Wi-Fi 6的路由器能够提供更高…

为什么gpt-sovits微调训练轮数最大只能设置为3

近期在使用这个ai语音模型的时候,有朋友问到了这个问题,为什么训练轮数只能最多设置为3轮? 下面是一些关于这个问题的解答。 在Sovits(或类似的神经网络模型)训练时,训练轮数(epoch&#xff09…

CMU15445(2023fall) Project #4 - Concurrency Control踩坑历程

把树木磨成月亮最亮时的样子, 就能让它更快地滚下山坡, 有时会比骑马还快。 完整代码见: SnowLegend-star/CMU15445-2023fall: Having Conquered the Loftiest Peak, We Stand But a Step Away from Victory in This Stage. With unwavering…

【告别双日期面板!一招实现el-date-picker智能联动日期选择】

告别双日期面板!一招实现el-date-picker智能联动日期选择 1.需求背景2.DateTimePicker 现状图3.日期选择器实现代码4.日期选择器实现效果图5.日期时间选择器实现代码6.日期时间选择器实现效果图 1.需求背景 在用户使用时间查询时,我们经常需要按月份筛选…

An Efficient Anti-Interference Imaging Technology for Marine Radar 论文阅读

An Efficient Anti-Interference Imaging Technology for Marine Radar 1. 研究目标与实际意义1.1 研究目标1.2 实际意义2. 创新方法与技术优势2.1 核心创新点2.1.1 波束递归抗干扰方法(Beam-Recursive Anti-Interference Method)2.1.2 非均匀采样模型(Nonuniform Sampling …

折半搜索笔记

前言 01 01 01 爆搜的时间复杂度通常为 O ( 2 n ) O(2^n) O(2n),只能应付 N N N 为 20 20 20 左右的题目,但是折半搜索可以应付 N N N 为 30 30 30 ~ 40 40 40 的题目。 思想 将 N N N 个数分为前后两半,先搜索前一半的状态&#xf…