从零入门AI生图(AIGC方向)基于魔搭社区“可图Kolors-LoRA风格故事挑战赛”开展实践学习。
一、相关概念解释
1.1 文生图(Text-to-Image)技术
文生图是指通过输入文本描述来生成相应的图像。这类技术利用深度学习模型理解自然语言,并将其转化为视觉输出。近年来,随着深度学习和生成对抗网络(Generative Adversarial Network,GANs)的发展,文生图技术取得了显著进展。
步骤一: 使用CLIP Text Encoder模型将输入的人类文本信息进行编码,输出特征矩阵;
步骤二: 输入文本信息,再用random函数生成一个高斯噪声矩阵 作为Latent Feature的“替代” 输入到SD模型的 “图像优化模块” 中;
步骤三: 将图像优化模块进行优化迭代后的Latent Feature输入到 图像解码器 (VAE Decoder) 中,将Latent Feature重建成像素级图。
不管是文生图还是图生图,核心模型都是图像优化模块,图像优化模块的输入都是文字+图片,输出都是一张经过优化后的图片。只不过文生图任务中图像优化模块的输入是一张随机生成的噪声图。模型对文字的编码采用CLIP Text Encoder模型,对于图片的编码采用VAE Encoder。
1.2 LoRA (Low-Rank Adaptation)低秩适应
LoRA是一种用于模型微调的技术,尤其是在深度学习模型的参数调整中。LoRA 的核心思想是通过在模型已有参数的基础上添加一个低秩矩阵,从而实现对模型的适应性调整。这样做的好处是减少了模型参数量,从而加速了训练过程,并且在保持原模型性能的同时,实现了新的任务适应。
LoRA的核心思想是,在冻结预训练模型权重后,将可训练的低秩分解矩阵注入到的Transformer架构的每一层中,从而大大减少了在下游任务上的可训练参数量。
1.2.1 为什么要LoRA
背景
通常,冻结预训练模型权重,再额外插入可训练的权重是常规做法,例如Adapter。可训练的权重学习的就是微调数据的知识。
但它们的问题在于,不仅额外增加了参数,而且还改变了模型结构。
这会导致模型训练、推理的计算成本和内存占用急剧增加,尤其在模型参数需在多GPU上分布式推理时(这越来越常见)。
深度网络由大量Dense层构成,这些参数矩阵通常是满秩的。相关工作表明,When adapting to a specific task, 训练学到的过度参数化的模型实际上存在于一个较低的内在维度上(高维数据实际是在低维子空间中)
二、baseline一站式实现过程
2.1 下载baseline文件
打开终端,复制以下代码,完成下载:
git lfs install
git clone https://www.modelscope.cn/datasets/maochase/kolors.git
2.2 安装相关环境和包
!pip install simple-aesthetics-predictor
!pip install -v -e data-juicer
!pip uninstall pytorch-lightning -y
!pip install peft lightning pandas torchvision
!pip install -e DiffSynth-Studio
Data-Juicer:数据处理和转换工具,旨在简化数据的提取、转换和加载过程。Data-Juicer 可以类比为一个超级果汁机,你可以把不同种类的水果(数据)放进去,然后果汁机会自动进行清洗、去皮、切块,并把各种水果的果汁混合在一起,最终倒出你想要的美味果汁。
在数据处理的背景下,Data-Juicer 是一个用于简化数据处理的工具。你可能会有来自不同来源的数据,比如原始表格、数据库、API等。Data-Juicer 就像那个果汁机,它能够帮助你提取这些数据,进行清洗(去掉噪音和无关信息)、转换(改变数据格式或结构),最后输出你需要的干净数据,方便你进一步分析和使用。
DiffSynth-Studio:高效微调训练大模型工具。可以类比为一个音乐录音棚,设想你是一位音乐制作人,手头上已经有了一首基本完成的曲子(大模型)。但你想要让这首曲子更加符合某种特定的风格,比如说,加一些摇滚的元素,或者让它听起来更加流行。
DiffSynth-Studio 就是这个“录音棚”,它让你能够对已有的曲子(大模型)进行微调,加入你想要的特定元素(新数据或任务),而且这个过程非常高效,不需要从头制作一首新曲子(重新训练一个模型)。你只需要做一些调整,就能快速生成一首符合你需求的新版本曲子(微调后的模型)。
2.3 修改相关prompt
我准备创造一个连贯故事的图片来描述一个偶像明星突发疾病遭遇挫折后产生改变,重拾信心返回舞台的故事
三、模型公开下载
-
移动结果文件
创建terminal,粘贴如下命令,回车执行
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/