UC伯克利提出AIGC图像编辑新利器InstructPix2Pix,AI模型P图更加精细

news2024/11/15 19:48:01

原文链接:https://www.techbeat.net/article-info?id=4375
作者:seven_

最近的一些工作向我们展示了AIGC在创造性生成图像、视频等方面的潜力,相信已有很多研究者在沿着这一方向进行拓展式的挖掘和创新。目前已有很多衍生应用出现在了大家眼前,例如仅通过手绘草图生成具有真实感的照片,该工作可以应用在很多设计领域,将设计师寥寥数笔画下的草图进行加工,可以提高工作效率。再比如另一个非常新奇的新功能,模型根据用户输入的指令就可以对目标图像进行P图修改,这一功能受到了广泛的关注。
在这里插入图片描述

论文链接:
https://arxiv.org/abs/2211.09800
代码链接:
https://www.timothybrooks.com/instruct-pix2pix

今天介绍的这篇文章就是这一应用的最新研究进展,来自加州大学伯克利分校。本文作者提出了一种可以完全根据人类指令来对图像进行编辑的模型,命名为InstructPix2Pix。需要注意的是,InstructPix2Pix与之前类似的方法不同,之前的方法在接收编辑指令时,更多的是倾向于描述编辑后的目标状态,例如在下图最左侧的“向日葵-玫瑰花”示例中。
在这里插入图片描述
之前方法输入的指令可能是“一个花盆中插满了玫瑰花”,其实这种描述首先带有一定的不确定性。而对于图像编辑任务本身而言,我们需要让模型关注的是要编辑的主体,以及编辑的最终效果。因此,最合适的编辑指令设置为“将向日葵更换为玫瑰花”即可,这样也更加符合人类的直觉。

InstructPix2Pix的提出就是为了解决这一问题,其整合了目前较为成熟的两个大规模预训练模型:语言模型GPT-3[1]和文本图像生成模型Stable Diffusion[2],生成了一个专用于图像编辑训练的数据集,随后训练了一个条件引导型的扩散模型来完成这一任务。此外,InstructPix2Pix模型可以在几秒钟内快速完成图像编辑操作,这进一步提高了InstructPix2Pix的可用性和实用性。

一、本文方法

InstructPix2Pix模型的整体构建流程分为两大部分:(1)生成一个专用于图像编辑任务的数据集。(2)使用生成的数据集训练一个条件扩散模型,该模型可以按照人类的指令对目标图像进行各种形式的编辑操作,例如替换物体、更改图像本身的风格、修改图像的背景环境等等。如下图所示,当给InstructPix2Pix输入简单的更换背景指令“Make it Pairs”,模型会将画面的背景更改为埃菲尔铁塔,当输入指令为“Turn this into 1900s”,模型会将整个画面风格转换为20世纪拍摄的胶片风格,效果也是非常的逼真生动。
在这里插入图片描述
下图展示了InstructPix2Pix构建的框架图,作者还介绍到,InstructPix2Pix对任意输入的真实环境图像和人类指令都实现了zero-shot的泛化。下面我们将详细介绍上述步骤的具体实现细节。
在这里插入图片描述

1.1 多模态编辑任务训练数据集构建

上文提到,作者在InstructPix2Pix中整合了两个大规模预训练模型:语言模型GPT-3和文本图像模型Stable Diffusion,同时利用这两个模型中蕴含的知识构建了一个多模态训练数据集,该数据集主要包含了由文本编辑指令和编辑前后对应图像构成的图像对。在构建过程中,作者首先从文本编辑指令出发,生成成对的图像描述。随后再根据这些描述生成对应的成对图像构成训练样本。

1. 生成成对的图像描述

在这一过程中,需要先给定一个图像文本描述,例如“一个女孩骑马的照片”,如上图(a)中所示,随后需要根据该文本描述生成一些合理的编辑指令,例如“让一个女孩骑龙”,更合理一点的描述为“一个女孩骑龙的照片”,这一操作可以通过GPT-3类似的文本大模型完成。需要注意的是,这些操作完全在文本域中进行,这样做可以生成大量的、多样性的编辑指令,同时能够保证图像变化和文本指令之间的对应关系。

具体来说,作者对GPT-3进行了专门的微调,首先收集了一个规模相对较小的人工编辑三元组数据集,三元组包含(1)输入的图像描述,(2)编辑指令,(3)输出的图像描述,数据集详细介绍如下表所示。
在这里插入图片描述
作者首先收集了700条图像描述样本,然后手动编写了编辑指令和输出图像描述,然后使用这700条样本对GPT-3模型进行微调,微调后的模型可以自行生成详细的训练样本,上表非常鲜明的展示了作者手动生成的样本和GPT-3随后生成样本的对比。

2. 根据图像描述对生成图像

