当前位置: 首页 > news >正文

图像生成新范式:智源推出全能视觉生成模型 OmniGen

大型语言模型(LLM)的出现统一了语言生成任务,并彻底改变了人机交互。然而,在图像生成领域,能够在单一框架内处理各种任务的统一模型在很大程度上仍未得到探索。近日,智源推出了新的扩散模型架构 OmniGen,一种新的用于统一图像生成的多模态模型。

OmniGen 具有以下特点:

  1. 统一性:OmniGen 天然地支持各种图像生成任务,例如文生图、图像编辑、主题驱动生成和视觉条件生成等。此外,OmniGen可以处理经典的计算机视觉任务,将其转换为图像生成任务。

  2. 简单性:OmniGen 的架构高度简化。此外,与现有模型相比,它更加用户友好,可以通过指令完成复杂的任务,而不需要冗长的处理步骤和额外的模块(如 ControlNet 或 IP-Adapter),从而大大简化了工作流程。

  3. 知识迁移:受益于统一格式的学习,OmniGen 有效地跨不同任务迁移知识,应对未见过的任务和领域,并展示新颖的功能。我们还探讨了模型的推理能力和思维链机制的在图像生成领域的潜在应用。

相关链接:

  • Paper: https://arxiv.org/pdf/2409.11340

  • Code: https://github.com/VectorSpaceLab/OmniGen

  • Demo: https://huggingface.co/spaces/Shitao/OmniGen

基于 OmniGen 的通用能力,可实施更灵活的图像生成,以上展示一个简单 Pipeline:文本生成图像,编辑生成图像的部分元素,根据生成图像的人体姿态生成重绘图像,从另一图像中提取所需对象与新图像融合。

介绍

近年来,许多文生图模型在生成式 AI 的浪潮中脱颖而出。然而,这些出色的专有模型仅能基于文本生成图像。当用户产生更灵活、复杂、精细等的图像生成需求时,往往需要额外的插件和操作。

例如,若想参考任一姿态生成图像,常规方法是:用姿态检测器从参考图像中估计姿态作为条件输入,并加载对应的 Controlnet 插件,最后提取条件输入的特征馈入扩散模型生成图像。

此外,若想基于合照中的特定人物生成新图像,流程更加繁琐,需要裁剪图像以确保结果图像仅包含目标人物。

而诸如 InstandID 等方法还需使用额外的人脸检测器提取面部信息,并用面部编码器提取特征以输入模型。

值得注意的是,各种不同的生成任务甚至还需更多不同的插件和操作,如此复杂、琐碎而冗长的工作流极大地增加了训练和应用的成本。然而,即便如此繁琐,有时也仍难以满足一般的图像生成的需求,例如基于指定多张照片中的实体生成新图像。

相反,在文本生成领域,以 ChatGPT 为代表的模型可通过人类指令直接处理各种文本任务。那么,在图像生成领域,能否通过单个支持多种输入且耦合多项能力的模型,基于用户指令完成各种生成任务,而无需各种繁杂的流程吗?

为解决这一挑战性问题,智源发布了统一图像生成模型 OmniGen。OmniGen 模型具有良好的简洁性和易用性,集成了多种基础图像生成任务,包括但不限于:文生图、图像编辑、角色一致性生成、基于视觉条件的生成等。OmniGen 支持基于任意多模态的文图指令完成任务,而无需任何其他额外插件和操作。

能力

OmniGen 集多项能力于一体,包括但不限于:

  1. 文本到图像生成 (Text to Image Generation)

  2. 指代表达生成 (Referring Expression Generation)

  3. 通用图像条件生成 (General Image Conditional Generation)

  4. 图像编辑 (Image Edit)

  5. 经典计算机视觉任务:图像去噪、边缘检测、姿态估计等

  6. 一定的上下文学习能力 (In-context Learning) 

以下简要展示部分能力效果:

文本到图像生成

指代表达生成

OmniGen 具备类似 InstandID、Pulid 等模型生成角色一致性图像等能力,即:输入具有单个对象的图像,理解并遵循指令,输出基于该对象的新图像。

同时,OmniGen 具有更高阶的能力:指代表达生成能力,我们把这种能力定义为能够从包含多个对象的图像中,识别指令所指代的对象并生成新的图像。

例如,OmniGen 可根据指令直接从多人图像中定位目标对象,并生成遵循指令的新图像,而无需任何额外的模块和操作:

更多样例:

