探索 Sora 背后的核心技术

2024年2月16日,OpenAI发布Sora文生视频模型,一石激起千层浪,迅速刷屏爆火于整个AI圈。一方面,Sora从文本、图像迈向视频大模型,这可以说是通向通用人工智能的里程碑事件;另一方面,训练和推理需求从文本、图像又增加一个视频维度,将拉动AI芯片、AI应用雨后春笋般的持续增长。

本文尝试在这里探讨、解读Sora背后的技术。下图是Sora算法脉络图,咱们沿着这张图介绍。

在这个万模都Transformer的时代,谷歌提出的Attention Is All You Need论文,是Transformer encoder-decoder架构的开山之作。读者一看这名字就感觉有梗。事实上这篇文章可以认为是最近几年以来深度学习里面最重要的文章之一,开创了继NLP、CNN和RNN之后的第四大类模型。Transformer最早运用在NLP领域,论文中提出的编码器、解码器、多头自注意和自回归等核心技术影响深远。

谷歌提出的ViT(An image is worth 16 x16 words: transformers for image recognition at scale)取代了CNN,打通了CV和NLP之间的鸿沟,而且挖了一个更大的多模态的坑。Vision Transformer,ViT未来有可能真就是一个简洁、高效、通用的视觉骨干网络,正如上图大家看到的一样。其实现原理是将NLP领域的Transformer借鉴到CV领域。原始输入图像作切块处理,每一个小方块就是一个patch。Patch Embedding编码就是将一个CV问题通过切块和展平转化为一个NLP问题。

OpenAI一提出CLIP(Contrastive Language-Image Pre-training)就立马火爆全场,CLIP预训练好后,能够在任意一个视觉分类数据集上取得不错的效果,而且更炸裂的是Zero-Shot,意思就是说它完全没有在目标数据集上做训练,就能得到很高的效果。最后还顺带产生了一个4亿图像-文本对WebImageText,WIT数据集。CLIP是一种基于对比文本-图像对的预训练方法或者模型。与CV中的一些对比学习方法如MoCo不同的是,CLIP的训练数据是文本-图像对,即一张图像和它对应的文本描述。通过对比学习,模型能够学习到文本-图像对的匹配关系。

OpenAI提出的DALL·E(Zero-Shot Text-to-Image Generation)文生图模型目标是把文本token和图像token当成一个数据序列,通过Transformer进行自回归。由于图片的分辨率很大,如果把单个pixel当成一个token处理,会导致计算量过于庞大,于是DALLE引入了一个dVAE降噪变分自编码模型来降低图片的分辨率。随后OpenAI把该模型升级到DALLE2,结合预训练CLIP和DDPM:Denoising Diffusion Probabiblistic Model扩散模型实现文本到对应图像生成。生成对抗网络GAN、变分自编码器VAE、扩散模型Diffusion models都具有强大的图像生成能力,DALLE和DALLE2分别用了不同的技术。其中,DDPM通过逐步添加噪声来模拟数据分布,然后学习逆向过程去除噪声,以生成新的数据。最后,DALLE3把chatGPT也引入了进来,让模型更理解上下文、关注更多细微差别。用户参与度高,能轻松地将想法(文本)转化为更加准确、丝滑的图像。以致相关应用火爆全球。

UC Berkeley和New York University联合提出的DIT: Scalable Diffusion Models with Transformers,是一种基于Transformer架构的新型扩散模型。它用Transformer替换常用的U-Net主干网络,训练了图像的潜在扩散模型Latent Diffusion Models。24年1月,团队二作谢赛宁团队推出了升级版SiT,Scalable Interpolant Transformer,相同的骨干实现了更好的质量、速度和灵活性。

至此,介绍了公认的Sora核心技术。当然要实现Sora,不可能就这么顺溜,就这样一步登天。笔者认为平常还得积累一些基础工作。

视频理解领域,Facebook AI Research提出了一种称为TimeSformer视频理解的新架构,这个架构完全基于Transformer,不使用卷积层。它通过分别对视频的时间和空间维度应用自注意力机制,有效地捕捉动作的时空特征。