在得到成对的编辑指令后,作者使用文本图像模型Stable Diffusion将这两个文本提示(即编辑前和编辑后)转换为一对相应的图像,如上图(b)所示。然而这一过程仍然面临一个重大挑战:目前的文本到图像模型无法保证图像内容身份信息的一致性,即使在输入的条件提示变化非常小的情况下

例如,我们为模型指定两个非常相似的文本提示:“一张猫的照片”和“一张黑猫的照片”,模型可能会产生两只截然不同的猫的图像,这对本文图像编辑的目的来说是不合理的。为了解决这一问题,作者想到使用这些成对数据来训练模型编辑图像,而不是遵循这些模型原本的生成模式去生成随机图像。

作者使用了最近新提出的Prompt-to-Prompt方法[3]来完成操作,该方法可以针对一个输入文本生成多代近似的图像,且这些图像彼此之间含有相同的身份信息,Prompt-to-Prompt通过在去噪过程中使用交互注意力权重来实现。下图展示了使用Prompt-to-Prompt方法和使用随机方法生成的图像效果对比。
在这里插入图片描述

1.2 条件扩散模型InstructPix2Pix

InstructPix2Pix的建模本质是从隐空间扩散模型(Latent Diffusion)演变而来,Latent Diffusion通过在带有编码器 E E E 和解码器 D D D 的预训练变分自动编码器的隐空间中运行来提高扩散模型的效率和质量。对于一个图像 x x x,扩散过程将噪声添加到编码的隐层向量 z = E ( x ) z=\mathcal{E}(x) z=E(x) 中,产生一个噪声隐变量 z t z_{t} zt,其中噪声等级随时间步数 t ∈ T t \in T tT 而增加。然后训练一个网络 ϵ θ \epsilon_{\theta} ϵθ ,它可以预测在给定的图像条件 C I C_{I} CI 和文本指令条件 C T C_{T} CT 下添加到噪声隐变量 z t z_{t} zt 中的噪声信息,然后通过以下目标函数来优化模型:
在这里插入图片描述之前的工作[4]表明微调大型图像扩散模型往往比从头训练模型以完成图像翻译任务效果更好,尤其是在配对训练数据有限的情况下。因此,本文作者使用预训练的Stable Diffusion对模型进行初始化。为了赋予InstructPix2Pix图像编辑的能力,作者在模型的第一个卷积层中增加了额外的条件输入通道

为了进一步提高图像生成效果以及模型对输入条件的遵循程度,作者在InstructPix2Pix中也引入了Classifier-free引导策略。Classifier-free扩散引导是一种权衡扩散模型生成的样本质量和多样性的方法。其中隐式分类器 p θ ( c ∣ z t ) p_{\theta}\left(c \mid z_{t}\right) pθ(czt) 会将更高的可能性分配给条件 c c c ,以提高生成图像的视觉质量并使采样图像更好地与输入条件相符合。Classifier-free引导的训练需要同时联合训练有条件和无条件去噪的扩散模型,并在推理时结合两个分数进行估计。

对于本文的任务,作者设计了一个评分网络 e θ ( z t , c I , c T ) e_{\theta}\left(z_{t}, c_{I}, c_{T}\right) eθ(zt,cI,cT) ,其中有两个条件:输入图像 c I c_{I} cI 和文本指令 c T c_{T} cT 。在训练过程中,使InstructPix2Pix能够针对两个或任一条件输入进行有条件或无条件去噪。为此,作者引入了两个指导尺度 s I s_{I} sI s T s_{T} sT,可以对其进行调整以权衡生成的样本与输入图像的遵循程度以及它们与编辑指令的遵循程度,评分网络的分数估计如下:
在这里插入图片描述
在下图的“将大卫变成半机械人”的例子中显示了这两个参数对生成样本的影响。 s I s_{I} sI 控制与输入图像的相似性,而 s T s_{T} sT 控制与编辑指令的一致性。
在这里插入图片描述

二、实验结果

在实验部分,作者分别将本文提出的InstructPix2Pix与最近提出的几个相似的图像编辑模型SDEdit和Text2Live进行定性和定量的实验对比,如下图所示。我们可以观察到,虽然SDEdit和Text2Live等模型也可以在对图像整体风格基本保持不变的情况下对图像主体进行编辑,但其会丢失图像主体的一部分身份信息,尤其是在进行较大更改时。此外这些方法需要更加完整的图像生成描述,而不是编辑指令
在这里插入图片描述
紧接着,作者对InstructPix2Pix进行了定量分析实验,实验结果如下图所示,作者使用SDEdit作为对比基线,作者绘制了两个指标的曲线走向:

  • 生成图像与输入图像之间的CLIP嵌入余弦相似度(用来刻画编辑图像与输入图像的内容或身份一致性程度)。
  • 生成图像与指令文本的定向CLIP嵌入相似度(用来刻画编辑图像与指令文本中包含的变化一致性程度)。

