当前位置:   article > 正文

Datawhale X 魔搭 精读代码,实战进阶 Task2_data-juicer读取pdf

data-juicer读取pdf

本篇学习目的:今天我们的任务是对baseline的代码有一个更加细致的理解,然后我们会学习如何借助AI来提升我们的自学习能力

Task1链接通道CSDN

在开始之前,做以下对AI生图的背景知识,了解局限和难点,并从技术视角拆解以达到预期生图效果。

1.AI生图前沿

AIGC(AI-Generated Content)是通过人工智能技术自动生成内容的生产方式,很早就有专家指出,AIGC将是未来人工智能的重点方向,也将改造相关行业和领域生产内容的方式。AI生图则是其中最早被大众所熟知并广泛被认可的AIGC领域。

补充1:提醒大家警惕Deepfake技术

Deepfake是一种使用人工智能技术生成的伪造媒体,特别是视频和音频,它们看起来或听起来非常真实,但实际上是由计算机生成的。这种技术通常涉及到深度学习算法,特别是生成对抗网络(GANs),它们能够学习真实数据特征,并生成新的、逼真的数据。谨防Deepfake滥用的危害!

所以定期关注AIGC对所有人都很重要!

  • 对于普通人来说,可以避免被常见的AI生图场景欺骗,偶尔也可以通过相关工具绘图

  • 对于创作者来说,通过AI生图的工具可以提效,快速制作自己所需要的内容

  • 对于技术人来说,了解AI生图的能力的玩法,可以更好地针对自己的业务进行开发和使用,甚至攻克难题开发更实用的工具

2.AI生图的历史(从工具视角出发)

(可参考《AI绘画的发展历史》AI绘画的发展历史(GAN、diffusion、VAE…)_模型_图像_训练

最早的AI生图可追溯到20世纪70年代,当时由艺术家哈罗德·科恩(Harold Cohen)发明AARON,可通过机械臂输出作画。

现代的AI生图模型大多基于深度神经网络基础上训练,最早可追溯到2012年吴恩达训练出的能生成“猫脸”的模型。

它使用卷积神经网络(CNN)训练,证明了深度学习模型能够学习到图像的复杂特征。

补充2:关于卷积神经网络

(Convolutional Neural Networks, CNN)是一类包含卷积计算且具有深度结构的前馈神经网络(Feedforward Neural Networks),是深度学习(deep learning)的代表算法之一——来源百度百科)

2015年,谷歌推出了“深梦”(Deep Dream)图像生成工具,类似一个高级滤镜,可以基于给定的图片生成梦幻版图片——

2021 年 1 月 OpenAI 推出DALL-E模型(一个深度学习算法模型,是GPT-3 语言处理模型的一个衍生版本),能直接从文本提示“按需创造”风格多样的图形设计

在当时,就已经被一些媒体评价为:“ 秒杀50%的设计行业打工人应该是没有问题的,而且是质量和速度双重意义上的“秒杀”

2022年8月AI生图真正走进了大众的视野——AI绘画作品《太空歌剧院》,该作品在美国科罗拉多州举办的新兴数字艺术家竞赛中获得了比赛“数字艺术/数字修饰照片”类别一等奖,引起了当时“艺术家们 Not Happy”的社会舆论,从此AI生图真正实现破圈!

表面上是对传统给设计&艺术行业从业者的挑战,其实也意味着对普通人的设计降本增效!

一般来说,AI生图模型属于多模态机器学习模型,通过海量的图库和文本描述的深度神经网络学习,最终的目标是可以根据输入的指示(不管是文本还是图片还是任何)生成符合语义的图片

补充3:对于所谓“深度神经网络学习”

即以(Deep Neural Network,DNN)为代表的深度学习的核心。深度学习是机器学习的一个特定领域,它利用人工神经网络模型进行学习和训练。深度学习模型由多个层次(称为神经网络的层)组成,每一层都会对输入数据进行变换和表示。这些网络层通过一系列的非线性转换将输入数据映射到输出结果它可以通过大量的标记数据进行训练,从而实现高度准确的预测和分类任务。

3.AI生图的难点和挑战

通俗来说,AI生图模型获得图片生成能力主要是通过 学习 图片描述 以及 图片特征,尝试将这两者进行一一对应,存储在自己的记忆里。

在我们需要的时候,通过输入的文字,复现出来对应的图片特征,从而生成了我们需要的图片。

