【论文阅读】dreambooth

news2025/4/19 8:38:14

简介

  • 目标:subject-driven generation,针对特定物体的图像生成,仅使用少量目标主体图像,dreambooth可以在prompt的指导下生成大量目标主体在不同场景下的图像。例如下图中小狗,我们给定的set就是左侧的input images,需要生成小狗在不同背景/场景下的图像
    在这里插入图片描述
  • 做法:微调预训练文生图模型将input images绑定到特定的identifier上。并通过添加类别特定保留损失class- specific preservation loss鼓励生成多样的(set中没有出现的)场景姿势视角等
  • 之前的模型无法实现这种目标驱动的生成的原因是模型的表达能力有限,模型的output domain没有见过指定目标在不同场景下的生成。现有模型无法保留/识别/理解物体最核心的特征。解决方案:通过训练一个特定的embedding来绑定特定物体的特征(bind identifier with specific subjects)
  • 模型输入
    • input images
    • text prompt。将类别实例绑定到identifier上以使用类别上的先验知识。eg:a [V] dog
  • 为了防止language drift导致原始的dog的emb向特定的输入偏移),这里使用到class-specific preservation loss 鼓励生成的多样性。这块不太能理解

方法

  • 用少量数据fine-tune容易导致过拟合(生成的图像与输入很像)。模型可能会走捷径,并没有学会特定物体的真实分布使得生成的图像多样性不足

prompts

  • a [identifier] [class none]
  • 将class none绑定到identifier上以利用类别先验知识。实验发现添加错误的class none或者不添加会导致训练时间长,language drift以及模型性能下降。(有点“继承”和“多态”对感觉)

identifier

  • 选择要求:rare。在语言模型和扩散模型中都具有较弱的先验。
  • 最好不要选择常见词汇。如果选择常见的词汇,则identifier需要先与原始meaning解绑然后再绑定到新的meaning中,选择较为rare的词汇可以较为容易地学习新知识,不受源词汇的干扰
  • 不要选择乱码:因为文本预处理的时候会分割词根词缀,乱码会导致最终分割的情况是所有字符都分割开,而模型对字符有很强的先验,也会干扰identifier的学习

模型训练

fine tune模型的所有层,包括text embedding

  • 存在问题

    • language drift:当使用很少的图像文本对去fine tune大模型时,使用的文本词汇的meaning会慢慢偏移到输入的特定图像特征上去
    • 多样性降低:主要可能是过拟合,例如训练时间过长。模型的输出局限于输入的图像
  • 解决:class-specific preservation loss

    • 去掉identifier的文本作为prompt分别输入fine tune之前和之后的模型中生成的图像要越接近越好。
    • 对于克服language drift和鼓励输出多样性是很有效的
  • 最终损失

    • 重构损失:输出与输入之间的相似度
    • 先验损失:先验类别在微调前后的相似度
      在这里插入图片描述

注意

  • 对于简单的图像例如小猫小狗,3-5张图像可以有较好的效果。但是要生成更加复杂的图像,可能需要更多的输入
  • application很强大,具体见论文
    在这里插入图片描述
  • 也有一些局限
    • 无法生成太奇怪的场景,因为可能这种场景class也没有在预训练模型中见过。例如书包在国际空间站上
    • prompt改变了原始输入的一些特征
    • prompt与输入图像高度相似
      在这里插入图片描述
    • 对于比较罕见的目标,难以学习,可能难以支持目标的多种变体。
    • 可能会出现“幻想”对目标特征,取决于模型的先验强度以及语义修改的复杂度

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

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

相关文章

Matplotlib - 绘制 高亮显示的饼图 (Highlight Pie Chart) 函数源码

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://blog.csdn.net/caroline_wendy/article/details/131089501 饼图 (Pie Chart) 是一种圆形统计图,被分割成片用于表示数值间的比例关系。每个切片的弧长以及相应的中心角和面积…

【QQ聊天界面-创建自定义Cell Objective-C语言】

一、我们刚才说到这个地方,我们说,用系统的单元格,是不是不够用吧, 1.那么这个时候,我们就要、需要自定义单元格 自定义单元格,我们就新建一个类,继承自UITableViewCell 来,写一下, 那么,这个时候,应该在哪个文件夹下,去新建类啊, 是不是在Views下面吧, 因为…

一文详解!Robot Framework Selenium UI自动化测试入门篇

目录 前言: 自动化框架的选择 测试环境的搭建 导入Selenium2Library包 关键字是什么? 创建测试用例 前言: 自动化测试的重要性越来越受到人们的重视,因为它可以提高测试效率、降低测试成本并减少人为错误的出现。为了满足这…

软考A计划-电子商务设计师-模拟试题卷八

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例 👉关于作者 专注于Android/Unity和各种游戏开发技巧,以及各种资源分享&am…

Shiro自定义过滤器会执行两次?看我怎么给你解决

关注“Java架构栈”微信公众号,回复暗号【Java面试题】即可获取大厂面试题。 最近九哥的一个学生在使用自定义ShiroFilter处理JWT校验时,发现自己写的Filter在处理一次请求时会被执行两次。这个问题困扰了他一个下午都没有解决,最后不得不求…

新手小白如何入门学习CTF?【网络安全】

