Janus-Pro

  • 摘要
  • Abstract
  • 文章信息
  • 引言
  • 方法
    • Janus 架构
    • Janus 训练
    • Janus-Pro 的改进
  • 实验结果
  • 总结

摘要

本篇博客介绍了Janus-Pro,这是一个突破性的多模态理解与生成统一模型,其核心思想是通过解耦双路径视觉编码架构解决传统方法中语义理解与像素生成的任务冲突。针对统一编码器在高低层次特征需求上的矛盾,Janus-Pro采用SigLIP编码器提取图像语义特征(理解路径)与VQ Tokenizer建模像素细节(生成路径),再通过自回归Transformer联合训练;针对训练效率低的问题,提出三阶段优化策略:延长ImageNet基础生成训练、采用高密度文本-图像数据预训练、调整微调数据配比,使训练周期缩短20%;同时引入9000万结构化理解数据和7200万合成美学生成数据,平衡多任务性能。实验表明,Janus-Pro在MMBench(79.2)和GenEval(0.80)上达到SOTA,生成稳定性显著提升。然而,受限于384×384分辨率,其在细粒度识别和图像细节还原上仍有不足。未来研究可探索更高分辨率输入、动态特征融合机制,以及跨模态对齐损失优化,进一步突破多模态统一架构的语义-细节平衡瓶颈。

Abstract

This blog introduces Janus-Pro, a groundbreaking unified model for multimodal understanding and generation. Its core innovation lies in a decoupled dual-path visual encoding architecture that resolves the inherent conflict between semantic comprehension and pixel-level generation tasks in traditional unified encoders. To address the contradictory demands for high-level semantic features (understanding) and low-level pixel details (generation), Janus-Pro employs a SigLIP encoder to extract image semantic features (understanding path) and a VQ Tokenizer to model pixel-level details (generation path), unified via joint training with an autoregressive Transformer. To enhance training efficiency, it proposes a three-stage optimized strategy: prolonging ImageNet-based foundational training, adopting high-density text-image data for pretraining, and adjusting fine-tuning data ratios, reducing the training cycle by 20%. The model further balances multitask performance by integrating 90 million structured understanding samples and 72 million synthetic aesthetic generation datasets. Experiments demonstrate SOTA results on MMBench (79.2) and GenEval (0.80), with significantly improved generation stability. However, constrained by 384×384 resolution, challenges remain in fine-grained recognition and intricate detail restoration. Future research should explore higher-resolution inputs, dynamic feature fusion mechanisms, and cross-modal alignment loss optimization to further bridge the semantic-detail trade-off in unified multimodal architectures.


文章信息

Title:Janus-Pro: Unified Multimodal Understanding and Generation with Data and Model Scaling
Author:Xiaokang Chen, Zhiyu Wu, Xingchao Liu, Zizheng Pan, Wen Liu, Zhenda Xie, Xingkai Yu, Chong Ruan
Source:https://arxiv.org/abs/2501.17811


引言

近年来,多模态大模型在理解和生成任务上取得了显著进展,成为人工智能领域的核心研究方向之一。传统方法通常采用统一的视觉编码器处理多模态输入,但由于理解和生成任务对视觉特征的需求存在本质差异(前者需要高层次的语义信息,后者依赖低层次的像素级建模),这种架构容易导致性能冲突。例如,生成任务对图像细节的建模要求可能削弱理解任务的语义捕捉能力,反之亦然。为了解决这个问题,Janus 提出解耦两种任务的视觉编码,这缓解了多模态理解和生成任务之间的冲突,在这两项任务中都实现了出色的性能。
Janus在1.5B的参数规模上验证了可行性,其仍存在明显局限:
(1)训练策略效率低下,例如在预训练阶段需分阶段处理ImageNet数据和文本生成数据,导致计算资源浪费;
(2)训练数据规模和质量不足,尤其在文本到图像生成任务中,真实数据噪声大、合成数据缺乏美学优化,影响生成稳定性;
(3)模型容量受限,无法充分发挥解耦架构的潜力。
为了解决上述问题,本文介绍的Janus-Pro,从三个维度对Janus进行全面升级:

  1. 训练策略优化:重新设计三阶段训练流程,延长ImageNet数据建模时间以增强像素依赖学习,并在预训练阶段直接采用高质量文本生成数据,提升效率。
  2. 数据扩展与平衡:引入9000万理解任务样本(含表格、图表等结构化数据)和7200万合成美学图像数据,通过1:1的真实-合成数据比例改善生成质量。
  3. 模型规模化验证:将参数量从1.5B扩展至7B,证明解耦架构的可扩展性,并通过实验发现大模型在多任务损失收敛速度上显著优于小模型。