多模态领域,来自Salesforce团队提出的BLIP: Bootstrapping Language-Image Pre-training for Unified Vision-Language Understanding and Generation,引导文本图像预训练,以实现统一的视觉语言理解和生成。BLIP是一个新的Vision Language Pre-training,VLP框架,与现有方法相比,它可以实现更广泛的下游任务。通过BLIP的CapFilter/Filter数据增强,得到了比WIT噪声更少的数据集。用户可以拿这个数据去训练VLMo,训练CoCa,训练BEiT系列,去训练各种各样的多模态大模型。BLIP未来可能是一个非常通用的工具。

当然,要复现论文,就不得不提到微软。这个团队最近几年出了很多大名鼎鼎的工作,比如说DeepSpeed基础大模型、BEiT系列和LayoutLM系列等等。感觉其工作思路的核心特色是开源,并努力降低模型的算力需求,以期匹配更多的玩家。其中,BEiTv3的核心思想是将图像建模为一种语言,这样用户就可以对图像、文本以及图像-文本对进行统一的Mask Modeling。Multi-Way Transformer模型可以有效地完成不同的视觉和视觉语言任务,使其成为通用建模的一个有效选择。另外,如果要做提示、微调或者说蒸馏大模型的话,InstructGPT、InstructBLIP是不错的两篇论文。由此延展,可以挖掘出很多工程技术来。

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

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

相关文章

基于Python网络爬虫的IT招聘就业岗位数据分析可视化推荐系统

文章目录 基于Python网络爬虫的IT招聘就业岗位数据分析可视化推荐系统项目概述招聘岗位数据爬虫分析系统展示用户注册登录系统首页IT招聘数据开发岗-javaIT招聘数据开发岗-PythonIT招聘数据开发岗-AndroidIT招聘数据开发岗-其它招聘岗位数据分析算法方面运维方面测试方面招聘岗…

Linux学习之system V

目录 一,system V共享内存 快速认识接口 shmget(shared memory get) shmat(shared memory attach) shmdt(shared memory delete) shmctl (shared memory control) 编写代码 综上那么共享内存与管道通信有什么区别? system v消息队列 system v信号…

08 MyBatis之查询专题(返回对象/Map/List封装Map/Map封装Map)+列名与属性名映射的三种方法

准备: INSERT INTO t_car (id, car_num, brand, guide_price, produce_time, car_type) VALUES (165, 6666, 丰田霸道, 32.00, 2020-11-11, 燃油车); INSERT INTO t_car (id, car_num, brand, guide_price, produce_time, car_type) VALUES (166, 1202, 大众速腾, 30.00, 2020…

搜维尔科技:AR/VR技术对制造业劳动力危机的影响

借助 AR/VR 的力量缩小现代制造业的技能差距 数字化转型仍然是企业的首要任务,其许多方面都需要人工干预。然而,推动此类举措所需的技术工人日益短缺。这就造成了我们所说的“制造业劳动力危机”。 了解以下详情: 制造业用工危机正在影响产…

算法沉淀——动态规划之回文串问题(上)(leetcode真题剖析)

算法沉淀——动态规划之回文串问题 01.回文子串02.最长回文子串03.分割回文串 IV04.分割回文串 II05.最长回文子序列06.让字符串成为回文串的最少插入次数 01.回文子串 题目链接:https://leetcode.cn/problems/palindromic-substrings/ 给你一个字符串 s &#xf…

Android 架构MVI、MVVM、MVC、MVP

目录 一、MVC(Model-View-Controller) 二、 MVP(Model-View-Presenter) 三. MVVM(Model-View-ViewModel) 四. MVI(Model-View-Intent) 五.MVI简单实现 先简单了解一下MVC、MVP和…

LabVIEW磁阻自动优化测量系统

LabVIEW磁阻自动优化测量系统 介绍了一种基于LabVIEW开发的磁阻自动优化测量系统,通过自动优化测试分辨率和高度模块化设计,大幅提升磁阻测试的效率和准确性。系统采用功率电源、电磁铁、高分辨率特斯拉计、步进电机转动器、精密电流源与精准电压表等硬…

ruoyi框架学习

RBAC模型 数据字典 拦截器 token没有,submit,request.js中,前端前置拦截器,响应拦截器 后台 注解

Word | 论文使用 Springer LNICST 工具包进行格式化

目录 Step1:下载 Springer LNICST 工具包 Step2:导入宏文件 Step3:处理导入失败(大概意思是这个宏不安全) Step4:导入成功并使用 Step1:下载 Springer LNICST 工具包 会议官网的 SUBMISSIO…

当你使用ChatGPT时,选择合适的提示(prompt)是引导对话方向的关键

马斯克曾说,人生中最重要的事情,就是提出真正的好问题。 因此,我要开始接触某个新领域,并且开始要自主学习的时候,我首先要问自己这个问题: 我为什么要学这个,学这个的目的是为了创造什么&#…

project.config.json 文件内容错误] project.config.json: libVersion 字段需为 string, string