通用图像条件生成

OmniGen 不仅支持类似 ControlNet 根据特定显式条件生成图像的能力,还同时具备处理经典计算机视觉任务的能力(如人体姿态估计、深度估计等)。

因此,OmniGen 可凭借单个模型完成整个 ControlNet 流程:直接使用 OmniGen 对原图提取视觉条件,并基于所提取的条件生成图像,无需额外处理器。

同时,OmniGen 还能更进一步简化中间流程,一步出图:直接输入原图,输入指令“Following the human pose(or depth mapping) of this image, generate a new image:...”,就可根据输入图像的人体姿态或深度图关系生成新图像。

图像编辑

OmniGen 具备良好的图像编辑能力,并且可以在一次运行中同时执行多条编辑指令,例如:

更多能力

OmniGen 具备潜在的推理能力,可以处理对模型理解和推断能力具有一定要求的非显式查询指令。

例如,要求模型删除图中能装水的物品,则模型能够理解和推断出指令涉及的图中物体并删除:

另一方面,OmniGen 具有一定程度的上下文学习能力,可根据参考样例对图像进行处理。

例如,输入一个分割皇后象棋的输入-输出配对样例 (Example),模型能识别并分割新输入图像中对应的物体:

思维链(Chain-of-Thought, CoT)方法将任务分解为多个步骤,并按顺序求解每个步骤以获得准确的最终答案,从而显著提高了llm的性能。我们考虑是否可以将类似的替代方案应用于图像生成。受人类绘画的基本方式的启发,我们希望模仿一步一步的绘画过程,从空白画布上迭代地生成图像。我们进行了初步的探索,微调后模型能够模拟人类行为一步步的生成图片,进一步的优化留给以后的研究。

OmniGen 的能力包括但不限于以上内容,还包括基本的图像去噪、边缘提取等能力。模型权重和代码已开源,用户可以自行探索更多OmniGen的能力。

模型

OmniGen 的核心设计原则是:简洁和有效。因此,我们最大程度舍弃了各种额外模块。OmniGen 的基本架构为:一个 Transformer 模型和一个 VAE 模块,共 3.8B 参数。其中,Transformer 继承于 Phi3-mini 模型,图像内部改用双向注意力 (Bidirectional Attention) 以契合图像数据特性。整体架构如下所示:

为实现强大的通用和泛化能力,研究人员需要基于大规模和多样化的数据集训练模型。然而,在图像生成领域,尚无一个可用的通用数据集。为此,我们构建了首个大规模且多样化的统一图像生成数据集 X2I,意为 “Anything to Image”。其中,不同任务的数据格式被重新组织和统一,以便于管理和使用。X2I 数据集包含约 1 亿图像,未来经审查等流程后将开源,旨在进一步推动通用图像生成领域的发展。下图简要展示了 X2I 数据集的一些示例:

小结与展望

总之,OmniGen 的统一图像生成范式,不但有助于执行各种下游任务,而且有利于组合各种能力满足更通用的需求。当前,OmniGen 的报告、权重和代码等已开源,欢迎社区共同参与对 OmniGen 潜在能力的发掘、基本性能的提升和广泛应用的探索。

OmniGen 模型是对统一图像生成的初步尝试,还有很大的提升空间。未来,智源将进一步改进模型基本能力,拓展更多有趣的功能。同时,微调代码已发布,用户可简单对其进行微调,由于OmniGen的输入形式非常多样,用户可自行定义各式各样的微调任务,赋予模型更多有意思的能力。

相关文章:

图像生成新范式:智源推出全能视觉生成模型 OmniGen

大型语言模型(LLM)的出现统一了语言生成任务,并彻底改变了人机交互。然而,在图像生成领域,能够在单一框架内处理各种任务的统一模型在很大程度上仍未得到探索。近日,智源推出了新的扩散模型架构 OmniGen&am…...

实现RPC接口的demo记录

