MLMs之OmniGen:OmniGen(统一图像生成模型)的简介、安装和使用方法、案例应用之详细攻略

MLMs之OmniGen:OmniGen(统一图像生成模型)的简介、安装和使用方法、案例应用之详细攻略

导读:这篇论文介绍了OmniGen,一个用于统一图像生成扩散模型。论文的核心要点可以总结如下:

>> 背景痛点

● 图像生成领域的碎片化: 现有的图像生成模型通常专注于特定任务(例如文本到图像生成、图像编辑等),需要为不同任务设计和训练不同的模型或模块(例如ControlNet, IP-Adapter等),导致模型复杂且难以维护。 这与大型语言模型(LLM)在自然语言处理领域的统一性形成鲜明对比,LLM能够在一个框架内处理各种语言任务。

● 额外预处理步骤的繁琐: 许多图像生成任务需要额外的预处理步骤,例如人脸检测、姿态估计、图像分割等,增加了使用门槛和计算成本。

● 缺乏通用性: 现有模型缺乏对各种图像生成任务的通用理解和生成能力难以处理未见过的任务和领域。

>> 具体的解决方案:OmniGen旨在创建一个统一的图像生成框架,解决上述痛点。它是一个基于扩散模型的框架,其核心设计理念是:

● 统一性: OmniGen能够处理多种图像生成任务,包括文本到图像生成、图像编辑、主题驱动生成、视觉条件生成以及一些经典的计算机视觉任务(例如边缘检测、人体姿态识别),所有这些都集成在一个模型中。

● 简洁性: OmniGen的架构非常简洁,只包含一个VAE和一个预训练的大型Transformer模型,无需额外的编码器(例如CLIP编码器),简化了模型结构和使用流程。

● 知识迁移: 通过在统一的格式下进行训练,OmniGen能够有效地跨不同任务进行知识迁移,处理未见过的任务和领域,并展现出一些新兴的能力。

>> 核心思路步骤

● 数据集构建:论文构建了一个大型的多任务图像生成数据集X2I,包含各种图像生成任务的数据,并将其标准化为统一的格式。 数据集包含文本到图像、多模态到图像(包括常见混合模态提示、主题驱动图像生成和计算机视觉任务)、少量样本到图像等数据。

● 模型架构:OmniGen采用VAE提取图像的连续视觉特征,并使用预训练的Transformer模型(基于Phi-3)根据输入条件生成图像。 它使用了一种改进的注意力机制,能够处理文本和图像的任意交错输入。

● 训练策略:采用修正流(rectified flow)方法进行训练,并通过逐步增加图像分辨率来提高图像质量。针对图像编辑任务,论文提出了一种加权损失函数,以解决模型简单复制输入图像的“捷径”问题。

● 推理过程:推理过程利用流匹配方法,迭代多次生成最终的图像。 利用kv-cache机制加速推理。

>> 优势

● 统一性: 在一个框架内处理多种图像生成任务,避免了使用多个模型的需要。

● 简洁性: 模型架构简洁,易于使用和部署。

● 高效性: 参数利用率高,推理速度快。

● 通用性: 能够处理未见过的任务和领域,并展现出一些新兴的能力,例如任务组合、隐式任务组合和少样本学习。

● 端到端工作流程: 简化了图像生成的工作流程,无需额外的预处理步骤和中间模型。

>> 结论和观点

● OmniGen是首个尝试构建通用图像生成模型的工作,虽然取得了显著进展,但仍存在一些局限性,例如对长文本和复杂场景的处理能力有限,生成的图像可能存在细节错误等。

● 多任务学习能够提高模型的泛化能力,并促进新兴能力的涌现

● OmniGen展现出一定的推理能力少样本学习能力

逐步细化图像生成过程(类似于人类绘画过程)是一个有前景的研究方向。

● 论文开源了相关资源,旨在促进该领域的进一步发展。

总而言之,OmniGen 提出了一种新的统一图像生成框架,在一定程度上解决了图像生成领域任务碎片化和模型复杂性的问题,展现了其在多任务学习和知识迁移方面的潜力。 但该模型仍处于发展阶段,未来需要进一步改进以提高其鲁棒性和处理更复杂任务的能力。

