赞
踩
目录
从拟合数据开始,对两点之间不断补足……生成模型的首要任务是学习训练数据的分布。假设有一个未知的真实数据分布 pdata(x)pdata(x),生成模型试图找到一个近似的模型分布 pmodel(x)pmodel(x),使得 pmodel(x)pmodel(x) 尽可能接近 pdata(x)pdata(x)。
运行过程是这样的:
提示词(Prompts)是指导生成模型(如 Stable Diffusion)生成目标图像的文本描述。
主体描述:“一只在草地上奔跑的狗”。
细节描述:“一只棕色的狗在阳光明媚的草地上奔跑”。
修饰词:,“一只可爱的小狗在翠绿的草地上欢快地奔跑”。
艺术风格:现实主义、二次元等。
艺术家:例如,“梵高”。
Stable Diffusion中的Lora(LoRA)模型是将原本复杂的权重矩阵近似表示为两个更小的矩阵的乘积。LoRA最初应用于NLP领域,用于微调GPT-3等模型(也就是ChatGPT的前生)。由于GPT参数量超过千亿,训练成本太高,因此LoRA采用了一个办法,仅训练低秩矩阵(low rank matrics),使用时将LoRA模型的参数注入(inject)SD模型,从而改变SD模型的生成风格,或者为SD模型添加新的人物/IP。通过引入低秩矩阵,LoRA 只需微调一小部分参数,能够大幅减少训练时间和计算资源!
假设你有一个已经训练好的图像生成模型(如 Stable Diffusion)……
- lora_model = LoRA(pretrained_model, rank=4)
- lora_model.train(impressionist_dataset)
ComfyUI 是一个工作流工具,主要用于简化和优化 AI 模型的配置和训练过程。在ComfyUI平台的前端页面上,用户可以基于节点/流程图的界面设计并执行AIGC文生图或者文生视频的pipeline。
ControlNet用于增强稳定扩散(Stable Diffusion)模型的能力,使其能够更好地控制生成图像的特定特征。通过引入额外的控制信号,用户能够更具体地指导图像生成各个方面(如姿势关键点、分割图、深度图、颜色等)。
OpenPose姿势控制是一个姿势检测工具,可以从图像或视频中提取人体的关键点(例如关节的位置),并生成一个骨骼图。
|
Canny精准绘制通过 Canny 边缘检测,提取图像中的主要轮廓
*和opencv的Canny Canny 边缘检测是一个经典的图像处理算法,用于提取图像中的边缘信息。OpenCV 是一个开源的计算机视觉库,其中包含了 Canny 边缘检测的实现(通过 |
Hed绘制能够在多尺度下检测到更加细致的边缘
|
深度图Midas从单张图像中预测每个像素的深度信息,即相机与场景中物体之间的距离。
|
颜色color控制提供一个颜色参考图来引导模型生成特定色调或颜色分布
|
先安装好库们:
- pip install diffusers
- pip install transformers
- pip install controlnet
- # 加载所有需要的检测器
- openpose = OpenPoseDetector.from_pretrained("lllyasviel/ControlNet")
- canny = CannyDetector()
- hed = HEDDetector()
- midas = MidasDetector()
- color = ColorDetector()
-
- #加载图像
- image = load_image("input_image.png")
-
- # 生成特定特征的图像
- openpose_image = openpose(image)
- canny_image = canny(image)
- hed_image = hed(image)
- depth_image = midas(image)
- color_image = color(image)
-
- # 可以依次应用不同的控制器
- generated_image = model(prompt="A futuristic cityscape", controlnet=controlnet, image=openpose_image).images[0]
- generated_image.save("output_combined.png")
-
- #最后获取,比如通过ControlNet进行边缘控制生成图像
- generated_image = model(prompt="A city skyline", controlnet=controlnet, image=canny_image).images[0]
- generated_image.save("output_canny.png")
简要概述
导入库:首先,代码导入了需要用到的库,包括 data-juicer 和微调的工具 DiffSynth-Studio
数据集构建:下载数据集kolors,处理数据集
模型微调:模型微调训练,以及加载训练后的模型
图片生成:调用训练好的模型生成图片
参考教程过程顺利,针对不明白的点进行了探索:
虽然很常见,但是忘掉会很麻烦。有些库在安装后会更新环境变量,只有在重启 kernel 后,这些变量才能被正确加载和使用;重启 kernel 可以清理内存,释放资源;还有python路径更新。
- torch.manual_seed(0)
- image = pipe(
- prompt="二次元,一个蓝色长发小女孩,在海滩上坐着,双手托着腮,看向远方,全身,白色连衣裙",
- negative_prompt="丑陋、变形、嘈杂、模糊、低对比度,扭曲的手指,多余的手指",
- cfg_scale=4,
- num_inference_steps=50, height=1024, width=1024,
- )
- image.save("1.jpg")
cfg_scale
(即配置比例或条件比例)用于调节生成的结果如何受输入条件(如提示、描述或边缘图)的影响。
- 较高的
cfg_scale
值通常会提高生成图像的质量和一致性,因为模型会更加强调条件信息,从而生成更符合提示的图像。然而,如果cfg_scale
设置得过高,可能会导致过度拟合提示,生成的图像可能会变得不自然或偏离其他创意方向。- 较低的
cfg_scale
值则允许生成的图像有更多的自由度,可能会导致结果与输入条件不够一致,但可能会带来更多的创意和变异性。
- import os
-
- cmd = """
- python DiffSynth-Studio/examples/train/kolors/train_kolors_lora.py \
- --pretrained_unet_path models/kolors/Kolors/unet/diffusion_pytorch_model.safetensors \
- --pretrained_text_encoder_path models/kolors/Kolors/text_encoder \
- --pretrained_fp16_vae_path models/sdxl-vae-fp16-fix/diffusion_pytorch_model.safetensors \
- --lora_rank 16 \
- --lora_alpha 4.0 \
- --dataset_path data/lora_dataset_processed \
- --output_path ./models \
- --max_epochs 1 \
- --center_crop \
- --use_gradient_checkpointing \
- --precision "16-mixed"
- """.strip()
-
- os.system(cmd)
--lora_rank 16
:
lora_rank
是 Low-Rank Adaptation (LoRA) 的一个参数。LoRA 是一种用于降低模型训练成本的技术,它通过在原始模型的基础上引入低秩矩阵来进行适配。lora_rank
参数指定了这些低秩矩阵的秩。这里的16
表示低秩矩阵的秩是 16。
--lora_alpha 4.0
:
lora_alpha
是 LoRA 的另一个关键参数,控制低秩矩阵的缩放因子。它影响低秩适配的强度或重要性。这里的4.0
表示低秩矩阵的缩放因子为 4.0。
--pretrained_unet_path
:
- 这个参数指定了预训练的 U-Net 模型的路径。U-Net 是一种常用于图像分割和生成任务的神经网络架构。
--pretrained_text_encoder_path
:
- 指定了预训练的文本编码器的路径。文本编码器用于将输入的文本转换成特征表示。
--pretrained_fp16_vae_path
:
- 指定了预训练的变分自编码器(VAE)的路径。VAE 是一种生成模型,通常用于生成任务。
fp16
表示该模型以半精度浮点数格式存储,以节省内存和计算资源。
--dataset_path
:
- 指定了训练数据集的路径。
data/lora_dataset_processed
表示数据集已经处理过,并准备好用于训练。
--output_path
:
- 指定了模型训练后的输出路径。在这个例子中,模型会被保存到
./models
目录下。
--max_epochs 1
:
- 指定了最大训练轮数。在这里,训练轮数为 1,即仅训练一轮。
--center_crop
:
- 这个选项启用中心裁剪。这通常是对输入图像进行裁剪以适应模型的输入尺寸。
--use_gradient_checkpointing
:
- 启用梯度检查点。这是一种技术,用于在训练过程中节省内存,通过重新计算中间激活值来减少内存使用。
--precision "16-mixed"
:
- 指定训练过程中使用的数值精度。
16-mixed
表示混合精度训练,使用 16 位和 32 位浮点数的混合,以提高训练速度并减少内存使用。
生成的结果很好,纱裙用透明的方式表现出来,虽然手指藏起来了……
写实风也不错,遗憾的是,”数学公式“尚未被理解……这看起来像魔法文字
接下来会尝试调试
从零入门AI生图原理&实践 是 Datawhale 2024 年 AI 夏令营第四期的学习活动(“AIGC”方向),基于魔搭社区“可图Kolors-LoRA风格故事挑战赛”开展的实践学习——
适合想 入门并实践 AIGC文生图、工作流搭建、LoRA微调 的学习者参与
这里是其他同学发布的流畅完整的操作过程,跳转直达
可图Kolors-LoRA风格故事挑战赛 | ||
---|---|---|
赛事链接 | https://tianchi.aliyun.com/s/ce4dc8bf800db1e58d51263ff357d28f | |
赛事任务 |
| |
评分规则介绍 | 1、主观评分由评委对参赛作品进行投票,评审标准可以从技术运用(40%)、组图风格连贯性(30%)、整体视觉效果(30%)几方面进行评判投票。 | 2、客观评分美学分数仅作评价提交是否有效的标准,其中美学分数小于6(阈值可能根据比赛的实际情况调整,解释权归主办方所有)的提交被视为无效提交,无法参与主观评分。 |
此外,我们会核实选手上传的模型文件,赛选手需提交训练的LoRA 模型文件、LORA 模型的介绍、以及使用该模型生成的至少8张图片和对应 prompt,以便我们能够复现生成效果,对于生成效果明显无法复现的,取消获奖资格。 | ||
任务提交格式说明 | 选手在天池平台后,需在魔搭平台上提交作品。步骤如下: | |
1、将训练好的LoRA 模型上传到魔搭模型库
| 2、作品发布在比赛品牌馆讨论区,魔搭社区
| |
赛程安排 | 初赛:报名后-2024年8月31日23:59 进入决赛标准:2024年9月2日,从初赛作品中结合专业技术评委+人气投票筛选30组选手入围决赛(客观评分+评委主观评分) | 决赛:2024年9月5日答辩展示,线上决出一二三等奖(评委主观评分) |
奖项设置 | 奖项 奖金 一等奖(第1名) 10000元*1 二等奖(第2-4名) 3000元*3 三等奖(第5-10名) 1000元*6 人气奖(10个) 500元天猫超市卡*10 | |
数据集分析 | 官方提供了示例数据集,但我们实际上可以自行寻找所需的数据集,用来训练自己的LoRA模型。 |
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。