NÜWA:女娲算法,多模态预训练模型,大杀四方!(附源代码下载)

2024-03-06 19:50

本文主要是介绍NÜWA:女娲算法,多模态预训练模型,大杀四方!(附源代码下载),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

关注并星标

从此不迷路

计算机视觉研究院

d34de08808720d844682f11a6df654f9.gif

f8b2502b7c876cc963e9327c5f7f10c6.gif

公众号ID|ComputerVisionGzq

学习群|扫码在主页获取加入方式

1867cc65552dd0cf2e07d6134927f878.png

af49cfa4ce36e1fe0f0d55681faabd64.png

论文地址:https://arxiv.org/abs/2111.12417

源代码:https:// github.com/microsoft/NUWA

计算机视觉研究院专栏

作者:Edison_G

最近看到一篇论文,名字首先吸引了,内容大概看了后,觉得还是不错的,今天有幸给大家慢慢分享,有兴趣的同学可以阅读论文,深入继续了解!

一、前言

今天分享的论文,主要提出了一个统一的多模态预训练模型,称为NÜWA,可以为各种视觉合成任务生成新的或操纵现有的视觉数据(即图像和视频)。针对不同场景同时覆盖语言、图像和视频,设计了3D Transformer编码器-解码器框架,不仅可以将视频作为3D数据处理,还可以分别将文本和图像作为1D和2D数据进行适配。还提出了3D Nearby Attention(3DNA)机制来考虑视觉数据的性质并降低计算复杂度。在8个下游任务上评估NÜWA。与几个强大的基线相比,NÜWA在文本到图像生成、文本到视频生成、视频预测等方面取得了最先进的结果。此外,它还显示了令人惊讶的良好的文本零样本能力——引导图像和视频处理任务。

4ad139977ed8bff3bf9351b8c4fe7bc5.png

8个任务的案例

二、背景

如今,网络变得比以往任何时候都更加视觉化,图像和视频已成为新的信息载体,并已被用于许多实际应用中。在此背景下,视觉合成正成为越来越受欢迎的研究课题,其目的是构建可以为各种视觉场景生成新的或操纵现有视觉数据(即图像和视频)的模型。

自回归模型【Auto-regressive models在视觉合成任务中发挥着重要作用,因为与GAN相比,它们具有显式的密度建模和稳定的训练优势。早期的视觉自回归模型,如PixelCNN、PixelRNN、Image Transformer、iGPT和Video Transformer,都是以“pixel-by-pixel”的方式进行视觉合成的。然而,由于它们在高维视觉数据上的高计算成本,这些方法只能应用于低分辨率的图像或视频,并且难以扩展。

最近,随着VQ-VAE作为离散视觉标记化方法的出现,高效和大规模的预训练可以应用于图像的视觉合成任务(例如DALL-E和CogView) 和视频(例如GODIVA)。尽管取得了巨大的成功,但此类解决方案仍然存在局限性——它们分别处理图像和视频,并专注于生成它们中的任何一个。这限制了模型从图像和视频数据中受益。


三、NÜWA的表现

  • Text-To-Image(T2I)

fc2f9f195be67aebcf0039e724403e23.png

一只戴着护目镜,盯着摄像机的狗

fcefb1c13434d4084a9a0f7fd72c59c6.png

  • Sketch-To-Image (S2I)

2f1c60ca674074ce75ab2ca53d695b24.png

草图转图片任务,就是根据草图的布局,生成对应的图片

  • Image Completion (I2I)

5fb642a54dfb24fd9382d8e940946a97.png

图像补全,如果一副图片残缺了,算法可以自动“脑补”出残缺的部分

c819d4884789af19940099df5fdbd799.png

  • Image Manipulation (TI2I)

c38a71c9dc0e443aa2f8d3354ee92d19.png

图片处理,根据文字描述,处理图片

例如:有一副草原的图片,然后增加一段描述:一匹马奔跑在草原上,然后就可以生成对应的图片。

db0c0c0a2b440449c02fbe362ba71610.png

  • Video

e2df0d0c8a88685e05f6c8eab094e7a5.png


四、新框架

a925e55bf56d2550286dadaea451aafa.png

