Datawhale AI夏令营第四期魔搭-AIGC文生图方向 task_01笔记

1.准备与介绍

点击下列标题可直达网站~~~

(0)准备

【1】开通阿里云PAI-DSW试用

开通PAI-DSW 试用 ,获得 5000算力时(有效期3个月)

【2】在魔搭社区进行授权

如果这一步授权失败,可跳过此步骤,继续往下进行

新用户需要先注册 & 绑定阿里云账号(阿里云账号需完成实名认证

(1)报名赛事

(2)在魔搭社区创建PAI实例

创建实例

若在上一步授权失败,可到阿里云控制台创建 & 打开实例

点击“启动”完成后,点击“打开”

若在魔搭无法授权 或 点击【打开】无法打开,可到阿里云控制台创建 & 打开实例

若之前试用的额度已经过期,可使用魔搭的免费Notebook实例

2.跑baseline

根据baseline步骤一步步进行:

(1)打开终端,下载baseline文件

粘贴命令到终端,回车运行添加

git lfs install
git clone https://www.modelscope.cn/datasets/maochase/kolors.git

(2)安装环境,手动重启kernel

安装 Data-JuicerDiffSynth-Studio

Data-Juicer:数据处理和转换工具,旨在简化数据的提取、转换和加载过程,使数据适合用于训练。

DiffSynth-Studio:高效微调训练大模型工具,它能帮助你在基础模型的基础上进行优化,使其能够满足你需要的各种风格的图片。

安装失败,请依次点击下方图片第一行的两个按钮重试;

安装完成后,点击kernel按键下的Restart kernel手动重启kernel,腾出内存空间

(3)下载数据集,数据处理,训练模型

下载数据集

数据处理

训练模型

       下载模型

       查看训练脚本的传入参数

开始训练

加载微调的模型并进行输出

from diffsynth import ModelManager, SDXLImagePipeline
from peft import LoraConfig, inject_adapter_in_model
import torch
 
 
def load_lora(model, lora_rank, lora_alpha, lora_path):
    lora_config = LoraConfig(
        r=lora_rank,
        lora_alpha=lora_alpha,
        init_lora_weights="gaussian",
        target_modules=["to_q", "to_k", "to_v", "to_out"],
    )
    model = inject_adapter_in_model(lora_config, model)
    state_dict = torch.load(lora_path, map_location="cpu")
    model.load_state_dict(state_dict, strict=False)
    return model
 
 
# Load models
model_manager = ModelManager(torch_dtype=torch.float16, device="cuda",
                             file_path_list=[
                                 "models/kolors/Kolors/text_encoder",
                                 "models/kolors/Kolors/unet/diffusion_pytorch_model.safetensors",
                                 "models/kolors/Kolors/vae/diffusion_pytorch_model.safetensors"
                             ])
pipe = SDXLImagePipeline.from_model_manager(model_manager)
 
# Load LoRA
pipe.unet = load_lora(
    pipe.unet,
    lora_rank=16, # This parameter should be consistent with that in your training script.
    lora_alpha=2.0, # lora_alpha can control the weight of LoRA.
    lora_path="models/lightning_logs/version_0/checkpoints/epoch=0-step=500.ckpt"
)

(4)调整prompt

可按需调整prompt,设置想要的图片风格

prompt(正向描述词):你想要生成的图片应该包含的内容

negative_prompt(反向提示词):你不希望生成的图片的内容

(5)结果

依次顺序运行剩余的代码块,点击代码框左上角执行按钮,最终获得8张图片(约需30min)

(6)美学评分

可将图片放入新建的images文件夹中,使用以下代码对图片进行美学评分

【注意:必须保证我们的美学分数高于6,作品才能被视为有效作品】

 
import torch, os
from PIL import Image
from transformers import CLIPProcessor
from aesthetics_predictor import AestheticsPredictorV2Linear
from modelscope import snapshot_download
 
 
model_id = snapshot_download('AI-ModelScope/aesthetics-predictor-v2-sac-logos-ava1-l14-linearMSE', cache_dir="models/")
predictor = AestheticsPredictorV2Linear.from_pretrained(model_id)
processor = CLIPProcessor.from_pretrained(model_id)
device = "cuda"
predictor = predictor.to(device)
 
 
def get_aesthetics_score(image):
    inputs = processor(images=image, return_tensors="pt")
    inputs = {k: v.to(device) for k, v in inputs.items()}
    with torch.no_grad():
        outputs = predictor(**inputs)
    prediction = outputs.logits
    return prediction.tolist()[0][0]
 
 
def evaluate(folder):
    scores = []
    for file_name in os.listdir(folder):
        if os.path.isfile(os.path.join(folder, file_name)):
            image = Image.open(os.path.join(folder, file_name))
            scores.append(get_aesthetics_score(image))
    if len(scores) == 0:
        return 0
    else:
        return sum(scores) / len(scores)
 
 
score = evaluate("./images")
print(score)

评分后结果如下

3.文生图

(1)文生图的历史

早期探索(20世纪60年代-20世纪90年代):

文生图的概念最早出现于计算机视觉和图像处理的早期研究中。

基于统计模型的方法(2000年代):

进入2000年代,随着统计模型和机器学习技术的发展,文生图技术开始得到更多关注。

深度学习的崛起(2010年代):

2010年代是文生图技术发展的一个重要转折点。随着深度学习,尤其是卷积神经网络(CNN)和生成对抗网络(GAN)的发展,文生图技术取得了突破性进展。

大规模预训练模型(2020年代):

进入2020年代,大规模预训练模型如OpenAI的CLIP、DALL-E以及Stable Diffusion等的出现,标志着文生图技术进入了一个新的时代。

(2)文生图基础知识介绍

文生图主要以SD系列基础模型为主,以及在其基础上微调的lora模型和人物基础模型等。

接下来,我们简单了解下提示词、lora、ComfyUI和参考图控制这些知识点。

提示词

提示词很重要,一般写法:主体描述,细节描述,修饰词,艺术风格,艺术家

例如:

promts】Beautiful and cute girl, smiling, 16 years old, denim jacket, gradient background, soft colors, soft lighting, cinematic edge lighting, light and dark contrast, anime, super detail, 8k

负向prompts】(lowres, low quality, worst quality:1.2), (text:1.2), deformed, black and white,disfigured, low contrast, cropped, missing fingers

 Lora

Stable Diffusion中的Lora(LoRA)模型是一种轻量级的微调方法,它代表了“Low-Rank Adaptation”,即低秩适应。Lora不是指单一的具体模型,而是指一类通过特定微调技术应用于基础模型的扩展应用。在Stable Diffusion这一文本到图像合成模型的框架下,Lora被用来对预训练好的大模型进行针对性优化,以实现对特定主题、风格或任务的精细化控制。

Lora 训练的本质在于找出当前训练集的最优解

Diffusion  Model

扩散模型是一类生成模型,主要用于生成图像、音频和其他数据类型。这些模型的基本思想是通过逐步向数据中加入噪声,然后再通过学习去除这些噪声,来生成数据。具体来说,扩散模型包含两个主要步骤:

  • 前向扩散过程(Forward Diffusion Process):逐步向数据中添加噪声,直到数据变成纯噪声。这个过程是一个固定的、非可逆的过程。

  • 反向生成过程(Reverse Generation Process):从纯噪声开始,逐步去除噪声,生成新的数据。这一步是通过训练网络来实现的,目标是让模型学会如何从噪声恢复到原始数据。

Diffusion  Model应用:

扩散模型广泛应用于生成图像、音频等数据,具有以下优点:

  • 高质量生成:通过逐步去除噪声,扩散模型能够生成非常高质量的图像。
  • 灵活性:可以用于生成多种类型的数据,如图像、音频、文本等。
  • 样本多样性:能够生成样本多样化,覆盖多种风格和内容。

Stable Diffusion

稳定扩散是一种具体的扩散模型,设计目的是生成高质量的图像。它是基于扩散模型的原理,但在生成图像时加入了一些技术改进,使其更稳定、更高效。Stable Diffusion 通常使用以下技术:

  • 噪声调度(Noise Scheduling):通过调整噪声的加入和去除方式,使得模型生成的图像质量更高且训练过程更稳定。

  • 条件生成(Conditional Generation):除了使用噪声,还可以输入条件信息(如文本描述),使得生成的图像能够更好地符合给定的描述或要求。

Stable Diffusion应用:

Stable Diffusion 是一种专注于图像生成的扩散模型,具有以下特点:

  • 高效生成:通过改进的扩散过程和优化技术,Stable Diffusion 能够高效生成高质量图像。
  • 条件控制:支持输入文本描述等条件,能够生成符合特定要求的图像。
  • 开放性:Stable Diffusion 模型和代码通常是开源的,使得研究人员和开发者能够更方便地使用和改进它。

扩散模型是一种用于生成数据的模型,通过逐步去噪来生成新样本。Stable Diffusion 是扩散模型的一种具体应用,主要用于高质量图像生成,并在效率和条件控制方面进行了优化。两者都在生成模型领域中扮演了重要角色,但 Stable Diffusion 在实际应用中由于其高效性和开放性,特别受到关注。

 4.作者心得:

虽然之前接触过AI相关的知识,但是task_01上手还是太慢,对原理过程仍存在不清晰的地方;

最后生成图片感觉AIGC好有趣~~希望经过这个夏令营我能走进AIGC的大门!

  • 20
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值