理解生成协同促进?华为诺亚提出ILLUME,15M数据实现多模态理解生成一体化
多模态理解与生成一体化模型,致力于将视觉理解与生成能力融入同一框架,不仅推动了任务协同与泛化能力的突破,更重要的是,它代表着对类人智能(AGI)的一种深层探索。通过在单一模型中统一理解与生成,模型能够从语义层面真正 “洞察” 视觉、文本与世界本质之间的深层联系,从而在复杂场景中实现更加智能、灵活的交互与任务执行。
近期,华为诺亚方舟实验室提出了统一多模态大模型 ——ILLUME。这一模型以 LLM 为核心,采用 “连续图像输入 + 离散图像输出” 的架构,巧妙融合了多模态理解与生成的双重能力,并深度挖掘了统一框架下理解与生成能力协同增强的潜力,展示了对多模态任务的全新诠释。
-
论文标题:ILLUME: Illuminating Your LLMs to See, Draw, and Self-Enhance
-
论文地址:https://arxiv.org/pdf/2412.06673
总体来说,本文贡献如下:
1、ILLUME 在保持整体架构可扩展与可泛化的前提下,通过合理的视觉词表、训练策略与数据配比策略,成功以仅约 15M 的图文对数据用于图文对齐,实现了在视觉理解(包括自然图像和文档图表)、生成、编辑等多元任务上的出色表现,总体效果优于现有统一模型例如 Chameleon, Show-O 和 Janus,与专用单任务模型相媲美。
2、ILLUME 提出一种自提升式多模态对齐策略,通过让模型对自身生成的负样本进行内省式评估,统一模型在理解和生成两方面的能力可实现协同进化。
ILLUME:理解生成一体的多模态大模型
挑战一:如何高效训练一个统一多模态模型?
现有的统一多模态模型构建方案多集中于在 LLM 基础上拓展视觉词表,以支持视觉生成任务。这些模型通常需要大量的图文对数据来实现图文对齐训练。这种对海量数据的依赖,在一定程度上放缓了这一领域进一步探索与实践的进程。
与此不同的是,我们在 ILLUME 中仅使用约 15M 的图文对数据完成预训练,并在视觉理解(涵盖自然图像与文档图表)、生成与编辑等多类视觉文本任务上达到与专有模型相媲美的水平。这一成果并非仅体现于数据规模的减少,更重要的是在架构、训练策略、数据配比以及视觉词表表征方式上的关键设计,使模型能够更高效地进行图文对齐学习。这种方法为在更广泛和更深层的多模态语义理解与生成融合中奠定了基础。
关键设计 1:视觉词表的表征选择
传统基于 VQGAN 的视觉词表往往通过重建原始像素作为目标,但这种基于底层纹理的表征不利于与文本模态进行高层语义对齐。与此相反,我们采用语义特征重建的方式构造视觉词表,直接在高层语义空间中完成图文对齐的特征学习。实验表明,这一设计可显著加速 MLLM 的预训练过程。
在解码阶段,我们再利用 Diffusion 模型将语义特征还原为高保真像素空间,从而实现高达 32 倍的压缩率。通过这一流程,模型在输入端沿用连续视觉编码器保障精细视觉理解能力,并在输出端通过语义视觉词表完成离散化处理,为视觉生成能力的无缝融合奠定基础。
关键设计 2:三阶段训练策略和数据配比
我们采用 “三阶段” 训练策略,以分层递进的方式逐步强化模型的多模态理解与生成能力:
阶段一:引入图像重建任务,为视觉词表扩展后的新参数进行快速初始化,并对齐连续输入与离散输出的模式;
阶段二:进行图文对齐预训练,进一步强化模型在语义层面将图像与文本联结的能力;
阶段三:对高质量的理解、生成、混合数据进行微调,使模型最终胜任多类型的视觉文本任务(包括理解、生成与编辑)。
挑战二:统一多模态模型的判别能力和生成能力能否相互促进?
当我们构建一个统一模型后,我们最关心的是:联合训练视觉理解和生成任务应该如何促进呢?
自提升多模态对齐方案
针对这一点,我们提出了以自我评估过程为桥梁的自提升多模态对齐策略。通过让模型对自身生成的负样本进行内省式评估,模型在理解和生成两方面的能力可实现协同进化:
-
生成促进理解:模型以自我评估的方式分析自己产生的负样本,这种内省过程使模型能够查明并解决其自身弱点,从而更准确地理解图像。
-
理解促进生成:模型可以利用其判别能力来评估其自生成的图像是否与文本一致,并基于此分析进行修正,从而确保模型在推理时更加谨慎和准确,避免在生成图像时出现错误。
我们的自提升多模态对齐方法分为三个步骤:
-
Step 1: 语料自生成。采样训练子集,推理模型生成图像。
-
Step 2: 生成评估数据。从物体、数量、颜色和空间关系多个维度评估图像和文本的一致性,评估数据包括评估得分和相应的分析。
-
Step 3: 多模态对齐。将评估数据重新格式化后加入阶段三训练,使模型在理解与生成层面同时得到强化。
实验结果证明,自提升多模态对齐方法能在理解和生成任务上同时为模型赋能,促使统一多模态模型向更高层次的智能形态稳步迈进。
实验结果
多模态理解任务
在 12 个常用的多模态理解开源综合评测集与文档场景评测集上,ILLUME 均展现出卓越性能,与现有统一多模态模型相比达到 SOTA 水准,尤其在文档理解任务上表现尤为突出。同时,相较多模态理解模型(如 LLaVA-NeXT),ILLUME 的理解能力总体保持相当甚至更优的水平。
文图生成任务
ILLUME 在 3 个文生图评测集上取得与现有生成模型和统一多模态模型相当的表现。
编辑任务
ILLUME 能处理物体删除,风格迁移,图像补充等各种编辑任务。
更多内容可以访问我的博客https://imok.it.eu.org
相关文章:

理解生成协同促进?华为诺亚提出ILLUME,15M数据实现多模态理解生成一体化
多模态理解与生成一体化模型,致力于将视觉理解与生成能力融入同一框架,不仅推动了任务协同与泛化能力的突破,更重要的是,它代表着对类人智能(AGI)的一种深层探索。通过在单一模型中统一理解与生成ÿ…...

[文献阅读]ReAct: Synergizing Reasoning and Acting in Language Models
文章目录 摘要Abstract:思考与行为协同化Reason(Chain of thought)ReAct ReAct如何协同推理 响应Action(动作空间)协同推理 结果总结 摘要 ReAct: Synergizing Reasoning and Acting in Language Models [2210.03629] ReAct: Synergizing Reasoning an…...
摄像头监视脚本
摄像头监视脚本,若检测到摄像头画面有变化,保存这一段视频 一、使用方法 1.运行脚本 默认参数Threshold3, Period3, path./recordings python cam.py --threshold30 --period3 --path./recordings 2.参数说明 threshold:摄像头捕获到的画面变化量阈值…...

FreeRTOS的内存管理(选择heap4.c文件的理由)
目录 1. 了解FreeRTOS内存管理 2. 了解内存碎片 3.了解各个heap.c的内存分配方法 1.heap1.c 2.heap2.c 3.heap3.c 4.heap4.c 5.heap5.c 总结: 内存管理是一个系统基本组成部分,FreeRTOS 中大量使用到了内存管理,比如创建任务、信号量…...

SQL-leetcode-183. 从不订购的客户
183. 从不订购的客户 Customers 表: -------------------- | Column Name | Type | -------------------- | id | int | | name | varchar | -------------------- 在 SQL 中,id 是该表的主键。 该表的每一行都表示客户的 ID 和名称。 Orders 表&#…...

苹果系统MacOS下ObjectC建立的App程序访问opencv加载图片程序
前言 苹果系统下使用opencv感觉还是有些不太方便,总是感觉有点受到限制。本博客描述的是在MacOS下建立App程序然后调用opencv显示图片时出现的一些问题并最后解决的一个过程。 一、程序的建立 选择程序的类型: 选择界面模式和编程语言: 其余…...

《代码随想录》Day21打卡!
写在前面:祝大家新年快乐!!!2025年快乐,2024年拜拜~~~ 《代码随想录》二叉树:修剪二叉搜索树 本题的完整题目如下: 本题的完整思路如下: 1.本题使用递归进行求解,所以分…...
Dell服务器升级ubuntu 22.04失败解决
ubuntu系统原版本20.04,服务器dell T40. 执行apt update后,再执行apt upgrade。 apt update执行成功,但apt upgrade执行中断,提示如下: Checking package manager Reading package lists... Done Building dependen…...

构建全志 T113 Tina SDK
1、环境配置: 准备一个 Ubuntu 系统,可以是 WSL,虚拟机等,建议版本是 20.04。 1.1、安装必要的软件 进入系统后,输入下方命令安装需要的工具 : sudo apt update -y sudo apt full-upgrade -y sudo apt i…...
(推荐)【通用业务分发架构】1.业务分发 2.rpc调用 3.Event事件系统
一.Reflections和SpringUtil完成扫描包的(反射缓存) 二.id与class的映射泛型上下文(玩家是否登录,rpc调用SeqId,class类名)反射调用 1.netty层的 AccountMsgParam // 登录前 OnlineMsgParam // 登录后 SceneMsgParam // 发到场景层的 2.跨进程rpc调用的…...

最近的一些事情
正义不会缺席 这家公司违法辞退不给工资乱开离职证明。严重影响个人发展。 今天终于收到法院的判决书。 警醒自身发展与社会之间密切交流,敲响警钟。 虽然最终得到的法院的支持,但过程举步维艰。 这其中的过程,也让我对律师、法院和中国…...
CP AUTOSAR标准之FlexRayDriver(AUTOSAR_SWS_FlexRayDriver)(更新中……)
1 简介和功能概述 FlexRay驱动程序(Fr)抽象了特定FlexRay通信控制器(CC)的硬件相关实现细节。本规范主要依赖于符合FlexRay规范[13]的FlexRay CC。此外,本规范还支持符合FlexRay规范[14]的旧版FlexRay控制器。本SWS中因支持的FlexRay规范不同而导致的不同行为在适用的情况下以…...