NÜWA模型的整体架构包含一个支持多种条件的 adaptive 编码器和一个预训练的解码器,能够同时使图像和视频的信息。对于图像补全、视频预测、图像处理和视频处理任务,将输入的部分图像或视频直接送入解码器即可。

d7578bf74131735f50dbd436d22c130f.png

而编码解码器都是基于一个3D NEARBY SELF-ATTENTION(3DNA)建立的,该机制可以同时考虑空间和时间轴的上局部特性,定义如下:

3960440be81bdf4d037fbd1d4aa677b8.png

W 表示可学习的权重,X 和 C 分别代表文本、图像、视频数据的 3D 表示。

3DNA考虑了完整的邻近信息,并为每个token动态生成三维邻近注意块。注意力矩阵还显示出3DNA的关注部分(蓝色)比三维块稀疏注意力和三维轴稀疏注意力更平滑。

  • 3D DATA REPRESENTATION

为了涵盖所有文本、图像和视频或其草图,研究者将它们全部视为标记并定义统一的 3D符号X∈Rh×w×s×d,其中h和w表示空间轴(分别为高度和宽度)中的标记数量,s表示时间轴上的标记数量,d是每个标记的维度。

  • 3D NEARBY SELF-ATTENTION

基于之前的3D数据表示定义了一个统一的3D Nearby Self-Attention (3DNA) 模块,支持自注意力和交叉注意力。首先给出方程中3DNA的定义:

cd4b01918ff9da75da4d127c54dbb580.png

并在如下等式中介绍详细的实现。

2e86af53319de898201a82f522cce028.png

1f7ee409a1162b92edab405bd987673f.png

4255b3add4f33fb65e05a51cec52e5e1.png

  • 3D ENCODER-DECODER

开始介绍基于3DNA构建的3D编码-解码器。为了在C∈Rh′×w′×s′×din的条件下生成目标Y∈Rh×w×s×dout,Y和C的位置编码通过考虑高度、宽度和时间轴的三个不同的可学习词汇更新。

07228357431dec656753c8a466d37153.png

然后,条件C被输入到具有L 3DNA层堆栈的编码器中,以对自注意力交互进行建模,第l层在等式中表示:

ff574cf9bf24340f8383361b705b02b8.png

同样,解码器也是一堆L 3DNA层。解码器计算生成结果的自注意力以及生成结果和条件之间的交叉注意力。第l层表示如下等式。

ed7a0a072a457fc2bd217c54ee6adeaf.png

五、实验简单分析

9c4424a07688dbc12de1a3a7cc210a68.png

a0f87ec8e7617ac27f4cf326542a46da.png

其他实验可在论文中获取!

© The Ending

转载请联系本公众号获得授权

9e3c401dd92d42b040a3448226ce4749.gif

计算机视觉研究院学习群等你加入!

计算机视觉研究院主要涉及深度学习领域,主要致力于人脸检测、人脸识别,多目标检测、目标跟踪、图像分割等研究方向。研究院接下来会不断分享最新的论文算法新框架,我们这次改革不同点就是,我们要着重”研究“。之后我们会针对相应领域分享实践过程,让大家真正体会摆脱理论的真实场景,培养爱动手编程爱动脑思考的习惯!

dcb8840c209e3692aed3eae9d4bc7de9.png

扫码关注

计算机视觉研究院

公众号ID|ComputerVisionGzq

学习群|扫码在主页获取加入方式

 往期推荐 

🔗

  • 实用教程详解:模型部署,用DNN模块部署YOLOv5目标检测(附源代码)

  • LCCL网络:相互指导博弈来提升目标检测精度(附源代码)

  • Poly-YOLO:更快,更精确的检测(主要解决Yolov3两大问题,附源代码)

  • ResNet超强变体:京东AI新开源的计算机视觉模块!(附源代码)

  • Double-Head:重新思考检测头,提升精度(附原论文下载)

  • MUCNetV2:内存瓶颈和计算负载问题一举突破?分类&检测都有较高性能(附源代码下载)

  • 旋转角度目标检测的重要性!!!(附源论文下载)

  • 双尺度残差检测器:无先验检测框进行目标检测(附论文下载)

  • Fast YOLO:用于实时嵌入式目标检测(附论文下载)

  • Micro-YOLO:探索目标检测压缩模型的有效方法(附论文下载)

  • 目标检测干货 | 多级特征重复使用大幅度提升检测精度(文末附论文下载)