这些改进使Janus-Pro在多模态理解和生成任务上均超越现有SOTA模型。

方法

Janus 架构

Janus-pro 的架构与 Janus 的架构一致。所以在此小节先介绍Janus。
对于多模态理解,通常遵循LLaVA的设计,使用视觉编码器作为桥梁,使大语言模型能够理解图像。对于生成,通常基于扩散模型,也有一些基于自回归方法。一些方法试图使用单个Transformer试图统一多模态理解与生成任务,其通常使用单一视觉编码器处理两个任务的输入。
然而,多模态理解与生成任务所需要的表示有所差异。在多模态理解任务中,视觉编码器的目的是提取高层次的语义信息(如物体类别或者视觉属性),输出不仅涉及从图像中提取信息,还涉及复杂的语义推理,编码器主要集中于高维语义表示。生成任务主要关注于生成局部细节并在图像中保持全局一致性,因此需要低维度编码表示空间结构和纹理细节。在同一空间中将两种任务的表示进行统一会导致冲突。
Janus包含2个独立的视觉编码路径,分别用于多模态理解、生成,并带来两个收益:

  1. 缓解了源自多模态理解和生成不同粒度需求的冲突
  2. 具有灵活性和可扩展性,解耦后,理解和生成任务都可以采用针对其领域最先进的编码技术
    在这里插入图片描述
  • 对于文本理解,使用LLM内置Tokenizer将文本转换为离散IDs;
  • 对于多模态理解,使用SigLIP编码器抽取图片中的高维语义特征(笔者注:Cosmos中在Guardrails部分同样使用SigLIP编码器),使用Adaptor(2层MLP)将抽取特征映射到LLM的文本特征空间中;
  • 对于视觉生成,使用VQ Tokenizer将图像转换为离散IDs,使用Adaptor(2层MLP)将每个ID映射到LLM的文本特征空间中;

无论是视觉生成还是多模态理解任务,图片特征序列和文本特征序列都会连接在一起,作为LLM(文中使用DeepSeek-LLM 1.3B)的输入。

The built-in prediction head of the LLM is utilized for text predictions in both the pure text understanding and multimodal understanding tasks, while a randomly initialized prediction head is used for image predictions in the visual generation task. The entire model adheres to an autoregressive framework without the need for specially designed attention masks.
LLM 的内置预测头用于纯文本理解和多模态理解任务中的文本预测,而随机初始化的预测头用于视觉生成任务中的图像预测。整个模型遵循自回归框架,不需要专门设计的注意力掩码。

Janus 训练

Janus的训练分为3个阶段:

  1. stage1:训练Adaptor与Image Head,在嵌入空间创建语言元素与视觉元素之间的联系,使得LLM能够理解图像中的实体,并具备初步视觉生成能力。其中对于多模态理解,使用来自SHareGPT4V125万个图像-文本配对字幕数据,格式:<图像><文本>;对于视觉生成,使用来自ImageNet1k的120万个样本,格式:<类别名><图像>。
  2. stage2:统一预训练,使用多模态语料库进行统一预训练,学习多模态理解和生成。在该阶段使用纯文本数据、多模态理解数据和视觉生成数据。使用ImageNet-1k进行简单的视觉生成训练,随后使用通用文本到图像数据提升模型开放领域的视觉生成能力。
  3. stage3:监督微调,使用指令微调数据对预训练模型进行微调,以增强其遵循指令和对话的能力。微调除生成编码器之外的所有参数。在监督答案的同时,对系统和用户提示进行遮盖。为了确保Janus在多模态理解和生成方面都具备熟练度,不会针对特定任务分别微调模型。相反,我们使用纯文本对话数据、多模态理解数据和视觉生成数据的混合数据,以确保在各种场景下的多功能性。

