Datawhale AI夏令营第四期魔搭-AIGC文生图方向Task1笔记

速通指南里的步骤已经写的非常详细了,所以我就在这边说明一下自己的一些发现。

注意事项

  • 如果在微信自带的浏览器中打开魔搭社区,出现以下这种情况,建议换个浏览器打开。(我刚开始是打不开的,但是后来又可以了)
  • 速通指南里的镜像版本是1.16.1

但实际上按步骤进行得到的是1.17.0

  • 重启Notebook kernel的两种方法

知识拓展

lora

由于Baseline中使用的是lora微调,所以就讲讲这方面的知识。

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

以下是Baseline中lora微调代码

# 下载模型
from diffsynth import download_models
download_models(["Kolors", "SDXL-vae-fp16-fix"])

#模型训练
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)
  • 第一部分:从diffsynth库中导入download_models函数,然后调用该函数下载指定的模型。这里下载了两个模型,分别是"Kolors"和"SDXL-vae-fp16-fix"。

  • 第二部分:首先导入os模块,然后定义一个字符串cmd,这个字符串包含了一个用于训练模型的命令行命令。接下来,使用os.system(cmd)执行这个命令。这个命令会调用DiffSynth-Studio/examples/train/kolors/train_kolors_lora.py脚本来训练模型,同时传入一些参数,如预训练的UNet路径、文本编码器路径、预训练的FP16 VAE路径等。此外,还设置了LORA rank、LORA alpha、数据集路径、输出路径等参数。最后,设置了最大训练轮数、是否进行中心裁剪、是否使用梯度检查点以及精度等参数。

  • 以下是各个参数的解释:

  • --pretrained_unet_path: 预训练的UNet模型的路径。
  • --pretrained_text_encoder_path: 预训练的文本编码器模型的路径。
  • --pretrained_fp16_vae_path: 预训练的FP16 VAE模型的路径。
  • --lora_rank: Lora模型的秩(rank)。
  • --lora_alpha: Lora模型的学习率。
  • --dataset_path: 数据集的路径。
  • --output_path: 输出模型的路径。
  • --max_epochs: 最大训练轮数。
  • --center_crop: 是否使用中心裁剪。
  • --use_gradient_checkpointing: 是否使用梯度检查点。
  • --precision: 使用的精度(16位混合精度)。

描述词的使用

提示词的构成非常关键,它们可以细分为多个类别和角度,以确保生成的图像能够精准地反映用户的需求。以下是提示词使用的具体方法和步骤:

主体
  • 详细描述:对主要对象的描述需要具体详细,例如要生成一个女巫,不应仅仅写“A sorceress”,而应更具体地描述她的外观和动作,比如“Emma Watson as a powerful mysterious sorceress, casting lightning magic, detailed clothing”。
画风风格
  • 风格描述:添加如“digital painting”(数字绘画)或“oil painting”(油画)等描述词,可以显著改变输出图像的风格。
描述细节
  • 细节丰富性:包括场景、环境、服装、道具等各方面的细节,这些丰富的描述能够帮助模型更准确地捕捉需求,例如“1girl, long hair, white hair”表示一个长发白毛的女孩。
提示词顺序及权重
  • 按重要性排序:提示词的顺序决定了其在生成图像中的权重,越靠前的词汇影响越大。同时,可以使用括号、冒号等符号调整每个提示词的权重,确保关键要素得到充分体现。
正向反向提示词
  • 避免内容描述:除了指明想要的内容,还应明确不希望出现的内容,如“low quality, worst quality, nsfw”等,这有助于优化生成结果。
综合运用技巧
  • 结合多种元素:在编写提示词时,尽量综合运用以上技巧,并参考已经成功的案例进行修改和优化。例如,“best quality, masterpiece, 8k, ultra-high resolution”等高质量描述词可以帮助提升输出图像的整体质量。

体验AI生图

运行结束后大家可以先玩一玩,体验一下AI生图,了解其原理。

修改其中的文字描述,执行修改部分的代码块,无需全部重新运行。

最后再重新运行这一代码块,即可打印出修改后的图片。

得到最终结果

总结

不过很明显第一张图片的手存在问题,通过之后几天的学习,代码会得到改进并更加完善。感兴趣的同学可以先玩一玩,深入学习后在baseline的基础上进行改进。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值