Datawhale X 魔搭 AI夏令营 - AIGC方向(task01笔记)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

赛题介绍

  1. 作者需在可图Kolors 模型的基础上训练LoRA 模型,生成无限风格,如水墨画风格、水彩风格、赛博朋克风格、日漫风格…的图片
  2. 基于LoRA模型生成 8 张图片组成连贯故事,故事内容可自定义;基于8图故事,评估LoRA风格的美感度及连贯性

一、基础知识

1.文生图的历史:
文生图(Text-to-Image Generation)是一种通过文本生成图像的技术,历史发展阶段如下:
1.1早期探索(20世纪60年代-20世纪90年代)
优势:图像生成技术主要依赖规则和模板匹配,通过预定义的规则将文本转换为简单的图形。
缺点:由于计算能力和算法的限制,生成的图像质量较低,应用场景也非常有限

1.2基于统计模型的方法(2000年-2010年)

优势:利用概率图模型统计语言模型来生成图像。
缺点:模型的复杂性和计算资源的限制,生成的图像仍然较为粗糙,不够逼真

1.3深度学习的崛起(2010年-2020年)
发展:卷积神经网络(CNN)和生成对抗网络(GAN)的发展,文生图技术取得了突破性进展。2014年,Goodfellow等人提出的GAN模型通过生成器和判别器的对抗训练,提升了图像生成的质量。随后,各类变种GAN模型被提出,如DCGAN、Pix2Pix等,使得文生图技术在生成逼真图像方面达到了前所未有的高度。

1.4大规模预训练模型(2020年-至今)
发展:大规模预训练模型如OpenAI的CLIP、DALL-E以及Stable Diffusion等的出现,标志着文生图技术进入了一个新的时代。
1)CLIP通过大规模的文本和图像配对数据训练,能够理解和生成高度一致的文本和图像;
2)DALL-E和Stable Diffusion进一步提升了生成图像的创意和细节表现能力,使得通过简单的文本描述生成高质量、复杂图像成为可能。
应用场景:艺术创作、广告设计与辅助医疗诊断。

二、实现步骤

1.基础知识:
1)提示词(重要)
一般写法:主体描述,细节描述,修饰词,艺术风格,艺术家
【例】
【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
2)Lora
Stable Diffusion中的Lora(LoRA)模型是一种轻量级的微调方法,它代表了“Low-Rank Adaptation”,即低秩适应。Lora不是指单一的具体模型,而是指一类通过特定微调技术应用于基础模型的扩展应用。在Stable Diffusion这一文本到图像合成模型的框架下,Lora被用来对预训练好的大模型进行针对性优化,以实现对特定主题、风格或任务的精细化控制。

1.克隆存储库:

复制以下代码,下载baseline文件

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

2. 安装环境,然后重启kernel

Data-Juicer:数据处理和转换工具,旨在简化数据的提取、转换和加载过程
DiffSynth-Studio:高效微调训练大模型工具

#下载数据集
from modelscope.msdatasets import MsDataset

ds = MsDataset.load(
    'AI-ModelScope/lowres_anime',
    subset_name='default',
    split='train',
    cache_dir="/mnt/workspace/kolors/data"
)

import json, os
from data_juicer.utils.mm_utils import SpecialTokens
from tqdm import tqdm

os.makedirs("./data/lora_dataset/train", exist_ok=True)
os.makedirs("./data/data-juicer/input", exist_ok=True)
with open("./data/data-juicer/input/metadata.jsonl", "w") as f:
    for data_id, data in enumerate(tqdm(ds)):
        image = data["image"].convert("RGB")
        image.save(f"/mnt/workspace/kolors/data/lora_dataset/train/{data_id}.jpg")
        metadata = {"text": "二次元", "image": [f"/mnt/workspace/kolors/data/lora_dataset/train/{data_id}.jpg"]}
        f.write(json.dumps(metadata))
        f.write("\n")

3. 调整prompt

设置你想要的图片风格,依次修改8张图片的描述。
正向描述词:你想要生成的图片应该包含的内容
反向提示词:你不希望生成的图片的内容

torch.manual_seed(0)
image = pipe(
    prompt="二次元,一个紫色短发小女孩,在家中沙发上坐着,双手托着腮,很无聊,全身,粉色连衣裙",
    negative_prompt="丑陋、变形、嘈杂、模糊、低对比度",
    cfg_scale=4,
    num_inference_steps=50, height=1024, width=1024,
)
image.save("1.jpg")

总结

这是我第一次写笔记,写的不好,多多见谅。希望大家一起学习!

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值