然而,由于每个模型用于训练的数据是有限的且不一定相同的,它们能匹配的描述和特征也是有限的,所以在风格、具体事物上,不同的模型会有很大的生成差异,可能存在与现实不符的情况:

例如,AI常常在画手上翻车

同时产生了很多解决这个问题的相关技术,如:给图片里的人手打上标记,像把手掌、拇指、食指啥的,都给清楚地标出来

此外,还被人常常诟病的“AI味”

补充4:AI味

即AI生成的图片和实际生活场景/艺术家创作的绘画/摄影/三维作品 相比,存在强烈的违和感,或是细节处理,或是画面逻辑性存在问题,一言就能被看出是“AI出品”

即使现在大部分模型已经“去AI味”,我们仍需对此谨慎辨别,包括以下几个维度:

  • 观察图片的细节:仔细检查人物的面部特征,尤其是眼睛和嘴巴

  • 检查光线和阴影:分析图片中的光源是否一致阴影的方向是否与光源相符,是否存在不自然的光线或阴影

  • 分析像素:放大图片,寻找是否有模糊或像素化的部分。

  • 注意背景:检查背景中是否有不协调的元素,比如物体边缘是否平滑,背景中是否有不自然的重复模式。

而这些细节上的AI特性,也许就是我们在某些特定场景下需要解决的挑战。

4.AI前沿试探索

结合Task1Datawhale X 魔搭 AI夏令营 Task01 AIGC初尝试-CSDN博客)中学习活动、可图Kolors-LoRA风格故事挑战赛、魔搭社区的各类AIGC工具 开始,

此次在Task2中再借助这次学习活动所需要用到的Kolors(可图)模型(点击即可跳转魔搭模型介绍页)是快手开源的文本到图像生成模型,该模型具有对英语和汉语的深刻理解,并能够生成高质量、逼真的图像。

补充5:相关开源链接资源分享

代码开源链接: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

此外,可图是支持中文的文生图模型,文生图的prompt格式较为固定,魔搭社区还开源了专门的各种风格的可图优质咒语书(点击即可跳转),可以针对600+种不同风格,完善prompt,生成各种风格图片,可以在我们的学习当中使用——

例如:统一PROMPT_EXAMPLE (Value):一位可爱的女孩

情况一:

风格NAME_ZH (Value):电影歌星画风

PROMPT (Value)正向提示词:超高清、8K、超精细、{prompt} 的电影照片、美丽的灯光、出色的构图

NEGATIVE_PROMPT (Value)负向提示词:丑陋、变形、嘈杂、模糊、不适合工作场所

那么你将会得到image1;

情况二:

风格NAME_ZH (Value):抽象表现主义

PROMPT (Value)正向提示词:抽象表现主义艺术,{prompt},高对比度,简约,色彩鲜艳,鲜明,戏剧性,表现主义

NEGATIVE_PROMPT (Value)负向提示词:丑陋、变形、嘈杂、模糊、低对比度、现实主义、真实感

那么你将会得到image2;

情况三:

风格NAME_ZH (Value):可爱的3D角色

PROMPT (Value)正向提示词:可爱的 3D 角色,{prompt},3D 渲染,可爱的角色,3D 艺术

NEGATIVE_PROMPT (Value)负向提示词:丑陋、变形、嘈杂、模糊、低对比度、邋遢、凌乱、照片、逼真

那么你将会得到image3;

image1
image2
image3

通过魔搭社区持续探索AI生图前沿

对于海报设计类,我们希望在图片上加以文字说明。而我们Task1中介绍的 创意海报生成 工具(如下图所示),早已在代码中固定了相应的文字位置和对应的字体,才能进行相应的生成,且大概率是进行了两个步骤——

  • Step1: AI生成背景

  • Step2: 通过代码将对应的文字显示到对应位置,

最后渲染,合成图片。

 