目录

相关文章

《OmniGen: Unified Image Generation》翻译与解读

OmniGen的简介

1、新闻

2、能干什么

通过 OmniGen 灵活控制图像生成

引用表情生成

OmniGen的安装和使用方法

1、通过GitHub安装

2、使用OmniGenPipeline示例

3、使用Gradio Demo (本地):

4、使用Google Colab:

5、微调:

6、推理

OmniGen的案例应用

1、在线测试使用


相关文章

《OmniGen: Unified Image Generation》翻译与解读

地址

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

时间

2024917

作者

北京市人工智能研究院

摘要

在这项工作中,我们介绍了OmniGen,这是一种用于统一图像生成的新型扩散模型。与流行的扩散模型(如Stable Diffusion)不同,OmniGen不再需要处理多种控制条件的额外模块(如ControlNet或IP-Adapter)。OmniGen具有以下特点:

1) 统一性:OmniGen不仅具有文本到图像生成的能力,还内在地支持其他下游任务,如图像编辑、基于主题的生成和视觉条件生成。此外,OmniGen可以通过将它们转换为图像生成任务来处理经典的计算机视觉任务,例如边缘检测和人体姿态识别。

2) 简单性:OmniGen的架构高度简化,无需额外的文本编码器。此外,它比现有的扩散模型更易于使用,允许通过指令完成复杂的任务,无需额外的预处理步骤(例如人体姿态估计),从而大大简化了图像生成的工作流程。

3) 知识转移:通过采用统一的格式进行学习,OmniGen能够在不同的任务之间有效地转移知识,管理未见过的任务和领域,并展现出新的能力。

我们还探索了该模型的推理能力以及链式思考机制的潜在应用。这项工作代表了通用图像生成模型的首次尝试,但仍存在一些尚未解决的问题。我们将在此 https URL 上开放相关资源,以促进该领域的进步。

OmniGen的简介

2024年10月22日发布,OmniGen是一个统一的图像生成模型,能够根据多模态提示生成各种各样的图像。其设计目标是简洁、灵活和易于使用。该模型旨在避免现有图像生成模型需要加载多个额外网络模块(如ControlNet、IP-Adapter、Reference-Net等)以及进行额外预处理步骤(例如人脸检测、姿态估计、裁剪等)的复杂性。OmniGen希望实现类似于GPT在语言生成中的方式,即通过任意多模态指令直接生成各种图像,无需额外的插件和操作。

OmniGen提供了一个统一的框架,简化了图像生成流程,并支持多种多样的图像生成任务。 通过提供的代码和文档,用户可以方便地安装、使用和微调该模型,以满足不同的图像生成需求。

虽然由于资源限制,OmniGen仍有改进空间,但它能够执行多种任务,包括但不限于文本到图像生成、主题驱动生成、身份保持生成、图像编辑和图像条件生成。OmniGen能够根据文本提示自动识别输入图像中的特征(例如所需物体、人体姿态、深度映射)。 项目作者也鼓励用户反馈,以帮助改进模型。

GitHub地址:https://github.com/VectorSpaceLab/OmniGen

1、新闻

2024-11-03:✨✨添加了复制演示和 API:复制

2024-10-28:✨✨我们发布新版本的推理代码,优化了内存使用和时间成本。您可以参考docs/inference.md了解详细信息。

2024-10-22:����我们发布了 OmniGen 的代码。推理:docs/inference.md训练:docs/fine-tuning.md

2024-10-22:����我们发布了 OmniGen 的第一个版本。模型权重:Shitao/OmniGen-v1 HF 演示:��

2、能干什么

通过 OmniGen 灵活控制图像生成

引用表情生成

您可以输入多幅图像,并使用简单、通用的语言来引用图像中的对象。OmniGen 可以自动识别每幅图像中的必要对象,并根据这些对象生成新图像。无需进行图像裁剪或人脸检测等额外操作。

OmniGen的安装和使用方法

1、通过GitHub安装

首先克隆GitHub仓库:

git clone https://github.com/staoxiao/OmniGen.git
cd OmniGen
pip install -e .

建议创建一个新的conda环境以避免冲突:

