浅析扩散模型与图像生成【应用篇】(二十二)——DreamBooth

21. DreamBooth: Fine Tuning Text-to-Image Diffusion Models for Subject-Driven Generation

  本文提出一种根据少量样例图片来对文生图模型进行微调的方法,从而可以生成包含样例物体,但风格、姿态、背景都可以任意修改的图片。现有的文生图模型都是需要给出特别详细的描述,然后生成对应的图片,但即使描述得再具体,再详细,生成的图片可能也不能满足使用者的要求。比如,我就想生成与自己家狗一样的狗狗照片,但是姿势、背景都可以自由设定,而不是任意生成一张狗的图片。为了解决这个问题,本文通过输入少量样例图片(例如几张自己家狗的照片),并给定一个包含特殊标记符的文字描述(“a [V] dog”),来对一个文生图模型(如SD、Imagen)进行微调训练,使模型将样例中狗的特征与特殊标记符"[V]“关联起来。在推理时,只要在文字描述中加入特殊标记符”[V]“就能个性化的生成自己家狗狗的图片,如“a [V] dog is swimming”。这一特性无疑是非常有价值的,因此在各大图像生成软件中也都包含了DreamBooth工具。
在这里插入图片描述
  那么这么惊艳的效果是如何实现的呢?首先,我们简单回顾一下当前的文生图模型是如何工作的。目前流行的文生图模型,普遍采用基于扩散模型的架构,给定一个文字提示 P P P,由文本编码器 Γ \Gamma Γ进行编码后得到对应的文本条件 c = Γ ( P ) c=\Gamma(P) c=Γ(P),将一个随机噪声 ϵ \epsilon ϵ和条件 c c c一起输入到生成模型 x ^ θ \hat{x}_{\theta} x^θ中,可得生成的图像 x g e n = x ^ θ ( ϵ , c ) x_{gen}=\hat{x}_{\theta}(\epsilon, c) xgen=x^θ(ϵ,c)。生成模型 x ^ θ \hat{x}_{\theta} x^θ的训练过程如下 E x , c , ϵ , t [ w t ∥ x ^ θ ( α t x + σ t ϵ , c ) − x ∥ 2 2 ] \mathbb{E}_{\mathbf{x},\mathbf{c},\boldsymbol{\epsilon},t}\big[w_t\|\hat{\mathbf{x}}_\theta(\alpha_t\mathbf{x}+\sigma_t\boldsymbol{\epsilon},\mathbf{c})-\mathbf{x}\|_2^2\big] Ex,c,ϵ,t[wtx^θ(αtx+σtϵ,c)x22]其中 x \mathbf{x} x表示真实的图像, α t \alpha_t αt可以理解为是噪声和原图之间的比例系数, σ t \sigma_t σt是噪声的方差, w t w_t wt是损失权重, t t t是时间步数。通过对原始图像逐步添加噪声得到时刻 t t t时的有噪声图像 z t = α t x + σ t ϵ \mathbf{z}_t=\alpha_t\mathbf{x}+\sigma_t\boldsymbol{\epsilon} zt=αtx+σtϵ,然后利用生成模型在文本条件的引导下对噪声图像逐步去噪得到生成图像。当然基于扩散的文生图方法还是有很多细节和实现方式了,具体可参考本博其他的文生图模型介绍,如DALLE·2,LDM和GLIDE。
  了解了文生图模型的大体流程,下面就是要考虑如何让其根据我们提供的样例生成个性化图片了。最直接的方法,当然是使用样例图片对预训练好的文生图模型进行微调训练,但经过微调训练之后,模型可能具备了生成样例图片的能力,但它本质上是个随机采样的过程,无法保证每次生成的都是指定的样例图片。当然我也可以反复的训练,直到模型过拟合,只能输出特定样例的图片,但同时模型也丧失了生成其他图片的能力了,这肯定也不是我们希望看到的。那么如何告诉模型,我现在希望生成的就是我给你这几个样例图片里的对象呢?作者想到可以用一个特殊的标记符”[V]“来描述它,当模型看到输入文本里带有描述符”[V]“时,就知道我要生成样例图片中的对象了,如果没有特殊标记符,则生成其他的对象。基于这个想法,作者提出一种微调训练方法,给定几张样例图片(通常3-5张),并给定一个带有特殊标记符的文本描述“a [identifier] [class noun]”,其中”[identifier]“就是上文提到的特殊标记符,”[class noun]"是样例图片中对象的类别。利用这些文本-图像对对模型进行微调训练,使模型将样例对象的特征与特殊标记符绑定在一起,再看到这个标记符时就知道要生成样例对象了。
  那么这个特殊标记符如何设定呢?作者尝试使用了“unique”或“special”这类现成的英文单词,但这些词汇本身是具备一定含义的,在原有的文本编码器中也有相应的理解先验,因此需要模型先将这些词与原本的意思解绑,再与样例对象绑定,这就给模型训练带来很大的困难。此外,作者还尝试了使用随机的字母和数字组合,如“xxy5syt00”,但编码器是逐个字母来编码的,这些字母也会包含较强的先验与前面使用单词的方式存在同样的问题。最终,作者选择使用一些“罕见词”,就是利用文本库中的一些出现概率极低的词汇作为特殊标记符,如“sys”。实际中作者发现使用T5-XXL模型的文本库中{5000,…10000}范围里的字符数小于3的词汇可以取得较好的效果。
  在训练过程中,作者发现存在两个问题:1.语言漂移(Language drift),就是我们前文提到的随着训练,模型逐渐忘记了如何生成同类别的其他物体,如只能生成你家狗狗的照片,而不能生成其他狗的照片;2. 多样性损失,作者发现随着训练,模型输出图像中对象的姿态基本都保持不变。为了解决这个问题作者提出一种特定类别先验保持的损失函数(Class-specific Prior Preservation Loss),其思想也很简单,不是担心的在微调过程中忘记如何生成其他同类别的对象吗,我就把特殊标记符去掉,让模型同时生成一个其他类别的对象,和带有特殊标记符的生成过程一起进行微调,并计算损失,损失函数如下 E x , c , ϵ , ϵ ′ , t [ w t ∥ x ^ θ ( α t x + σ t ϵ , c ) − x ∥ 2 2 + λ w t ′ ∥ x ^ θ ( α t ′ x p r + σ t ′ ϵ ′ , c p r ) − x p r ∥ 2 2 ] \mathbb{E}_{\mathbf{x},\mathbf{c},\boldsymbol{\epsilon},\boldsymbol{\epsilon}^{\prime},t}[w_{t}\|\hat{\mathbf{x}}_{\theta}(\alpha_{t}\mathbf{x}+\sigma_{t}\boldsymbol{\epsilon},\mathbf{c})-\mathbf{x}\|_{2}^{2}+\lambda w_{t^{\prime}}\|\hat{\mathbf{x}}_{\theta}(\alpha_{t^{\prime}}\mathbf{x}_{\mathrm{pr}}+\sigma_{t^{\prime}}\boldsymbol{\epsilon}^{\prime},\mathbf{c}_{\mathrm{pr}})-\mathbf{x}_{\mathrm{pr}}\|_{2}^{2}] Ex,c,ϵ,ϵ,t[wtx^θ(αtx+σtϵ,c)x22+λwtx^θ(αtxpr+σtϵ,cpr)xpr22]可以看到是在原本的损失函数基础上又加了一项,其中 x p r \mathbf{x}_{\mathrm{pr}} xpr是由一个参数冻结的预训练好的扩散模型生成的图像, c p r \mathbf{c}_{\mathrm{pr}} cpr是文本条件,其对应的文本输入为“a [class noun]”,即去掉了特殊标记符, λ \lambda λ是一个权重系数。整个过程如下图所示