这篇关于NÜWA:女娲算法,多模态预训练模型,大杀四方!(附源代码下载)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/781142

相关文章

Golang的CSP模型简介(最新推荐)

《Golang的CSP模型简介(最新推荐)》Golang采用了CSP(CommunicatingSequentialProcesses,通信顺序进程)并发模型,通过goroutine和channe... 目录前言一、介绍1. 什么是 CSP 模型2. Goroutine3. Channel4. Channe

Python中的随机森林算法与实战

《Python中的随机森林算法与实战》本文详细介绍了随机森林算法,包括其原理、实现步骤、分类和回归案例,并讨论了其优点和缺点,通过面向对象编程实现了一个简单的随机森林模型,并应用于鸢尾花分类和波士顿房... 目录1、随机森林算法概述2、随机森林的原理3、实现步骤4、分类案例:使用随机森林预测鸢尾花品种4.1

Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)

《Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)》:本文主要介绍Python基于火山引擎豆包大模型搭建QQ机器人详细的相关资料,包括开通模型、配置APIKEY鉴权和SD... 目录豆包大模型概述开通模型付费安装 SDK 环境配置 API KEY 鉴权Ark 模型接口Prompt

大模型研发全揭秘:客服工单数据标注的完整攻略

在人工智能(AI)领域,数据标注是模型训练过程中至关重要的一步。无论你是新手还是有经验的从业者,掌握数据标注的技术细节和常见问题的解决方案都能为你的AI项目增添不少价值。在电信运营商的客服系统中,工单数据是客户问题和解决方案的重要记录。通过对这些工单数据进行有效标注,不仅能够帮助提升客服自动化系统的智能化水平,还能优化客户服务流程,提高客户满意度。本文将详细介绍如何在电信运营商客服工单的背景下进行

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

康拓展开(hash算法中会用到)

康拓展开是一个全排列到一个自然数的双射(也就是某个全排列与某个自然数一一对应) 公式: X=a[n]*(n-1)!+a[n-1]*(n-2)!+...+a[i]*(i-1)!+...+a[1]*0! 其中,a[i]为整数,并且0<=a[i]<i,1<=i<=n。(a[i]在不同应用中的含义不同); 典型应用: 计算当前排列在所有由小到大全排列中的顺序,也就是说求当前排列是第

csu 1446 Problem J Modified LCS (扩展欧几里得算法的简单应用)

这是一道扩展欧几里得算法的简单应用题,这题是在湖南多校训练赛中队友ac的一道题,在比赛之后请教了队友,然后自己把它a掉 这也是自己独自做扩展欧几里得算法的题目 题意:把题意转变下就变成了:求d1*x - d2*y = f2 - f1的解,很明显用exgcd来解 下面介绍一下exgcd的一些知识点:求ax + by = c的解 一、首先求ax + by = gcd(a,b)的解 这个

Andrej Karpathy最新采访:认知核心模型10亿参数就够了,AI会打破教育不公的僵局

夕小瑶科技说 原创  作者 | 海野 AI圈子的红人,AI大神Andrej Karpathy,曾是OpenAI联合创始人之一,特斯拉AI总监。上一次的动态是官宣创办一家名为 Eureka Labs 的人工智能+教育公司 ,宣布将长期致力于AI原生教育。 近日,Andrej Karpathy接受了No Priors(投资博客)的采访,与硅谷知名投资人 Sara Guo 和 Elad G

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

【数据结构】——原来排序算法搞懂这些就行,轻松拿捏

前言:快速排序的实现最重要的是找基准值,下面让我们来了解如何实现找基准值 基准值的注释:在快排的过程中,每一次我们要取一个元素作为枢纽值,以这个数字来将序列划分为两部分。 在此我们采用三数取中法,也就是取左端、中间、右端三个数,然后进行排序,将中间数作为枢纽值。 快速排序实现主框架: //快速排序 void QuickSort(int* arr, int left, int rig