Janus:开创统一的多模态理解和生成框架

Janus是DeepSeek开源的多模式自回归框架,统一了多模态理解和生成,既可以理解图片内容又可以生成图片。
在这里插入图片描述

1.简介

Janus 是一种新颖的自回归框架,它将多模态理解和生成统一起来。它通过将视觉编码解耦为单独的路径来解决以前方法的局限性,同时仍然使用单一、统一的转换器架构进行处理。这种解耦不仅缓解了视觉编码器在理解和生成中的角色冲突,而且还增强了框架的灵活性。Janus 超越了之前的统一模型,并且达到或超过了特定任务模型的性能。Janus 的简单性、高灵活性和有效性使其成为下一代统一多模态模型的有力候选者。

机构: DeepSeek-AI、香港大学和北京大学

Github地址:https://github.com/deepseek-ai/Janus

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

模型下载地址:https://huggingface.co/deepseek-ai/Janus-1.3B

2.模型摘要

Janus 是一种统一理解和生成的 MLLM,它将视觉编码解耦,以实现多模态理解和生成。Janus 基于 DeepSeek-LLM-1.3b-base 构建,该库在大约 500B 个文本标记的语料库上进行训练。对于多模态理解,它使用 SigLIP -L作为视觉编码器,支持 384 x 384 图像输入。对于图像生成,Janus 使用此处的标记器,下采样率为 16。
在这里插入图片描述

3.训练过程

Janus的训练分为三个阶段,如图所示。详细信息如下:在这里插入图片描述

第一阶段: 训练适配器和图像头。该阶段的主要目标是在嵌入空间内创建视觉和语言元素之间的概念联系,使LLM能够理解图像中显示的实体并具有初步的视觉生成能力。在此阶段,保持视觉编码器和 LLM 冻结,只允许更新理解适配器、生成适配器和图像头中的可训练参数。

第二阶段: 统一预训练。在这个阶段,使用多模态语料库进行统一预训练,使 Janus 能够学习多模态理解和生成。解冻 LLM 并利用所有类型的训练数据:纯文本数据、多模态理解数据和视觉生成数据。受 Pixart 的启发,首先使用 ImageNet-1k 进行简单的视觉生成训练,以帮助模型掌握基本的像素依赖性。随后,使用通用文本到图像数据增强了模型的开放域视觉生成能力。

第三阶段: 监督微调。在此阶段,使用指令调整数据对预训练模型进行微调,以增强其指令跟随和对话能力。微调除生成编码器之外的所有参数。专注于监督答案,同时屏蔽系统和用户提示。为了确保 Janus 精通多模态理解和生成,不会针对特定任务微调单独的模型。相反,混合使用纯文本对话数据、多模态理解数据和视觉生成数据,确保跨各种场景的多功能性。

4.模型扩展

值得注意的是,本文的设计具有用于理解和生成的单独编码器,非常简单且易于扩展。

多模式理解:
(1)对于多模态理解组件,可以选择更强的视觉编码器,而不必担心编码器是否能够处理视觉生成任务,例如EVA-CLIP、InternViT等。
(2)处理高分辨率图像,可以使用动态高分辨率技术。这允许模型缩放到任何分辨率,而无需对 ViT 执行位置嵌入插值。可以进一步压缩令牌以节省计算成本,例如使用像素洗牌操作。

视觉生成:
(1)对于视觉生成,可以选择更细粒度的编码器,以便在编码后保留更多的图像细节,例如MoVQGan 。
(2)可以采用专门为视觉生成设计的损失函数,例如扩散损失。
(3)在视觉生成过程中可以结合AR(因果注意力)和并行(双向注意力)方法来减少视觉生成过程中的累积误差。

支持附加模式:
Janus 的简单架构允许轻松与其他编码器集成,适应各种模式,例如 3D 点云、Tactile 和 EEG。这使 Janus 有潜力成为更强大的多模式通才模型。

5.实验

使用最大支持序列长度为 4096 的 DeepSeek-LLM (1.3B) 作为基础语言模型。对于理解任务中使用的视觉编码器,选择SigLIP-Large-Patch16-384 。生成编码器具有大小为 16、384 的码本,并将图像下采样 16 倍。理解适配器和生成适配器都是两层 MLP。
表 1 提供了每个阶段的详细超参数

所有图像的大小均调整为 384 × 384 像素。对于多模态理解数据,调整图像长边的大小并用背景颜色(RGB:127,127,127)填充短边以达到384。对于视觉生成数据,将短边调整为384,并且将短边调整为384。长边被裁剪为384。在训练过程中使用序列打包来提高训练效率。在单个训练步骤中根据指定的比率混合所有数据类型。Janus 使用 HAI-LLM [32] 进行训练和评估,这是一个构建在 PyTorch 之上的轻量级且高效的分布式训练框架。整个训练过程在 16 个节点的集群上花费了 7 天,每个节点配备 8 个 Nvidia A100 (40GB) GPU。

与多模态理解基准的最先进技术进行比较:

多模式理解性能: 将所提出的方法与表 2 中最先进的统一模型和仅理解模型进行了比较。Janus 在类似规模的模型中取得了总体最佳结果。具体来说,与之前最好的统一模型 Show-o 相比,在 MME 和 GQA 数据集上分别实现了 41% (949 → 1338) 和 30% (48.7 → 59.1) 的性能提升。这可以归因于 Janus 解耦了多模态理解和生成的视觉编码,减轻了这两个任务之间的冲突。与尺寸明显更大的型号相比,Janus 仍然具有很强的竞争力。例如,Janus 在多个数据集上的性能优于 LLaVA-v1.5 (7B),包括 POPE、MMbench、SEED Bench 和 MM-Vet。

视觉生成性能: 报告了 GenEval、COCO30K 和 MJHQ-30K 基准上的视觉生成性能。如表 3 所示, Janus 在 GenEval 上获得了 61% 的总体准确率,这优于之前最好的统一模型 Show-o (53%) 和一些流行的仅生成方法,例如 SDXL (55%) 和 DALL-E 2 (52%)。这表明本文的方法具有更好的指令跟踪能力。如表 4 所示,Janus 在 COCO-30K 和 MJHQ-30K 基准上分别实现了 8.53 和 10.10 的 FID,超越了统一模型 Show-o 和 LWM,并且与一些知名的仅生成方法相比表现出具有竞争力的性能。这表明 Janus 生成的图像具有良好的质量,并凸显了其在视觉生成方面的潜力。表2与多模态理解基准的最先进技术进行比较在这里插入图片描述
在这里插入图片描述

6.结论

在本文中,介绍了 Janus,一个简单、统一且可扩展​​的多模态理解和生成模型。 Janus的核心思想是解耦视觉编码以实现多模态理解和生成,这可以缓解由于理解和生成对视觉编码器的不同需求而产生的冲突。大量的实验证明了Janus的有效性和领先性能。还值得注意的是,Janus 非常灵活且易于扩展。除了在多模式理解和生成方面具有巨大的改进潜力之外,Janus 还可以轻松扩展以纳入更多输入模式。上述优点表明,Janus 可以为下一代多模式通用模型的开发提供灵感。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

jmeter发送post请求

在jmeter中,有两种常用的请求方式,get和post.它们两者的区别在于get请求的参数一般是放在路径中,可以使用用户自定义变量和函数助手等方式进行参数化,而post请求的参数不能随url发送,而是作为请求体提交给服务器。而在…

OpenWRT 和 Padavan 路由器配置网络打印机 实现远程打印

本文首发于只抄博客,欢迎点击原文链接了解更多内容。 前言 之前有给大家介绍过 Armbian 安装 CUPS 作为打印服务器,像是 N1 盒子、玩客云,甚至是随身 WiFi 都可以通过 CUPS 来进行打印。但是有些朋友不想专门为打印机添置一个设备&#xff0…

Spring AI 1.0.0 M1版本新特性!

Spring AI 1.0.0 M1版本新特性介绍 前言一、在1.0.0 M1版本中,主要有以下新特性:1.ChatModel2.ChatClient3.多模态的支持4.模型评估RequestResponseAdvisor接口MessageChatMemoryAdvisorPromptChatMemoryAdvisorQuestionAnswerAdvisor动态过滤表达式 Vec…

爬虫逆向-js进阶(续写,搭建网站)

1.搭建简单网站1 from flask import Flask,render_template import requests import json app Flask(name)# **location**的温度是**temp**度,天气状况:**desc**app.route(/) # 绑定处理函数 def index_url():location 101010100data get_weather(lo…

黑马JavaWeb-day02

什么是JavaScript? JavaScript:简称Js,是一门跨平台、面向对象的脚本语言。是用来控制网页行为的,它能使网页可交互 JavaScript和Java是完全不同的语言,无论是概念还是设计。但是基础语法类似。 JavaScript JavaScript引入方式…

第三方软件测试中心有什么特点?江苏软件测试中心推荐

随着软件市场的激烈竞争,软件企业越来越多,为了更好的服务用户以及专心于产品开发工作,将软件测试外包给第三方软件测试中心已经成为了行业发展趋势。第三方软件测试中心顾名思义就是区别于软件开发方和需求方的第三方存在,是专门…

使用 MongoDB 构建 AI:利用实时客户数据优化产品生命周期

在《使用 MongoDB 构建 AI》系列博文中,我们看到越来越多的企业正在利用 AI 技术优化产品研发和用户支持流程。例如,我们介绍了以下案例: Ventecon 的 AI 助手帮助产品经理生成和优化新产品规范 Cognigy 的对话式 AI 帮助企业使用任意语言&a…

《MYSQL实战45讲 》 优化器如何选择索引?

SHOW VARIABLES LIKE long_query_time; set long_query_time0 优化器如何选择索引? 1.扫描的行数 估计出各个索引大致的要扫描的行数,行数越少,效率越高。 索引的基数也叫区分度,就是这个索引所在的字段上不同的值又多少个。优…