在这里插入图片描述
  作者表示在TPUv4上只需要5分钟就能对Imagen模型完成微调,在A100上也只需要五分钟就能完成SD模型的微调。经过微调训练,模型可以根据样例图片生成非常多样的图片,并保持样例对象的主要特征不变,如下图所示
在这里插入图片描述
  并且对于视角合成,艺术风格渲染和属性修改等复杂任务也不在话下
在这里插入图片描述

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

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

相关文章

作为新型锂离子电池正极材料 磷酸锰铁锂(LMFP)行业发展空间有望扩展

作为新型锂离子电池正极材料 磷酸锰铁锂(LMFP)行业发展空间有望扩展 磷酸锰铁锂(LMFP)指在磷酸铁锂基础上添加锰元素而制成的新型磷酸盐类锂离子电池正极材料。磷酸锰铁锂含有橄榄石型结构,生产成本低、能量密度高、绿…

操作系统之管程

目录 一. 为什么要引入管程二. 管程的定义与基本特征三. 扩展1:用管程来解决生产者和消费者问题四. 扩展2: Java中类似于管程的机制 \quad 一. 为什么要引入管程 \quad \quad 二. 管程的定义与基本特征 \quad \quad 三. 扩展1:用管程来解决生产者和消费者问题 \quad 很智能 \qu…

VM 安装Ubuntu20

1、VM 新建虚拟机 类型配置 - 典型 安装源选择 (安装包获取:Ubuntu桌面系统 | Ubuntu) 设置计算机名与用户账号密码 为虚拟机命一个名,设置虚拟机文件保存的位置 设置磁盘相关信息 最后一步,确定虚拟机的相关参数 设置…

WDW-10B微机控制电子万能试验机技术方案

一.设备外观照片: 项目简介: 微机控制电子式万能试验机是专门针对高等院校、各种金属、非金属科研厂家及国家级质检单位而设计的高端微机控制电子式万能试验机、计算机系统通过全数字控制器,经调速系统控制伺服电机转动&#xff…

【UE+MQTT】Mqtt Client插件使用记录

步骤 1. 在虚幻商城中下载“Mqtt Client”插件 插件地址:https://www.unrealengine.com/marketplace/zh-CN/product/34cbcaef7a664451a886dba37b4769bc?sessionInvalidatedtrue 文档地址:[虚幻引擎] DT Mqtt 插件详细说明 – DT 2. 在虚幻编辑器中确…

input对接二维码条形码扫描仪输入,检测扫描完成后按下回车事件

