学习 AI 绘画系列(6):Stable Diffusion模型微调

stable diffusion微调总结 SDXL 潜在一致性模型 (LCM) 如“潜在一致性模型:使用几步推理合成高分辨率图像”中提出的那样,通过减少所需的步骤数彻底改变了图像生成过程。它将原始 SDXL 模型提炼成一个需要更少步骤(4 到 8 个而不是 25 到 50 个步骤)来生成图像的版本。该模型对于需要在不影响质量的情况下快速生成图像的应用特别有利。值得一提的是,它比原来的 SDXL 小 50%,快 60%。SDXL Distilled 是指为特定目的而“蒸馏”的 SDXL 模型版本。例如,Segmind 稳定扩散模型 (SSD-1B) 阅读详情

前言

扩散模型是非常强大的图像生成工具,但有时候无论如何调整提示词或优化超参数,都无法获得理想的结果。当调整提示词或优化超参数这种方法无效时,可以选择微调模型。

微调通常非常耗费资源,但是使用 Dream Booths 技术可以用较少的资源来微调Stable Diffusion。下面我们介绍,如何只使用少量图像微调Stable Diffusion模型,生成自定义的图像结果。

在前几篇学习 AI 绘画系列文章中,我们已经探讨了通过调整提示词和参数来控制扩散模型的输出。现在,我们将讨论如何教模型生成从未见过的主题图像。例如,我们将教模型生成梵高风格的画作。为此,我们需要学习两种新的微调扩散模型技术。第一种技术叫Dream Booth,它能用极少量的示例数据教扩散模型新主题。在下面的示例中,我们只用六张照片来微调模型。第二种技术是Laura,代表低秩适应(Low Rank Adaptation)。现在,让我们先了解Dream Booth技术。

所有的AI设计工具,模型和插件,都已经整理好了,👇获取~在这里插入图片描述

我们思考一个问题,使用小数据集来微调扩散模型是否会存在困难?有什么困难

**首先,数据的稳健性是个问题。**例如,六张Andrew的照片或许能生成一个不错的头像,但不足以涵盖Andrew在不同情境下的形象。

**其次,是语言漂移问题。**当我们微调模型时,需要在提升特定任务性能和避免损害模型其他任务表现之间找到平衡。如果我们用六张Andrew的照片,每张配上“一个名叫Andrew的男人的照片”这个提示词进行微调,模型对“照片”和“男人”的理解可能会偏向这个小数据集。这可能导致模型在生成非Andrew的图像时出现质量下降的情况,例如它可能认为所有男人都像Andrew,或者每张照片中都应该包含Andrew。Dream Booth在很大程度上通过利用扩散模型对世界的现有理解解决了这些问题。Dream Booth论文的作者称之为语义先验知识。类似于阅读新词时依赖上下文线索。当模型看到像“一个名叫Andrew的男人的照片”这样的提示时,它可能不知道Andrew长什么样,但它通常知道一个男人的照片应该是什么样子。它可以在训练中利用这些信息,使我们能够用更小的示例数据集进行训练。

Dream Booth的操作步骤如下:

首先,选择一个模型中很少见到的Token,例如用括号括起来的“V”。训练循环将覆盖模型与这个Token关联的信息。

然后,将这个稀有Token与另一个通常描述你主题类别的Token配对。例如,对于Andrew,我们可能选择Token对“[V] man”。然后,将包含这个Token对的提示词与Andrew的图像关联起来。例如,如果我们的数据集中有一张Andrew打篮球的照片,我们可能将其与提示词“一个名叫[V] man打篮球的照片”关联。模型就能够利用它对句子中所有其他词语的先验理解来指导其生成。

因此,即使数据集不是很全面,因为它知道一个男人打篮球的照片大概是什么样子,它也能识别出Andrew打篮球的照片与一般男人打篮球的照片之间的特定差异。微调后,模型应该将Token对“[V] man”专门与Andrew相关联。

这可能解决了小数据集的问题,但并没有解决语言漂移的问题。

你可能会认为我们几乎肯定会在训练过程中摧毁模型对“man”的定义。Dream Booth通过一种聪明的方式解决了这个问题。论文的作者创建了一种自定义的损失度量,称为先验保留损失(Prior Preservation Loss),它实现了一种有趣的正则化形式。先验保留通过惩罚模型远离其对世界的现有理解来解决这个问题。