# 创建一个python 3.10.12的conda环境 (你也可以使用virtualenv)
conda create -n omnigen python=3.10.12
conda activate omnigen安装PyTorch(根据你的CUDA版本选择合适的版本):
pip install torch==2.3.1+cu118 torchvision --extra-index-url https://download.pytorch.org/whl/cu118最后安装OmniGen:
pip install -e .

2、使用OmniGenPipeline示例

from OmniGen import OmniGenPipelinepipe = OmniGenPipeline.from_pretrained("Shitao/OmniGen-v1")  
# Note: Your local model path is also acceptable, such as 'pipe = OmniGenPipeline.from_pretrained(your_local_model_path)', where all files in your_local_model_path should be organized as https://huggingface.co/Shitao/OmniGen-v1/tree/main## Text to Image
images = pipe(prompt="A curly-haired man in a red shirt is drinking tea.", height=1024, width=1024, guidance_scale=2.5,seed=0,
)
images[0].save("example_t2i.png")  # save output PIL Image## Multi-modal to Image
# In the prompt, we use the placeholder to represent the image. The image placeholder should be in the format of <img><|image_*|></img>
# You can add multiple images in the input_images. Please ensure that each image has its placeholder. For example, for the list input_images [img1_path, img2_path], the prompt needs to have two placeholders: <img><|image_1|></img>, <img><|image_2|></img>.
images = pipe(prompt="A man in a black shirt is reading a book. The man is the right man in <img><|image_1|></img>.",input_images=["./imgs/test_cases/two_man.jpg"],height=1024, width=1024,guidance_scale=2.5, img_guidance_scale=1.6,seed=0
)
images[0].save("example_ti2i.png")  # save output PIL image

如果内存不足,可以设置offload_model=True。如果输入多张图像时推理时间过长,可以减小max_input_image_size。更多信息请参考docs/inference.md#requiremented-resources。

3、使用Gradio Demo (本地):

我们在Huggingface中构建了一个在线演示。

对于本地 gradio 演示,您需要安装pip install gradio spaces,然后可以运行

pip install gradio spaces
python app.py

4、使用Google Colab:

!git clone https://github.com/staoxiao/OmniGen.git
%cd OmniGen
!pip install -e .
!pip install gradio spaces
!python app.py --share

5、微调:

提供训练脚本train.py用于微调OmniGen。 docs/fine-tuning.md包含更多细节,例如完整的微调过程。 文档中提供了一个使用LoRA微调的玩具示例。

accelerate launch --num_processes=1 train.py \--model_name_or_path Shitao/OmniGen-v1 \--batch_size_per_device 2 \--condition_dropout_prob 0.01 \--lr 1e-3 \--use_lora \--lora_rank 8 \--json_file ./toy_data/toy_subject_data.jsonl \--image_path ./toy_data/images \--max_input_length_limit 18000 \--keep_raw_resolution \--max_image_size 1024 \--gradient_accumulation_steps 1 \--ckpt_every 10 \--epochs 200 \--log_every 1 \--results_dir ./results/toy_finetune_lora

6、推理

项目提供了inference.ipynb和inference_demo.ipynb两个Jupyter Notebook文件,包含更多图像生成的示例。 docs/inference.md包含更详细的推理参数说明。

OmniGen的案例应用

OmniGen可以进行多种图像生成任务,例如:
>> 文本到图像生成: 直接根据文本描述生成图像。
>> 多模态图像生成: 结合文本和图像进行图像生成,例如根据文本描述和参考图像生成新的图像。 模型能够自动识别参考图像中的关键特征并将其整合到新生成的图像中。
>> 图像编辑: 对现有图像进行修改和编辑。
>> 身份保持生成: 在生成新图像的同时保持特定人物或物体的身份特征。
>> 参考表达生成: 输入多张图像和简单的语言描述,OmniGen能够自动识别图像中的目标并据此生成新图像,无需额外的操作如图像裁剪或人脸检测。

1、在线测试使用

测试地址:https://huggingface.co/spaces/Shitao/OmniGen

<img><|image_1|></img>中的女人在人群中开心地挥手

一个男人和一个满脸皱纹的短发女人站在图书馆的书架前。男士是<img><|image_1|></img>中间的男士,女士是<img><|image_2|></img>中年龄最大的女士。

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

