AIGC方向 第四期 task02 笔记
背景导入
现如今AI生图则是其中最早被大众所熟知并广泛被认可的AIGC领域,但其迅猛的发展也对现实生活产生了负面的影响。
各种离奇搞怪的图片层出不穷,甚至还能传递虚假信息,虚假新闻,造成民众恐慌等负面影响。
有一项特别需要注意的技术叫做Deepfake技术,它是由人工智能技术生成的一种伪造媒体,看起来十分真实,但实际上是虚拟的,由计算机生成的,我们在日常生活中要学会辨别这项技术,以免上当受骗
Deepfake(深度伪造)
被称作“生成式对抗网路”(GAN)的机器学习模型将图片或视频合并并叠加到源图片或视频,借助神经网络技术进行大样本学习,将个人的声音,面部表情及身体动作拼接合成虚假内容的人工智能技术。
其最常见方式是AI换脸技术,此外还包括语音模拟,人脸合成,视频生成等。
通义千问
分析代码逻辑框架
下面是AI的回答
这段代码可以分为几个主要的工作流程部分:
1. 安装和配置依赖
- 安装Python包:
simple-aesthetics-predictor
、data-juicer
、peft
、lightning
、pandas
、torchvision
。- 卸载并重新安装
pytorch-lightning
。 - 安装
DiffSynth-Studio
。
2. 数据集准备与处理
- 加载数据集:
- 使用
MsDataset
从AI-ModelScope/lowres_anime
加载训练数据集。
- 使用
- 创建图像文件和元数据文件:
- 将数据集中的图像转换为RGB模式,并保存到指定目录。
- 创建包含图像路径和文本标签的元数据文件
metadata.jsonl
。
- 数据过滤与处理:
- 配置
data-juicer
来过滤不符合要求的数据(例如宽度和高度小于1024像素的图像,或宽高比不在0.5到2之间的图像)。 - 使用
dj-process
命令行工具执行数据过滤。
- 配置
3. 构建DataFrame并进行CLIP模型评估
- 读取处理后的数据:
- 从经过
data-juicer
处理的输出文件result.jsonl
中读取数据,并构建Pandas DataFrame。
- 从经过
- 使用CLIP模型计算相似度:
- 加载预训练的CLIP模型和处理器。
- 对DataFrame中的图像和文本使用CLIP模型计算相似度得分。
- 创建自定义数据集类:
- 定义一个
CustomDataset
类,用于构建PyTorch数据集,便于后续处理。
- 定义一个
4. 使用Stable Diffusion生成图像
- 加载Stable Diffusion模型:
- 使用
StableDiffusionPipeline
加载预训练模型。
- 使用
- 生成图像:
- 根据不同的提示(prompt)和负面提示(negative prompt),使用Stable Diffusion生成一系列图像,并保存到文件系统。
5. 合并生成的图像
- 合并图像:
- 读取之前生成的单个图像文件。
- 将这些图像拼接成一张大图,并调整大小。
以上是整个代码的主要工作流程。需要注意的是,这段代码包含了多个步骤,从环境设置到最终图像生成,每一步都紧密相关,共同完成了一个完整的任务。
逐行解释代码
第一部分:安装和卸载Python包
!pip install simple-aesthetics-predictor
: 安装simple-aesthetics-predictor
包。!pip install -v -e data-juicer
: 安装data-juicer
包,并使其可编辑(editable)。!pip uninstall pytorch-lightning -y
: 卸载pytorch-lightning
包。!pip install peft lightning pandas torchvision
: 安装peft
、lightning
、pandas
和torchvision
包。!pip install -e DiffSynth-Studio
: 安装DiffSynth-Studio
包,并使其可编辑。
第二部分:加载和处理数据集
from modelscope.msdatasets import MsDataset
: 导入ModelScope的数据集模块。ds = MsDataset.load('AI-ModelScope/lowres_anime', subset_name='default', split='train', cache_dir="/mnt/workspace/kolors/data")
: 加载名为lowres_anime
的数据集,选择默认子集和训练集,缓存目录设为/mnt/workspace/kolors/data
。
第三部分:创建图像文件和元数据文件
import json, os
: 导入json
和os
模块。from data_juicer.utils.mm_utils import SpecialTokens
: 导入SpecialTokens
类。from tqdm import tqdm
: 导入tqdm
模块用于进度条显示。os.makedirs("./data/lora_dataset/train", exist_ok=True)
: 创建目录./data/lora_dataset/train
,如果已存在则不报错。os.makedirs("./data/data-juicer/input", exist_ok=True)
: 创建目录./data/data-juicer/input
。with open("./data/data-juicer/input/metadata.jsonl", "w") as f
: 打开文件./data/data-juicer/input/metadata.jsonl
用于写入。- 循环遍历数据集
ds
,将每个图像转换为RGB模式,并保存到/mnt/workspace/kolors/data/lora_dataset/train/
。 - 将图像文件路径和对应的文本标签写入
metadata.jsonl
文件。
第四部分:配置和运行
data-juicer
data_juicer_config
: 定义了data-juicer
的配置字符串。with open("data/data-juicer/data_juicer_config.yaml", "w") as file
: 写入配置文件data/data-juicer/data_juicer_config.yaml
。!dj-process --config data/data-juicer/data_juicer_config.yaml
: 运行data-juicer
对数据进行处理。
第五部分:处理处理后的数据
import pandas as pd
: 导入pandas
模块。- 创建目录
./data/data-juicer/output/images
。 - 读取处理后的数据
./data/data-juicer/output/result.jsonl
,将文本和图像文件名分别存储到列表texts
和file_names
中。 - 创建一个DataFrame
df
,包括text
和file_name
两列,并将其保存为CSV文件./data/data-juicer/output/result.csv
。
第六部分:使用CLIP模型计算图像和文本相似度
from transformers import CLIPProcessor, CLIPModel
: 导入CLIPProcessor
和CLIPModel
。- 加载预训练的CLIP模型和处理器。
- 使用CLIP模型计算DataFrame中的图像和文本的相似度得分。
第七部分:创建自定义数据集类
class CustomDataset(Dataset)
: 定义一个继承自Dataset
的自定义数据集类。- 实现
__init__
,__len__
, 和__getitem__
方法。 - 创建
CustomDataset
实例,并使用DataLoader
进行批处理。
第八部分:使用Stable Diffusion生成图像
import torch
: 导入torch
模块。from diffusers import StableDiffusionPipeline
: 导入StableDiffusionPipeline
。- 加载Stable Diffusion模型。
- 使用不同的提示和负面提示生成图像,并保存到文件系统。
第九部分:合并生成的图像
import numpy as np
: 导入numpy
模块。- 读取之前生成的单个图像文件,并将其转换为NumPy数组。
- 拼接这些图像为一个大的图像,并调整其大小。
这段代码涵盖了数据集的加载、处理、使用CLIP模型计算相似度、使用Stable Diffusion生成图像以及最后将生成的图像合并成一张大图的过程。
生图提示词
我通过询问AI并不断打磨,得到了我自己的生图提示词
图片编号 | 场景描述 | 正向提示词 | 反向提示词 |
---|---|---|---|
图片1 | 男主在骑车 | 一个年轻的男子穿着休闲运动装,戴着棒球帽,骑着一辆现代自行车在城市公园的小道上,全身,背景是绿树成荫的公园小路。 | 丑陋,变形,嘈杂,模糊,低对比度 |
图片2 | 看到美丽的晚霞停了下来 | 一个年轻的男子站在一条安静的街道上,眺望着天边绚烂的晚霞,上半身,穿着T恤和牛仔裤,背景是城市的天际线与晚霞。 | 丑陋,变形,嘈杂,模糊,低对比度 |
图片3 | 拿出相机拍照 | 一个年轻的男子手持一台现代相机,正在准备拍摄晚霞,上半身,穿着T恤和牛仔裤,背景是晚霞映照下的街道。 | 丑陋,变形,嘈杂,模糊,低对比度 |
图片4 | 欣赏晚霞 | 一个年轻的男子坐在长椅上,注视着天边的晚霞,上半身,穿着T恤和牛仔裤,背景是公园里的长椅和晚霞。 | 丑陋,变形,嘈杂,模糊,低对比度 |
图片5 | 戴上耳机听歌 | 一个年轻的男子戴着耳机,闭眼聆听音乐,上半身,穿着T恤和牛仔裤,背景是公园的草地。 | 丑陋,变形,嘈杂,模糊,低对比度 |
图片6 | 天黑了,骑车回家 | 一个年轻的男子穿着休闲运动装,戴着棒球帽,骑着自行车在夜晚的城市街道上,全身,背景是灯火通明的城市街道。 | 丑陋,变形,嘈杂,模糊,低对比度 |
图片7 | 到家欣赏自己拍的照片 | 一个年轻的男子坐在书桌前,手里拿着一张照片,专注地看着,上半身,穿着T恤和牛仔裤,背景是书桌和挂墙的照片。 | 丑陋,变形,嘈杂,模糊,低对比度 |
图片8 | 把拍的照片发朋友圈 | 一个年轻的男子坐在窗边,手持手机准备发布照片,上半身,穿着T恤和牛仔裤,背景是房间内的一角和窗外的城市夜景。 | 丑陋,变形,嘈杂,模糊,低对比度 |
结果部分展示