今天分享的是一个非常有趣的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<img><|image_1|></img>the man is middle in <img><|image_2|></img>.
还有其它用法,比如想让下方左图的红衣女孩,穿上下方右图的白色连衣裙:
提示词:
a girl wear a white dress. the girl is left in<img><|image_1|></img>the white dress is in<img><|image_1|></img>.
二、OmniGen的应用场景介绍
官方公示的场景有很多,这是一张女孩的图像,通过文本提示改变她的姿势(比心):
图中有两个人,选择右边的人,改变他的衣服、动作、场景:
从两张图里分别提取两个人,让她们在房间里数钱:
即使图中人物多于两个,也可以通过提示词来让AI识别,比如左边“中间的男人”、右边“年龄最大的女人”,他俩在马路上聊天:
生成的新图像会保留人物的基本可识别特征:
将一束花放在指定颜色的花瓶中并摆放在玻璃桌面:
移除女孩的耳环,同时用可乐换掉背景中的杯子:
提取图像中人物的动作框架(通常需要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 <img><|image_1|></img>and a woman in middle in<img><|image_2|></img> holding hands in street like<img><|image_3|></img>.
最后再测试一下名人的图像结合,让黑寡妇和马大师合影:
五、结论
1、OmniGen可识别图像中人物的性别、年龄、位置、服饰(颜色)等,使提示词得以更接近日常语言。
2、对于需要在同一图像中出现两个特定角色的应用场景,OmniGen能派上用场。
3、OmniGen目前生成效果仍不完美,但无需额外插件的多合一处理方式,符合未来AIGC的发展趋势。
4、OmniGen生成一幅图耗时较长(4090大约1分半,4060需要4到5分钟),效率有待优化。
文章涉及的网址:
OmniGen的代码页面:
https://github.com/VectorSpaceLab/OmniGen