在这里插入图片描述
训练目标 Janus是自回归模型,训练使用交叉熵损失函数,对于纯文本理解和多模态理解任务,在文本序列计算损失。对于视觉生成任务,仅在图像序列上计算损失。为了保持设计简单,没有为不同任务分配不同的损失权重。
推理 使用下一个词元预测方法,对于纯文本理解和多模态理解,从预测分布中依次采样词元。对于图像生成,使用无分类器引导。

Janus-Pro 的改进

Janus训练数据有限且模型容量(1B)相对较小,在一些方面存在不足,如在短提示下的图像生成表示不佳,文本到图像生成的质量不稳定。Janus-Pro的架构与Janus相同。
在这里插入图片描述
Janus 的改进主要在三个方面:训练策略、数据规模和模型规模。

训练策略上:

  1. 延长 stage1 的训练,在 ImageNet 数据集上充分训练,即便 LLM 参数固定,模型也能有效建模像素依赖并生成合理图像;
  2. stage2 中不再使用ImageNet,直接使用正常文本到图像数据训练模型基于密集描述生成图像,提高训练效率和整体性能。
  3. 调整 stage3 监督微调过程中不同类型数据集的数据比例,从 7:3:10 调整为 5:1:4,在保持视觉生成能力的同时提升多模态理解性能。

数据规模上:
在多模态理解和视觉生成方面均扩展了训练数据。

多模态理解中,第二阶段预训练数据参考 DeepSeekVL2 添加约 9000 万个样本,包括图像字幕数据集、表格图表和文档理解数据;第三阶段监督微调数据也加入了 DeepSeek-VL2 的其他数据集,如 MEME 理解、中文对话数据等,丰富了模型处理任务的能力和对话体验。

视觉生成中,Janus 之前使用的真实世界数据质量欠佳且有噪声,导致文本到图像生成不稳定。Janus-Pro 引入约 7200 万个合成美学数据样本,统一预训练阶段真实数据与合成数据比例为 1:1,实验表明使用合成数据训练模型收敛更快,生成的图像更稳定且美学质量更高。

模型规模上,Janus 使用 1.5B参数的 LLM 验证了视觉编码解耦的有效性,Janus-Pro 将模型扩展到 7B 参数。实验观察到,使用更大规模的 LLM 时,多模态理解和视觉生成的损失收敛速度比小模型显著提升,进一步验证了该方法的强扩展性。

实验结果

多模态理解性能
在这里插入图片描述
在多个广泛认可的基于图像的视觉语言基准测试中评估 Janus-Pro,包括 GQA、POPE、MME 等。结果显示 Janus-Pro 取得总体最佳成绩,这得益于其对多模态理解和生成的视觉编码解耦,缓解了两个任务间的冲突。
与参数规模大得多的模型相比,Janus-Pro 也极具竞争力,例如 Janus-Pro-7B 在除 GQA 外的所有基准测试中均优于 TokenFlow-XL(13B)。

视觉生成性能
在这里插入图片描述
在 GenEval 基准测试中评估文本到图像的生成能力,Janus-Pro-7B 总体准确率达到 80%超越了所有其他统一模型或仅用于生成的模型,如 Transfusion、SD3-Medium 和 DALL-E 3 等,这表明该模型具有更好的指令跟随能力。
在这里插入图片描述
在 DPG-Bench 基准测试中,Janus-Pro 得分为 84.19,超过所有其他方法,证明 Janus-Pro 在遵循密集指令进行文本到图像生成方面表现出色。

Janus-pro 代码:https://github.com/deepseek-ai/Janus

总结

Janus-Pro作为多模态理解与生成统一架构的突破性模型,其核心在于双路径视觉编码器与三阶段训练策略的协同优化:通过独立的SigLIP编码器(提取语义特征)和VQ Tokenizer(捕捉像素细节)分别处理理解与生成任务,再将特征序列拼接输入自回归Transformer联合训练;训练流程上,第一阶段延长ImageNet数据学习以强化生成基础,第二阶段直接采用高密度文本-图像数据提升效率,第三阶段调整数据配比以平衡多任务性能。该方法在多模态理解(MMBench 79.2)和生成(GenEval 0.80)上实现SOTA,生成稳定性显著提升,但受限于384×384分辨率,存在细粒度识别不足和图像细节缺失的缺陷。未来研究可探索更高分辨率输入、动态特征融合机制,以及跨模态对齐损失的优化,以进一步突破多模态统一架构的语义-细节平衡瓶颈。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/82606.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/82606.shtml
英文地址,请注明出处:http://en.pswp.cn/diannao/82606.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL 数据操纵与数据库优化

