【云驻共创】昇腾AI·玩转AIGC实战营·专场直播 :悟空画画模型微调讲解答疑
生成式AI介绍
生成式AI是指计算机通过机器学习从现有数据中学习一个对象(物品、产品或任务)的要素,进而生成一个全新的、原创的、真实的、与原来内容相似的对象 —— Gartner
生成式AI前景预测
根据Gartner发表的《2021年预测:人工智能对人类和社会的影响》
- 至2023年将有20%的内容被生成式AI所创建
- 至2025年,生成式AI产生的数据将占所有数据的10%,而今天这个比例不到1%
生成式AI仍处于萌芽期,但其广阔的应用场景和巨大需求空间吸引着大量资本和技术的投入,预计将在2-5年内实现规模化应用
生成式AI具体应用
- 生成代码(AI Generated Code, AIGC)
- ChatGPT编写代码
- 生成内容(AI Generated Content, AIGC)
- Stable Diffusion 文生图
- Txt2Video 文生视频
生成式AI有着广阔的应用空间,目前可以生成代码和内容,并驱动业务场景不断创新
生成式模型介绍
生成式模型的主流结构
生成式模型的主流结构主要有以下4种
- GAN:Adversarial training(对抗性训练)
- VAE:Maximize variational lower bound(最大変分下界,VAE的损失函数就叫做Variational Lower Bound)
- Flow-based models:Invertible transform of distributions(分布式可逆变换)
- Diffusion models:Gradually add Gaussian noise and then reverse(逐渐添加高斯噪声,然后反转)
Stable Diffusion模型和其他模型最大的区别是它的latent code(z)和原图是同尺寸大小的,从而尽可能的减少生成时的损失,可以生成精美的图片。
它拥有多种多样的工具,为图片生成带来了无限的可能。
Stable Diffusion模型介绍
Stable Diffusion是一个基于Latent Diffusion Models(潜在扩散模型,LDMs)的文图生成模型
这里有两个关键词:潜在 和 扩散,下面分别进行介绍
扩散
扩散模型是指在前向阶段对图片逐步施加噪声,直至图片被破坏变成完全的高斯噪声,然后再逆向阶段学习从高斯噪声还原为原始图像的过程,大致分为3步:
前向,在原始图像上逐步添加噪声
逆向,首先给定高斯噪声,通过逐步去噪,直至最终将原图像给恢复出来
从噪声中生成随机图像
潜在
常规的扩散模型在实际像素空间进行前向扩散过程和反向生成过程,而基于Latent(潜在)的扩散模型可以将这些过程压缩在低维的Latent隐空间,这样一来大大降低了显存占用和计算复杂性,这是常规扩散模型和基于Latent的扩散模型之间的主要区别,也是SD模型火爆出圈的关键一招。
Stable Diffusion模型组成
Stable Diffusion主要由VAE(变分自编码器,Variational Auto-Encoder),U-Net,CLIP Text Encoder以及调度器四个核心组件构成
VAE 的Encoder能将输入图像转换为低维Latent特征,并作为U-Net的输入;VAE的Decoder能将低维Latent特征重建还原成像素级图像
CLIP模型主要包含Text Encoder和Image Encoder两个模块,在Stable Diffusion中主要是用了Text Encoder模块,将输入的prompt进行编码,转换成Text Embeddings(文本的语义信息),通过CrosssAttention(跨注意力机制)方式送入Stable Diffusion的U-Net中作为Condition。
U-Net模型是一个关键核心,作为扩散模型其主要是预测噪声残差,并结合Sampling method(调度算法:PNDM,DDIM,K-LMS等)对输入的特征矩阵进行重构,逐步将其从随机高斯噪声转化成图片的Latent Feature。
调度器,用来控制UNet的推理步骤。
Stable Diffusion模型调用流程
下面是Stable Diffusion常见的两类调用的流程
- 文生图
输入的文本,通过Clip编码得到它的一个语义信息,然后再结合一下它现有的隐特征,以及它对应的t步数,然后通过U-Net模块,生成一个新的隐特征,然后逐步逐步的得到最终的一个隐特征,然后通过VAE模块,生成最后的图像
- 图生图
图生图就是在文生图的基础上多了一个输入图像。这个输入图像通过VAE模块进行编码得到这个图像对应的隐特征,然后共同的来传入,通过U-Net模块进行一个扩散的预测,最后通过VAE解码生成最终的图像
华为全栈AI技术架构介绍
- ModelArts:是面向开发者的一站式AI平台,为机器学习与深度学习提供海量数据预处理及交互式智能标注、大规模分布式训练、自动化模型生成,及端-边-云模型按需部署能力,帮助用户快速创建和部署模型,管理全周期AI工作流
- MindSpore:是一个全场景深度学习框架,旨在实现易开发,高效执行,全场景覆盖三大目标
- CANN:(Compute Architecture for Neural Networks),华为针对AI场景推出的异构计算框架,对上支持多种AI框架,对下服务AI处理器与编程,发挥承上启下的关键作用,是提升昇腾AI处理器计算效率的关键平台
- 华为昇腾处理器:采用自研达芬奇架构3DCube技术,使用Ascend系列的芯片,实现了业界最佳AI性能和能效
悟空画画大模型
模型介绍
悟空画画模型,是基于扩散模型的中文以文生图大模型,由华为自主研发,使用昇腾框架(MindSpore)+昇腾(Ascend)+ModelArts(AI平台)软硬件解决方案实现。
相较于Stable Diffusion模型,悟空画画首先采用目前最大的中文开源多模态数据集悟空数据集进行训练得来,同时将原有Stable Diffusion模型文本编码器替换为中文文本编码器
悟空画画模型具备优秀的中文文本-图像生成能力,能够实现多场景的绘画风格,可生成高质量的图像,给用户带来良好的使用体验
悟空数据集数据示例
- 悟空数据集拥有1亿个图片文字对
- 每张图片像素均大于200,纵横比在1/3到3之间
- 文字也根据语言、长度和频率进行过滤
悟空画画模型结构
悟空画画模型案例实操
首先点开这个链接 新时代AIGC之中文文生图大模型——悟空画画介绍,就进入了华为云ModelArts的AI Gallary上的一个Nodebook页面
然后点击右侧的Run in ModelArts按钮,进入JupyterLab编辑器界面。这是一个在线的编译器,相比我们本地的编译器,它可以直接调用云上的资源
首先介绍了实验的目标:通过本案例的学习怎么利用悟空画画模型进行AI作画,实现提示词工程完成图像变换:
1.了解扩散模型的基本原理,正向过程和去噪样本的介绍
2.了解怎么使用悟空画画进行文图生成,调整参数运行推理
3.了解怎么使用悟空画画进行图像编辑任务的开发过程
下面有实验的原理介绍,以及每一个操作的具体的步骤。直接点击左边的运行按钮即可
运行后就会展示出实验的最终结果
文生图
输入: 来自深渊 风景 绘画 写实风格
输出:
图生图
选择长椅上的狗,改为一只小猫坐在长椅上
悟空画画模型Dreamooth微调
微调的定义
给定预训练模型(Pre_trained model),基于模型进行微调(Fine Tune)。相对于从头开始训练(Training a model from scatch),微调为你省去大量计算资源和计算时间,提高了计算效率,甚至提高准确率。
对于悟空画画模型,就是基于悟空数据集训练得到的,该数据集有1亿个图片文字对,基于已有模型再进行微调,可以省去很多的人力和时间。
常见的微调方法
训练方法 | 方法 | 局限性 |
---|---|---|
Text Inversion | 使用提供的一组图片训练一个新单词的Embedding,并将其与词汇表中已有的词关联起来,这个新单词即为这组图片概念的指代 | 训练过程只对应Embedding,扩散模型没有新知识输入,所以也无法产生新的内容 |
Full FineTune | 最朴素的方式,使用图片+标注的数据集,进行迭代训练,数据集标注可以选择BLIP来生成。训练直接对原模型的所有权重进行调整 | 容易过拟合,导致生成图片的多样性不够,结果难以控制。模型体积大,不便于传播 |
Dreambooth | 提供代表某个新概念(instance)对应的一组图像,并使用罕见字符(identifier)进行概念Mapping,训练过程充分考虑原有相关主题(class)生成,避免过拟合。训练直接对原模型的所有权重进行调整 | 训练过程只针对新概念(instance),多样性差。如果需要多概念生成,需要多次训练。模型体积大,不便于传播 |
LoRA | 冻结预训练模型参数,在每个Transformer块插入可训练层,不需要完整调整UNet模型的全部参数。训练结果只保留新增的网络层,模型体积小 | 训练效果不如Dreambooth |
DreamBooth微调流程介绍
DreamBooth:针对指定参考物体,在不同情景中生成新颖的图片
准备数据
水墨画风格的猫(3-5张即可,尽量不同角度)
正常风格的猫(200张)
微调
图片生成
使用微调后生成的模型,并将prompt定义为:特殊标识符+类别词+其他额外描述
DreamBooth微调实战
首先点开这个链接 悟空画画模型DreamBooth微调介绍,就进入了华为云ModelArts的AI Gallary上的一个Nodebook页面
然后点击右侧的Run in ModelArts按钮,进入JupyterLab编辑器界面(这是一个在线的编译器,相比我们本地的编译器,它可以直接调用云上的资源)
本次实验的目标如下:
1.了解悟空画画和Dreambooth原理介绍
2.了解怎么基于悟空画画模型进行个性化文生图任务训练
根据提示,依次点击代码左侧的运行按钮,可以在代码下面看到输出结果
执行到最后,你可以看到一副生成的α猫水彩画
总结
悟空·画画是基于扩散模型的中文以文生图大模型,由华为诺亚方舟实验室携手华为中央软件研究院分布式并行实验室、昇腾计算业务联合开发,使用昇思MindSpore AI框架+昇腾Atlas硬件实现(昇思MindSpore是新一代覆盖端边云全场景的开源AI框架)
通过悟空·画画,开发者可以在不懂任何算法的情况下,通过华为云平台,使用文字生成图片,感受AI为生活带来的巨大便利,并通过简单的配置搭建服务,将其应用在实际工作生活中,为公司降本增效实现双赢。
附录
本期实战营基于华为全栈AI技术,以及华为云一站式AI开发平台ModelArts,介绍常见AIGC模型的基本概念、原理介绍、网络结构等内容。
特别说明: 本次课程实践案例,均采用昇腾处理器,大家可以使用免费的云资源进行实践(如果免费资源售罄,可以酌情选择付费资源使用)
本文参与华为云社区【内容共创】活动第24期。
任务31:昇腾AI·玩转AIGC实战营·专场直播 :悟空画画模型微调讲解答疑
- 点赞
- 收藏
- 关注作者
评论(0)