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

OmniGen: Unified Image Generation(代码的复现)

文章目录

  • 论文简介
  • 模型的部署
    • 需要下载的预训练权重
  • 模型的生成效果
    • 图像编辑的效果
    • 风格迁移的效果
  • 总结

论文简介

OmniGen的github项目地址

OmniGen: Unified Image Generation。OmniGen 在各种图像生成任务中都表现出了卓越的性能,并可能大大超过现有扩散模型的极限。OmniGen 是第一个能够以统一的方式处理各种任务的模型,如从文本生成图像、图像编辑和视觉条件生成。用一个模型实现多类文生图任务

模型框架图
在这里插入图片描述

模型的部署

需要下载的预训练权重

模型在huggingface的权重:
将huggingface中的权重下到文件夹里:
在这里插入图片描述
需要保证保的版本,和requirements中的版本一致

torch==2.3.1
transformers==4.45.2
datasets==2.20.0
accelerate==0.26.1
jupyter==1.0.0
numpy==1.26.3
pillow==10.2.0
torch==2.3.1
peft==0.9.0
diffusers==0.30.3
timm==0.9.16

模型的生成效果

模型推理代码

separate_cfg_infer:

这个参数通常用于区分训练和推理时的配置。当设置为 True 时,模型可能会使用不同的配置或策略来处理推理任务,以优化性能或提高生成质量。具体的实现取决于模型的框架或库。
use_kv_cache:

这个参数表示是否使用键值缓存。在变换器模型中,推理时会生成上下文(即输入序列的表示)。使用键值缓存可以在处理长序列时提高效率,因为它允许模型在生成下一个 token 时重用先前计算的键(key)和值(value),从而减少计算开销。

from OmniGen import OmniGenPipelinepipe = OmniGenPipeline.from_pretrained("Shitao/OmniGen-v1")
#img_guidance_scale=1.6
images = pipe(prompt="A man in a black shirt and a blue hat is reading a book in the library. The man is the left 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,separate_cfg_infer=True,use_kv_cache=True,seed=0)
images[0].save("example_ti2i.png")  # save output PIL image

图像编辑的效果

输入的文本:

prompt="<img><|image_1|><img> Remove the woman's book. Replace the mug with A pot of sunflowers ."

prompt=“<|image_1|> 删除女人的书,
用一盆向日葵代替杯子。”

输入的图像如下:
在这里插入图片描述

生成的图像结果如下

在这里插入图片描述
可以看到,书被删除了,被子被替换了,有向日葵,但是不是我们想要的效果。

换一个提示词

prompt="<img><|image_1|><img> Remove the woman's book.The women in <img><|image_1|><img> waves her hand"

移除图片中女人的书,图片中的女人在挥舞她的手
生成结果如下

可以看到效果还不错,就是背景变化了

风格迁移的效果

prompt= "Make this image <img><|image_1|><img> has the same style of <img><|image_2|><img>|"

原图
在这里插入图片描述
风格参考图像
在这里插入图片描述
生成的图像
在这里插入图片描述
可以看到,有一定的风格迁移能力,但是效果一般,应该还需要调试一些模型的参数。

总结

确实这个模型有很好的文本理解能力,可以实现多种类型文生图任务,但是每个任务的能力可能不会非常好。
http://www.lryc.cn/news/475681.html

相关文章:

  • keepalive+mysql8双主
  • C#-基础构造函数、析构函数
  • Ubuntu删除docker
  • 系统地介绍Qt的QtConcurrent模块
  • 【进阶sql】复杂sql收集及解析【mysql】
  • 达梦检查工具dmdbchk的性能
  • Docker是什么
  • Vue进阶指南:Watch 和 Computed 的深度理解
  • 51c大模型~合集12
  • 大模型 RAG 面试真题大全
  • 【django】Django REST Framework 构建 API:APIView 与 ViewSet
  • TOEIC 词汇专题:旅游计划篇
  • 第三次RHCSA作业
  • WebGL(Web Graphics Library)
  • Unity核心笔记
  • 数据挖掘(六)
  • Netty 组件介绍 - Channel
  • 时间序列预测(十)——长短期记忆网络(LSTM)
  • Flink CDC 同步 Mysql 数据
  • 【python实战】-- 根据文件名分类
  • 蓝桥双周赛 第21场 小白入门赛
  • Linux 进程间通信 共享内存_消息队列_信号量
  • Mybatis自定义日志打印
  • 【在Linux世界中追寻伟大的One Piece】Socket编程TCP(续)
  • 面试高频问题:C/C++编译时内存五个分区
  • 阅读博士论文《功率IGBT模块健康状态监测方法研究》
  • Spring ApplicationContext接口
  • [perl] 数组与哈希
  • 电机学习-SPWM原理及其MATLAB模型
  • 群控系统服务端开发模式-应用开发-腾讯云上传工厂及七牛云上传工厂开发