家人们,遇到了一个新的报错 于是从网上找了各种方法,有说把开发者工具关闭重启的,有说开发者工具下载重新下载的,有说开发者工具路径安装得在C盘的,均没有效果 解决方法: 1、运行项目,在开发者…

软件需求分析报告(直接套用)

技术要求 1.1接口要求 1.2可靠性,稳定性,安全性,先进性,拓展性,性能,响应。 2.系统安全需求 2.1物理设计安全 2.2系统安全设计 2.3网络安全设计 2.4应用安全设计 2.5用户安全管理 全套资料过去进主页。

Vue3之属性传值的四种情况

文章目录 Vue3之属性传值的四种情况一、引言二、父组件向子组件传值三、子组件向父组件传值四、祖先组件向后代组件传值五、兄弟组件之间传值 Vue3之属性传值的四种情况 一、引言 在vue3中,组件与组件之间是可以传递属性的,包括三种类型: …

爱旅行平台的设计与实现

爱旅行平台的设计与实现 获取源码——》公主号:计算机专业毕设大全

Oracle中序列

1. Sequence 定义 在Oracle中可以用SEQUENCE生成自增字段。Sequence序列是Oracle中用于生成数字序列的对象,可以创建一个唯一的数字作为主键。 2. 为什么要用 Sequence 你可能有疑问为什么要使用序列? 不能使用一个存储主键的表并每次递增吗&#xf…

java 反射机制 (一)

java反射机制: 即通过外部文件配置,不修改文件源码的情况下,来控制程序,也符合设计模式的OCP原则(开闭原则:不修改源码,扩容原则) Java Reflection 1.反射机制允许程序在执行期间…

Spring中的事务和事务的传播机制

事务是一组操作的集合,不可以被分割。事务会把所有的操作作为一个整体,这组操作要么全部成功,要么全部失败。 事务有三种操作: 开启事务;提交事务;回滚事务。 如果代码的执行逻辑是这样: 开…

dolphinscheduler海豚调度(三)SQL任务

在之前的博文中,我们已经介绍了DolphinScheduler海豚调度的基本概念和模块,安装部署和元数据切换,以及Shell任务的实践。今天,让我们来深入探讨DolphinScheduler中另一种常见的任务类型:SQL任务。 SQL任务是DolphinSc…

弹窗内容由后端返回,如何让点击按钮的事件交由前端控制?

一、场景 背景:因为系统里经常有新活动或者公告需要通知所有用户,希望前端维护的这个弹窗里的内容可以由后端接口返回。这样就不需要每次上新活动的时候,前端项目都发版了。因此,前端维护了这个弹窗和它的关闭事件,至…

人工智能之Tensorflow常用API

TensorFlow的计算表现为数据流图,所以tf.Graph类中包含一系列表示计算的操作对象(tf.Operation),以及在操作之间流动的数据–张量对象(tf.Tensor)。 Graph tf.Graph类包含图相关的API操作,可以在jupyter notebook导入tensorflow之后执行hel…