Datawhale X 魔搭 AI夏令营 Task1 从零入门AI生图原理实践笔记

news2024/9/23 23:23:38

赛题内容

参赛者需在可图Kolors模型的基础上训练LoRA模型,生成无限风格,如水墨画风格、水彩风格、赛博朋克风格、日漫风格…
基于LoRA模型生成8张图片组成连贯故事,故事内容可自定义;基于8图故事,评估LoRA风格的美感度及连贯性。

样例:偶像少女养成日记
img

相关作品在比赛品牌馆讨论区

可图Kolors-LoRA风格故事挑战赛

baseline要点讲解(请配合Datawhale速通教程食用)

Step1 设置算例及比赛账号的报名和授权
  • 开通阿里云PAI-DSW试用 链接
  • 在魔塔社区进行账号授权 链接

需要注意的是新用户需要先注册和绑定阿里云账号

Step2 进行赛事报名并创建PAI实例

赛事链接:https://tianchi.aliyun.com/competition/entrance/532254
PAI实例:https://www.modelscope.cn/my/mynotebook/authorization

Step3 执行baseline

按照教程新建终端,粘贴命令回车执行,这一步是为了拉取远程的baseline文件,需要等待一段时间。

git lfs install
git clone https://www.modelscope.cn/datasets/maochase/kolors.git

拉取baseline后,可以在右侧文件中看到kolor文件夹,双击进入可以看到后缀.ipyhb的baseline文件,点击打开。

接下来执行运行环境的代码块,我们需要安装 Data-Juicer 和 DiffSynth-Studio

  • Data-Juicer:数据处理和转换工具,旨在简化数据的提取、转换和加载过程
  • DiffSynth-Studio:高效微调训练大模型工具

有些时候因为网络及代理的问题,环境的安装容易缺漏,建议多执行几次,代码不会重复安装

安装完成后,重启kernel,不重启容易爆显存影响baseline运行

接下来请依次执行下载数据集、数据处理

在这里留一个小问题:在模型训练之前,在数据集的处理上有没有更优的方法来让数据集更优质呢?是否需要进行一些转换、模块的引入及数据清洗呢?

接下来开始进行模型微调训练:

调参对于微调模型训练尤关重要,涉及到参数量、优化器类型、训练策略等等…一个好的参数配置可以让微调模型的效果出人意料。

在后面我会附上自己整理的 lora 调参参数介绍及 Stable Diffusion(SD) 的基础知识,感兴趣可以滑下文章尾部进行查看。

最后我们加载我们所微调的模型并进行输出

from diffsynth import ModelManager, SDXLImagePipeline
from peft import LoraConfig, inject_adapter_in_model
import torch

def load_lora(model, lora_rank, lora_alpha, lora_path):
    lora_config = LoraConfig(
        r=lora_rank,
        lora_alpha=lora_alpha,
        init_lora_weights="gaussian",
        target_modules=["to_q", "to_k", "to_v", "to_out"],
    )
    model = inject_adapter_in_model(lora_config, model)
    state_dict = torch.load(lora_path, map_location="cpu")
    model.load_state_dict(state_dict, strict=False)
return model

model_manager = ModelManager(torch_dtype=torch.float16, device="cuda",
                             file_path_list=[
"models/kolors/Kolors/text_encoder",
"models/kolors/Kolors/unet/diffusion_pytorch_model.safetensors",
"models/kolors/Kolors/vae/diffusion_pytorch_model.safetensors"
                             ])

pipe = SDXLImagePipeline.from_model_manager(model_manager)
pipe.unet = load_lora(
    pipe.unet,
    lora_rank=16,
    lora_alpha=2.0,
    lora_path="models/lightning_logs/version_0/checkpoints/epoch=0-step=500.ckpt"
)

调整prompt,设置你想要的图片风格,依次修改8张图片的描述

提示词也有一些讲究,比如优质的提示词、提示词的排序(越靠前的提示词影响比重越大)、提示词书写策略、Embedding 模型介入。这些对出图效果也同样重要。同样的,我也会在后面的介绍中讲到,让我们先继续跑baseline。

至此,微调训练和模型出图已经全部完成啦

Step4 进行赛题提交

将微调结果上传魔搭

执行代码后,将模型文件和示例图下载到本地

mkdir /mnt/workspace/kolors/output & cd
cp /mnt/workspace/kolors/models/lightning_logs/version_0/checkpoints/epoch=0-step=500.ckpt /mnt/workspace/kolors/output/
cp /mnt/workspace/kolors/1.jpg /mnt/workspace/kolors/output/

点击魔搭链接,创建模型,中文名称建议格式:队伍名称-可图Kolors训练-xxxxxx

在提交过程的中的基础模型,是指你在训练过程及后续复现时使用的底模类型。一般来说SD XL的实现精度会更高,在训练过程中需要同步设置SD XL,在初步跑通 baseline 时使用基础即可,博主在提交的时候是选用的SD2.1,可参考选用。