一般来说,它的工作方式如下:创建一个带有提示的图像数据集,例如六张Andrew的照片,标题如“一个名叫[V] man的照片”。在Dream Booth文献中,我们称这些为实例图像和实例提示。在后面的代码示例中,将为每张图片使用单一提示词,但也可以尝试为每张图片编写自定义提示词。甚至可以使用BLIMP这样的模型自动生成图像标题,这在处理大量图像时非常有用。然后,选择一个能代表我们担心模型在微调过程中丧失的所有概念的提示词,在Dream Booth文献中称为类提示词。例如,如果实例提示词是“一个名叫[V] man的照片”,类提示词就是简单的“一个男人的照片”。使用类提示词,我们可以生成100到200张经过扩散处理的照片。有了这些照片,可以构建一个强大分布,这个分布代表了模型对这些提示词概念的先验理解。

在训练过程中,需要计算两个损失:

**首先是实例数据的损失。**即模型在给定修改过的Token对时重构这些Andrew图像的能力。

**其次是类数据的损失。**即模型在用类提示词提示时,模型生成的图像与先验分布的接近程度。类分布是直接从模型在进行任何微调之前抽样的,它为衡量模型漂移的程度提供了一个具体的基础。

如果在微调前后给出相同的提示模型生成的图像差异很大,就说明发生了一些漂移。可以将这两个损失结合起来,称为实例损失和类损失,给出一个综合损失度量。

我们从理论上了解了Dream Booth,现在让我们用代码实现它。

1. 我们使用Comet记录相关参数和指标。导入并初始化Comet

 !pip install -q accelerate torch diffusers transformers comet_ml
import comet_ml``   ``comet_ml.init(anonymous=True)

2. 导入并准备模型

import torch``   ``if torch.cuda.is_available():`    `model_name = 'stabilityai/stable-diffusion-xl-base-1.0'``else:`    `model_name = './models/runwayml/stable-diffusion-v1-5'``   ``# Define hyperparameters``   ``hyperparameters = {`    `"instance_prompt": "a photo of a [V] man",`    `"class_prompt": "a photo of a man",`    `"seed": 4329,`    `"pretrained_model_name_or_path": model_name,`    `"resolution": 1024 if torch.cuda.is_available() else 512,`    `"num_inference_steps": 50,`    `"guidance_scale": 5.0,`    `"num_class_images": 200,`    `"prior_loss_weight": 1.0``}
# Set new Comet experiment``experiment = comet_ml.Experiment()

大部分重点将在超参数上,如何调整它们以控制扩散模型的输出。在运行下面这些示例代码时我们根据是否有GPU导入不同的模型。如果有GPU,我们将使用Stable Diffusion XL,这是一个更大的稳定扩散模型,具有非常高的图像质量。如果运行在CPU上,我们将使用Stable Diffusion 1.5,这是一个较早的模型,仍能生成高质量图像,只是不如前者强大。

_代码中有实例提示和类提示,还设置了一个手动种子以确保结果可重现。可以看到,分辨率设置为有GPU时为124像素,无GPU时为512像素,因为不同稳定扩散模型在不同尺寸上表现更好。__推理步数(Inference Steps)_为50,引导强度(Guidance Scale)为5.0,默认生成200张类图像,先验损失权重为1.0。先验损失权重是一个数值,决定在计算先验保留时类损失的比例。如果我们只是为了学习不在项目中实操,可以将其设置为0。如果非常关心模型在训练过程中不漂移,可以将其增加到更高的值。

3. 生成类图像

from utils import DreamBoothTrainer``   ``trainer = DreamBoothTrainer(hyperparameters)``   ``# To run the training pipeline``trainer.generate_class_images()

_生成图像的代码需要 GPU 才能运行,而且需要的时间很长。上面用到的utils代码在文章的末尾。
_

为了节省时间,我们可以不生成类图像,从这里下载已有的类图像进行练习。

4. 下载类图像

import shutil``   ``# Get images``class_artifact = experiment.get_artifact('ckaiser/class-images-15')``class_artifact.download('./')``   ``shutil.unpack_archive('./class.zip', './class')``   ``   ``# Print some images``trainer.display_images("class")

# Get the instance dataset (images of Andrew)``andrew_artifact = experiment.get_artifact('ckaiser/andrew-dataset')``andrew_artifact.download('./')``   ``shutil.unpack_archive('./andrew-dataset.zip', './instance')``   ``# Print some images``trainer.display_images("instance")

我们可以看到图像的大小和质量差异很大,这不是一个经过大量预处理的图像数据集。这说明Dream Booth可以使用现有的数据有效的调整模型。

5. 初始化模型