通过这两个指标,可以清晰地展现出模型在图像编辑过程中对图像主体的保留程度以及编辑效果。从结果来看,InstructPix2Pix具有更明显的优势。
在这里插入图片描述

三、总结

本文分别借助语言大模型GPT-3和图像文本模型Stable Diffusion构建出一个具有更高智能的图像编辑模型InstructPix2Pix。InstructPix2Pix的出现解决了之前方法中存在的编辑指令不直接、不确定的问题。作者通过手动收集了700条标注数据对现有大模型进行微调,进而完成了整个框架的训练,这一过程也为我们明确了对现有大模型装置的二次研究路径,增强了我们对AIGC社区开发更多更好应用的信心。

参考文献

[1] Tom Brown, Benjamin Mann, Nick Ryder, Melanie Subbiah, Jared D Kaplan, Prafulla Dhariwal, Arvind Neelakantan, Pranav Shyam, Girish Sastry, Amanda Askell, et al. Language models are few-shot learners. Advances in neural information processing systems, 33:1877–1901, 2020.
[2] Robin Rombach, Andreas Blattmann, Dominik Lorenz, Patrick Esser, and Bjorn Ommer. High-resolution image synthesis with latent diffusion models. In Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition, pages 10684–10695, 2022.
[3] Amir Hertz, Ron Mokady, Jay Tenenbaum, Kfir Aberman, Yael Pritch, and Daniel CohenOr. Prompt-to-prompt image editing with cross attention control. arXiv preprint arXiv:2208.01626, 2022.
[4] Tengfei Wang, Ting Zhang, Bo Zhang, Hao Ouyang, Dong Chen, Qifeng Chen, and Fang Wen. Pretraining is all you need for image-to-image translation. arXiv preprint arXiv:2205.12952, 2022.

Illustration by Manypixels Gallery from IconScout

-The End-

关于我“门”

将门是一家以专注于发掘、加速及投资技术驱动型创业公司的新型创投机构,旗下涵盖将门创新服务、将门-TechBeat技术社区以及将门创投基金。
将门成立于2015年底,创始团队由微软创投在中国的创始团队原班人马构建而成,曾为微软优选和深度孵化了126家创新的技术型创业公司。
如果您是技术领域的初创企业,不仅想获得投资,还希望获得一系列持续性、有价值的投后服务,欢迎发送或者推荐项目给我“门”:
bp@thejiangmen.com

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

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

相关文章

Java中的类和对象