最近有很多新手小白私信我:如何学习CTF?新手小白应该怎么入门CTF?想打CTF,但是没有思路怎么办? 昨天下班之后,花了几个小时,整理了一下CTF学习的思路与方法,分享给大家,如…

用jprofiler来分析 jvm 堆 内存泄露,fullgc

jvm 命令和工具_个人渣记录仅为自己搜索用的博客-CSDN博客 堆太大? 方法1: 重新设置堆后,重启,复现. 方法2: 切割 split -b 1M heap.bin smallfilescp smallfile* usernamemac-host:/Users/username/cat smallfile* > heap.bin官网文档 JProfiler Help - HPROF snapshot…

【逃离】UniAccess

能看到这篇文章,说明你已经是老屁股了(保命要紧) 上面是UniAccess功能 你想要做的事情无非是三种 不顾后果强力卸载UniAccess期望只保留(内网)网络认证禁用UniAccess部分功能 第一种:直接卸载,这里不做说明了&#x…

开发轮子(一):全国省/市/区/街道三、四级联动

概述 本服务提供中国标准行政区划数据查询功能,支持: 1 . 全国省、市、区/县、乡镇/街道 四级行政区划数据; 2 . 支持三级区划(省/市 - 区/县)轮廓数据; 3 . 支持区划查询、省市区列表、查询子级区划等功能…

十六、立方体贴图(天空盒)

第一部分 概念: 1) 引用 OpenGL ES 立方体贴图本质上还是纹理映射,是一种 3D 纹理映射。立方体贴图所使的纹理称为立方图纹理,它是由 6 个单独的 2D 纹理组成,每个 2D 纹理是立方图的一个面。 立方图纹理的采样通过一个 3D 向量…

CodeGeeX 2.0版本重大升级:通过聊天对话的方式直接操作代码

CodeGeeX 2.0版本正式上线!从命名上看这是一次大版本的升级。 上个月,CodeGeeX在VSCode和JetBrains IDEs的插件中,加入了智能问答(Ask CodeGeeX)功能,让用户可以在IDE中通过问答对话的方式解决技术问题。本…

Selenium自动化程序被检测为爬虫,怎么屏蔽和绕过

Selenium 操作被屏蔽 使用selenium自动化网页时,有一定的概率会被目标网站识别,一旦被检测到,目标网站会拦截该客户端做出的网页操作。 比如淘宝和大众点评的登录页,当手工打开浏览器,输入用户名和密码时&#xff0c…

docker 无法将“docker”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。

💧 d o c k e r 无法将“ d o c k e r ”项识别为 . . . . . . \color{#FF1493}{docker 无法将“docker”项识别为......} docker无法将“docker”项识别为......💧 🌷 仰望天空,妳我亦是行人.✨ 🦄 个人主页…

Elasticsearch:路由 - routing

你是否考虑过 Elasticsearch 如何知道将文档存储在何处? 它如何知道在哪里寻找它们,以及是否检索、更新或删除它们? 这是一个令人兴奋的过程,一切都归结为路由的概念。 路由介绍 路由是确定文档属于哪个分片以便检索它或将其存储在…

新手配learnsite

把下载好的learnsite放在C盘根目录下 改个名 开始,Microsoft SQL Server Tools 19,SQL Server Management studio 19 这里我其实是没看懂,但是我觉得是选个服务器。 点开数据库引擎这里试一下 因为我来回装好几次sql,这里只有ls2有印象好像是…

git statsh、git submodule

文章目录 git stash解决git pull和本地文件的冲突1、先将本地修改存储起来2、pull内容3、还原暂存的内容4、解决文件中冲突的的部分5、删除stash。6 、git stash pop 与 git stash apply <stash{id}> 的区别。 回退后的版本是不追踪的git 还原修改git submodule git stas…

SpringBoot整合达梦数据库的教程(详解)

一、官网下载试用版本 http://www.dameng.com/down.aspx 我是win 11系统下载如下&#xff1a; 二、安装 解压后 双击打开iso文件 然后点击安装 选择创建实例&#xff08;注意记住账号/密码 端口号 默认的是 SYSDBA/SYSDBA 5236&#xff09; 然后一直下一步 到完成&#xff…

Win11下查看快捷键占用情况

Win11下查看快捷键占用情况 使用 OpenArk&#xff0c;根据文档描述&#xff0c;它可以查看许多 Windows 系统信息&#xff0c;包括快捷键&#xff0c;支持 Win10。 操作步骤&#xff1a; 1.下载 OpenArk Github&#xff1a;https://github.com/BlackINT3/OpenArk 单文件下载&…

计算机毕业论文内容参考|基于c语言的新一代预约挂号系统的设计与实现

文章目录 导文文章重点前言系统架构相关技术与方法介绍网络通信技术数据库管理技术算法模型选择技术分析技术设计:技术实现:总结与展望:本文总结:后续工作展望:导文 计算机毕业论文内容参考|基于c语言的新一代预约挂号系统的设计与实现 文章重点 前言 随着科技的不断发展…

linuxOPS基础_linux软件包安装

软件包概述 上图是windows下的软件包 Linux下也有很多可以安装的软件&#xff0c;而这些软件的安装包可细分为两种&#xff0c;分别是源码包和二进制包。 Linux下软件的安装方式 ① RPM软件包安装 > 软件名称.rpm ② YUM包管理工具 > yum install 软件名称 -y ③ 源码…