摘要:我们提供了一键运行的notebook AI作画 Dreambooth 生成自定义主体,可以在ModelArts平台上调试开发自己的文生图模型。

本文分享自华为云社区《DreamBooth+LoRA微调生成主体》,作者: 杜甫盖房子 。

DreamBooth+LoRA微调生成主体

文生图风靡一时,但预训练的文生图模型无法控制生成特定的主体。DreamBooth提供了一种方法,只需要特定主体的几张图就可以微调文生图模型,生成包含特定主体的图片。例如,提供如下主体图片,给定主体名称为biu model:

微调文生图模型后,使用"biu model in the garden"作为prompt推理,将生成包含该主体的图片:

我们提供了一键运行的notebook AI作画 Dreambooth 生成自定义主体,可以在ModelArts平台上调试开发自己的文生图模型。此外,我们还提供了零代码运行的Workflow DreamBooth自定义生成主体,可以通过简单的可视化配置完成模型训练、AI应用打包、在线推理服务部署等全流程,无需任何开发即可玩转个性化文生图模型微调。

DreamBooth

DreamBooth 是一种生成个性化文生图模型的方法,用户可以给定3~5张某个主体的图像及该主体的名称,微调文生图模型(本案例使用的是Stable Diffusion v1-4),微调后的模型可以使用主体名称作为prompt,生成对应主体的图像,如图:

图源:DreamBooth: Fine Tuning Text-to-Image Diffusion Models for Subject-Driven Generation

DreamBooth想要将定义的主体名称与特定主体绑定,同时保留主体对应类别的细节特征。因此,在构建主体名称时可以加入大类别名,如主体是一只可爱的小猫,则主体名称可以定义为"a [V] cat",其中大类名"cat"可以保留大类特征,[V]作为稀有标识符,可以避免主体受通用词组先验知识的影响。

为了减少微调导致的语义漂移,以及保持扩散模型生成内容的多样性,DreamBooth引入了prior preservation loss,利用大类的先验知识生成与训练主体相同大类的不同实例对模型进行监督:

图源:DreamBooth: Fine Tuning Text-to-Image Diffusion Models for Subject-Driven Generation

LoRA

Low-Rank Adaptation of Large Language Models (LoRA) 是一种训练方法,可以在消耗较少内存的同时加速大模型的训练。大模型通常具有很多参数,直接微调大模型将是一个缓慢而昂贵的过程。在Intrinsic Dimensionality Explains the Effectiveness of Language Model Fine-Tuning中提出一个洞见:预训练语言模型微调后,权重矩阵中表征特征的部分其实是很低秩的。作者受此启发,认为模型微调时,更新的权重表征特征的部分应该也是低秩的,即在模型微调时,权重可以表示为:W=W0+ΔWW=W0​+ΔW,其中,W0W0​为不更新的预训练权重矩阵,ΔWΔW为实际更新的、可以进行低秩分解的权重矩阵,如图,蓝色部分为不更新的预训练权重,橙色部分为分解为两个低秩矩阵的微调权重:

图源:LoRA: Low-Rank Adaptation of Large Language Models

LoRA有几个显而易见的优势:

  • 预训练权重保持不变,因此模型不容易发生灾难性的遗忘;
  • 秩分解矩阵的参数明显少于原始模型,微调部分的权重更小,易于移植;
  • 预训练模型可以共享,不同的任务只需要提供很小的LoRA模块,可以高效的切换任务,显著降低存储需求;
  • 微调成本大幅降;
  • 在推理时可以将橙色部分与蓝色部分合并,不会引入额外的推理时延。

案例

我们提供了两种形式的案例:一键运行的notebook AI作画 Dreambooth 生成自定义主体 和零代码运行的Workflow DreamBooth自定义生成主体

notebook使用上灵活程度更高,适合有一定代码能力的朋友玩一下。Workflow封装程度更高,提供了详细的使用文档,同时包含了AI应用等节点,不需要写任何代码也可以生成自己的模型并在线测试。

点击关注,第一时间了解华为云新鲜技术~