点击创建提交就完成啦!恭喜你已经顺利跑通了baseline。

记得完成后及时关闭你正在运行的实例,别让算力偷偷溜走了

别忘记打卡&在群里接龙!

lora 调参参数介绍及 SD 的基础知识点(拓展)

文生图基础知识介绍

文生图主要以SD系列基础模型为主,以及在其基础上微调的lora模型和人物基础模型等。

接下来,我们简单了解下提示词、lora、ComfyUI和参考图控制这些知识点。

提示词

提示词很重要,一般写法:主体描述,细节描述,修饰词,艺术风格,艺术家

  • 反向prompt推荐(会更推荐使用英文 prompt,因为底层调用 sd 时是输入 英文prompt的):
  • 提高出图质量正向prompt推荐: a highly detailed European style bed room,elegant atmosphere,rtx lighting,global illuminations,a sense of understated sophistication,8k resolution,high quality,photorealistic,highly detailed,
Lora

Stable Diffusion中的Lora(LoRA)模型是一种轻量级的微调方法,它代表了“Low-Rank Adaptation”,即低秩适应。Lora不是指单一的具体模型,而是指一类通过特定微调技术应用于基础模型的扩展应用。在Stable Diffusion这一文本到图像合成模型的框架下,Lora被用来对预训练好的大模型进行针对性优化,以实现对特定主题、风格或任务的精细化控制。

那我们 lora 训练的最终目的是什么呢?训练的本质在于找出当前训练集的最优解,优素材取决于不同角度、不同形态、灯光、图片质量。

在Tag类型上,需要包括主题、动作、主要特征、视角、光影效果等其他,如果在训练过程中对某一个特征不打Tag,则将成为固定模型特征。

ComfyUI

ComfyUI 是一个工作流工具,主要用于简化和优化 AI 模型的配置和训练过程。
在ComfyUI平台的前端页面上,用户可以基于节点/流程图的界面设计并执行AIGC文生图或者文生视频的pipeline。

参考图控制

ControlNet是一种用于精确控制图像生成过程的技术组件。它是一个附加到预训练的扩散模型(如Stable Diffusion模型)上的可训练神经网络模块。扩散模型通常用于从随机噪声逐渐生成图像的过程,而ControlNet的作用在于引入额外的控制信号,使得用户能够更具体地指导图像生成的各个方面(如姿势关键点、分割图、深度图、颜色等)。

出图指引(SD WebUI):

描述内容prompt:主体、表情、服装、场景、环境、镜头、灯光、风格、画质、渲染器

靠前的Tag权重较高,适当运用括号法则、数字法则、混合

采样步数:数越高,细节多渲染慢,建议范围在20~40

采样器:karras去噪快

a噪点不居中,关键词识别度稍低,更具灵活度

DPM 建议使用DPM++SDE karras

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

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

相关文章

企业大模型落地从0到0.1

现在人工智能里的“大明星”——大模型,正在悄悄改变各行各业。这就像给企业装上了一颗聪明的大脑,能帮助解决各种棘手问题,提升工作效率。今天,我们就来分析下企业如何一步一步让这个“大脑”在自家地盘里真正派上用场&#xff0…

LVS 实现四层负载均衡项目实战--DR模式

一、环境准备 主机名IP地址router eth0:172.25.254.100 eth1:192.168.0.100 clienteth0:172.25.254.200lvseth1:192.168.0.50web1web2 1、client配置 [rootclient ~]# cat /etc/NetworkManager/system-connections/eth0.nmconne…

ArrayList 动态扩容

目录 一、 构造函数1、有参构造函数2、无参构造函数 二、数组扩容三、总结 一、 构造函数 1、有参构造函数 1.1如果指定了容量大小,创建该大小的数组 1.2如果没有指定大小,默认创建空数组 1.3如果是指定小于0的大小,抛出异常 2、无参构造…

前端工程化15-邂逅ES6的语法规范

4、ES6邂逅 3.1、什么是ECMA ECMA(European Computer Manufacturers Association)中文名为欧洲计算机制造商协会,这个组织的目标是评估、开发和认可电信和计算机标准。1 994年后该组织改名为Ecma国际。 3.2、什么是ECMAScript ECMAScript…

怎样找回U盘里误删的文件?试试这些方法!

在日常工作和生活中,我们经常会使用U盘来存储和传输重要的文件。然而,由于操作失误或其他原因,我们有时会误删U盘中的文件。当遇到这种情况时,很多人可能会感到焦虑和无助。不过,幸运的是,有几种方法可以帮…

三十六、【人工智能】【机器学习】【监督学习】- Bagging算法模型

系列文章目录 第一章 【机器学习】初识机器学习 第二章 【机器学习】【监督学习】- 逻辑回归算法 (Logistic Regression) 第三章 【机器学习】【监督学习】- 支持向量机 (SVM) 第四章【机器学习】【监督学习】- K-近邻算法 (K-NN) 第五章【机器学习】【监督学习】- 决策树…

