一、从零入门AI生图原理&实践
1.AIGC相关赛事:可图Kolors-LoRA风格故事挑战赛
a. 参赛者需在可图Kolors 模型的基础上训练LoRA 模型,生成无限风格,如水墨画风格、水彩风格、赛博朋克风格、日漫风格......
b. 基于LoRA模型生成 8 张图片组成连贯故事,故事内容可自定义;基于8图故事,评估LoRA风格的美感度及连贯性 样例:偶像少女养成日记
2.文生图的历史
文生图,英文Text-to-Image Generation,可以追溯到早期计算机视觉和自然语言处理研究,分为以下阶段:
a. 早期探索(20世纪60年代-20世纪90年代):主要依赖于规则和模板匹配,但计算能力和算法限制
b. 基于统计模型的方法(2000年代):利用概率图模型和统计语言模型来生成图像,但仍然受到模型的复杂性和计算资源的限制
c. 深度学习的崛起(2010年代):深度学习,尤其是卷积神经网络(CNN)和生成对抗网络(GAN)的发展,各类变种GAN模型被提出,如DCGAN、Pix2Pix等
d. 大规模预训练模型(2020年代):大规模预训练模型如OpenAI的CLIP、DALL-E以及Stable Diffusion等
补充知识点:
CLIP(Contrastive Language-Image Pre-Training)模型是OpenAI在2021年初发布的用于匹配图像和文本的预训练神经网络模型。
通俗来讲,即通过对比学习,在图像与文本之间建立关联性、度量相似性,以实现二者之间转化
而DALL-E一个可以根据书面文字生成图像的人工智能系统,该名称来源于著名画家达利(Dalí)和机器人总动员(Wall-E);Stable Diffusion和Midjourney则是目前较为强势且普及度较高的文生图大模型。
可参考网址指路知乎https://zhuanlan.zhihu.com/p/685782604
3. 文生图基础知识介绍
文生图主要以SD系列基础模型为主,以及在其基础上微调的lora模型和人物基础模型等。
如上图显示的逻辑,主要从提示词、参考图控制入手,接着由原理lora、ComfyUI模型生成图片,那么接下来就是点对点阐释梳理逻辑节点:
a. 提示词:
一般写法:主体描述,细节描述,修饰词,(艺术风格,艺术家)
(会更推荐使用英文 prompt,因为底层调用 sd,包括mj 时是输入 英文prompt的)
E.g
主体描述:Beautiful and cute girl, smiling, 16 years old, denim jacket, gradient background
细节描述&修饰词:soft colors, soft lighting, cinematic edge lighting, light and dark contrast,
艺术风格:anime, super detail, 8k
出图指引(SD WebUI):
描述内容prompt:主体、表情、服装、场景、环境、镜头、灯光、风格、画质、渲染器
靠前的Tag权重较高,适当运用括号法则、数字法则、混合
采样步数:数越高,细节多渲染慢,建议范围在20~40
采样器:karras去噪快
a噪点不居中,关键词识别度稍低,更具灵活度
DPM 建议使用DPM++SDE karras
文字相关度CFG scale : 建议在4~9
Seed 随机种子:-1随机,其他为已经完成出图的风格编号
部分参考原文链接:https://blog.csdn.net/linghyu/article/details/140971933
b. lora:
“Low-Rank Adaptation”,即低秩适应。Lora不是指单一的具体模型,而是指一类通过特定微调技术应用于基础模型的扩展应用。(对SD特定文生图模型进行针对性优化,以实现对特定主题、风格或任务的精细化控制)
那我们 lora 训练的最终目的是什么呢?训练的本质在于找出当前训练集的最优解,优素材取决于不同角度、不同形态、灯光、图片质量。
在Tag类型上,需要包括主题、动作、主要特征、视角、光影效果等其他,如果在训练过程中对某一个特征不打Tag,则将成为固定模型特征。
3. ComfyUI:
ComfyUI 是一个工作流工具,主要用于简化和优化 AI 模型的配置和训练过程。通过直观的界面和集成的功能,用户可以轻松地进行模型微调、数据预处理、图像生成等任务(相当于可视化)
在ComfyUI平台的前端页面上,用户可以基于节点/流程图的界面设计并执行AIGC文生图或者文生视频的pipeline。
4. 参考图控制:
英文即ControlNet,是一种用于精确控制图像生成过程的技术组件。它是一个附加到预训练的扩散模型(如Stable Diffusion模型)上的可训练神经网络模块。扩散模型通常用于从随机噪声逐渐生成图像的过程,而ControlNet的作用在于引入额外的控制信号,使得用户能够更具体地指导图像生成的各个方面(如姿势关键点、分割图、深度图、颜色等)。
(相当于细节处理,有OpenPose姿势控制、Canny精准绘制、Hed绘制、深度图Midas、颜色color控制)
二、小白零基础 30 分钟 速通指南
从跑通最简的Baseline,到了解竞赛通用流程、深入各个竞赛环节,精读Baseline与进阶实践,这些一个都不会少!
当前环节可让你在 30分钟 内,从一个小白选手,跑通 “可图Kolors-LoRA风格故事挑战赛” !
千里之行,始于足下,从这里,开启学习之旅吧!
这里建议开通阿里云PAI-DSW试用三个月5000算力时,用支付宝实名认证即可免费学习体验!
30 分钟体验一站式 baseline!Lora样例脚本流程如下:
1. 安装 Data-Juicer 和 DiffSynth-Studio
Data-Juicer:数据处理和转换工具,旨在简化数据的提取、转换和加载过程
DiffSynth-Studio:高效微调训练大模型工具
DiffSynth-Studio 是一个用于高效微调和训练大模型的工具。它提供了优化的训练环境和功能,帮助你在基础模型上进行微调。
使用 DiffSynth-Studio 来微调和训练你的LoRA模型。它提供的高效训练环境和功能帮助你在基础模型的基础上进行优化,使其能够生成各种风格的图片。
请在这里手动重启 Notebook kernel,否则易引起爆显存影响baseline运行!
二、下载数据集
数据集就是对于数据组成的集合,那什么是文生图数据集?
文生图数据集是一种用于训练和评估文生图模型的细粒度综合评测数据集。它旨在从实体、风格、细节等方面拆分出多个评测子维度,对不同的文生图模型进行对比测评。为科学评测文生图模型提供了重要的工具,避免了模型开发者自卖自夸的情况。
例如,ImageEval评测数据集就是这样一个开源的文生图模型测评数据集,它从多个维度对DALL-E 2、Stable Diffusion、AltDiffusion-m18、ERNIE-ViLG等模型进行了对比测评,为文生图模型的性能评估提供了客观的数据支持
保存数据集中的图片及元数据
三、数据处理
使用 Data-Juicer 来整理和转换数据,使数据适合用于训练。这一步骤确保你的数据能够被正确读取和处理,提高模型训练的效果。
四、训练模型
下载模型——加载模型——生成图像
则最后通过提示词来串联整个故事:
P1:
torch.manual_seed(0)
image = pipe(
prompt="二次元,一个紫色短发小女孩,在家中沙发上坐着,双手托着腮,很无聊,全身,粉色连衣裙",
negative_prompt="丑陋、变形、嘈杂、模糊、低对比度",
cfg_scale=4,
num_inference_steps=50, height=1024, width=1024,
)
image.save("1.jpg")
P2:
torch.manual_seed(1)
image = pipe(
prompt="二次元,日系动漫,演唱会的观众席,人山人海,一个紫色短发小女孩穿着粉色吊带漏肩连衣裙坐在演唱会的观众席,舞台上衣着华丽的歌星们在唱歌",
negative_prompt="丑陋、变形、嘈杂、模糊、低对比度",
cfg_scale=4,
num_inference_steps=50, height=1024, width=1024,
)
image.save("2.jpg")
P3:
torch.manual_seed(2)
image = pipe(
prompt="二次元,一个紫色短发小女孩穿着粉色吊带漏肩连衣裙坐在演唱会的观众席,露出憧憬的神情",
negative_prompt="丑陋、变形、嘈杂、模糊、低对比度,色情擦边",
cfg_scale=4,
num_inference_steps=50, height=1024, width=1024,
)
image.save("3.jpg")
P4:
torch.manual_seed(5)
image = pipe(
prompt="二次元,一个紫色短发小女孩穿着粉色吊带漏肩连衣裙,对着流星许愿,闭着眼睛,十指交叉,侧面",
negative_prompt="丑陋、变形、嘈杂、模糊、低对比度,扭曲的手指,多余的手指",
cfg_scale=4,
num_inference_steps=50, height=1024, width=1024,
)
image.save("4.jpg")
P5:
torch.manual_seed(0)
image = pipe(
prompt="二次元,一个紫色中等长度头发小女孩穿着粉色吊带漏肩连衣裙,在练习室练习唱歌",
negative_prompt="丑陋、变形、嘈杂、模糊、低对比度",
cfg_scale=4,
num_inference_steps=50, height=1024, width=1024,
)
image.save("5.jpg")
P6:
torch.manual_seed(1)
image = pipe(
prompt="二次元,一个紫色长发小女孩穿着粉色吊带漏肩连衣裙,在练习室练习唱歌,手持话筒",
negative_prompt="丑陋、变形、嘈杂、模糊、低对比度",
cfg_scale=4,
num_inference_steps=50, height=1024, width=1024,
)
image.save("6.jpg")
P7:
torch.manual_seed(7)
image = pipe(
prompt="二次元,紫色长发少女,穿着黑色连衣裙,试衣间,心情忐忑",
negative_prompt="丑陋、变形、嘈杂、模糊、低对比度",
cfg_scale=4,
num_inference_steps=50, height=1024, width=1024,
)
image.save("7.jpg")
P8:
torch.manual_seed(0)
image = pipe(
prompt="二次元,紫色长发少女,穿着黑色礼服,连衣裙,在台上唱歌",
negative_prompt="丑陋、变形、嘈杂、模糊、低对比度",
cfg_scale=4,
num_inference_steps=50, height=1024, width=1024,
)
image.save("8.jpg")
效果图跑出如下: