赞
踩
对于task2里的这几句话本人还是十分赞成的
定期关注AI生图的最新能力情况都十分重要:
对于普通人来说,可以避免被常见的AI生图场景欺骗,偶尔也可以通过相关工具绘图
对于创作者来说,通过AI生图的工具可以提效,快速制作自己所需要的内容
对于技术人来说,了解AI生图的能力的玩法,可以更好地针对自己的业务进行开发和使用,甚至攻克难题开发更实用的工具
然后我们使用通义千问进行我们的代码解读
如何使用通义千问呢?
首先我们需要链接到通义千问
通义tongyi.ai_你的全能AI助手 (aliyun.com)https://tongyi.aliyun.com/qianwen/?sessionId=0823c3da49cc4cb08da81e2676df5c88连接到通义千问,然后就可以根据task2中在通义千问中如何进行代码解释的提问,如:
1.你是一个优秀的python开发工程师,现在我们需要你帮我们分析这个代码的主体框架,你需要把代码按照工作流分成几部分,用中文回答我的问题{代码段}
或者
2.你是一个优秀的python开发工程师,现在我们需要你帮我们逐行分析这个代码,用中文回答我的问题。{代码段}
如下就是根据通义千问进行的问答1
1. 环境准备与依赖安装
这一部分包括了使用 pip
命令来安装或卸载所需的Python包。这些命令通常在脚本的开始部分执行以确保所有必需的库都已安装。
主要操作:
simple-aesthetics-predictor
, data-juicer
, peft
, lightning
, pandas
, torchvision
和 DiffSynth-Studio
。pytorch-lightning
。2. 数据集加载与预处理
这部分代码从 ModelScope 中加载了一个名为 lowres_anime
的数据集,并将其转换为适用于后续处理的格式。
主要操作:
lowres_anime
数据集。3. 数据过滤与处理
这一部分使用 data-juicer
工具对数据进行进一步的处理,例如过滤掉不符合要求的图像(如尺寸过小或宽高比不合适)。
主要操作:
data-juicer
对数据集进行处理,输出经过筛选后的结果。4. 数据分析与特征提取
在这一步骤中,使用 CLIP 模型来计算文本和图像之间的相似度,并创建一个 PyTorch 数据集用于后续训练或其他处理。
主要操作:
CustomDataset
类来封装数据集,并使用 DataLoader
进行批处理。5. 图像生成
最后,利用 diffusers
库中的 StableDiffusionPipeline
生成一系列基于不同提示的图像。
主要操作:
StableDiffusionPipeline
。6. 图像拼接展示
最后一段代码是将之前生成的所有图像拼接在一起形成一个大图,并调整大小以便展示。
主要操作:
整个流程包括环境搭建、数据集加载与预处理、数据过滤与处理、数据分析与特征提取、图像生成以及最终的图像展示。
如下就是根据通义千问进行的问答2
1. 环境准备与依赖安装
- 1!pip install simple-aesthetics-predictor
- 2!pip install -v -e data-juicer
- 3!pip uninstall pytorch-lightning -y
- 4!pip install peft lightning pandas torchvision
- 5!pip install -e DiffSynth-Studio
simple-aesthetics-predictor
包。-e
) 安装 data-juicer
并显示详细信息 (-v
)。pytorch-lightning
。peft
(可能是指 peft
或者其他库的缩写), lightning
(可能是 pytorch-lightning
的最新版本), pandas
, 和 torchvision
。DiffSynth-Studio
。2. 数据集加载与预处理
- 1from modelscope.msdatasets import MsDataset
- 2
- 3ds = MsDataset.load(
- 4 'AI-ModelScope/lowres_anime',
- 5 subset_name='default',
- 6 split='train',
- 7 cache_dir="/mnt/workspace/kolors/data"
- 8)
MsDataset
类。lowres_anime
数据集,并指定子集名称为 default
,数据集切分为训练集,缓存目录为 /mnt/workspace/kolors/data
。- 1import json, os
- 2from data_juicer.utils.mm_utils import SpecialTokens
- 3from tqdm import tqdm
- 4
- 5os.makedirs("./data/lora_dataset/train", exist_ok=True)
- 6os.makedirs("./data/data-juicer/input", exist_ok=True)
- 7with open("./data/data-juicer/input/metadata.jsonl", "w") as f:
- 8 for data_id, data in enumerate(tqdm(ds)):
- 9 image = data["image"].convert("RGB")
- 10 image.save(f"/mnt/workspace/kolors/data/lora_dataset/train/{data_id}.jpg")
- 11 metadata = {"text": "二次元", "image": [f"/mnt/workspace/kolors/data/lora_dataset/train/{data_id}.jpg"]}
- 12 f.write(json.dumps(metadata))
- 13 f.write("\n")
json
, os
模块,SpecialTokens
类,和进度条库 tqdm
。3. 数据过滤与处理
- 1data_juicer_config = """
- 2# global parameters
- 3project_name: 'data-process'
- 4dataset_path: './data/data-juicer/input/metadata.jsonl' # path to your dataset directory or file
- 5np: 4 # number of subprocess to process your dataset
- 6
- 7text_keys: 'text'
- 8image_key: 'image'
- 9image_special_token: '<__dj__image>'
- 10
- 11export_path: './data/data-juicer/output/result.jsonl'
- 12
- 13# process schedule
- 14# a list of several process operators with their arguments
- 15process:
- 16 - image_shape_filter:
- 17 min_width: 1024
- 18 min_height: 1024
- 19 any_or_all: any
- 20 - image_aspect_ratio_filter:
- 21 min_ratio: 0.5
- 22 max_ratio: 2.0
- 23 any_or_all: any
- 24"""
- 25with open("data/data-juicer/data_juicer_config.yaml", "w") as file:
- 26 file.write(data_juicer_config.strip())
- 27
- 28!dj-process --config data/data-juicer/data_juicer_config.yaml