身未动心已远,AI带你流浪地球的更多相关文章

  1. Visual Studio 2015 未响应/已停止工作的问题解决

    在我把之前项目从10版本升级到15版本的时候,一打开转换的项目过几分钟立马卡死,出现未响应/已停止工作的问题,我试过了很多方法: 1.升级操作系统,8.1升级10,没用! 2.重装VS,没用! 3.卸 ...

  2. 阿里云朱照远: AI打开新视界 8K时代已来!

    2018年4月11-12日,2018亚太CDN峰会在北京隆重召开,大会由亚太CDN领袖论坛.电视云论坛.短视频论坛.视频云论坛.新技术论坛.运营商论坛.国际云论坛等7大部分组成.在亚太CDN领袖峰会上 ...

  3. 超级大佬已提前布局AI域名,人工智能时代真的来临了?

    近日,郭盛华公司巨资收购的ai域名引起了业界深度关注,ai人工智能行业想必大家都熟悉不会陌生,但是ai域名你知道吗?了解域名行业的米友,对于ai域名肯定都熟悉,为什么今天小编要突然提到ai域名?因为a ...

  4. 【动态规划】盖房子(house)--未提交--已提交

    问题 D: 盖房子(house) 时间限制: 1 Sec  内存限制: 64 MB提交: 27  解决: 16[提交][状态][讨论版] 题目描述 FJ最近得到了面积为n*m的一大块土地,他想在这块土 ...

  5. AI带你省钱旅游!精准预测民宿房源价格!

    作者:韩信子@ShowMeAI 数据分析实战系列:https://www.showmeai.tech/tutorials/40 机器学习实战系列:https://www.showmeai.tech/t ...

  6. 2106 Problem F Shuffling Along 中石油-未提交-->已提交

    题目描述 Most of you have played card games (and if you haven’t, why not???) in which the deck of cards ...

  7. 2078 Problem H Secret Message 中石油-未提交-->已提交

    题目描述 Jack and Jill developed a special encryption method, so they can enjoy conversations without wo ...

  8. 最美应用API接口分析

    最美应用API接口分析html, body {overflow-x: initial !important;}.CodeMirror { height: auto; } .CodeMirror-scr ...

  9. History of AI

    人工智能的历史源远流长.在古代的神话传说中,技艺高超的工匠可以制作人造人,并为其赋予智能或意识.[1]现代意义上的AI始于古典哲学家用机械符号处理的观点解释人类思考过程的尝试.20世纪40年代基于抽象 ...

  10. TCP带外数据

    传输层协议使用带外数据(out-of-band,OOB)来发送一些重要的数据,如果通信一方有重要的数据需要通知对方时,协议能够将这些数据快速地发送到对方.为了发送这些数据,协议一般不使用与普通数据相同 ...

随机推荐

  1. 一文读懂计算机底层网络原理,包括TCP、UDP、header,什么是包、帧、段等关键问题

    说到计算机网络原理,大家可能马上联想到,七层协议,传输层,链路层,三次握手四次挥手:前端的同学,还会想到我们用Crome F12的network里面的headers,状态码等.后端同学可能会联想到,抓 ...

  2. go中的内存逃逸

    内存逃逸(memory escape)是指在编写 Go 代码时,某些变量或数据的生命周期超出了其原始作用域的情况.当变量逃逸到函数外部或持续存在于堆上时,会导致内存分配的开销,从而对程序的性能产生负面 ...

  3. EhCache使用详细介绍

    http://hi.baidu.com/yjl_zzh/item/18e6518397cdd1d9d1f8cdfb 2.EhCache的使用注意点    当用Hibernate的方式修改表数据(sav ...

  4. Linux Media 子系统链路分析

    一.概述 Media 子系统是一个用于处理多媒体设备的框架,它提供了一组 API 和驱动程序,用于管理和控制视频.音频和其他多媒体设备.而 V4L2 是 media 子系统的一部分,用于处理视频相关的 ...

  5. 两个对于电影片段的情绪研究(中国&国外)

    1.国内的研究(A new standardized emotional film database for Asian culture) 测试片使用了8种情绪类型,每部片子有4个维度的分数,分数是从 ...

  6. L3-008 喊山

    #include <bits/stdc++.h> using namespace std; using pii = pair<int, int>; const int N = ...

  7. 潜在威胁信息模型(PTIM)-Potential threats Information Modeling

    前言 这只是一位学识浅薄博主的一个突然想法,还望各位专业领域的专家教授轻怼 潜在威胁信息模型 目前的想法是通过全城摄像头建立城市的潜在威胁信息模型,这个潜在威胁可以包括:天气灾害(冰雹.雾霾能见度等) ...

  8. 每天5分钟复习OpenStack(十)Ceph 架构

    在很多关于Ceph的文章中,通常会介绍一堆概念.虽然这些概念很重要,但是对于一个新手来说,同时接受太多的概念实际上很难消化.因此,在阅读本章节时要保持轻松的心情,只需要对所有的概念有个了解就可以了,因 ...

  9. python中的post请求

    用python来验证接口正确性,主要流程有4步: 1 设置url 2 设置消息头 3 设置消息体 4 获取响应 5 解析相应 6 验证数据 Content-Type的格式有四种:分别是applicat ...

  10. 09 - Shell流程控制语句

    1. if-else语句 能够使用if条件语句进行条件判断 1.1 if 语法 if 条件 then 命令 fi if 条件; then 命令; fi 1.2 if-else 语法 if 条件 the ...