MySQL数据库的DML 一、创建&#xff08;Create&#xff09; 1. 基本语法 INSERT INTO 表名 [(列名1, 列名2, ...)] VALUES (值1, 值2, ...); 省略列名条件&#xff1a;当值的顺序与表结构完全一致时&#xff0c;可省略列名&#xff08;需包含所有字段值&#xff09;批量插…

(9)被宏 QT_DEPRECATED_VERSION_X_6_0(“提示内容“) 修饰的函数,在 Qt6 中使用时,会被编译器提示该函数已过时

&#xff08;1&#xff09;起因是看到 Qt 的官方源代码里有这样的写法&#xff1a; #if QT_DEPRECATED_SINCE(6, 0) //里面的都是废弃的成员函数QT_WARNING_PUSHQT_WARNING_DISABLE_DEPRECATEDQT_DEPRECATED_VERSION_X_6_0("Use the constructor taking a QMetaType inst…

【bibtex4word】在Word中高效转换bib参考文献,Texlive环境安装bibtex4word插件

前言 现已退出科研界&#xff0c;本人水货一个。希望帮到有缘人 本篇关于如何将latex环境中的参考文献bib文件转化为word&#xff0c;和一些踩坑记录。 可以看下面的资料进行配置&#xff0c;后面的文字是这些资料的补充说明。 参考文章&#xff1a;https://blog.csdn.net/g…

Python 自动化脚本开发秘籍:从入门到实战进阶(6/10)

摘要&#xff1a;本文详细介绍了 Python 自动化脚本开发的全流程&#xff0c;从基础的环境搭建到复杂的实战场景应用&#xff0c;再到进阶的代码优化与性能提升。涵盖数据处理、文件操作、网络交互、Web 测试等核心内容&#xff0c;结合实战案例&#xff0c;助力读者从入门到进…

理解反向Shell:隐藏在合法流量中的威胁

引言 在网络安全领域&#xff0c;​​反向Shell&#xff08;Reverse Shell&#xff09;​​ 是一种隐蔽且危险的攻击技术&#xff0c;常被渗透测试人员和攻击者用于绕过防火墙限制&#xff0c;获取对目标设备的远程控制权限。与传统的“正向Shell”&#xff08;攻击者主动连接…

无人机电池储存与操作指南

一、正确储存方式 1. 储存电量 保持电池在 40%-60% 电量&#xff08;单片电压约3.8V-3.85V&#xff09;存放&#xff0c;避免满电或空电长期储存。 满电存放会加速电解液分解&#xff0c;导致鼓包&#xff1b;**空电**存放可能引发过放&#xff08;电压低于3.0V/片会永久…

怎样选择成长股 读书笔记(一)

文章目录 第一章 成长型投资的困惑一、市场不可预测性的本质困惑二、成长股的筛选悖论三、管理层评估的认知盲区四、长期持有与估值波动的博弈五、实践中的认知升级路径总结&#xff1a;破解困惑的行动框架 第二章 如何阅读应计制利润表一、应计制利润表的本质与核心原则1. 权责…

深入浅出之STL源码分析6_模版编译问题

1.模版编译原理 当我们在代码中使用了一个模板&#xff0c;触发了一个实例化过程时&#xff0c;编译器就会用模板的实参&#xff08;Arguments&#xff09;去替换&#xff08;Substitute&#xff09;模板的形参&#xff08;Parameters&#xff09;&#xff0c;生成对应的代码。…

无人甘蔗小车履带式底盘行走系统的研究

1.1 研究背景与意义 1.1.1 研究背景 甘蔗作为全球最重要的糖料作物之一&#xff0c;在农业经济领域占据着举足轻重的地位。我国是甘蔗的主要种植国家&#xff0c;尤其是广西、广东、云南等地&#xff0c;甘蔗种植面积广泛&#xff0c;是当地农业经济的重要支柱产业。甘蔗不仅…

LVGL(lv_slider滑动条)