Cesium 实战 27 - 三维视频融合(视频投影)
Cesium 实战 27 - 三维视频融合(视频投影) 核心代码完整代码在线示例在 Cesium 中有几种展示视频的方式,比如墙体使用视频材质,还有地面多边形使用视频材质,都可以实现视频功能。 但是随着摄像头和无人机的流行,需要视频和场景深度融合,简单的实现方式则不能满足需求。…...

GraphRAG实践:docker部署neo4j
概述 随着图数据库(Graph Database)的流行,越来越多的应用场景开始采用图数据库来处理复杂的关系数据。Neo4j作为领先的图数据库之一,提供了强大的图形查询语言Cypher、高效的存储结构和丰富的生态系统,使得它成为开发…...

常用的数据库类型都有哪些
在Java开发和信息系统架构中,数据库扮演着存储和管理数据的关键角色。数据库种类繁多,各有特色,适用于不同的应用场景。 1. 关系型数据库(RDBMS): • 关系型数据库是最为人熟知的数据库类型,数据…...

swiftui开发页面加载发送请求初始化@State变量
在SwiftUI中,你不能直接在init中更新State变量,因为State是由SwiftUI框架管理的,初始化时不允许直接修改。所以需要在onAppear发送请求然后修改State状态。 在SwiftUI中,如果希望在页面加载时立即发送网络请求,可以使…...
Ribbon和Eureka的集成
Ribbon和Eureka的集成是Spring Cloud Netflix生态系统的一部分,通常用于微服务架构中,以实现客户端负载均衡和服务发现。以下是更详细的集成步骤: 1. 引入依赖 在你的Spring Boot项目的pom.xml文件中添加Eureka客户端和Ribbon的依赖&#x…...
关于UE加载osgb数据的研究(一)
最近关于倾斜数据在UE中加载显示的问题,直接转换格式本地加载的方式避免了数据延迟加载、缓存加载,动态刷新等问题,但是也暴露了突出的问题:常规的模型格式会丢失掉倾斜数据的lod,致使效果缺失。 故而需要深入研究一下UE加载osgb数据的方式方法。 首先,我们需得学习一下…...
探索数据之美,Plotly引领可视化新风尚
在数据如潮的今天,如何精准捕捉信息的脉搏,让数据说话?Plotly,这款强大的数据可视化工具,正以其卓越的性能和丰富的功能,成为数据分析师、科学家及工程师们的得力助手。 Plotly不仅仅是一个绘图库…...
List排序的方法
List 排序方法: 1. list 的 sort() package com.example.a; import java.util.ArrayList; import java.util.Comparator; import java.util.List; class User{private Integer score;private Integer age;public User(Integer score, Integer age){super();this.…...
谷歌浏览器插件
项目中有时候会用到插件 sync-cookie-extension1.0.0:开发环境同步测试 cookie 至 localhost,便于本地请求服务携带 cookie 参考地址:https://juejin.cn/post/7139354571712757767 里面有源码下载下来,加在到扩展即可使用FeHelp…...

手游刚开服就被攻击怎么办?如何防御DDoS?
开服初期是手游最脆弱的阶段,极易成为DDoS攻击的目标。一旦遭遇攻击,可能导致服务器瘫痪、玩家流失,甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案,帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...
Java 语言特性(面试系列2)
一、SQL 基础 1. 复杂查询 (1)连接查询(JOIN) 内连接(INNER JOIN):返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...

工业安全零事故的智能守护者:一体化AI智能安防平台
前言: 通过AI视觉技术,为船厂提供全面的安全监控解决方案,涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面,能够实现对应负责人反馈机制,并最终实现数据的统计报表。提升船厂…...
linux 错误码总结
1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...

新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案
随着新能源汽车的快速普及,充电桩作为核心配套设施,其安全性与可靠性备受关注。然而,在高温、高负荷运行环境下,充电桩的散热问题与消防安全隐患日益凸显,成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...

涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战
“🤖手搓TuyaAI语音指令 😍秒变表情包大师,让萌系Otto机器人🔥玩出智能新花样!开整!” 🤖 Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制(TuyaAI…...

《基于Apache Flink的流处理》笔记
思维导图 1-3 章 4-7章 8-11 章 参考资料 源码: https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...

Linux --进程控制
本文从以下五个方面来初步认识进程控制: 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程,创建出来的进程就是子进程,原来的进程为父进程。…...
【LeetCode】3309. 连接二进制表示可形成的最大数值(递归|回溯|位运算)
LeetCode 3309. 连接二进制表示可形成的最大数值(中等) 题目描述解题思路Java代码 题目描述 题目链接:LeetCode 3309. 连接二进制表示可形成的最大数值(中等) 给你一个长度为 3 的整数数组 nums。 现以某种顺序 连接…...