Datawhale X 魔搭 2024年AI夏令营第四期AIGC方向 Task01

news/2024/9/21 22:37:32/文章来源:https://www.cnblogs.com/kiroyi/p/18352839

从零入门AI生图原理&实践是 Datawhale 2024 年 AI 夏令营第四期的学习活动(AIGC”方向),基于魔搭社区“可图Kolors-LoRA风格故事挑战赛”开展的实践学习——

  • 适合想 入门并实践 AIGC文生图、工作流搭建、LoRA微调 的学习者参与

学习内容提要:从通过代码实现AI文生图逐渐进阶,教程偏重图像工作流、微调、图像优化等思路,最后会简单介绍AIGC应用方向、数字人技术(选学)


Datawhale学习手册置顶=>从零入门AI生图原理&实践

1. 赛题任务概述

参赛链接:可图Kolors-LoRA风格故事挑战赛
赛事目标:

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

赛事流程:

  • 初赛:报名后-2024年8月31日23:59
  • 决赛:2024年9月5日答辩展示,线上决出一二三等奖(评委主观评分)

2. task01-跑通baseline

2.1 比赛报名

点击参赛链接,同意协议后即可报名成功。
报名样例

2.2 创建阿里云PAI-DSW实例

每个新用户都有一个免费试用的机会=>阿里云免费试用链接
实例创建1
实例创建2
注意事项:

  1. 第③步务必选择第二个, 第一个的GPU的显存不够
  2. 如果创建后未找到实例,可能是现有的实例和新创建的实例不在同一地区,请点击新建实例上方的地区(图中为华东1(杭州))进行切换

2.3 baseline下载

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

创建终端
从git下载baseline

2.4 baseline部分代码解读

保存数据集中的图片及元数据

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")

我们将数据集保存为(text, image)的数据对并存储在jsonl文件中
JSONL文件(JSON Lines)是一种每行包含一个独立的 JSON 对象的文本文件格式。每行都是一个有效的 JSON 对象,使用换行符分隔
jsonl
其中text的中文"二次元"是用Unicode编码存储的

模型加载

# 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)

模型使用半精度浮点数(torch.float16),并指定了文本编码器、UNet 模型和 VAE 模型的权重文件

load_lora 函数

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
  • lora_rank: LoRA 中低秩矩阵的秩,决定了适配器的容量
  • lora_alpha: LoRA 的缩放因子,控制适配器的影响力
  • init_lora_weights:LoRA 适配器权重的初始化方法
  • target_modules:指定模型中的子模块注入 LoRA 适配器。通常是与注意力机制相关的层,如这里的to_q、to_k、to_v 和 to_out
  • inject_adapter_in_model:将 LoRA 适配器注入到模型中

2.5 prompt修改技巧

首先列出最希望图像中包含的核心元素(如风格,主要人物),把次要的细节或补充描述放在句子的后面,这样模型会先生成主元素,再填充细节。
以baseline中图二的prompt为例:
prompt例子

如果我们把主次交换后会出现什么情况?

图二 原始prompt
图二 修改prompt

修改prompt:二次元,日系动漫,演唱会的舞台上衣着华丽的歌星们在唱歌,演唱会的观众席,人山人海,一个紫色短发小女孩穿着粉色吊带漏肩连衣裙坐在演唱会的观众席

由于主体信息的后移,主体信息将次体信息当作了背景信息,最终产生了主次融合后的结果

2.6 生成的一些结果


对于单个人物,由于有详细的描述可以达到较好的结果。但是对于群像图来说,因为我提供的prompt有限,生成的较为粗糙。

3.相关知识学习推荐

关于文生图技术研究的发展

对于文生图的发展,我们不必从头开始了解所有技术的详细过程,但是大致知道技术是如何发展的有助于我们更高的理解模型。
在DALL·E 2(内含扩散模型介绍)【论文精读】中,会介绍从GAN,到VAE,VQVAE,再到现在普遍使用的扩散模型(Diffusion)的技术改进思想(视频从28:00开始),十分推荐观看!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/781272.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

搭建PostgreSQL高可用集群(基于Patroni+Etcd)