文章目录 一、lv_slider 是什么&#xff1f;二、创建一个滑块设置滑块的范围和初始值 三、响应滑块事件四、设置样式示例&#xff1a;更改滑块颜色和滑块按钮样式 五、纵向滑块&#xff08;垂直方向&#xff09;六、双滑块模式&#xff08;范围选择&#xff09;七、获取滑块的值…

每日算法-250511

每日算法 - 250511 记录一下今天刷的几道LeetCode题目&#xff0c;主要是关于贪心算法和数组处理。 1221. 分割平衡字符串 题目 思路 贪心 解题过程 我们可以遍历一次字符串&#xff0c;维护一个计数器 balance。当遇到字符 L 时&#xff0c;balance 增加&#xff1b;当遇…

Keepalived + LVS + Nginx 实现高可用 + 负载均衡

目录 Keepalived Keepalived 是什么&#xff08;高可用&#xff09; 安装 Keepalived LVS LVS 是什么&#xff08;负载均衡&#xff09; 安装 LVS Keepalived LVS Nginx 实现 高可用 负载均衡 Keepalived Keepalived 是什么&#xff08;高可用&#xff09; Keepaliv…

【杂谈】-DeepSeek-GRM:让AI更高效、更普及的先进技术

DeepSeek-GRM&#xff1a;让AI更高效、更普及的先进技术 文章目录 DeepSeek-GRM&#xff1a;让AI更高效、更普及的先进技术1、DeepSeek-GRM&#xff1a;先进的AI框架解析2、DeepSeek-GRM&#xff1a;AI开发的变革之力3、DeepSeek-GRM&#xff1a;广泛的应用前景4、企业自动化解…

【MySQL】页结构详解:页的大小、分类、头尾信息、数据行、查询、记录及数据页的完整结构

&#x1f4e2;博客主页&#xff1a;https://blog.csdn.net/2301_779549673 &#x1f4e2;博客仓库&#xff1a;https://gitee.com/JohnKingW/linux_test/tree/master/lesson &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01; &…

【FreeRTOS】基于G431+Cubemx自用笔记

系列文章目录 留空 文章目录 系列文章目录前言一、从头开始创建一个FreeRTOS工程1.1 在 "Timebase Source" 中&#xff0c;选择其他TIM1.2 配置FreeRTOS的参数1. 3 添加任务 二、动态任务的创建/删除2.1 函数介绍2.1.1 创建动态任务xTaskCreate()2.1.2 创建静态任务…

LVGL(lv_bar进度条)

文章目录 一、lv_bar 是什么&#xff1f;二、基本使用创建一个进度条设置进度值 三、条形方向与填充方向四、范围模式&#xff08;Range&#xff09;五、事件处理&#xff08;可选&#xff09;六、自定义样式&#xff08;可选&#xff09;七、综合示例八、配合 lv_timer 或外部…

AI对话小技巧

角色设定&#xff1a;擅于使用 System 给 GPT 设定角色和任务&#xff0c;如“哲学大师"指令注入&#xff1a;在 System 中注入常驻任务指令&#xff0c;如“主题创作"问题拆解&#xff1a;将复杂问题拆解成的子问题&#xff0c;分步骤执行&#xff0c;如&#xff1a…

C++ 核心基础:数字、数组、字符串、指针与引用详解

C++ 核心基础:数字、数组、字符串、指针与引用详解 1. C++ 基础语法1.1 标识符与保留字1.2 数据类型概述1.3 基本输入输出2.1 基本整数类型(int、short、long、long long)2.2 无符号整数类型(unsigned int、unsigned short、unsigned long、unsigned long long)2.3 整数类…

HarmonyOS运动开发:如何集成百度地图SDK、运动跟随与运动公里数记录

前言 在开发运动类应用时&#xff0c;集成地图功能以及实时记录运动轨迹和公里数是核心需求之一。本文将详细介绍如何在 HarmonyOS 应用中集成百度地图 SDK&#xff0c;实现运动跟随以及运动公里数的记录。 一、集成百度地图 SDK 1.引入依赖 首先&#xff0c;需要在项目的文…

如何理解k8s中的controller

一、基本概念 在k8s中&#xff0c;Controller&#xff08;控制器&#xff09;是核心组件之一&#xff0c;其负责维护集群状态并确保集群内的实际状态与期望状态一致的一类组件。控制器通过观察集群的当前状态并将其与用户定义的期望状态进行对比&#xff0c;做出相应的调整来实…