一.从工具视角回顾AI生图的历史
20世纪70年代:艺术家哈罗德·科恩(Harold Cohen)发明AARON,可通过机械臂输出作画。
2012年:吴恩达训练出的能生成“猫脸”的模型,它使用卷积神经网络(CNN)训练,证明了深度学习模型能够学习到图像的复杂特征。
2015年:谷歌推出“深梦”(Deep Dream)图像生成工具,类似一个高级滤镜,可以基于给定的图片生成梦幻版图片。
2021 年 1 月: OpenAI 推出DALL-E模型(一个深度学习算法模型,是GPT-3 语言处理模型的一个衍生版本),能直接从文本提示“按需创造”风格多样的图形设计。
注:AI生图模型属于多模态机器学习模型,通过海量的图库和文本描述的深度神经网络学习,最终的目标是可以根据输入的指示(不管是文本还是图片还是任何)生成符合语义的图片。
二.探索AI生图前沿
2.1初步探索
可图 · 模型库 (modelscope.cn)是快手开源的文本到图像生成模型,该模型具有对英语和汉语的深刻理解,并能够生成高质量、逼真的图像。
代码开源链接:https://github.com/Kwai-Kolors/Kolors
模型开源链接:https://modelscope.cn/models/Kwai-Kolors/Kolors
技术报告链接:https://github.com/Kwai-Kolors/Kolors/blob/master/imgs/Kolors_paper.pdf
魔搭研习社最佳实践说明:https://www.modelscope.cn/learn/575?pid=543
2.2 通过魔搭社区持续探索
当我们希望AI能为我们将特定的文字生成在图片当中,像我们Task1中介绍的 创意海报生成 工具,早已在代码中固定了相应的文字位置和对应的字体,才能进行相应的生成,且大概率是进行了两个步骤——
-
一个步骤是AI生成背景,
-
另一个步骤是通过代码将对应的文字显示到对应位置,
-
然后渲染,合成图片,给到我们。
过去,文生图技术主要依赖于 SD 系列基础模型,且仅支持英文的提示词。然而,现在有了支持中文提示词的可图文生图模型。可图模型的提示词格式相对固定,魔搭社区还开源了涵盖各种风格的优质提示词集,用户可以点击跳转查看。这些提示词涵盖了600多种不同风格,可以帮助用户完善提示词,从而生成各种风格的图片,非常适合在学习中使用。
魔搭社区还有各种资料,可以供我们学习&探索AI生图的前沿——
三.认识通义千问
点击直达,编程与技术支持能力是它的强项之一。
首先我们来直观感知下这个文生图代码的框架结构:
将代码一一询问AI即可。
3.1分析代码的主体架构
3.1.1输入的Prompt
你是一个优秀的python开发工程师,现在我们需要你帮我们逐行分析这个代码,用中文回答我的问题。{此处替换前面的代码}
3.1.2返回的结果
这段代码主要分为以下几个部分:
1.安装和卸载依赖包
-
使用
!pip
命令来安装或卸载 Python 包。包括:-
simple-aesthetics-predictor
,data-juicer
,peft
,lightning
,pandas
,torchvision
, 和DiffSynth-Studio
的安装。 -
卸载
pytorch-lightning
(使用-y
自动确认卸载)。
-
2.加载数据集
-
使用 ModelScope 的
MsDataset
类加载名为AI-ModelScope/lowres_anime
的数据集,并指定子集名称为default
和分割为train
,缓存目录设置为/mnt/workspace/kolors/data
。
3.数据预处理
-
将数据集中的图像转换为 RGB 模式,并保存到指定目录。
-
创建包含图像路径和文本描述的元数据文件
metadata.jsonl
。 -
编写并保存
data_juicer_config.yaml
配置文件,用于后续的数据过滤和处理。
4.使用 Data-Juicer 进行数据处理
-
使用
dj-process
命令根据配置文件对数据进行过滤和处理,生成result.jsonl
文件。
5.数据整理与训练
-
读取
result.jsonl
文件中的数据,并将其转换为 Pandas DataFrame,然后保存为 CSV 文件,并且将图片保存到./data/lora_dataset_processed/train文件夹下。 -
下载模型download_models(["Kolors", "SDXL-vae-fp16-fix"])
-
在前面模型的基础上,执行Lora微调训练
-
加载微调后的模型
6.图像生成
-
设置正向提示词,反向提示词,执行次数,图片尺寸
-
设置随机种子,控制图片是否可以重复生成,并将图像保存为
.jpg
文件。
7.合并图像
-
最后,将生成的多个图像合并成一个大图像,并调整大小。
整个流程涵盖了从数据加载、预处理、特征提取、模型预测到图像生成等多个方面。每一部分都有其特定的功能,共同构成了一个完整的二次元图像处理和生成的工作流。
3.2逐行解释代码
3.2.1输入的问题
你是一个优秀的python开发工程师,现在我们需要你帮我们逐行分析这个代码,用中文回答我的问题。{此处替换前面的代码}
3.2.2返回的结果
这段代码主要完成以下功能:
-
安装和卸载一些Python包。
-
从ModelScope加载一个名为
lowres_anime
的数据集,并保存图像到指定目录。 -
创建并处理一个用于数据清洗的JSONL文件。
-
使用
data-juicer
工具过滤和处理数据集。 -
将处理后的数据集转换为CSV格式。
-
根据数据集通过DiffSynth做Lora微调。
-
加载Lora微调后的模型。
-
设置提示词,用微调后的模型生成图片。
3.3代码还有疑问?
向AI追问
在刚刚逐行解析结果页后面继续追问,如图,通义给了我们更加细致的问题解释,大家可以举一反三,多操作一下
我对其中{替换成你的问题}还是不太理解,给我再详细介绍一下
四.实战演练一一基于话剧的连环画制作
4.1数据准备
4.1.1提示词
你是一个文生图专家,我们现在要做一个实战项目,就是要编排一个文生图话剧 话剧由8张场景图片生成,你需要输出每张图片的生图提示词 具体的场景图片 1、女主正在上课 2、开始睡着了 3、进入梦乡,梦到自己站在路旁 4、王子骑马而来 5、两人相谈甚欢 6、一起坐在马背上 7、下课了,梦醒了 8、又回到了学习生活中 生图提示词要求 1、风格为古风 2、根据场景确定是使用全身还是上半身 3、人物描述 4、场景描述 5、做啥事情 例子: 古风,水墨画,一个黑色长发少女,坐在教室里,盯着黑板,深思,上半身,红色长裙
4.1.2询问通义
自己在通义的返回的基础上,多多调整,争取打磨出一个最佳的提示词
4.1.3最后的话剧场景
结合AI内容,自己在AI结果上做一些调整,最终整理出来场景表格
图片编号 | 场景描述 | 正向提示词 | 反向提示词 |
图片1 | 女主正在上课 | 古风,水墨画,一个黑色长发少女,坐在教室里,盯着黑板,深思,上半身,红色长裙 | 丑陋,变形,嘈杂,模糊,低对比度 |
图片2 | 开始睡着了 | 古风,水墨画,一个黑色长发少女,坐在教室里,趴在桌子上睡着了,上半身,红色长裙 | 丑陋,变形,嘈杂,模糊,低对比度 |
图片3 | 进入梦乡,梦到自己站在路旁 | 古风,水墨画,一个黑色长发少女,站在路边,上半身,红色长裙 | 丑陋,变形,嘈杂,模糊,低对比度 |
图片4 | 王子骑马而来 | 古风,水墨画,一个英俊少年,骑着白马,上半身,白色衬衫 | 丑陋,变形,嘈杂,模糊,低对比度 |
图片5 | 两人相谈甚欢 | 古风,水墨画,一个英俊少年,白色衬衫,一个黑色长发少女,红色长裙,两个人一起聊天,开心,上半身 | 丑陋,变形,嘈杂,模糊,低对比度 |
图片6 | 一起坐在马背上 | 古风,水墨画,一个英俊少年,白色衬衫,一个黑色长发少女,红色长裙,两个人一起骑着马,全身 | 丑陋,变形,嘈杂,模糊,低对比度 |
图片7 | 下课了,梦醒了 | 古风,水墨画,一个黑色长发少女,坐在教室里,下课铃声响了,同学们开始走动,从睡梦中醒来,深思,上半身,红色长裙 | 丑陋,变形,嘈杂,模糊,低对比度 |
图片8 | 又回到了学习生活中 | 古风,水墨画,一个黑色长发少女,坐在教室里,盯着黑板,认真上课,上半身,红色长裙 | 丑陋,变形,嘈杂,模糊,低对比度 |