文章目录1.面向对象和面向过程的含义2.类的定义与使用2.1什么是类2.2类的定义和格式2.3类名的修改方法![在这里插入图片描述](https://img-blog.csdnimg.cn/f126dbd47491402e93bc83bc07f51673.png)3.类和对象3.1类的实例化3.2成员的访问4.this引用4.1为何要this引用4.2什么是th…

java和vue的学生健康管理系统疫情打卡系统

需求:关注学生健康数据以及疫情打卡 系统分两个角色:学生和管理员 演示视频 https://www.bilibili.com/video/BV1iD4y1h74F/?share_sourcecopy_web&vd_sourceed0f04fbb713154db5cc611225d92156 技术:springbootvueelementuipagehelperm…

医疗器械实验室设计基本要求SICOLAB

医疗器械实验室设计基本要求SICOLAB 医疗器械实验室设计、医疗器械实验室装修、医疗器械实验室建设SICOLAB 一、实验室分类 (一)基础实验室 生物学评价检验实验室、电气安全检验实验室、环境试验检验实验室、手术医疗器械检验实验室、医用材料检验实…

【图像去噪】双立方插值和稀疏表示图像去噪【含Matlab源码 2009期】

⛄一、稀疏表示模型简介 图像的稀疏表示能够更好地表示出图像的特征, 其理论依据就是, 有用的图像信号是有序的, 而噪声普遍是杂乱无章的, 因此可以提取出能够表示图像特有奇异性特征的信息, 比如边缘、线段、条纹、端点等, 再用特定的过完备字典中的原子进行线性组合, 重构出…

JDK的安装及环境变量配置

一、应用安装 1、可以在官网下载jdk,(http://www.oracle.com/)下载自己适用的版本。 2、双击下载的 .exe安装包文件,如 jdk-8u131-windows-x64.exe。 3、进入安装向导。 4、点击下一步,更改安装路径,我选择安装在d盘…

30分钟看懂linux内核 - page介绍

【推荐阅读】 浅析linux内核网络协议栈--linux bridge 深入理解SR-IOV和IO虚拟化 了解Docker 依赖的linux内核技术 浅谈linux 内核网络 sk_buff 之克隆与复制 深入linux内核架构--进程&线程 内核中最初勾引我好奇心的还是内存管理方面,我们平时编写应用程…

代码随想录训练营第53天|LeetCode 1143.最长公共子序列、1035.不相交的线、53. 最大子序和

参考 代码随想录 题目一:LeetCode 1143.最长公共子序列 确定dp数组下标及其含义 dp[i][j]:字符串text1中的0~i字符构成的字符串和字符串text2中的0~j字符构成的字符串的最长 公共子序列 的长度为dp[i][j]。注意和之前做过的Leet…

将postgresql配置为Linux服务管理 systemctl service

发行版安装的数据库在装完后会自动添加数据库服务,但编译安装的不会,需要手动添加。 cd postgresql-14.0/contrib/start-scripts/ cp linux /etc/init.d/postgresql cd /etc/init.d/ vi postgresql 修改以下部分 ## EDIT FROM HERE# Installation pre…

Vuex4.0.0 源码解析

本文章基于以下版本撰写 VUE 版本: 3.0VUEX 版本:4.0.0Vuex仓库:https://github.com/vuejs/vuex/tree/v4.0.0Vux文档:https://vuex.vuejs.org/zh/ 在 vue 中使用 vuex import { createApp } from vue import { createStore } f…

C语言中函数的先后关系,java和C语言的语法区别

以上代码中,sum函数在上面,main函数在下面,在main函数中就可以调用sum函数。 如果sum函数定义在main函数后面,则需要在main函数前面声明sum函数。即在main函数前面写:void sum(int begin, int end); C语言中&#xf…

EMC测试中的电流探头

专栏 专注介绍电磁兼容(EMC)的相关知识,算是对本人浸染 EMC 专业十余年的一个阶段小结 。 本文目录1.EMC测试中的电流探头是什么?2.电流探头的主要指标要求3.什么是转移阻抗?1.EMC测试中的电流探头是什么? …

校园兼职网站

开发工具(eclipse/idea/vscode等): 数据库(sqlite/mysql/sqlserver等): 功能模块(请用文字描述,至少200字): 网站前台:关于我们、联系我们、资讯信息、企业信息、职位信息 管理员模块: 1、管理关于我们、联…

vTESTstudio入门到精通 - vTESTstudio工具栏介绍_File

vTESTstudio作为跟CANoe工具并套使用的一个强大的工具,那么想要用好它就得对他有个全面的认识,第一步起码要知道tade工具栏都包含哪些功能要清楚,今天我们就着重分享下vTESTstudio工具栏包含哪些内容,以便在我们编程的时候更好的去…

java 瑞吉外卖day2 笔记 员工增加 员工信息分页查询

PostMapping public R save(HttpServletRequest request,RequestBody Employee employee){log.info("新增员工:{}",employee);//设置初始密码123456 需要进行md5加密employee.setPassword(DigestUtils.md5DigestAsHex("123456".getBytes()));em…

homeassistant 接入小米温湿度计2

方法可能有很多种,但是我只用这种方法介入成功了 环境: - 香橙派(自带蓝牙,树莓派应该也可以) - 小米温湿度计2 - 网站:Telink Flasher v4.7 、 Telink Flasher (atc1441.github.io) - 固件&#xff1…

基于java+springmvc+mybatis+vue+mysql的高校普法系统

项目介绍 随着信息化时代的到来,管理系统都趋向于智能化、系统化,高校普法系统也不例外,但目前国内的市场仍都使用人工管理,市场规模越来越大,同时信息量也越来越庞大,人工管理显然已无法应对时代的变化,而…

堆排序快速排序插入排序

堆排序 数据结构使用的是1 dimension的数组来作为二叉树的堆结构,所以并没有使用结构体,而是直接使用了数组 而且堆是完全二叉树,也就是除了最后一层以外,其他层都是满二叉树,最后一层可能不满,所以1dime…

基于jeecgboot的flowable流程支持服务任务的功能

1、描述 Java服务任务用于调用外部Java类。 2、图形表示法 服务任务可视化为圆角矩形,左上角有一个小齿轮图标,如下图: 3、XML表示 有三种方法声明如何调用Java逻辑,下面分别介绍: 调用固定的类 使用flowable:cla…

Flask打开调试模式

调试模式 Flask支持本地开发,但是每次修改代码后需要手动重新启动程序,这不是很友好,事实上Flask支持调试模式来做到更好,Flask服务会在代码更改时自动重新加载,如果出现问题,还能提供调试器以供调试 如何…

docker登陆MySQL提示密码错误,Navicat也连接不上

问题原因 今天在操作自己云服务器MySQL数据库的时候发现使用root进行远程登录的时候被拒绝了,一直提示Access denied for user ‘root‘‘localhost‘ (using password: YES)。 可以确认自己账号密码是没有错的。后来以为是远程访问出问题了,进入到容器…