tokenizer, text_encoder, vae, unet = trainer.initialize_models()
# Add noise to generate images in Stable Diffusion``from diffusers import DDPMScheduler``   ``noise_scheduler = DDPMScheduler.from_pretrained(`    `trainer.hyperparameters.pretrained_model_name_or_path,`    `subfolder="scheduler"``)

这里分享给大家一份Adobe大神整理的《AIGC全家桶学习笔记》,相信大家会对AIGC有着更深入、更系统的理解。

有需要的朋友,可以点击下方免费领取!

在这里插入图片描述

AIGC所有方向的学习路线思维导图

这里为大家提供了总的路线图。它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。如果下面这个学习路线能帮助大家将AI利用到自身工作上去,那么我的使命也就完成了:
在这里插入图片描述

AIGC工具库

AIGC工具库是一个利用人工智能技术来生成应用程序的代码和内容的工具集合,通过使用AIGC工具库,能更加快速,准确的辅助我们学习AIGC
在这里插入图片描述

有需要的朋友,可以点击下方卡片免费领取!

精品AIGC学习书籍手册

在这里插入图片描述

书籍阅读永不过时,阅读AIGC经典书籍可以帮助读者提高技术水平,开拓视野,掌握核心技术,提高解决问题的能力,同时也可以借鉴他人的经验,结合自身案例融会贯通。

在这里插入图片描述

AI绘画视频合集

我们在学习的时候,往往书籍源码难以理解,阅读困难,这时候视频教程教程是就很适合了,生动形象加上案例实战,科学有趣才能更方便的学习下去。

在这里插入图片描述

Stable Diffusion XL之使用Stable Diffusion XL训练自己的AI绘画模型 其中config_file.toml文件中的配置文件包含了sdxl_arguments,model_arguments,dataset_arguments,training_arguments,logging_arguments,sample_prompt_arguments,saving_arguments,optimizer_arguments以及additional_network_arguments九个个维度的参数信息。但是切记不能在多尺度增强的时候将图片的主体特征裁剪掉(比如人脸,建筑等)。 阅读详情

相关推荐

AI绘画Stable Diffusion实战:从模型训练到Prompt工程全解析

通过本文的实战案例和代码示例,希望能够帮助开发者更好地理解和掌握Stable Diffusion模型训练和Prompt工程的技巧。在实际开发中,开发者需要根据项目需求和数据集特点选择合适的训练方法和参数设置,并精心设计Prompt以引导模型生成符合期望的图像。无论是艺术创作还是视觉设计领域,Stable Diffusion都将为开发者提供强大的支持和创新的可能性。

shejizuopin的博客 935

手把手教你微调Stable Diffusion

Stable Diffusion原装VAE存在数值不稳定的问题,因此hugging face官方一般都推荐换一个VAE模型。但是推荐的那个VAE模型实际使用起来有冲突,会一直报错。所以这里还是使用原装VAE吧。

Everly_的博客 8561

Stable Diffusion的微调方法详解

Stable Diffusion作为一种强大的文本到图像生成模型,已经在艺术、设计和科研等多个领域取得了广泛的应用。本文将详细介绍Stable Diffusion的微调方法,包括数据准备、模型结构选择、训练策略等多个方面,以帮助读者更深入地理解和应用这一技术。综上所述,Stable Diffusion的微调方法涉及多个方面,包括数据准备、模型结构选择、训练策略等。通过合理的微调过程,可以使模型更好地适应特定任务或领域,从而发挥其最大的潜力。希望本文能为读者提供有益的参考和启发。

Genio_Wang的博客 2391

Stable Diffusion学习(LoRA微调)