10.21 多进程间通信-信号、消息队列

作业&#xff1a;使用消息队列实现两个进程间通信 编程代码&#xff1a;使用父子进程实现通信 msgsnd.c #include <myhead.h> //定义自定义函数用于接收僵尸进程 void handler(int signo){if(signoSIGCHLD){while(waitpid(-1,NULL,WNOHANG)>0);} } //定义存储消息队…

[云] Deploying Your First Serverless Application

• Goal: • Hands-on lab to get started with Serverless • Agenda: • Deploying Your First Serverless Application • Assignment Introduction Create and test function in AWS Lambda • Lets create an addition function using AWS Lambda. • To create the addi…

pipeline开发笔记

pipeline开发笔记 jenkins常用插件Build Authorization Token Root配置GitLab的webhooks(钩子)配置构建触发器--示例 piblish over sshBlue OceanWorkspace Cleanup PluginGit插件PipelineLocalization: Chinese (Simplified) --中文显示Build Environment Plugin 显示构建过程…

vscode离线状态ssh连接不断输入密码登不上:配置commit_id

如题&#xff0c;vscode在一个离线服务器上&#xff0c;通过remote-ssh登录远程服务器&#xff0c;不断弹出密码框&#xff0c;总是进不去&#xff0c;后来了解到主要是不同vscode版本需要下载对应抑制commit-id的vscode-server-linux-x64.tar.gz包。 1&#xff09;vscode, 点…

Jupyter Notebook汉化(中文版)

原版jupyter notebook是英文的&#xff0c;想要将其改为中文 在jupyter notebook所在环境输入以下命令 pip install jupyterlab-language-pack-zh-CN打开jupyter notebook&#xff0c;在设置语言中将其设置为中文

提升小学语文教学效果的思维导图方法

众所周知&#xff0c;教学不仅仅是站在讲台上传授知识&#xff0c;它还包括了备课、评估学生学习成果以及不断调整教学方法等多个环节。在面对教学中的各种挑战时&#xff0c;思维导图可以成为解决这些问题的有力工具。思维导图是一种利用图形来组织和表达发散性思维的工具&…

【DBA Part01】国产Linux上安装Oracle进行数据迁移

内容如下&#xff1a; 1.1.生产环境RHEL/OEL Linux8Oracle11gR2安装配置 1.2.国产麒麟操作系统Oracle11gR2安装配置 1.3.国产麒麟操作系统Oracle11gR2 RAC集群安装配置 1.4.Oracle11gR2迁移到国产麒麟操作系统&#xff08;单机/RAC&#xff09; 本阶段课程项目需求说明&am…

Spring配置/管理bean-IOC(控制反转) 非常详细!基于XML及其注解!案例分析! 建议复习收藏!

目录 1.Spring配置/管理bean介绍 2.基于XML配置bean 2.1基于id来获取bean对象 2.2基于类型获取bean对象 2.3通过指定构造器配置bean对象 2.4通过p名称空间配置bean 2.5通过ref配置bean(实现依赖注入) 2.6注入内部Bean对象&#xff0c;依赖注入另一种方式 2.7 注入集合…

PCL 基于距离阈值去除错误对应关系

目录 一、概述 1.1原理 1.2实现步骤 1.3应用场景 二、代码实现 2.1关键函数 2.1.1 获取初始对应点对 2.1.2 基于距离的对应关系筛选函数 2.1.3 可视化函数 2.2完整代码 三、实现效果 PCL点云算法汇总及实战案例汇总的目录地址链接&#xff1a; PCL点云算法与项目实…

批量处理文件权限:解决‘/usr/bin/chmod: Argument list too long’的有效方法

批量处理文件权限&#xff1a;解决‘/usr/bin/chmod: Argument list too long’的有效方法 错误原因解决方案1. 分批处理2. 使用xargs3. 增加ARG_MAX限制4. 使用脚本 结论 在Linux系统中&#xff0c;有时你可能会遇到这样的错误消息&#xff1a;“/usr/bin/chmod: Argument lis…

大数据之hive(分布式SQL计算工具)加安装部署

1.分布式SQL计算: 对数据进行统计分析&#xff0c; SQL是目前最为方便的编程工具. 2.hive:主要功能: 将 SQL语句翻译成MapReduce程序运行,提供用户分布式SQL计算能力 3.构建分布式SQL计算:(hive核心组件) 需要有: 一:元数据管理功能, 即&#xff1a;数据位置,数据结构,等对数…

SpringBoot篇(二、制作SpringBoot程序)

目录 一、代码位置 二、四种方式 1. IDEA联网版 2. 官网 3. 阿里云 4. 手动 五、在IDEA中隐藏指定文件/文件夹 六、复制工程-快速操作 七、更改引导类别名 一、代码位置 二、四种方式 1. IDEA联网版 2. 官网 官网制作&#xff1a;Spring Boot 3. 阿里云 阿里云版制…