事实上,我们可以通过魔搭社区上感兴趣的工具,尝试思考——

  • 可以用在哪些业务里?有哪些行业在使用?

  • 用的是哪个 AI 模型?(部分常用AI大模型

  • 是自己部署的AI模型,还是用的API?

补充6:区分应用程序编程接口&AI模型

Application Programming Interface,简称:API,是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。

API是一种技术接口,‌用于实现不同软件应用程序之间的交互和数据传输,‌可以看作“功能零件”,‌提供特定领域的能力

AI模型是一种机器学习模型,‌用于处理和分析数据以提供预测或决策支持。,能够处理更复杂的任务,‌具备更强的学习和推理能力,‌并在各种领域中取得更好的性能表现。

  • 使用到了哪些 AI 能力?

  • 如果要复现,需要做哪些额外的设置和开发?

补充7:举例如何复现一张AI生成图片

以下操作借助软件AUTOMATIC1111 stable diffusion WebUI,免费且开源。

(参考文章:https://zhuanlan.zhihu.com/p/693826427

方法1: 通过阅读PNG信息从图像中获取提示

如果AI图像是PNG格式,你可以尝试查看提示和其他设置信息是否写在了PNG元数据字段中。 首先,将图像保存到本地。 打开AUTOMATIC1111 WebUI。导航到PNG信息页面。将图像拖放到左侧的源画布上,在右边你会找到关于提示词的有用信息。你还可以选择将提示和设置发送到txt2img、img2img、inpainting或者Extras页面进行放大。

方法2:使用CLIP interrogator从图像中推测Prompt

有些信息并非由Stable diffusion这类AI技术生成。

面对这种情况,我们可以尝试使用CLIP interrogator作为替代方案。

CLIP interrogator是一种AI模型,它具备推测图像内容标题的能力。这个工具不仅适用于AI生成的图像,也能够应对各种类型的图像。通过这种方式,我们能够对图像内容进行更深入的理解和分析。

我们选择使用AUTOMATIC1111提供的内置CLIP interrogator功能。

你可以按照以下简单的步骤操作:

  1. 启动AUTOMATIC1111:首先,你需要打开AUTOMATIC1111的网站。
  2. 导航至img2img页面:在AUTOMATIC1111的界面中,找到并点击“img2img”这一选项。这是一个专门的页面,用于上传和处理图像。
  3. 上传图像到img2img画布:在这个页面上,你会找到一个用于上传图像的区域,通常被称为“画布”。点击上传按钮,选择你想要分析的图像文件,并将其上传到画布上。
  4. 上传之后在界面右边就可以找到两个interrogator工具了:

点击这两个按钮,就可以获得图像的描述信息了。

我们可以得到下面的信息:

a woman in a blue top and pink skirt standing on a hill near the ocean with a grassy area in the background,Ai Xuan,ocean,a statue,rococo,

此外,最方便的是,我们还可以直接点到空间文件,进行相关代码的查看甚至下载在 本地/云服务器 复现,以验证思考 & 学习相关的设计开发:

正式进入学习!

Part1:磨刀准备一一认识通义千问

我们计划使用通义千问大语言模型来告诉大家如何借助AI智能助手帮我们阅读代码。工欲善其事必先利其器,现在让我们请出今天的主角,通义千问(点击直达)。

同时奉上通义系列产品也有文生图的工具:通义万相,大家感兴趣可以自己体验。

通义千问是具有信息查询、语言理解、文本创作等多能力的AI助手,编程与技术支持能力是它的强项之一。你可以向其询问自我介绍:

Q:请做一个对于你自己编程与技术支持方面的自我介绍

A:当然可以。在编程和技术支持方面,我是一个高度专业化的助手,设计用来帮助解决各种技术问题、提供编程指导和进行知识分享。我的能力涵盖了多个领域,包括但不限于:

1. **编程语言支持**:
   - 我能提供多种编程语言的帮助,如 Python、Java、JavaScript、C++、C# 和 Ruby 等。
   - 我可以帮助调试代码、解释语法、提供优化建议以及教授新的编程概念。

2. **软件开发**:
   - 无论是 Web 开发、移动应用开发还是桌面应用程序开发,我都能提供相关的指导和支持。
   - 我可以协助选择合适的技术栈、框架和工具。

3. **系统架构与设计**:
   - 我能够帮助设计高效的系统架构,并提供关于数据库设计、API 构建等方面的建议。

4. **云计算与服务器管理**:
   - 对于云服务(如 AWS、Azure 和 Google Cloud)的使用,我可以提供详细的配置指南和最佳实践建议。
   - 在服务器管理和运维方面,我也能提供技术支持。

5. **网络安全**:
   - 我可以帮助识别安全漏洞,并推荐实施安全措施来保护系统和数据。

6. **数据分析与机器学习**:
   - 如果您需要处理大量数据或构建预测模型,我可以提供算法建议和代码示例。

7. **技术文档与教程编写**:
   - 我能够帮助撰写清晰的技术文档、用户手册和教程。

8. **故障排除与技术支持**:
   - 遇到技术难题时,我可以提供快速有效的解决方案,并指导您逐步解决问题。

9. **持续集成与持续部署 (CI/CD)**:
   - 在自动化测试、构建流程和部署策略方面,我能给出实用的建议。

作为您的技术支持伙伴,我会利用最新的技术和信息来确保您获得最准确、最有价值的帮助。无论您是初学者还是有经验的开发者,我都将竭诚为您服务。如果有任何具体的问题或者需要帮助的地方,请随时告诉我!

在AI时代,我们应用好AI 作为我们24h随时待命的个人专属助教学习新知!

Part2:精读baseline——从零入门AI生图

关于代码阅读和理解,我们今天尝试让AI助手从两个角度帮助我们:

  1. 分析代码的主题架构;

  2. 逐行代码解析。

以Task1为例,学习AI生图的baseline代码解析,主要流程如下:

2.1 分析代码的主体架

输入的Prompt分类

这段代码可以分为以下几个部分来进行初步分类和解释:

### 环境准备
1. **安装必要的Python包**:
  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

   - **作用**: 使用 `pip` 命令安装或卸载所需的Python包。
   - **说明**: 这些命令用于设置项目所需的运行环境。

### 数据加载
2. **加载数据集**:
  1. from modelscope.msdatasets import MsDataset
  2.    ds = MsDataset.load(
  3.        'AI-ModelScope/lowres_anime',
  4.        subset_name='default',
  5.        split='train',
  6.        cache_dir="/mnt/workspace/kolors/data"
  7.    )

   - **作用**: 从 ModelScope 加载名为 `lowres_anime` 的数据集。
   - **说明**: 这里加载了一个名为 `lowres_anime` 的数据集,用于后续的数据处理和模型训练。

### 数据预处理
3. **数据集预处理**:
  1. import json, os
  2.    from data_juicer.utils.mm_utils import SpecialTokens
  3.    from tqdm import tqdm
  4.    os.makedirs("./data/lora_dataset/train", exist_ok=True)
  5.    os.makedirs("./data/data-juicer/input", exist_ok=True)
  6.    with open("./data/data-juicer/input/metadata.jsonl", "w") as f:
  7.        for data_id, data in enumerate(tqdm(ds)):
  8.            image = data["image"].convert("RGB")
  9.            image.save(f"/mnt/workspace/kolors/data/lora_dataset/train/{data_id}.jpg")
  10.            metadata = {"text": "二次元", "image": [f"/mnt/workspace/kolors/data/lora_dataset/train/{data_id}.jpg"]}
  11.            f.write(json.dumps(metadata))
  12.            f.write("\n")、

   - **作用**: 将数据集中的图像保存为文件,并创建一个包含图像路径和标签的JSONL文件。
   - **说明**: 这段代码将数据集中的图像转换为 RGB 格式,并将它们保存到磁盘上,同时创建了一个包含每张图像路径和标签的 JSONL 文件。

4. **数据过滤和转换**:
  1. data_juicer_config = """
  2.    # global parameters
  3.    project_name: 'data-process'
  4.    dataset_path: './data/data-juicer/input/metadata.jsonl'  # path to your dataset directory or file
  5.    np: 4  # number of subprocess to process your dataset
  6.    text_keys: 'text'
  7.    image_key: 'image'
  8.    image_special_token: '<__dj__image>'
  9.    export_path: './data/data-juicer/output/result.jsonl'
  10.    # process schedule
  11.    # a list of several process operators with their arguments
  12.    process:
  13.        - image_shape_filter:
  14.            min_width: 1024
  15.            min_height: 1024
  16.            any_or_all: any
  17.        - image_aspect_ratio_filter:
  18.            min_ratio: 0.5
  19.            max_ratio: 2.0
  20.            any_or_all: any
  21.    """
  22.    with open("data/data-juicer/data_juicer_config.yaml", "w") as file:
  23.        file.write(data_juicer_config.strip())
  24.    !dj-process --config data/data-juicer/data_juicer_config.yaml

   - **作用**: 使用 `data-juicer` 工具对数据进行过滤和转换。
   - **说明**: 这里定义了一个 YAML 配置文件,用于指定数据处理的规则,比如过滤掉不符合尺寸要求的图像。然后使用 `dj-process` 命令行工具按照配置文件进行数据处理。

5. **结果处理**:
  1. import pandas as pd
  2.    import os, json
  3.    from PIL import Image
  4.    from tqdm import tqdm
  5.    texts, file_names = [], []
  6.    os.makedirs("./data/data-juicer/output/images", exist_ok=True)
  7.    with open("./data/data-juicer/output/result.jsonl", "r") as f:
  8.        for line in tqdm(f):
  9.            metadata = json.loads(line)
  10.            texts.append(metadata["text"])
  11.            file_names.append(metadata["image"][0])
  12.    df = pd.DataFrame({"text": texts, "file_name": file_names})
  13.    df.to_csv("./data/data-juicer/output/result.csv", index=False)
  14.    df

   - **作用**: 将处理后的数据转换为 Pandas DataFrame,并保存为 CSV 文件。
   - **说明**: 这里读取处理后的 JSONL 文件,将其中的数据整理成 Pandas DataFrame,并保存为 CSV 文件。


### 特征提取
6. **特征提取**:
  1.  from transformers import CLIPProcessor, CLIPModel
  2.    import torch
  3.    model = CLIPModel.from_pretrained("openai/clip-vit-base-patch32")
  4.    processor = CLIPProcessor.from_pretrained("openai/clip-vit-base-patch32")
  5.    images = [Image.open(img_path) for img_path in df["file_name"]]
  6.    inputs = processor(text=df["text"].tolist(), images=images, return_tensors="pt", padding=True)
  7.    outputs = model(**inputs)
  8.    logits_per_image = outputs.logits_per_image  # this is the image-text similarity score
  9.    probs = logits_per_image.softmax(dim=1)  # we can take the softmax to get the probabilities
  10.    probs

   - **作用**: 使用 CLIP 模型计算图像和文本之间的相似度分数。
   - **说明**: 这里使用预训练的 CLIP 模型来计算图像和文本之间的相似度,并将结果存储为概率分布。

补充8:CLIP模型

CLIP(Contrastive Language-Image Pre-Training)模型是OpenAI在2021年初发布的用于匹配图像和文本的预训练神经网络模型。

通俗来讲,即通过对比学习,在图像与文本之间建立关联性、度量相似性,以实现二者之间转化

### 数据集构建
7. **构建 PyTorch 数据集**:
  1.    from torch.utils.data import Dataset, DataLoader
  2.    class CustomDataset(Dataset):
  3.        def __init__(self, df, processor):
  4.            self.texts = df["text"].tolist()
  5.            self.images = [Image.open(img_path) for img_path in df["file_name"]]
  6.            self.processor = processor
  7.        def __len__(self):
  8.            return len(self.texts)
  9.        def __getitem__(self, idx):
  10.            inputs = self.processor(text=self.texts[idx], images=self.images[idx], return_tensors="pt", padding=True)
  11.            return inputs
  12.    dataset = CustomDataset(df, processor)
  13.    dataloader = DataLoader(dataset, batch_size=8)
  14.    for batch in dataloader:
  15.        outputs = model(**batch)
  16.        logits_per_image = outputs.logits_per_image
  17.        probs = logits_per_image.softmax(dim=1)
  18.        print(probs)

- **作用**: 创建一个自定义的 PyTorch 数据集,并使用 DataLoader 进行批处理。
   - **说明**: 这里定义了一个自定义的数据集类 `CustomDataset`,它继承自 PyTorch 的 `Dataset` 类。然后创建了一个 DataLoader 对象用于批处理数据,并使用 CLIP 模型计算每个批次的相似度。

### 图像生成
8. **使用 Stable Diffusion 生成图像**:
  1.    import torch
  2.    from diffusers import StableDiffusionPipeline
  3.    torch.manual_seed(1)
  4.    pipe = StableDiffusionPipeline.from_pretrained("CompVis/stable-diffusion-v-1-4", torch_dtype=torch.float16)
  5.    pipe = pipe.to("cuda")

   - **作用**: 使用 Stable Diffusion 模型根据给定的提示生成一系列图像。
   - **说明**: 这里使用了 Stable Diffusion 模型来根据不同的提示生成图像,并将结果保存为文件。

9. **图像拼接**:
  1.    import numpy as np
  2.    from PIL import Image
  3.    images = [np.array(Image.open(f"{i}.jpg")) for i in range(1, 9)]
  4.    image = np.concatenate([
  5.        np.concatenate(images[0:2], axis=1),
  6.        np.concatenate(images[2:4], axis=1),
  7.        np.concatenate(images[4:6], axis=1),
  8.        np.concatenate(images[6:8], axis=1),
  9.    ], axis=0)
  10.    image = Image.fromarray(image).resize((1024, 2048))
  11.    image

   - **作用**: 将生成的图像拼接成一个大图。
   - **说明**: 这里将之前生成的单个图像拼接成一个更大的图像,并调整大小以适应展示。

总结

这段代码的主要目的是从一个数据集中加载图像数据,对其进行预处理、过滤、特征提取,并最终使用 Stable Diffusion 模型生成新的图像。代码涉及到了数据集管理、图像处理、特征提取和生成式模型的应用等多个方面。

2.2 逐行解释代码

输入问题与返回结果

例:

Q:你是一个优秀的python开发工程师,请帮我分析以下代码主体框架,分出细分结构并以中文回答:

  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

A:这是一个安装包&卸载包

1. 安装 simple-aesthetics-predictor:

!pip install simple-aesthetics-predictor

这条命令通过 pip 安装了一个名为 simple-aesthetics-predictor 的Python包。这个包可能用于美学预测或者其他相关用途。

2. 安装 data-juice:

!pip install -v -e data-juicer

这条命令同样使用 pip 来安装一个名为 data-juicer 的包。这里的 -v 标志表示详细模式,会显示更多的输出信息;而 -e 表示以可编辑模式安装,这意味着包会被安装为一个链接到源代码的符号链接,这样在不重新安装的情况下就可以直接修改源代码。

3. 安装 peft, lightning, pandas, torchvision:

!pip install peft lightning pandas torchvision

这条命令安装了四个Python包:peft (可能是某种深度学习框架的扩展)、lightning (很可能是 PyTorch Lightning,一个用于简化PyTorch使用的库)、pandas (一个非常流行的数据处理库) 和 torchvision (包含了许多常用的计算机视觉模型和数据集)。

4. 卸载 pytorch-lightnin:

!pip uninstall pytorch-lightning -y

这条命令卸载了 pytorch-lightning 包。-y 标志表示自动确认卸载操作,无需人工干预

5. 再次安装 lightning:

!pip install lightning

由于之前已经卸载了 pytorch-lightning,这里再次安装 lightning 可能是指安装一个同名的不同版本或者是另一个与之类似的库。

6. 安装 DiffSynth-Studio:

!pip install -e DiffSynth-Studio

这条命令安装了一个名为 DiffSynth-Studio 的包,同样采用了可编辑模式 (-e)。这可能是一个用于音频合成或处理的包。

通过以上逐条解析代码的方式可以帮助我们更好的透彻理解AI生成图像的代码原理实现,还可以借此追问AI,作为我们的24h专属陪跑私教! 

Part3:实战演练一一基于话剧的连环画制作

3.1数据准备

3.1提示词

参考原始8图故事情境如下:

Q:你是一个文生图专家,我们现在要做一个实战项目,就是要编排一个文生图话剧
话剧由8张场景图片生成
,你需要输出每张图片的生图提示词

具体的场景图片
1、女主正在上课
2、开始睡着了
3、进入梦乡,梦到自己站在路旁
4、王子骑马而来
5、两人相谈甚欢
6、一起坐在马背上
7、下课了,梦醒了
8、又回到了学习生活中

生图提示词要求
1、风格为古风
2、根据场景确定是使用全身还是上半身
3、人物描述
4、场景描述
5、做啥事情

例子:
古风,水墨画,一个黑色长发少女,坐在教室里,盯着黑板,深思,上半身,红色长裙

3.2 询问通义

 自己在通义的返回的基础上,多多调整,争取打磨出一个最佳的提示词

 

借助通义千问等AI工具,你甚至可以在以上基础对常用的古风二次元常用负向提示词提问帮助我们优化生成图品质!

Q:在以上正向提示词的基础上,你可以给我一些针对古风二次元场景的常用负向提示词进行对prompt的优化,使得生成图片品质更高?并用中文回答。

A:

当然可以。以下是上述英文负向提示词对应的中文翻译:

1. 避免现代元素:
   - “无现代元素,无手表,无智能手机,无汽车”
   - “避免现代服饰或配饰”

2. 保持画面清晰:
   - “无模糊,无失焦”
   - “无颗粒感纹理,无噪点”

3. 维持古风特色:
   - “无时代错乱物品,无未来科技”
   - “无现代发型或妆容”

4. 确保人物细节:
   - “手部和脚部绘制良好”
   - “无缺失的手指或脚趾”
   - “无多余的手臂或手指”

5. 保证场景真实感:
   - “无漂浮岛屿或不合物理规律的现象”
   - “光线和阴影自然”

6. 避免不和谐的颜色:
   - “无冲突颜色”
   - “色彩不过饱和或过脱色”

7. 保持画面整洁:
   - “背景不杂乱”
   - “无干扰画面的元素”

8. 确保画作风格一致:
   - “无混合艺术风格”
   - “与指定的艺术风格保持一致(例如,‘保持与工笔风格一致’)”

9. 保证人物比例正确:
   - “身体比例协调”
   - “面部特征比例恰当”

10. 避免不合适的背景:
    - “背景细节相关”
    - “背景中无无关物体”

结合这些中文负向提示词,我们可以优化您的正向提示词。

最后结合正负向提示词用自己的语言再进行优化得到如下图描述作为最终提示词! 

3.3 最后的话剧场景

8张情景故事图具体描述 (正负向提示词提问通义千问2.5

图片编号

场景描述

正向提示词

反向提示词

Image01

女主正在上课

古风,工笔画,一个黑色长发少女,身穿绿色汉服,坐在教室里,专注地看着书本,上半身,教室中摆放着古朴的木桌椅

现代元素,模糊,失焦,多余手臂或手指,混合风格
Image02

开始睡着了

古风,淡墨,一个黑色长发少女,身穿绿色汉服,头枕手臂,趴在桌上,渐渐入睡,上半身,教室背景略显模糊,阳光透过窗棂洒在桌上

现代元素,模糊,失焦,多余手臂或手指,混合风格

Image03

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

古风,写意,一个黑色长发少女,身穿青色轻纱长裙,站在青石小道旁,仰望天空,全身,远处有山峦起伏,云雾缭绕

现代元素,模糊,失焦,多余手臂或手指,混合风格
Image04

王子骑马而来

古风,写意,一位英俊的少年,身穿金色镶边的白袍,骑着一匹白马缓缓而来,全身,背景为竹林小道,云雾缭绕现代元素,模糊,失焦,多余手臂或手指,混合风格
Image05

两人相谈甚欢

古风,淡彩,一个黑色长发青衫少女与英俊白袍少年,身穿传统服饰,面对面站立交谈,上半身,身后是繁花似锦的桃林,春光明媚

现代元素,模糊,失焦,多余手臂或手指,混合风格
Image06

一起坐在马背上

古风,写意,青衫少女与白袍少年,青梅竹马,共同骑在马上,全身,背景是黄昏时分山间小道,云雾缭绕现代元素,模糊,失焦,多余手臂或手指,混合风格
Image07

下课了,梦醒了

古风,淡墨,一个黑色长发少女,身穿绿色汉服,从梦中惊醒,坐直身体,上半身,教室里其他同学也在收拾书本现代元素,模糊,失焦,多余手臂或手指,混合风格
Image08

又回到了学习生活中

古风,淡彩,一个黑色长发少女,身穿青色长袍,埋头,专心致志地在书桌上书写,上半身,教室里摆放着古朴的木桌椅现代元素,模糊,失焦,多余手臂或手指,混合风格

3.4执行Task1的30分钟速通Baseline,改变提示词

再借助Task1中的baseline速通,尝试改变最后生成图片的关键词进行自己故事情景的再打造:

(相关链接通道:baseline.ipynb - JupyterLab (aliyun.com) 详情开源获取方式见Task1学习笔记

3.5 结果展示

3.6 测试美学与拟合度

有趣的是,我们可以把生成图结果再反哺给通义千问进行描述以求情景还原的程度,由下可见拟合程度还是比较理想的:

Q:用中文简要扩充以上八张图片情景故事,要求文辞优美而精简,大概150~200字,具体的场景图片如下(对通义千问2.5发出提问)

A:

Part4:更多的选择一一浅尝scepter webui

4.1 浅尝功能

魔搭体验网址:https://www.modelscope.cn/studios/iic/scepter_studio

4.2 官方定义

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/1001172
推荐阅读
相关标签