由于训练和推理都需要较大显存和算力,因此此后文章都围绕linux进行学习开发,便于大家花点小钱租个服务器就可以复现学习理解!(在这里许愿希望自己可以全部学完,立个flag!

m0_65803902的博客 2089

DreamShaper:Stable Diffusion 的微调版本

稳定扩散是一种流行的算法,已用于各种机器学习任务,例如图像分割、去噪和修复。但原有算法存在收敛速度慢、难以处理高维数据等局限性。为了解决这些问题,研究人员提出了一种微调版本的 Stable Diffusion,称为 DreamShaper。在这篇博文中,我们将讨论 DreamShaper 的主要功能和优势。

iCloudEnd的博客 1837

AI 绘画 stable diffusion webui 常见模型汇总及简介

主要是记录索引一下常见的 AI 绘画作画模型,方便自己用。主要收集 stable diffusion webui 用大模型(ckpt与safetensors)包括了常见的模型比如的Waifu Diffusion、anything、f222、basil mix、urpm 、chillout mix等模型。Lora(人物卡模型)和hypernetworks(embedding和hypernetwork)暂时不打算广泛搜集,因为这个实在有点多了,未来只打算列出非常热门的。

weixin_41259045的博客 2万+

用 LoRA 微调 Stable Diffusion:拆开炼丹炉,动手实现你的第一次 AI 绘画

总得拆开炼丹炉看看是什么样的。这篇文章将带你从代码层面一步步实现 AI 文本生成图像(Text-to-Image)中的 LoRA 微调过程,你将: - 了解 **Trigger Words**(触发词)到底是什么,以及它们如何影响生成结果。 - 掌握 LoRA 微调的基本原理。 - 学习数据集的准备与结构,并知道如何根据需求定制自己的数据集。 - 理解 Stable Diffusion 模型的微调步骤。 - 明白在画图界面(UI)下到底发生了什么。 - 使用代码实现 AI 绘画。

Hoper-J的博客 1万+

Stable Diffusion模型训练实战:打造专属AI绘画模型

你是否遇到过这样的困扰?用通用Stable Diffusion模型生成的图像总是“千篇一律”——赛博朋克风像模板复制,二次元角色总带网红脸。想让AI画出“奶奶织的毛衣质感”“童年老房子的黄昏”?这就需要训练专属模型。本文覆盖从原理理解到实战落地的全流程,帮你掌握Stable Diffusion的核心训练方法(含LoRA轻量级训练),目标读者无需GPU集群,用消费级显卡(如RTX 3090)即可完成。本文先通过“擦除-恢复”游戏讲清扩散模型原理,再用“学新风格”类比解释训练逻辑;

AIGC应用创新大全的博客 1437

【愚公系列】《AI绘画:Stable Diffusion ComfyUl的艺术》004-人工智能绘画的作用

AI绘画技术助力艺术创作与文物保护 📌 核心价值 AI绘画通过深度学习技术实现创意拓展、风格迁移和品质提升三大功能: 1️⃣ 创意激发:根据简单提示词生成多样化视觉方案(如"Love"主题多风格演绎) 2️⃣ 风格转换:支持水彩/水墨/线描等艺术风格模拟,实现中日绘画融合等跨文化创作 3️⃣ 修复增强:老照片着色修复、草图转油画、文物场景数字化重建(如兵马俑再现) 🎯 行业应用 ✔ 商业设计:快速生成LOGO/包装设计方案 ✔ 艺术创作:提供跨风格实验可能 ✔ 文物保护:历史图像修复

愚公智库 3万+

〔007〕Stable Diffusion 之 微调模型 篇

学习不同的模型,让AI成为你的生产力

国内某知名游戏公司小菜鸡工程师 3235

MMORPG网络游戏开发之任务系统的架构与设计

在网路游戏中做任务已经成为游戏很重要的一个核心功能和玩法,如何做好一个灵活可扩展的任务系统的架构与设计,今天来给大家分享一些我们的设计经验。接下来我把整个的任务系统分成以下6个模块:对于单机游戏而言,这6个模块都放在客户端直接处理,对于网路游戏而言,模块1~5实现在服务端,模块6实现在客户端。对啦!这里有个游戏开发交流小组里面聚集了一帮热爱学习unity的零基础小白,也有一些正在从事unity开发的技术大佬,欢迎你来交流学习。...

voidinit的专栏 3049

从0到1搭建AI绘画模型:Stable Diffusion微调全流程避坑指南

从0到1搭建AI绘画模型:Stable Diffusion微调全流程避坑指南

layneyao的博客 2004

【电磁场与电磁波课程设计】基于HFSS的双频微带天线仿真及设计

第五代移动通信技术(5G)的商用已经近在眼前,作为移动通信中最为重要的功能组件,面向5G通信应用的手机天线与基站天线的技术研究与设计成为近年来的热点。随着移动通信中“跳频”“扩频”等通信技术发展,为了满足与多个终端的通信要求,实现多系统共用和收发共用等功能,这就要求天线在不同频段下工作。根据国家工信部的最新规定,5G移动通信的中频段被划定在3.3 GHz-3.5 GHz及4.8 GHz-5.0 GH,面向5G移动通信的天线应具有高增益、小型化、宽频段及高隔离度等技术特征,以满足5G通信的高传输速率、波束智能

weixin_44450575的博客 1万+

AI绘画软件Stable Diffusion的Lora模型详解与使用教程

在[AI绘画]领域,StableDiffusion作为一种强大的文本到图像的生成模型,已经吸引了众多艺术家和爱好者的关注。而Lora(Low-RankAdaptation)模型作为StableDiffusion的一个重要扩展,进一步提升了模型的微调效率和生成质量。本文将详细介绍Lora模型的基本概念、工作原理以及如何在StableDiffusion中使用Lora模型,为希望提升AI绘画技能的读者提供一份详尽的指南。

Android 开发架构 1465

STK之Commu模块之三仿真卫星通信链路参数计算

考虑上述衰减的影响,可以得到卫星接收机输入端的载波功 [C] = [PT] +[GT] +[GR] -[L] -[L1] -[L2] (

juanhuokang2681的博客 8268

Apollo学习笔记(4)坐标系

百度Apollo项目用到了多种坐标系,其中帮助文档提及的坐标系包括: 全球地理坐标系(The Global Geographic coordinate system ) 局部坐标系—东-北-天坐标(The Local Frame – East-North-Up,ENU) 车身坐标系—右-前-天坐标(The Vehicle Frame —Right-Forward-Up,RFU) 车身坐标系—前-左-天坐标(The Vehicle Frame —Front-Left-Up,FLU) 还有一种Frenet坐标

qq_24649627的博客 5798

超养眼的Stable Diffusion微调模型:洛丽塔

俄罗斯裔美国作家纳博科夫的长篇小说《洛丽塔》因为炼铜等原因,最初被美国禁止发表,1955年在法国发表,直到1958年才在美国发表。再后来,洛丽塔(萝莉)成了年幼少女的代称。甚至发展出了洛丽塔的穿衣风格(事实上《洛丽塔》里并没有特别强调这种夸张的装束)。纳博科夫在小说开篇写到:洛丽塔,我的生命之光,我的欲念之火。我的罪恶,我的灵魂。《洛丽塔》被多次拍成电影,影片很多画面也成为经典。当然了,很多人并不知道原著小说以及电影《洛丽塔》,更多的是对这种穿衣风格的了解。

m0_74942241的博客 1912

从零实现Unitree Go2的SLAM建图与导航:手把手集成slam_toolbox和nav2(附Rviz2可视化配置)

本文详细指导如何在Unitree Go2四足机器人上集成slam_toolbox和nav2,实现SLAM建图与导航功能。从ROS2环境配置、雷达数据处理到slam_toolbox参数优化,再到nav2路径规划与Rviz2可视化调试,提供完整解决方案。特别适合机器人开发者快速掌握ROS2导航栈在Unitree Go2上的应用实践。

weixin_33737134的博客 1235

AI绘画革命:Stable Diffusion 1.5大模型微调实战与行业应用

摘要: 本文深入探讨Stable Diffusion 1.5(SD1.5)的微调技术与行业应用,解析其核心架构(VAE、CLIP、UNet)及扩散模型原理,对比不同版本性能参数。重点介绍LoRA轻量化微调、DreamBooth个性化生成等关键技术,提供数据预处理、训练配置等实战指南,展示AI绘画如何通过参数优化(如低秩适配)实现高效内容生成,赋能艺术创作与工业设计等领域。

Liudef06的博客 2407

【社招算法经验贴】算法社招记录

总的来说,也是收获了七七八八的offer,给的涨幅40~100%,职级有的可以对标到 p7(但阿里p7是真难a,a不动)。面了一圈下来,感觉大模型也在收缩hc。尤其是多模态相关hc。凭着上学期间做过相关视觉的work和paper,社招虽然能进面试,但是hc少得可怜,多模态已死慎入。还有大模型应用算法给的涨幅,跟搜广推的涨幅差别不大。真正能几百万往上的是基座pretrain/后训练/infra,但是全靠social和conn,hc极少。

Danger的博客 987

中文核心:swin transformer 农作物病虫害识别 完整代码数据

中文核心:swin transformer 农作物病虫害识别

942

【stable diffusion模型】首个中文Stable Diffusion模型开源

生成内容一直被视为 AI 领域中最具有挑战性的能力,最近大火的 AI 绘画背后,是 Stable Diffusion 模型的开源,催生了众多 AI 绘画的应用,得益于 Stability AI 的开源精神,这一创变推动了整个以英文为主的下游文生图生态的蓬勃发展。然而在国内,目前大部分团队主要是基于翻译 API + 英文 stable diffusion 模型进行开发,但由于中英文之间所得存在文化差异导致遇到中文独特的叙事和表达时,这种模型就很难给出正确匹配的图片内容。

m0_74942241的博客 2095

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

上一篇: 【SD基础】Stable Diffusion 文生图基本演绎
下一篇: Stable Diffusion插件:EasyPhoto之Lora训练、AI写真、AI视频、AI换装
壹只小小码农
博客等级 码龄5年 8105粉丝 1333原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值