二维码和条形码扫描仪其实是模拟键盘输入的操作,只是操作比键盘要快很多,其实想要检测扫描仪输入完成的操作,可以有多种方式,一个是比较笨的,就是设置防抖操作,等间隔超过50ms就算输入完成,还有…

Vue3:menu导航栏出现多个同一跳转路径的菜单处理

文章目录 需求整理实现思路实现过程 需求整理,实现思路 最近公司想将之前老的项目整理出来,因为这个老项目内容太杂什么页面都往里面塞,导致菜单特别多,公司就像将这个老的项目迁出来,这个旧的项目本来是后端PHP写的。…

学完 C++ 基本语法后,您就可以开始学习 Qt 了。

在开始前我有一些资料,是我根据网友给的问题精心整理了一份「Qt的资料从专业入门到高级教程」, 点个关注在评论区回复“888”之后私信回复“888”,全部无偿共享给大家!!这些基本语法包括变量、类型、循环、判断、指针…

【启明智显技术分享】基于ESP32-S3方案的彩屏固件烧录指南

前言: 【启明智显】专注于HMI(人机交互)及AIoT(人工智能物联网)产品和解决方案的提供商,我们深知彩屏显示方案在现代物联网应用中的重要性。为此,我们一直致力于为客户提供彩屏显示方案相关的技…

Python-VBA函数之旅-repr函数

目录 一、repr函数的常见应用场景 二、repr函数使用注意事项 三、如何用好repr函数? 1、repr函数: 1-1、Python: 1-2、VBA: 2、推荐阅读: 个人主页:https://blog.csdn.net/ygb_1024?spm1010.2135.…

Android单行字符串末尾省略号加icon,图标可点击

如图 设置仅显示单行字符串,末尾用省略号,加跟一个icon,icon可点击 tvName.text "test"val drawable ResourcesCompat.getDrawable(resources, R.mipmap.icon_edit, null)tvName.setCompoundDrawablesWithIntrinsicBounds(null,…

SpringCloud——consul

SpringCloud——consul 一、consul安装与运行二、consul 实现服务注册与发现1.引入2.服务注册3.服务发现 三、consul 分布式配置1.基础配置2.动态刷新3.配置持久化 四、参考 Eureka已经停止更新了,consul是独立且和微服务功能解耦的注册中心,而不是单独作…

Ubuntu20.04 OpenCV详细安装教程(附多版本切换共存教程)

opencv安装有两种方式: 1.使用包管理器安装预编译版本(安装十分简单,但是版本只有4.2.0,且没有扩展模块且不支持Qt窗口) 2.从源码安装(比较复杂,但是推荐) 1.安装预编译版本 sud…

一文搞懂前端跨页面通信的那些方案们

前端开发逃避不开跨页面通信这项工作,跨页面通信,就好比A页面要和B页面说话,可能只是说一句话,不需要回话,可能是要给一些东西,希望得到回复,并频繁进行沟通,接下来我们说说这些跨页…

『MySQL 实战 45 讲』20 - 幻读是什么,幻读有什么问题?

幻读是什么,幻读有什么问题? 需求:创建一个小表 CREATE TABLE t (id int(11) NOT NULL,c int(11) DEFAULT NULL,d int(11) DEFAULT NULL,PRIMARY KEY (id),KEY c (c) ) ENGINEInnoDB;insert into t values(0,0,0),(5,5,5), (10,10,10),(15,…

TriCore User Manual 笔记 1

说明 本文是 英飞凌 架构文档 TriCore TC162P core archiecture Volume 1 of 2 (infineon.com) 的笔记,稍作整理方便查阅,错误之处,还请指正,谢谢 :) 1. Architecture 2. General Purpose & System Register 名词列表&#…

探索数据结构

什么是数据结构 数据结构是由:“数据”与“结构”两部分组成 数据与结构 数据:如我们所看见的广告、图片、视频等,常见的数值,教务系统里的(姓名、性别、学号、学历等等); 结构:当…

远动通讯屏功能和作用

远动通讯屏功能和作用 首先大家要先了解,什么叫远动通讯?远动通讯是电力系统指用于远程通信和远程控制的设备。它主要采集电发场站的电气运行参数与远程调度监控中心进行数据交互,并接收调度中心远程的指令控制。提高电力系统的运行效率和可靠…

使用perf查看热点函数和系统调用最大延迟函数

1、安装perf工具 1.1、ubuntu 18.04 x86下的安装 安装sudo apt install linux-source sudo apt install linux-tools-uname -r # ubuntu 18.04虚拟机实操可行 1.2、ubuntu 18.04 ARM下的安装 参考 Nvidia Jetson系列产品安装Perf ​ARM64版本的Ubuntu上安装perf 与参考文…

汽车灯罩使用聚碳酸酯(PC)和PMMA(亚克力)哪个更好?汽车车灯的灯罩如果破损破裂破洞了要怎么修复?

汽车灯罩使用聚碳酸酯(PC)和PMMA(亚克力)哪个更好? 聚碳酸酯(PC)和PMMA(亚克力)都是汽车灯罩常见的材质,它们各自具有独特的优点和特性,因此选择…