学习人工智能:Sora技术报告Video generation models as world simulators,2024.2

原文链接: Video generation models as world simulators (openai.com)

摘要:

我们探索了在视频数据上大规模训练生成模型。具体来说,我们在可变片长、分辨率和纵横比的视频和图像上联合训练文本条件扩散模型text-conditional diffusion models。我们利用一种 transformer 架构,该架构在视频和图像潜在代码的时空补丁 spacetime patches上运行。我们最大的型号 Sora 能够生成一分钟的高保真视频。我们的结果表明,扩展视频生成模型scaling video generation models是构建物理世界通用模拟器的一条有前途的途径。

本技术报告重点介绍

(1)我们将所有类型的视觉数据转换为统一表示的方法,以实现生成模型的大规模训练,以及(2)对Sora的功能和局限性进行定性评估。本报告未包括模型和实施细节。

许多先前的工作已经研究了使用各种方法对视频数据进行生成建模,包括循环网络、生成对抗网络,自回归变压器,和扩散模型。这些作品通常集中在一小部分视觉数据、较短的视频或固定大小的视频上。Sora 是一种通用的视觉数据模型,它可以生成跨越不同片长、纵横比和分辨率的视频和图像,最多可生成一整分钟的高清视频。

将可视化数据转换为补丁Turning visual data into patches

我们从大型语言模型LLM中汲取灵感,这些模型通过对互联网规模的数据进行训练来获得通才功能。LLM范式的成功在一定程度上得益于使用标记tokens,这些标记优雅地统一了不同的文本模式——代码、数学和各种自然语言。在这项工作中,我们考虑了视觉数据的生成模型如何继承这些好处。LLM 有文本标记text tokens,而 Sora 有视觉补丁visual patches。补丁以前已被证明是视觉数据模型的有效表示。我们发现,补丁是一种高度可扩展且有效的表示,用于在不同类型的视频和图像上训练生成模型。

在高层次上,我们首先将视频压缩到低维的潜在空间中,从而将视频转换为补丁,19并随后将表示分解为时空斑块。

视频压缩网络Video compression network

我们训练了一个网络,可以降低视觉数据的维度。该网络将原始视频作为输入,并输出在时间和空间上都经过压缩的潜在表示。Sora在这个压缩的潜在空间中接受训练并随后生成视频。我们还训练了一个相应的解码器模型,该模型将生成的潜在对象映射回像素空间。

时空潜伏斑块Spacetime latent patches

给定一个压缩的输入视频,我们提取一系列时空补丁,这些补丁充当transformer 令牌。此方案也适用于图像,因为图像只是单帧视频。我们基于补丁的表示使 Sora 能够对可变分辨率、持续时间和纵横比的视频和图像进行训练。在推理时,我们可以通过在适当大小的网格中排列随机初始化的补丁来控制生成的视频的大小。

用于视频生成的Scaling transformers for video generation

Sora是一个扩散模型;给定输入的嘈杂补丁(以及文本提示等条件信息),它被训练来预测原始的“干净”补丁。重要的是,Sora是一个扩散Transformer。Transformer 在各个领域都表现出了非凡的扩展特性,包括语言建模、计算机视觉,和图像生成。

在这项工作中,我们发现扩散transformers也可以有效地扩展为视频模型。下面,我们展示了随着训练的进行,具有固定种子和输入的视频样本的比较。随着训练计算的增加,样本质量显著提高。

可变时长、分辨率、纵横比

过去的图像和视频生成方法通常将视频调整大小、裁剪或修剪为标准大小,例如,分辨率为 256x256 的 4 秒视频。我们发现,相反,以原生大小对数据进行训练有几个好处。

采样灵活性

Sora 可以对宽屏 1920x1080p 视频、垂直 1080x1920 视频以及介于两者之间的所有视频进行采样。这使 Sora 可以直接以原始纵横比为不同设备创建内容。它还使我们能够在以全分辨率生成之前以较小的尺寸快速制作内容原型 - 所有这些都使用相同的模型。

改进的取景和构图

我们根据经验发现,以原始纵横比对视频进行训练可以改善构图和取景。我们将 Sora 与模型的一个版本进行了比较,该模型将所有训练视频裁剪为正方形,这是训练生成模型时的常见做法。在方形裁剪上训练的模型(左)有时会生成视频,其中主体仅部分可见。相比之下,Sora(右)的视频改善了取景。

语言理解Language understanding

训练文本到视频生成系统需要大量带有相应文本标题的视频。我们应用了DALL·E 3到视频。我们首先训练一个高度描述性的字幕器模型,然后使用它为训练集中的所有视频生成文本字幕。我们发现,对高度描述性视频字幕的培训可以提高文本保真度以及视频的整体质量。

与DALL·E 3相似,我们还利用 GPT 将简短的用户提示转换为更长的详细字幕,然后发送到视频模型。这使 Sora 能够准确遵循用户提示生成高质量的视频。

使用图像和视频进行提示 Prompting with images and videos

也可以用其他输入提示 Sora,例如预先存在的图像或视频。此功能使 Sora 能够执行各种图像和视频编辑任务——创建完美循环的视频、为静态图像制作动画、在时间上向前或向后扩展视频等。

