AIGC学习笔记 · task2 o( ̄▽ ̄)ブ
PS:在上一篇文章继续更新的task笔记,只在app上可以看到(不知道为什么网页端看不到,在和平台技术人员沟通),所以单独发布了一篇。
Task2:精读baseline代码 + prompt练习(8.13~8.14)
2.1 魔搭社区的资源
魔搭社区 的各类AIGC工具:模型、数据集、开源内容...
Kolors(可图)模型:快手开源的文本到图像生成模型,中英双语
可图优质咒语书:中文prompt,600+风格
创意海报生成:AI背景图 + 艺术字设计 → 合成图片
研习社 · 魔搭社区:NLP、计算机视觉、多模态等学习资源
2.2 精读baseline代码
① 主体框架
我使用GPT-4o来辅助理解,初步弄清其框架。
返回结果如下:
- 1.依赖库的安装
安装代码运行所需的各种Python库和工具包,包括 simple-aesthetics-predictor、data-juicer、peft、lightning、torchvision 和 DiffSynth-Studio。
- 2.数据集加载和准备
从 ModelScope 加载低分辨率的动漫数据集,并将数据缓存到指定目录。
- 3.数据预处理和存储
将数据集中的图像转换为RGB格式,并保存到本地。同时,生成对应的元数据文件 metadata.jsonl,用于描述图像与文本的映射关系。
- 4.数据过滤与加工
使用 data-juicer 进行数据过滤和预处理,确保图像满足指定的尺寸和比例要求,并将处理后的结果保存到指定的文件中。
- 5.数据重组织与最终保存
将经过处理后的图像和文本信息重新组织,并保存为metadata.csv文件,这个文件将作为后续训练时的数据集使用。
- 6.模型下载与训练
下载所需的预训练模型。 通过指定的参数和路径进行LoRA的微调训练。
- 7.模型加载与推理
加载训练后的LoRA模型,并将其应用于预训练的UNet模型中。通过这个步骤,模型可以结合LoRA进行推理和图像生成。
- 8.图像生成与保存
使用训练好的模型根据输入的提示词生成图像,并将生成的图像保存到指定路径。代码中有多个相似的块,分别用于生成不同的图像。
② 逐行分析和我的收获
依然使用GPT-4o辅助学习,相较 ①主体框架 有种豁然开朗的感觉,学到了很多编程知识,知道怎么替换数据集,也搞明白了LoRA微调训练的核心环节和参数有哪些,比如rank、alpha、learning_rate、batch_size、epoch以及模型的不同layers(task1的疑问✔)。
- 一个小发现:当我的prompt写成 “ 我对python一窍不通,请帮我逐行解析以下代码xxx ” ,GPT会更新它的记忆,为我输出更详细的内容。【与大模型友好沟通技能+1】
以下是我结合GPT-4o的回答,对baseline代码作出的详细注解。(第一次这么仔细地读代码orz,收获满满)
在阅读过程中,我最深的感触是这些文件名和文件路径,一不小心就会弄错和遗漏,或者彼此关系不明确。因此,我必须在一开始就做好清晰的规划,随时检查,以干净的架构来存储所有的过程文件。
另外,我发现代码对数据集的处理是比较细节的,既会过滤掉很多信息,也会保留很多特征,可能一点微小的规则变动都会影响最终成图的效果。把数据集整理成LoRA需要的格式也很必要。如果要提高模型输出能力,必须特别关注数据集的质量和处理方式。
2.3 Prompt 练习:基于话剧的连环画制作
① 创作故事和prompt
我的创作流程:
和LLM对话
→ 生成场景描述和prompt
→ 人工丰富细节并删除冗余
→ 用可灵AI/baseline等途径实战试验
→ 根据成图效果继续调整prompt
→ 直到满意
一开始GPT的输出很冗长,我申明了简约要求后,输出质量提高了很多。
此外,我在可灵官方的prompt指南里学习了5W1H方法,例如:一个戴着贝雷帽 [what] 的老画家 [who] ,站在画架前 [what] ,在黄昏时分 [when] 的花园里 [where] ,专心地作画 [why] ,印象派风格,柔和光影,近景 [how] 。
类似的,我的场景一可以写成:一个黑色长发马尾少女,穿着浅蓝色毛衣和牛仔裤,坐在木质书桌前,专注地盯着书,眉头微皱,桌上堆满书本和笔记本,背景是昏黄灯光下的书架,手绘漫画风。
依次执行以上步骤后,我将最后的 场景 | 正向prompt | 负向prompt 信息汇总成了表格。
表1:无代码文生图用的prompt
表2:代码文生图用的prompt
② 无代码文生图
-
SCEPTER Studio (效果太感人了就不放了)
完整的故事生成如下,画面还是比较连续的~
不过我也发现很多需要解决的问题:
-
让AI生图工具写字的效果很差;
-
AI不怎么喜欢画全身图;
-
在多人物描述时,AI很容易把特征张冠李戴;
-
提示词键入过多,许多效果反而不会呈现出来;
-
画风依然不是很统一,细节处有许多破绽(比如书包、发圈、录取通知书的帽穗等)。
③ 用代码文生图
完整故事生成如下,很强烈的微调数据集风格(二次元),还需要继续学习改进~
一点思考:
-
当场景比较复杂,prompt很多时,必须增加推理步骤
num_inference_steps,否则会生成看起来显然没有画完的图。我最高调成了500。 -
遇到了GPU显存不足的报错。向GPT以及助教请教,已顺利解决。
解决办法Ⅰ:输入代码
import gc,gc.collect(),torch.cuda.empty_cache(),释放不用的显存,并通过命令!nvidia-smi随时查看GPU情况。解决办法Ⅱ:重启内核。
-
图片风格不满意。我发现魔搭社区有很多方便好用的数据集,针对人物表情、姿势等都有,后续task中将改变数据集试一试。
-
可灵AI无代码文生图的效果,比coding的画面细腻很多,也可以改换风格,速度也快。那对于普通应用者而言,用LoRA微调的优势到底体现在何处呢?