搭建PostgreSQL高可用集群(基于Patroni+Etcd) 1.主机环境准备节点名称 主机名 网卡 IP地址 OS 安装软件 角色作用PGSQL1 pgsql1 ens33 192.168.198.162 CentOS7 PostgreSQL、ETCD、Patroni 主数据库PGSQL2 pgsql2 ens33 192.168.198.163 CentOS7 PostgreSQL、ETCD、Patroni 备…

Pytorch入门:tensor张量的构建

tensor数据结构是pytorch的基础与核心,本文主要介绍三种常用的tensor张量的构建方式。 1.从已有其他数据转换为tensor数据 常用方法有如下两种:torch.tensor torch.Tensor上述两种方法有细微的差别,具体通过示例来进行展示运行结果为首先,torch.tensor会对转换前容器内元素的…

Centos7安装Java8

1.查看目前环境 rpm -qa|grep jdk原有系统安装有jdk,如果对于jdk有要求,我们就需要重新安装jdk 2.卸载原有jdk环境 rpm -e --nodeps 上面显示的东西这里,我们就需要一个一个去卸载 如果有感觉麻烦,可以使用如下命令 yum remove *openjdk* 3.重新检查java -versionrpm -qa|g…

VDI/VDE 2643 Part3 2008:10

VDI/VDE 2643 2008:10 第三部分[!NOTE] 原始PDF链接:https://www.doc88.com/p-50359701027029.htmlOptical 3D-measuring systems Multiple view systems based on area scanning Preliminary note The content of this guideline has been developed in strict accordance wi…

026.Vue3入门,父页面给子页面传递数据,在子页面不能修改,只能改自己的data内容

1、App.vue代码:<template><Father/> </template><script setup> import Father from ./view/Father.vue </script><style> </style>2、Father.vue代码:<template><h3>父页面</h3><Child :FatherMsg="m…

025.Vue3入门,父页面给子页面传递数据,校验Props给出默认值

1、App.vue代码:<template><Father/> </template><script setup> import Father from ./view/Father.vue </script><style> </style>2、Father.vue代码<template><h3>父页面</h3><Child :FMsg="msg"…

使用 Python 爬取豆瓣电影 Top250 多页数据

使用 Python 爬取豆瓣电影 Top250 多页数据 创建时间:2024-08-11 一、完整代码抓取单贞数据 中的评分 简介 评价人数 将上面的改为多页 https://movie.douban.com/top250?start=0import requests from lxml import etreeheader = {User-Agent: Mozilla/5.0 (Windows NT 1…

彼岸网壁纸抓取

彼岸网壁纸抓取 创建时间:2024-08-11 一、代码 1.1 代码 import os import random import timeimport requests from lxml import etreeurl = http://pic.netbian.com/ header = {User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gec…

【笔记】【THM】Malware Analysis(恶意软件分析)(还在学)

二进制安全入坟【笔记】【THM】Malware Analysis(恶意软件分析) 探索恶意软件的世界,分析恶意软件如何感染系统并造成破坏。 恶意软件分析就像猫捉老鼠的游戏。恶意软件的作者一直在设计新的技术来躲避恶意软件分析师的眼睛,而恶意软件分析师也一直在寻找识别和抵消这些技术…

一次性能优化,单台4核8G机器支撑5万QPS

这篇文章的主题是记录一次Python程序的性能优化,在优化的过程中遇到的问题,以及如何去解决的。为大家提供一个优化的思路,首先要声明的一点是,我的方式不是唯一的,大家在性能优化之路上遇到的问题都绝对不止一个解决方案。 如何优化 首先大家要明确的一点是,脱离需求谈优…

豆瓣短评榜单短评下载

豆瓣短评榜单短评下载 创建时间:2024-08-07 一、完整代码 import requests from lxml import etreedef get_html(main_url):header = {User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36 Edg/12…

阿里云ACK托管版初始化

阿里云ACK托管版配置图例阿里云1.30.1版本 集群配置在创建过程中注意几个选项付费类型 (按量, 包年包月) 版本 选择VPC 网络插件 节点交换机