【清空大脑】

清空大脑,就是把大脑里的想法,都写下来,放到一个地方。这样,可以降低大脑的压力。 我记得我第一次清空大脑的时候,使用的事微软OutLook的便签功能,一共记录了200多项。 看着这200多项,我感觉自…

ubuntu设置开机自动执行脚本、ubuntu设置开机自动启动java服务

使用 crontab 编辑器添加一个任务,该任务将在系统启动时执行你的脚本。在终端中运行以下命令: crontab -e添加开机自启任务: 在打开的编辑器中,添加以下行: reboot /home/demo.jar &这行代码告诉 cron 在每次系统…

微调神器LLaMA-Factory官方保姆级教程来了,从环境搭建到模型训练评估全覆盖

1. 项目背景 开源大模型如LLaMA,Qwen,Baichuan等主要都是使用通用数据进行训练而来,其对于不同下游的使用场景和垂直领域的效果有待进一步提升,衍生出了微调训练相关的需求,包含预训练(pt)&…

探索AI角色扮演的新前端工具:SillyTavern

在人工智能(AI)领域,角色扮演(Roleplay)无疑是一个富有趣味且充满潜力的应用场景。无论你是AI爱好者还是开发者,找到一个合适的前端工具来访问并与语言模型进行互动是至关重要的。今天,我们将介…

[2024_08_12日志]ONNX Runtime的使用

问题:Segmentation 错误。在 C API 上使用自定义 onnx 模型运行。模型在 Python 上按预期工作,但在 C API 上运行相同的模型时,会收到一个分段错误 python的模型代码如下: class Facenet(nn.Module):def __init__(self, backbone…

lvs详解及实例配置

目录 1.什么是负载均衡 1.1为什么用负载均衡 1.2.负载均衡类型 1.2.1.四层负载均衡 1.2.2.七层负载均衡 1.3 四层和七层的区别 2.LVS介绍 2.1LVS 的优势与不足 2.2LVS 核心组件和专业术语 3.ipvsadm命令 4.LVS集群中的增删改 4.1.管理集群服务中的增删改 4.2.管理集…

C:每日一题:单身狗

​​​​ 一、题目: 在一个整型数组中,只有一个数字出现一次,其他数组都是成对出现的,请找出那个只出现一次的数字。 整型数组 int arr[ ] {1,1,2,2,3,4,4} 二、思路分析: 1.,明确目标,选择…

【linux】nvidia AGX orin 多方法开机自启 .sh 文件

背景: 安装搜狗输入法时候,发现etc/xdg/autostart路径下写desktop文件的方式,于是把所有方案整理一下 为了让 .sh 文件在用户登录时自动执行,可以采用如下多种方法。 1. 使用 .desktop 文件 创建一个 .desktop 文件,将…

链表的奇偶节点重新排列及空指针问题分析【链表、空指针】

在处理链表问题时,重组链表节点是一种常见需求。本文将详细探讨如何在链表中将奇数索引节点放在偶数索引节点之前,并深入分析实现过程中的空指针问题及其解决方案。 1. 问题描述 给定一个单链表,要求将链表中的节点按照奇数索引节点在前、偶…

掌握 PyTorch 张量乘法:八个关键函数与应用场景对比解析

PyTorch提供了几种张量乘法的方法,每种方法都是不同的,并且有不同的应用。我们来详细介绍每个方法,并且详细解释这些函数有什么区别: 1、torch.matmul torch.matmul 是 PyTorch 中用于矩阵乘法的函数。它能够处理各种不同维度的张…

HTML零基础自学笔记(下)篇一 -8.8

HTML零基础自学笔记(下)---之表格标签详解 参考:pink老师篇一、表格标签是什么?基础内容(主要作用、基本语法、标签释义、属性)主要作用基本语法标签释义表格结构标签属性 合并单元格代码练习代码运行效果&…

IDEA 报错,无效的源发行版 无效的目标发行版:22

报错内容: 在编译项目的时候出现报错: 解决办法: 无效的源发行版 原因:编译的JDK版本与发布版本不一致 File -> Project Structure ->Project Settings 让其中的三处版本保持一致,具体操作如下: …

Vue3+Element-plus+setup使用vuemap/vue-amap实现高德地图API相关操作

首先要下载依赖并且引入 npm安装 // 安装核心库 npm install vuemap/vue-amap --save// 安装loca库 npm install vuemap/vue-amap-loca --save// 安装扩展库 npm install vuemap/vue-amap-extra --save cdn <script src"https://cdn.jsdelivr.net/npm/vuemap/vue-a…

linux反向代理原理:帮助用户更好地优化网络架构

Linux反向代理原理详解 反向代理是一种在网络架构中常用的技术&#xff0c;尤其在Linux环境下被广泛应用。它可以帮助实现负载均衡、安全防护和请求缓存等功能。本文将深入探讨Linux反向代理的原理、工作机制以及其应用场景。 1. 什么是反向代理 反向代理是指代理服务器接收客…