赛题内容
参赛者需在可图Kolors模型的基础上训练LoRA模型,生成无限风格,如水墨画风格、水彩风格、赛博朋克风格、日漫风格…
基于LoRA模型生成8张图片组成连贯故事,故事内容可自定义;基于8图故事,评估LoRA风格的美感度及连贯性。
样例:偶像少女养成日记
相关作品在比赛品牌馆讨论区
可图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