LeetCode 143.重排链表

题目&#xff1a; 给定一个单链表 L 的头节点 head &#xff0c;单链表 L 表示为&#xff1a; L0 → L1 → … → Ln - 1 → Ln请将其重新排列后变为&#xff1a; L0 → Ln → L1 → Ln - 1 → L2 → Ln - 2 → … 不能只是单纯的改变节点内部的值&#xff0c;而是需要实际…

Linux进程信号(信号的产生)

目录 什么是信号&#xff1f; 信号的产生 信号产生方式1&#xff1a;键盘 前台进程 后台进程 查看信号 signal系统调用 案例 理解进程记录信号 软件层面 硬件层面 信号产生方式2:指令 信号产生方式3:系统调用 kill系统调用 案例 其他产生信号的函数调用 1.rais…

【C++】STL— stack的常见用法和模拟实现

目录 1、stack的介绍 2、stack的使用 构造一个空栈 stack的简单接口应用 3、stack的模拟实现 4、栈的相关题目 4.1 最小栈 4.1.2思路 4.1.3 实现代码 4.2 栈的压入、弹出序列 4.2.2 思路 4.2.3程序实现 1、stack的介绍 在C中&#xff0c;stack是一种标准模板库&am…

神书《从零构建大模型》分享,尚未发布,GitHub标星22k!!

《从零构建大模型》是一本即将于今年10月底发布的书籍&#xff0c;github已经吸引了惊人的21.7k标星&#xff01;作者是威斯康星大学麦迪逊分校的终身教授&#xff0c;在GitHub、油管、X上拥有大量粉丝&#xff0c;是一位真正的大佬。 本书免费获取地址 在本书中&#xff0…

【深度学习目标检测|YOLO算法2】YOLO家族进化史:从YOLOv1到YOLOv11的架构创新、性能优化与行业应用全解析...

【深度学习目标检测|YOLO算法2】YOLO家族进化史&#xff1a;从YOLOv1到YOLOv11的架构创新、性能优化与行业应用全解析… 【深度学习目标检测|YOLO算法2】YOLO家族进化史&#xff1a;从YOLOv1到YOLOv11的架构创新、性能优化与行业应用全解析… 文章目录 【深度学习目标检测|YOL…

动态避障-图扑自动寻路 3D 可视化

自动寻路是机器人导航的核心技术&#xff0c;其原理主要涉及机器人与环境之间的复杂信息交互与处理。在自动寻路过程中&#xff0c;机器人依靠先进的传感器系统&#xff0c;如高清摄像头、精密激光雷达和灵敏超声波装置&#xff0c;全方位感知周围环境。这些传感器能够实时捕捉…

Docker 镜像拉不动?自建 Docker Hub 加速站 解决镜像拉取失败

本文首发于只抄博客&#xff0c;欢迎点击原文链接了解更多内容。 前言 众所周知&#xff0c;6 月份的时候&#xff0c;Docker Hub 的镜像就已经无法正常拉取&#xff0c;那会随手用 Nginx 反代了一下 Docker Hub&#xff0c;建了个自用的镜像站&#xff0c;一直用到了 9 月份&…

RabbitMQ集群搭建

RabbitMQ集群搭建 1、RabbitMQ集群1.1、默认集群模式1.1.1、为什么集群不复制队列内容和状态到所有节点? 1.2、镜像集群模式 2、默认集群模式安装前准备2.1、准备3台机器2.2、启动三台机器2.3、使用xshell 连接三台机器2.4、服务器安装erlang和RabbitMQ2.5、修改三台机器的/et…

mysql-springboot netty-flink-kafka-spark(paimon)-minio

1、下载spark源码并编译 mkdir -p /home/bigdata && cd /home/bigdata wget https://archive.apache.org/dist/spark/spark-3.4.3/spark-3.4.3.tgz 解压文件 tar -zxf spark-3.4.3.tgz cd spark-3.4.3 wget https://raw.githubusercontent.com/apache/incubator-celeb…

系统安全第七次作业题目及答案