动画 DALL·E 图像

Sora 能够生成视频,提供图像和提示作为输入。下面我们展示基于DALL·E 231和 DALL·E 330图像。

Sora is generating from image

扩展生成的视频

Sora 还能够向前或向后扩展视频。以下是四个视频,它们都是从生成的视频片段开始向后扩展的。因此,四个视频的开头都与其他视频不同,但所有四个视频都指向相同的结局。

我们可以使用这种方法向前和向后扩展视频,以产生无缝的无限循环。

视频到视频编辑

扩散模型已经实现了多种从文本提示中编辑图像和视频的方法。下面我们应用其中一种方法,SDEdit,32到索拉。这种技术使 Sora 能够零镜头转换输入视频的风格和环境。

输入视频

连接视频

我们还可以使用 Sora 在两个输入视频之间逐渐插值,在具有完全不同主题和场景构图的视频之间创建无缝过渡。在下面的示例中,中间的视频在左侧和右侧的相应视频之间进行插值。

图像生成功能

Sora 还能够生成图像。为此,我们将高斯噪声的斑块排列在时间范围为一帧的空间网格中。该模型可以生成可变大小的图像,分辨率高达 2048x2048。

新兴的仿真功能

我们发现,视频模型在大规模训练时表现出许多有趣的涌现能力。这些功能使 Sora 能够模拟物理世界中人、动物和环境的某些方面。这些属性的出现对3D、物体等没有任何明确的归纳偏差——它们纯粹是尺度现象。

3D 一致性。Sora 可以生成具有动态相机运动的视频。随着摄像机的移动和旋转,人物和场景元素在三维空间中始终如一地移动。

远距离相干性和物体持久性。视频生成系统面临的一个重大挑战是在对长视频进行采样时保持时间一致性。我们发现,Sora通常(尽管并非总是)能够有效地对短期和长期依赖关系进行建模。例如,我们的模型可以保留人、动物和物体,即使它们被遮挡或离开框架。同样,它可以在单个样本中生成同一角色的多个镜头,从而在整个视频中保持它们的外观。  
与世界互动。Sora 有时可以以简单的方式模拟影响世界状态的动作。例如,画家可以在画布上留下新的笔触,这些笔触会随着时间的推移而持续存在,或者一个人可以吃汉堡并留下咬痕。
模拟数字世界。Sora还能够模拟人工过程,例如视频游戏。Sora 可以同时通过基本策略控制 Minecraft 中的玩家,同时还可以高保真地渲染世界及其动态。这些功能可以通过提示 Sora 提及“Minecraft”来零触发。
这些能力表明,视频模型的持续缩放是开发物理和数字世界以及生活在其中的物体、动物和人的高性能模拟器的一条有希望的道路。

讨论Discussion

Sora 目前作为模拟器表现出许多局限性。例如,它不能准确地模拟许多基本相互作用的物理特性,比如玻璃破碎。其他交互,如吃食物,并不总是能产生物体状态的正确变化。我们列举了模型的其他常见失效模式,例如在长时间样本中出现的不连贯性或物体的自发出现,在我们的 登陆页面.
我们相信,Sora今天所拥有的能力表明,视频模型的持续扩展是一条有前途的道路,可以开发物理和数字世界以及生活在其中的物体、动物和人的模拟器。
  • 58
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
问题: http://localhost:63040/content/swagger-ui.html打不开,该如何解决? 回答: 根据你提供的引用内容,有几种可能的解决方法。首先,你可以检查是否存在/typography.css文件,因为它可能是导致http://localhost:8080/swagger-ui.html无法显示的原因。如果该文件确实不存在,你可以尝试通过添加该文件或修复文件路径来解决此问题。\[1\] 另外,你还可以尝试使用代码来打开浏览器并访问Swagger UI页面。你可以在你的应用程序中添加一个类似于下面的代码段,其中的url变量应该是Swagger UI的URL链接: @Configuration public class XxxApplication { @EventListener({ApplicationReadyEvent.class}) public void ready() { System.out.println("Application is almost started ... opening the browser"); String url = "http://localhost:8080/swagger-ui.html"; Runtime runtime = Runtime.getRuntime(); try { runtime.exec("rundll32 url.dll,FileProtocolHandler " + url); } catch (IOException e) { e.printStackTrace(); } } }\[2\] 另外一种方法是在你的项目中添加一个默认的控制器,将根路径("/")重定向到index.html页面。你可以使用类似于下面的代码来实现这个功能: @Controller @RequestMapping("/") public class DefaultController { @RequestMapping("/") public String index() { return "forward:index.html"; } }\[3\] 希望这些方法能够帮助你解决问题。 #### 引用[.reference_title] - *1* [Empty /swagger-ui.html - 404 /typography.css](https://blog.csdn.net/weixin_39562234/article/details/118172901)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [- 如何访问localhost:8080直接打开swagger-ui界面](https://blog.csdn.net/Sora_Xu/article/details/106436231)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ankie(资深技术项目经理)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值