Datawhale X 魔搭 AI夏令营第四期 AIGC方向 Task02笔记

精读baseline

分析代码的主体结构

输入问题

返回结果

这段代码主要完成以下几个任务:

1. 安装和卸载依赖包
   - 安装 `simple-aesthetics-predictor`, `data-juicer`, `peft`, `lightning`, `pandas`, `torchvision` 和 `DiffSynth-Studio` 这些Python库。
   - 卸载 `pytorch-lightning` 并重新安装。

2. 加载数据集
   - 使用 ModelScope 加载名为 `AI-ModelScope/lowres_anime` 的数据集,并将其存储到指定路径 `/mnt/workspace/kolors/data` 下。

3. 处理图像数据
   - 创建文件夹用于存放处理后的训练图像和 `data-juicer` 的输入与输出。
   - 遍历数据集中的每条记录,将图像转换为 RGB 格式并保存,同时构建包含图像路径和文本描述的元数据,并写入 JSONL 文件。

4. 配置并运行 Data-Juicer
   - 定义一个 YAML 配置文件来指定 `data-juicer` 的参数,包括数据集路径、过滤条件等。
   - 使用 `dj-process` 命令行工具处理数据集,执行图像尺寸和长宽比过滤。

5. 准备训练数据
   - 读取经过 `data-juicer` 处理后的输出文件,提取文本描述和图像路径,并创建 DataFrame。
   - 将处理好的数据以 CSV 格式保存,并使用 DataFrame 显示结果。
   
6. 计算图像与文本相似性
   - 使用 CLIP 模型计算图像和文本之间的相似性分数。
   - 创建一个自定义的 PyTorch 数据集类,并使用 DataLoader 来批量处理数据。
   - 对于每个批次的数据,使用 CLIP 模型计算图像和文本之间的相似性,并输出概率。

7. 生成图像
   - 使用 `StableDiffusionPipeline` 从预训练模型 `CompVis/stable-diffusion-v-1-4` 生成一系列基于不同提示(prompt)的图像。
   - 设置相同的随机种子以确保生成过程可复现,并保存生成的图像。
   - 最后将生成的图像拼接在一起并展示。

整个流程涉及数据集的加载、图像处理、数据清洗、特征提取以及使用扩散模型生成新的图像。这样的流程通常用于图像生成任务,特别是针对特定风格或主题的图像生成。

逐行解释代码

输入问题

返回结果

这段代码主要分为几个部分:安装依赖包、数据处理和准备、模型加载与使用、以及图像生成。下面将按顺序逐行解释。

安装依赖包

首先通过 !pip 命令安装了一系列 Python 库:

  1. !pip install simple-aesthetics-predictor: 安装了一个用于预测美学的简单工具。

  2. !pip install -v -e data-juicer: 以可编辑模式 (-e) 安装 data-juicer 并显示详细信息 (-v)。

  3. !pip uninstall pytorch-lightning -y: 卸载 pytorch-lightning,并自动确认 (-y)。

  4. !pip install peft lightning pandas torchvision: 安装 peftlightningpandas, 和 torchvision

  5. !pip install -e DiffSynth-Studio: 以可编辑模式安装 DiffSynth-Studio

数据集加载

接着加载了一个名为 lowres_anime 的数据集:

  1. from modelscope.msdatasets import MsDataset: 导入了 ModelScope 的数据集模块。

  2. 使用 MsDataset.load 加载了 lowres_anime 数据集,并指定子集名称为 default,数据集分割为 train,并设置缓存目录为 /mnt/workspace/kolors/data

数据处理

这部分代码处理了数据集中的图片和对应的文本描述:

  1. 创建了两个目录用于存放处理后的数据。

  2. 遍历数据集中的每个样本,将图像转换为 RGB 模式并保存到文件系统中,同时构造元数据并写入 JSONL 文件。

  3. 定义了一个配置字符串,该配置用于 data-juicer 处理数据集,包括过滤规则和输出路径等。

  4. 将配置写入一个 YAML 文件。

  5. 运行 dj-process 命令来处理数据集。

数据集后处理

这部分对经过 data-juicer 处理的数据进行了进一步的整理:

  1. 读取处理后的结果文件 result.jsonl,提取文本和图片路径信息。

  2. 使用 pandas 创建 DataFrame 并将其保存为 CSV 文件。

CLIP 模型使用

接下来是使用 CLIP 模型来计算图像和文本之间的相似度:

  1. 加载了预训练的 CLIP 模型及其处理器。

  2. 加载了图像数据,并使用 CLIP 处理器进行预处理。

  3. 使用 CLIP 模型计算了图像和文本之间的相似度得分。

自定义数据集类

这部分定义了一个自定义的数据集类,用于 PyTorch DataLoader:

  1. 定义了 CustomDataset 类,它继承自 torch.utils.data.Dataset

  2. 实现了数据集的初始化、获取长度和获取项的方法。

  3. 使用 CustomDataset 创建了一个数据集实例,并使用 DataLoader 来加载数据。

  4. 对于数据集中的每个批次,使用 CLIP 模型计算图像和文本之间的相似度得分。

图像生成

最后,这部分使用 StableDiffusionPipeline 来根据不同的提示生成图像:

  1. 加载了预训练的 Stable Diffusion 模型。

  2. 设置了随机种子确保生成图像的一致性。

  3. 根据多个提示生成了图像,并保存到了文件系统。

最终图像组合

这部分将生成的图像合并成一个大的图像:

  1. 将生成的图像加载为 NumPy 数组。

  2. 按照特定的布局将这些图像拼接在一起。

  3. 将最终的 NumPy 数组转换为 PIL 图像对象,并调整大小。

实战--基于话剧的连环画制作

提示词

提示词准备

提示词整理

图片编号场景描述正向提示词反向提示词
图片1

女主正在上课

古风,水墨画,一个黑色长发少女,身穿淡青色长袍,坐在教室里,手握毛笔,专注地聆听老师讲解,上半身。

丑陋,变形,嘈杂,模糊,低对比度

图片2

开始睡着了

古风,水墨画,一个黑色长发少女,身穿淡青色长袍,头枕手臂,靠在书桌上,渐渐入睡,上半身。

图片3

进入梦乡,梦到自己站在路旁

古风,水墨画,一个黑色长发少女,身穿淡青色长袍,站在幽静的林间小道旁,仰望天空,仿佛在期待着什么,全身。

图片4

王子骑马而来

古风,水墨画,一个黑色长发少女,身穿淡青色长袍,站在幽静的林间小道旁,远处一位英俊的青年骑着白马缓缓而来,全身。

图片5

两人相谈甚欢

古风,水墨画,一个黑色长发少女,身穿淡青色长袍,与一位英俊的青年,坐在石桌旁,彼此谈笑风生,上半身。

图片6

一起坐在马背上

古风,水墨画,一个黑色长发少女,身穿淡青色长袍,与一位英俊的青年,并肩坐在马背上,驰骋在田野之中,全身。

图片7

下课了,梦醒了

古风,水墨画,一个黑色长发少女,身穿淡青色长袍,从梦中醒来,坐在教室里,揉揉眼睛,上半身。

图片8

又回到了学习生活中

古风,水墨画,一个黑色长发少女,身穿淡青色长袍,坐在教室里,手握毛笔,低头认真书写,上半身。

修改提示词并运行

结果展示

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值