1.Thrift RPC 接口实现 Demo Service public class DemoServiceImpl implements DemoService.Iface {private static final Logger logger LoggerFactory.getLogger(DemoServiceImpl.class);Overridepublic String sayHello(Context context, String msg) throws TException …...

Python期末题目 | 期末练习题【概念题+代码】

一、前言 Python 是一门功能强大且易于学习的编程语言,在高校中被广泛用作教学语言。Python 的期末考试通常会包含基础知识和编程实践,以考察学生的理解与应用能力。本文整理了一套 Python 期末练习题,包括选择题、填空题、判断题和代码题。…...

OpenCV基本操作(python开发)——(6)视频基本处理

OpenCV——视频基本处理 一、读取摄像头 import numpy as np import cv2cap cv2.VideoCapture(0) # 实例化VideoCapture对象, 0表示第一个摄像头 while cap.isOpened():ret, frame cap.read() # 捕获帧cv2.imshow("frame", frame)c cv2.waitKey(1) # 等待1毫…...

详解Java之Spring MVC篇一

目录 Spring MVC 官方介绍 MVC RequestMapping 传递参数 无参数 单个参数 针对String类型 针对Integer类型 针对int类型 针对自定义类型 多个参数 参数重命名 参数强制一致 参数不强制一致 传递数组 ​编辑传递List ​编辑 传递JSON ​编辑 从路径中获取参…...

ubuntu20.04上使用 Verdaccio 搭建 npm 私有仓库

安装nvm 首先安装必要的工具: apt update apt install curl下载并执行nvm安装脚本: curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash添加环境变量(如果安装脚本没有自动添加)。编辑 ~/.bash…...

Python实现办公自动化的数据可视化与报表生成

在 Python 中,可以利用多个库来实现办公自动化中的数据可视化与报表生成。以下是具体的方法: 一、数据可视化 使用 matplotlib 库 matplotlib 是一个强大的 Python 绘图库,可以创建各种类型的静态、动态和交互式图表。示例代码:i…...

前端知识串联笔记(更新中...)

1.MVVM MVVM 是指 Model - View - ViewModel,Model 是数据与业务逻辑,View 是视图,ViewModel 用于连接 View 和 Model Model ---> View:将数据转化成所看到的页面,实现的方式:Data Bindings -- 数据绑定…...

PostgreSQL根据字符串的长度排序

PostgreSQL根据字符串的长度排序 在 PostgreSQL 中,你可以使用 LENGTH 函数来获取字符串的长度,并根据这个长度进行排序。LENGTH 函数会返回字符串的字符数。 以下是一个基本的 SQL 查询示例,它根据 some_column 字符串列的长度对表中的行进…...

计算机网络:网络层 —— IP数据报的发送和转发过程

文章目录 IP数据报的发送和转发过程主机发送IP数据报路由器转发IP数据报示例 IP数据报的发送和转发过程 IP 数据报的发送和转发过程包含以下两个过程: 主机发送IP数据报路由器转发IP数据报 直接交付:源主机与目的主机在同一网络中间接交付:…...

【算力基础】GPU算力计算和其他相关基础(TFLOPS/TOPS/FP32/INT8...)

文章目录 :one: 算力的常见指标:two: 算力计算:three: 常用链接 🚀 本文主要是聚焦于深度学习领域的 GPU的算力估计,其他类型的硬件设备如CPU可以类比参考。 1️⃣ 算力的常见指标 算力衡量主要与运算速度和精度这两个指标有关。 🌔速度指…...

UI自动化测试(app端)4.0

✨博客主页: https://blog.csdn.net/m0_63815035?typeblog 💗《博客内容》:.NET、Java.测试开发、Python、Android、Go、Node、Android前端小程序等相关领域知识 📢博客专栏: https://blog.csdn.net/m0_63815035/cat…...

C#与C++交互开发系列(十):数组传递的几种形式

前言 在C#和C的交互开发中,数组传递是一个非常常见且实用的场景。数组可以作为方法的参数,也可以作为响应结果返回。在本篇博客中,我们将探讨几种常见的数组传递方式,展示如何在C#与C之间进行有效的数据交换。我们将主要介绍以下…...

【C++复习】第一弹-基础性语法

前言 学习了C语法这么久了,我其实觉得,我们学习一门语言应该更加注重使用性,对于语法的细节可以通过具体的项目去重新造轮子的时候再去抠细节,也就是说你得学会先走,在去想我们如何走的,身体的哪些肌肉在发…...

软考高级备考记录

一 报考条件和报名流程 报考条件 该考试具有水平考试性质,报考任何级别不需要学历、资历条件,只要达到相应的专业技术水平就可以报考相应的级别 报名流程 软考报名官网:中国计算机技术职业资格网 官网上有 报名时间,考试…...

图为大模型一体机新探索,赋能智能家居行业

在21世纪的今天,科技的飞速进步正以前所未有的速度重塑着我们的生活方式。从智能手机到物联网,从大数据到人工智能,每一项技术创新都在为人类带来前所未有的便利与效率。其中,图为AI大模型一体机作为人工智能领域的最新成果&#…...

精氨酸/赖氨酸多肽(芋螺肽)

产品简介: 芋螺肽,源自瑞士尖端科技,是一种模拟芋螺毒素的生物活性肽。它以其独特的分子结构和高选择性作用于电压门控钠离子通道(特别是Nav1.4),为您提供安全、自然且不僵硬的回春效果。芋螺肽&#xff0…...

C++音视频04:音视频编码、生成图片

视频编码 #include <libavutil/log.h> #include <libavutil/opt.h> #include <libavcodec/avcodec.h>static int encode(AVCodecContext *ctx, AVFrame *frame, AVPacket *pkt, FILE *out) {int ret -1;ret avcodec_send_frame(ctx, frame);if (ret < …...

ImageSharp报错

错误信息 System.MissingMethodException: Method not found: System.Span1<SixLabors.ImageSharp.PixelFormats.Rgba32> SixLabors.ImageSharp.Memory.Buffer2D1.GetRowSpan(Int32).需要升级项目 原来仅升级了SixLabors.ImageSharp没有升级drawing&#xff0c;都升级到…...

Android中常用adb命令

目录 1.adb连接安卓模拟器 2.adb列出所有已经连接的设备 3.adb显示设备的日志信息 4.adb 电脑文件推送到安卓模拟器中 5.adb 手机传送文件到电脑 6.adb获取安卓应用的包名和Activity名 附录 1--命令 1&#xff09;adb devices 2&#xff09;adb install 路径> 3&#xff09;…...

【网络】每天掌握一个Linux命令 - iftop

在Linux系统中&#xff0c;iftop是网络管理的得力助手&#xff0c;能实时监控网络流量、连接情况等&#xff0c;帮助排查网络异常。接下来从多方面详细介绍它。 目录 【网络】每天掌握一个Linux命令 - iftop工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景…...

Leetcode 3577. Count the Number of Computer Unlocking Permutations

Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接&#xff1a;3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯&#xff0c;要想要能够将所有的电脑解锁&#x…...

Python实现prophet 理论及参数优化

文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候&#xff0c;写过一篇简单实现&#xff0c;后期随着对该模型的深入研究&#xff0c;本次记录涉及到prophet 的公式以及参数调优&#xff0c;从公式可以更直观…...

学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1

每日一言 生活的美好&#xff0c;总是藏在那些你咬牙坚持的日子里。 硬件&#xff1a;OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写&#xff0c;"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...

IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)