一、 1.RBAC0 RBAC1 RBAC2 RBAC3 2.属性 身份标识 3.接入访问控制 资源访问控制 网络端口和节点的访问控制 二、 1.B 2.A 3.ABE 4.BCD 5.ABC 三、 1. 答&#xff1a;基于属性的访问控制&#xff08;ABAC&#xff09;是通过对实体属性添加约束策略的方式实现主、客体之…

【GESP】C++一级真题练习(202312)luogu-B3922,小杨报数

GESP一级真题练习。为2023年12月一级认证真题。for循环和取余计算应用。 题目题解详见&#xff1a;https://www.coderli.com/gesp-1-luogu-b3922/ 【GESP】C一级真题练习(202312)luogu-B3922&#xff0c;小杨报数 | OneCoderGESP一级真题练习。为2023年12月一级认证真题。for…

国科大现代信息检索技术第一次作业

第一次作业 题目1&#xff1a;考虑以下文档 文档名内容文档1new home sales top forecasts文档2home prices rise in june文档3increase in home sales in june文档4july new home sales rise 1、画出文档集对应的词项-文档矩阵 文档1文档2文档3文档4forecasts1000home1111…

计算机视觉实验四:特征检测与匹配

特征检测与匹配 1 角点检测算法实验 1.1 实验目的与要求 &#xff08;1&#xff09;了解及掌握角点检测算法原理。 &#xff08;2&#xff09;掌握在MATLAB中角点算法的编程。 &#xff08;3&#xff09;掌握Moravec&#xff0c;Harris与SUSAN算法的差异。 1.2 实验原理及…

十八:Spring Boot 依赖(3)-- spring-boot-starter-data-jpa 依赖详解

目录 1. 理解 JPA&#xff08;Java Persistence API&#xff09; 1.1 什么是 JPA&#xff1f; 1.2 JPA 与 Hibernate 的关系 1.3 JPA 的基本注解&#xff1a;Entity, Table, Id, GeneratedValue 1.4 JPA 与数据库表的映射 2. Spring Data JPA 概述 2.1 什么是 Spring Dat…

如何用C++代码实现一颗闪烁的爱心?

要用 C 实现爱心闪烁效果&#xff0c;我们可以使用控制台输出文本&#xff0c;并通过在控制台中刷新屏幕来模拟闪烁的效果。由于 C 本身没有类似 turtle 这样的图形库&#xff0c;操作控制台输出的方式比较简单&#xff0c;主要通过字符绘制和时间延迟来实现。 这里给出一个基…

基于美颜SDK的实时视频美颜平台开发:技术难点与解决方案

美颜SDK作为视频美颜平台的核心&#xff0c;提供了多种美颜功能。这些功能通过调整参数实现对人脸特征的优化。在架构设计上&#xff0c;美颜SDK主要包括以下几部分&#xff1a; 1.人脸检测与特征点识别&#xff1a;通过深度学习模型&#xff0c;识别人脸并标记出关键特征点&a…

web实操4——servlet体系结构

servlet体系结构 我们基本都只实现service方法&#xff0c;其余几个都不用&#xff0c; 之前我们直接实现servlet接口&#xff0c;所有的方法都必须实现&#xff0c;不用也得写&#xff0c;不然报错&#xff0c;写了又不用当摆设。 能不能只要定义一个service方法就可以&…

数据分析反馈:提升决策质量的关键指南

内容概要 在当今快节奏的商业环境中&#xff0c;数据分析与反馈已成为提升决策质量的重要工具。数据分析不仅能为企业提供全面的市场洞察&#xff0c;还能帮助管理层深入了解客户需求与行为模式。掌握数据收集的有效策略和工具&#xff0c;企业能够确保获得准确且相关的信息&a…

香港航空 m端 腾讯滑块分析

声明: 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;抓包内容、敏感网址、数据接口等均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff01; 有相关问题请第一时间头像私信联系我删…

[2024最新] macOS 发起 Bilibili 直播(不使用 OBS)

文章目录 1、B站账号 主播认证2、开启直播3、直播设置添加素材、隐私设置指定窗口添加/删除 窗口 4、其它说明官方直播帮助中心直播工具教程 目前搜到的 macOS 直播教程都比较古早&#xff0c;大部分都使用 OBS&#xff0c;一番探索下来&#xff0c;发现目前已经不需要 OBS了&a…