data-juicer
的命令行工具来处理数据。4. 数据分析与特征提取
- 1import pandas as pd
- 2import os, json
- 3from PIL import Image
- 4from tqdm import tqdm
- 5
- 6texts, file_names = [], []
- 7
- 8os.makedirs("./data/data-juicer/output/images", exist_ok=True)
- 9
- 10with open("./data/data-juicer/output/result.jsonl", "r") as f:
- 11 for line in tqdm(f):
- 12 metadata = json.loads(line)
- 13 texts.append(metadata["text"])
- 14 file_names.append(metadata["image"][0])
- 15
- 16df = pd.DataFrame({"text": texts, "file_name": file_names})
- 17df.to_csv("./data/data-juicer/output/result.csv", index=False)
- 18
- 19df

pandas
用于数据处理,再次导入 os
, json
和 tqdm
。- 1from transformers import CLIPProcessor, CLIPModel
- 2import torch
- 3
- 4model = CLIPModel.from_pretrained("openai/clip-vit-base-patch32")
- 5processor = CLIPProcessor.from_pretrained("openai/clip-vit-base-patch32")
- 6
- 7images = [Image.open(img_path) for img_path in df["file_name"]]
- 8inputs = processor(text=df["text"].tolist(), images=images, return_tensors="pt", padding=True)
- 9
- 10outputs = model(**inputs)
- 11logits_per_image = outputs.logits_per_image # this is the image-text similarity score
- 12probs = logits_per_image.softmax(dim=1) # we can take the softmax to get the probabilities
- 13
- 14probs
CLIPProcessor
和 CLIPModel
用于文本-图像匹配任务。5. 创建 PyTorch 数据集
- 1from torch.utils.data import Dataset, DataLoader
- 2
- 3class CustomDataset(Dataset):
- 4 def __init__(self, df, processor):
- 5 self.texts = df["text"].tolist()
- 6 self.images = [Image.open(img_path) for img_path in df["file_name"]]
- 7 self.processor = processor
- 8
- 9 def __len__(self):
- 10 return len(self.texts)
- 11
- 12 def __getitem__(self, idx):
- 13 inputs = self.processor(text=self.texts[idx], images=self.images[idx], return_tensors="pt", padding=True)
- 14 return inputs
- 15
- 16dataset = CustomDataset(df, processor)
- 17dataloader = DataLoader(dataset, batch_size=8)
- 18
- 19for batch in dataloader:
- 20 outputs = model(**batch)
- 21 logits_per_image = outputs.logits_per_image
- 22 probs = logits_per_image.softmax(dim=1)
- 23 print(probs)

CustomDataset
,继承自 torch.utils.data.Dataset
。__init__
, __len__
, 和 __getitem__
方法。6. 图像生成
- 1import torch
- 2from diffusers import StableDiffusionPipeline
- 3
- 4torch.manual_seed(1)
- 5pipe = StableDiffusionPipeline.from_pretrained("CompVis/stable-diffusion-v-1-4", torch_dtype=torch.float16)
- 6pipe = pipe.to("cuda")
- 7
- 8prompt = "二次元,一个紫色长发小女孩穿着粉色吊带漏肩连衣裙,在练习室练习唱歌,手持话筒"
- 9negative_prompt = "丑陋、变形、嘈杂、模糊、低对比度"
- 10guidance_scale = 4
- 11num_inference_steps = 50
- 12
- 13image = pipe(
- 14 prompt=prompt,
- 15 negative_prompt=negative_prompt,
- 16 guidance_scale=guidance_scale,
- 17 num_inference_steps=num_inference_steps,
- 18 height=1024,
- 19 width=1024,
- 20).images[0]
- 21
- 22image.save("example_image.png")
- 23image