文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...

.Net Framework 4/C# 关键字(非常用,持续更新...)

一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...

Go 语言并发编程基础:无缓冲与有缓冲通道

在上一章节中&#xff0c;我们了解了 Channel 的基本用法。本章将重点分析 Go 中通道的两种类型 —— 无缓冲通道与有缓冲通道&#xff0c;它们在并发编程中各具特点和应用场景。 一、通道的基本分类 类型定义形式特点无缓冲通道make(chan T)发送和接收都必须准备好&#xff0…...

面向无人机海岸带生态系统监测的语义分割基准数据集

描述&#xff1a;海岸带生态系统的监测是维护生态平衡和可持续发展的重要任务。语义分割技术在遥感影像中的应用为海岸带生态系统的精准监测提供了有效手段。然而&#xff0c;目前该领域仍面临一个挑战&#xff0c;即缺乏公开的专门面向海岸带生态系统的语义分割基准数据集。受…...

Spring AI Chat Memory 实战指南:Local 与 JDBC 存储集成

一个面向 Java 开发者的 Sring-Ai 示例工程项目&#xff0c;该项目是一个 Spring AI 快速入门的样例工程项目&#xff0c;旨在通过一些小的案例展示 Spring AI 框架的核心功能和使用方法。 项目采用模块化设计&#xff0c;每个模块都专注于特定的功能领域&#xff0c;便于学习和…...

如何应对敏捷转型中的团队阻力

应对敏捷转型中的团队阻力需要明确沟通敏捷转型目的、提升团队参与感、提供充分的培训与支持、逐步推进敏捷实践、建立清晰的奖励和反馈机制。其中&#xff0c;明确沟通敏捷转型目的尤为关键&#xff0c;团队成员只有清晰理解转型背后的原因和利益&#xff0c;才能降低对变化的…...