本文要介绍一款颇具创新性的AI图像生成工具——OmniGen,它能实现人物或物体的跨图像一致性合成。

一、OmniGen是什么
简而言之,OmniGen本质上是一个“统一图像生成模型”。它的核心优势在于:无需额外安装ControlNet、IP-Adapter、Reference-Net等辅助插件,系统就能直接根据文本提示,自动识别输入图像中的各类特征——例如某个特定对象、它的姿势,或者某种映射关系。
那么这种能力能带来什么实际价值?来看一个直观案例。假设手中有两幅图,分别拍摄了一个小女孩和一位男士,现在希望让这两个人物同时出现在同一个场景中。传统方法操作繁琐,而现在只需一句指令即可轻松实现。
效果立现!上面使用的提示词同样简洁明了:
The little girl and the man were standing in the street. the girl is left in<|image_1|>the man is middle in
<|image_2|>.
这还只是最基础的操作。再来看一个更有趣的例子:希望将左图中那位穿红衣的女孩,换上右图里那件白色连衣裙。提示词可以这样写:
a girl wear a white dress. the girl is left in<|image_1|>the white dress is in
<|image_1|>.
二、OmniGen应用场景详解
官方展示的应用场景十分丰富。例如,你有一张女孩的全身照,只需一段文本提示就能改变她的姿势——让她做出比心的动作。
更复杂的场景:一张图里有两个人,现在想单独选中右侧的人物,将他放入全新的场景中,同时更换服装、变换动作。
从两张图中分别提取一个人物,让她们在同一个房间里一起数钱,同样可以轻松实现。
即便一张图中的人物超过两个,也能通过提示词精确指定。比如“左边中间的那个男人”和“右边年龄最大的那个女人”,让他们在马路上聊天。生成的新图像会尽量保留人物的基本可识别特征。
当然,OmniGen并非只能处理人物。将一束花放入特定颜色的花瓶,再把花瓶摆到玻璃桌面上,操作同样简单直接。更进一步,你甚至可以移除女孩的耳环,或者用可乐替换背景中原有的杯子。
一个非常实用的附加功能是:它能提取图像中人物的动作框架——以往这通常需要借助ControlNet等插件。获得动作框架后,你还可以根据它直接生成一张全新的动作姿势图。
三、OmniGen本地部署指南
部署过程并不复杂。首先确保你的网络“环境畅通”,并且已安装好Python、Git等基础工具。然后打开命令行窗口,依次执行以下命令(以N卡为例):
conda create -n omnigen python=3.10
conda activate omnigen
conda install pytorch=2.3.1 torchvision=0.18.1 torchaudio=2.3.1 pytorch-cuda=11.8 -c pytorch -c nvidia
git clone https://github.com/staoxiao/OmniGen.git
cd OmniGen
pip install -e .
pip install gradio spaces
python app.py
为了避免每次手动激活环境,可以建立一个批处理文件,内容参照如下:
@echo off
call conda activate omnigen
python app.py
pause
首次运行时系统会自动下载模型文件,请预留超过15GB的硬盘空间。
四、使用教程与技巧
提示词大致遵循日常自然语法即可。唯一需要注意的地方是引用图像时的格式要求,需写成类似 <|image_1|> 的形式,其中的数字“i”可以是1到3。
例如,你上传了三张图:图1为男性,图2为女性,图3为街道背景。如果想生成为男+女+背景的新图,提示词可以写成:
A man in middle in <|image_1|>and a woman in middle in
<|image_2|> holding hands in street like
<|image_3|>.
最后再测试一个趣味应用:尝试让“黑寡妇”与“马大师”同框合影。
五、总结与评估
- OmniGen能够识别图像中人物的性别、年龄、位置以及服饰颜色等信息,这使得提示词可以更贴近日常的自然语言表达。
- 对于需要在同一画面中放入两个特定角色的场景,它确实能发挥重要作用。
- 客观而言,OmniGen目前的生成效果尚未达到完美。但无需额外插件即可实现多合一处理,这种设计思路符合AIGC未来的发展趋势。
- 生成单张图片的耗时目前仍然较长——在4090上大约需要1分半钟,而在4060上则需要4到5分钟。在效率方面仍有不小的优化空间。
