1. 什么是AI生图
一般来说,AI生图模型属于多模态机器学习模型,通过海量的图库和文本描述的深度神经网络学习,最终的目标是可以根据输入的指示(不管是文本还是图片还是任何)生成符合语义的图片。
通俗来说,AI生图模型获得图片生成能力主要是通过 学习 图片描述 以及 图片特征,尝试将这两者进行一一对应,存储在自己的记忆里。
在我们需要的时候,通过输入的文字,复现出来对应的图片特征,从而生成了我们需要的图片。
生图模型拓展:
1)生成式对抗网络(GAN):生成器和判别器,这两个模型分别都有一个目标,对于生成器来说,它的目的是让自己生成的图能够骗过判别器,让它认为这张图就是原始数据库中的真实图片而非模型生成的,这种情况下输出结果越趋近于1(1为真)就能说明生成模型效果越好;对于判断器来说,它的目的是有效地辨别出生成器生成的图片,这种情况下输出结果越趋近于0(0为假)就能说明判别模型效果越好;这样的话就形成了所谓的对抗(GAN),一个想让生成结果更趋向于1,一个想让生成的结果更趋向于0,生成的结果数值会给到两个模型和训练目标比对(一个目标是0,一个目标是1)后分别进行Fine tune(优化模型参数);那什么情况下算是训练好了呢?这里就有一个纳什均衡的概念,就是说当输出的结果无限趋近于0.5,0和1的中间值那么就算是把这个生成器训练完了。这个时候生成器生成的图片效果无限逼近于原始图了。
2)CLIP模型:其核心是对比学习,它通过最大化正样本对之间的相似度并最小化负样本对之间的相似度来训练模型。这通常通过一个对比损失函数来实现。
3)VAE(自分编码器):解决了AE过拟合/泛化能力不好的问题,如果我们让 AE 这套架构先去学习“新月”和“满月”两个数据,其中“新月”输出的 code=1 而满月输出的 code=10,这时候想让训练好的 AE 输出“半月”也就是 code=5,效果是不理想的,原因模型训练都是固定的输入和输出,中间没有灰度。在 AE 的基础上增加了正态
函数,使得不仅仅code=1 为“新月”,code=0.9、0.8、1.1…同样具备新月的特征,同理不仅仅code=10 为“满月”,code=10.5、11、9.5…同样具备满月的特征,那当 code=5 时候就同时具备了满月和新月的特征,输出的结果就比较理想。
3)Diffusion(扩散模型):
1. 将数据集中的图像加噪
2.反向引入 unet 网络预测噪声,这里涉及到unet网络如何训练
引入一个随机噪声图像; 随机噪声图像代入到 unet 网络,网络预测产生了多少噪声; 将随机图像-噪声 得到图片结果; 将图片结果和实际正确图片进行比对产生误差后反向调整模型,直到显示正确的图像。 不同的图片数据集反复形成一个合格的 unet 网络。3.有了 unet 网络,就可以还原数据集中的图片:随机噪声-unet 网络预测的噪声
2. Baseline 解读
安装和卸载一些Python包。
从ModelScope加载一个名为lowres_anime
的数据集,并保存图像到指定目录。
创建并处理一个用于数据清洗的JSONL文件。
使用data-juicer
工具过滤和处理数据集。
将处理后的数据集转换为CSV格式。
根据数据集通过DiffSynth做Lora微调
加载Lora微调后的模型
设置提示词,用微调后的模型生成图片
画风唯美,但细看还是能够看出来有不符合逻辑的地方。没涨的教室桌椅布局都风格不太一样,第一张女主角穿的蓝色长袍和后面几张都不一样。
3.学习心得
1)大致了解现有的生图模型有哪些,本次学习使用的是可图;
2)对Baseline代码有了进一步的理解;
3)学会通过借助GPT来创作prompt,来生图。
总结
### 文章总结#### 1. 什么是AI生图
AI生图模型基于多模态机器学习,通过深度学习海量图库与文本描述来生成符合语义的图片。该过程涉及模型学习图片描述与特征,并建立对应关系。用户的输入指令(文本或图片)能触发生图模型,复现并生成所需图片。进一步地,文中提及了几种先进的生成模型:
- **生成式对抗网络(GAN)**:通过生成器与判别器的互相对抗优化生成质量。
- **CLIP模型**:利用对比学习方法,增强模型对正负面样本的分辨能力。
- **VAE(自编码器)**:解决AE泛化能力不足的问题,通过引入正态分布函数实现更灵活的编码表示。
- **Diffusion(扩散模型)**:通过加噪与去噪过程训练U-Net网络,实现从噪声到图像的还原。
#### 2. Baseline解读
文章介绍了一套AI生图的Baseline操作流程,包括Python环境准备、数据集加载与清洗、模型微调及图片生成。具体步骤涵盖安装必要的库、加载并使用数据集、数据清洗转化、以及利用DiffSynth进行Lora微调后的图像生成。实例生成图片展现了AI艺术的唯美,但也指出了逻辑不一致等细节问题。
#### 3. 学习心得
作者通过此次学习收获了以下几个方面的心得:
- **了解现有生图模型**:对多种AI生图模型有了初步了解和认识。
- **掌握Baseline代码**:深入理解了Baseline的流程代码,包括数据处理、模型训练与图片生成等。
- **创作Prompt的技巧**:学会利用GPT等工具创作高质量的图片提示词(Prompt),从而优化生图效果。
总的来说,文章通过理论和实践相结合的方式,全面探讨了AI生图的概念、技术实现及实际应用,并为读者提供了一份有价值的学习心得。