torch
和 StableDiffusionPipeline
。接下来的部分重复了图像生成的过程,但每次使用不同的提示。
7. 图像拼接展示
- 1import numpy as np
- 2from PIL import Image
- 3
- 4images = [np.array(Image.open(f"{i}.jpg")) for i in range(1, 9)]
- 5image = np.concatenate([
- 6 np.concatenate(images[0:2], axis=1),
- 7 np.concatenate(images[2:4], axis=1),
- 8 np.concatenate(images[4:6], axis=1),
- 9 np.concatenate(images[6:8], axis=1),
- 10], axis=0)
- 11image = Image.fromarray(image).resize((1024, 2048))
- 12image
numpy
和 PIL.Image
。场景1:女主正在上课
场景2:开始睡着了
场景3:进入梦乡,梦到自己站在路旁
场景4:王子骑马而来
场景5:两人相谈甚欢
场景6:一起坐在马背上
场景7:下课了,梦醒了
场景8:又回到了学习生活中
从图片可以看出第一幅图和第八幅图的服饰没太大区别,但第二幅图与第七幅图的区别相差较大。
下面是对代码的详细解释:
安装所需的Python库:
!pip install simple-aesthetics-predictor
:安装simple-aesthetics-predictor库,用于预测图像的审美特征。!pip install -v -e data-juicer
:安装data-juicer库,用于处理和转换数据集。!pip uninstall pytorch-lightning -y
:卸载pytorch-lightning库。!pip install peft lightning pandas torchvision
:安装peft、lightning、pandas和torchvision库,这些库在后续的处理中会用到。!pip install -e DiffSynth-Studio
:安装DiffSynth-Studio库,这是一个用于生成动漫风格图片的工具。从ModelScope下载数据集:
MsDataset.load()
方法从ModelScope下载名为"AI-ModelScope/lowres_anime"的数据集。准备数据:
配置data-juicer:
使用data-juicer处理数据:
!dj-process --config data/data-juicer/data_juicer_config.yaml
命令,根据配置文件处理数据。读取处理后的数据:
使用CLIP模型计算相似度得分:
自定义数据集类:
创建数据加载器:
使用Diffusion Studio生成图片:
整合生成的图片:
由此看得出星火提示词的描述词较少导致了图片之间的区别还是挺大的,提示词还是需要进行详细的描述
古风,水墨画,一个黑色长发少女,坐在教室里的第一排,专心听讲,手中拿着笔记录着老师的讲解,上半身,穿着一件蓝色的学生装,背景是一片模糊的黑板和粉笔字。
古风,水墨画,一个黑色长发少女,在教室的座位上开始打瞌睡,头微微下垂,全身,穿着蓝色的学生装,周围是同学们忙碌的身影和散落的书籍。
古风,水墨画,一个黑色长发少女,站在一条蜿蜒的古道旁,全身,穿着一袭飘逸的梦幻般的长裙,周围是青山绿水和飞鸟掠过的景象。
古风,水墨画,一位英俊的青年骑马而来,马匹健壮,全身,青年身着华丽的古装,头戴玉冠,手持马鞭,背景是落日余晖下的古城轮廓。
古风,水墨画,两人面对面站立,相谈甚欢,全身,青年穿着华丽的古装,腰间佩剑,少女穿着梦幻般的长裙,手中捧着一本书,背景是一片花海和远处的亭台楼阁。
古风,水墨画,两人一起坐在马背上,全身,青年身着华丽的古装,少女穿着梦幻般的长裙,他们手牵手,马儿悠闲地行走在一条小径上,周围是翠绿的竹林和流水潺潺。
古风,水墨画,一个黑色长发少女,坐在教室的座位上,梦醒了,上半身,蓝色学生装,她揉了揉眼睛,四周是同学们依旧埋头苦读的场景。
古风,水墨画,一个黑色长发少女,坐在教室里,回归学习生活,上半身,穿着蓝色的学生装,她认真地翻阅着书籍,旁边是一杯冒着热气的茶和窗外飘进的几片落叶。
修改后发现效果还行,就是对于第六张图的青年的脸的处理并不好。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。