AIGC生图实战技巧分享

news2025/1/5 13:36:10

目录

引言

🍃安装与配置代码

🍃数据处理代码

🍃生图请求代码


引言

本文展示了 AIGC 生图相关的代码示例,包括安装与配置、数据处理以及生图请求等不同阶段的代码,清晰呈现了整个技术实现过程中代码层面的操作要点和逻辑

🍃安装与配置代码

在使用 AIGC 进行生图时,往往需要安装一些必要的库以及配置相关环境,以下是一些常见的 Python 代码示例及注释说明:


# 安装Data-Juicer库,用于处理数据集,比如数据的筛选、清洗等操作

!pip install -v -e data-juicer

# 安装DiffSynth-Studio库,可用于训练和生成图像等相关任务

!pip install -e DiffSynth-Studio

# 卸载pytorch-lightning,可能是为了避免版本兼容性问题,这里使用-y参数自动确认卸载

!pip uninstall pytorch-lightning -y

# 安装peft、lightning、pandas、torchvision这些库,分别用于模型训练、数据处理等不同方面

!pip install peft lightning pandas torchvision

上述代码中,pip 是 Python 中常用的包管理工具,通过它可以方便地安装、卸载各种库。比如 install 后面跟上库名就是安装相应的库,而 uninstall 则是卸载对应的库,-v -e 等参数可以根据具体需求调整安装的详细配置,像 -v 可以显示更详细的安装过程信息,-e 常用于以可编辑模式安装等情况。

在配置环境方面,例如你使用的是 StableDiffusion 模型,可能还需要配置相关的显卡环境(如果使用 GPU 加速),以下是简单示意(实际情况中可能要根据具体的操作系统、显卡型号等做更多调整):


import torch

# 检查是否可以使用GPU,如果有可用GPU则将后续运算放在GPU上执行(以cuda为例),这样可以加速生图过程

if torch.cuda.is_available():

device = torch.device("cuda")

else:

device = torch.device("cpu")

这段代码先是通过 torch.cuda.is_available() 函数来检测当前环境是否有可用的 GPU(这里以 cuda 作为 GPU 运算的相关配置示例,不同的 GPU 可能有不同的配置方式),如果有就将 device 设置为 cuda,后续的模型运算等操作就可以放在 GPU 上运行来提高速度;要是没有 GPU 可用,则会将 device 设置为 cpu,不过在 CPU 上运行可能会相对较慢,尤其是生成复杂、高分辨率的图像时。

🍃数据处理代码

下面为大家展示处理数据集相关的代码示例以及其逻辑解释:


# 从ModelScope仓库下载名为“lowres_anime”的数据集,并指定子集名称为default、分割为train,缓存目录设置为/mnt/workspace/kolors/data

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

# 创建用于保存图像和元数据的相关目录,如果目录已经存在则不会重复创建(exist_ok=True参数作用)

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

# 将数据集中的图像转换为RGB格式,这一步通常是为了后续处理的兼容性等考虑

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"]}

# 将元数据以json格式写入文件

f.write(json.dumps(metadata))

f.write("\n")

在上述代码中,首先通过 MsDataset.load 函数从特定仓库下载需要的数据集,这方便获取大量的图像数据用于后续的模型训练等操作。然后利用 os.makedirs 创建相应的目录来存放处理后的图像和元数据。在遍历数据集的过程中,将图像转换格式并保存,同时生成对应的元数据信息保存下来,这些元数据在后续的数据筛选以及模型训练中都能起到关键作用,例如模型可以根据元数据中的文本描述学习图像对应的特征等。

接着,还可能会有根据配置对数据进行筛选过滤的代码,示例如下:


# 配置Data-Juicer的相关参数,用于数据筛选过滤

data_juicer_config = """

# global parameters

project_name: 'data-process'

dataset_path: './data/data-juicer/input/metadata.jsonl'

np: 4

text_keys: 'text'

image_key: 'image'

image_special_token: '<__dj__image>'

export_path: './data/data-juicer/output/result.jsonl'

process:

- image_shape_filter:

min_width: 1024

min_height: 1024

any_or_all: any

- image_aspect_ratio_filter:

min_ratio: 0.5

max_ratio: 2.0

any_or_all: any

"""

# 将配置信息写入到对应的yaml文件中

with open("data/data-juicer/data_juicer_config.yaml","w") as file:

file.write(data_juicer_config.strip())

# 运行Data-Juicer进行数据筛选,按照配置文件中的规则进行

!dj-process --config data/data-juicer/data_juicer_config.yaml

这里的配置文件中定义了如 image_shape_filter(图像尺寸过滤规则,要求图像最小宽度和高度达到一定像素值)、image_aspect_ratio_filter(图像长宽比的过滤规则,限定长宽比的范围)等条件,然后通过 dj-process 命令结合配置文件对已有的数据集进行筛选,最终筛选通过的数据索引信息会保存在指定的 result.jsonl 文件中,后续就可以基于这些筛选后的数据进行进一步的操作,比如训练模型等。

🍃生图请求代码

以下是实际发起生图请求的代码示例以及相关参数意义和返回结果处理方式的说明。

以 StableDiffusion 模型为例:


import torch

from diffusers import StableDiffusionPipeline

# 加载预训练的StableDiffusion模型,这里从指定路径加载(示例路径,实际根据自己的模型保存位置调整)

pipe = StableDiffusionPipeline.from_pretrained("runwayml/stable-diffusion-v1-5")

# 将模型移动到GPU上运行(如果有可用GPU且配置正确),加速生图过程

pipe = pipe.to("cuda")

# 定义输入的提示词,也就是描述想要生成图像内容的文本,例如这里描述生成一幅海边日落的图像

prompt = "A beautiful sunset over the ocean"

# 调用模型的生成函数,传入提示词,生成图像,返回的images是一个包含生成图像的列表(这里通常只取第一个图像)

image = pipe(prompt).images[0]

# 保存生成的图像到本地文件,这里命名为sunset_image.png,可以根据需要修改文件名和保存路径

image.save("sunset_image.png")

在上述代码中:

  • prompt 参数的意义是给模型提供生成图像的引导信息,模型会根据这个文本描述尽力去生成符合要求的图像,文本描述越详细准确,生成的图像往往越符合预期,比如可以描述图像中的主体、场景、颜色、风格等元素。
  • pipe(prompt).images[0] 这部分是发起生图请求并获取生成的图像,pipe 就是之前加载好并配置好的模型对象,调用它并传入 prompt 就会触发模型根据提示词进行图像生成,返回的结果中 images 是一个列表,通常情况下我们取第一个元素也就是 images[0] 作为最终生成的图像。
  • 最后通过 image.save("sunset_image.png") 对生成的图像进行保存,方便后续查看和使用,如果需要对图像做进一步的处理(比如用图像编辑软件打开进行细节调整、格式转换等),就可以找到保存的这个文件进行操作。

不同的模型在生图请求代码上可能会有一些细节差异,但大致的流程都是先加载模型、配置好环境(如放到 GPU 上运行等),然后传入合适的提示词来生成图像,最后对生成的图像进行相应的处理和保存。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Mac iTerm2集成DeepSeek AI

1. 去deepseek官网申请api key&#xff0c;DeepSeek 2. 安装iTerm2 AI Plugin插件&#xff0c;https://iterm2.com/ai-plugin.html&#xff0c;插件解压后直接放到和iTerms相同的位置&#xff0c;默认就在/Applications 下 3. 配置iTerm2 4. 重启iTerm2,使用快捷键呼出AI对话…

akamai3.0反爬教程逆向分析9个视频汇总

目录 一、akamai2.0文章二、akamai3.0每月疑似改版点二、9个视频汇总如下 一、akamai2.0文章 文章1cookie反爬之akamai_2.0-上文章2cookie反爬之akamai_2.0-上文章3cookie反爬之akamai_2.0-上文章中akamai2.0对应调试html与js文件 二、akamai3.0每月疑似改版点 详细文字与2.…

解决chatgpt(mac app登陆)出现报错:获取您的 SSO 信息时出错

由于我们是app登陆的&#xff0c;不能直接修改网站的链接&#xff0c;将 URL 的域名部分从 auth.openai.com 变更为 auth0.openai.com&#xff0c;然后加载新的地址&#xff0c;这时候应该就可以正常登录或注册了。 所以我们使用邮箱先载入auth0的地址&#xff0c;再更改自己的…

基于Springboot + vue实现的高校办公室行政事务管理系统

&#x1f942;(❁◡❁)您的点赞&#x1f44d;➕评论&#x1f4dd;➕收藏⭐是作者创作的最大动力&#x1f91e; &#x1f496;&#x1f4d5;&#x1f389;&#x1f525; 支持我&#xff1a;点赞&#x1f44d;收藏⭐️留言&#x1f4dd;欢迎留言讨论 &#x1f525;&#x1f525;&…

UE5通过蓝图节点控制材质参数

通过蓝图节点控制材质的参数 蓝图节点 在材质上设置标量值 和 在材质上设置向量参数值 Set Scalar Parameter Value on Materials Set Vector Parameter Value on Materials 这两个蓝图节点都可以在蓝图中&#xff0c;控制材质的参数值和向量值

DeepSeek-VL2

《DeepSeek-VL2: Mixture-of-Experts Vision-Language Models for Advanced Multimodal Understanding》是 DeepSeek-AI 团队发布的关于视觉语言模型 DeepSeek-VL2 的论文&#xff0c;以下是对该论文的详细介绍&#xff1a; 研究背景与动机 多模态理解的重要性&#xff1a;在当…

【第二部分--Python之基础】03 容器类型的数据

Python内置的数据类型如序列&#xff08;列表、元组等&#xff09;、集合和字典等可以容纳多项数据&#xff0c;我们称它们为容器类型的数据。 序列 序列&#xff08;sequence&#xff09;是一种可迭代的、元素有序的容器类型的数据。 序列包括列表&#xff08;list&#xff…

大型概念模型:在句子表示空间中的语言建模

《Large Concept Models: Language Modeling in a Sentence Representation Space》这篇论文介绍了一种新的语言模型方法&#xff0c;它在句子表示空间中进行建模。该方法旨在改进传统语言模型的局限性&#xff0c;通过捕捉更高级别的语义信息来提高自然语言处理任务的表现。 模…

日期时间选择(设置禁用状态)

目录 1.element文档需要 2.禁用所有过去的时间 3.设置指定日期的禁用时间 <template><div class"block"><span class"demonstration">起始日期时刻为 12:00:00</span><el-date-pickerv-model"value1"type"dat…

Mac 安装Mysql启动Mysql以及数据库的常规操作

Mac 安装Mysql启动Mysql以及数据库的常规操作 一、mysql的安装 1、登录官方网站:dev.mysql.com/downloads/mysql/ 二、查看系统架构 uname -m 在MAC中&#xff1a; 如果输出结果是 x86_64&#xff0c;则表示你的系统是 x86-64 架构。 如果输出结果是 arm64&#xff0c;则表示…

2011-2020年各省粗离婚率数据

2011-2020年各省粗离婚率数据 1、时间&#xff1a;2011-2020年 2、来源&#xff1a;国家统计局 3、指标&#xff1a;地区、年份、粗离婚率 4、范围&#xff1a;31省 5、指标解释&#xff1a;粗离婚率指某地区当年离婚对数占该地区年平均人口的比重。计算公式为&#xff1a…

【Cocos TypeScript 零基础 2.1】

目录 cocos常识新建动画添加组件 cocos 下载就不讲了,多的很 cocos 界面设置中文 新建一个2D项目 SIKI_学院_点击跳转 常识 竖屏 宽720 高1280 如果背景图确定是竖屏也可以根据背景图片大小来确定项目宽高 鼠标功能 左键 选中 滚轮 放大缩小 右键 移动视角位置 场景 双击…

UE蓝图战利品掉落动画

战利品掉落动画&#xff0c;其实就是添加个冲量 add impulse 什么是冲量&#xff1f; 冲量 &#xff08;impulse&#xff09;是作用在物体上的力 在 时间上的累积效果

Transformer从零详细解读——DASOU讲AI

1. 从全局角度概括Transformer transformer的任务是什么&#xff1f; 进一步细化 进一步细化&#xff0c;注意&#xff1a;每个encoder结构相同&#xff0c;参数不同&#xff1b;decoder同理 原论文中的图如下&#xff1a; 2.Encoder 2.1 输入部分 &#xff08;1&#xff09…

(四)配置有线网口、SSH登陆、文件传输以及运行交叉编译程序测试

文章目录 配置有线网口原因自动分配不行第一步 设置前先停止网络接口第二步 手动分配ip第三步 使配置的网口ip永久生效第四步 测试一下网络是否通了 SSH登陆文件传输以及运行交叉编译程序测试第一种借助基于SSH的命令行工具SCP传输文件第二种借助基于MobaXterm 软件直接上传测试…

欧美短剧系统出海:小体量撬动大市场

近年来&#xff0c;出海短剧在欧美市场掀起了一阵热潮&#xff0c;成为了全球娱乐产业中一颗冉冉升起的新星。 欧美短剧凭啥爆火&#xff1f; 精准把握碎片化娱乐需求 现代欧美社会生活节奏飞快&#xff0c;人们的时间愈发碎片化。出海短剧每集约 3 分钟的时长&#xff0c;完…

折旧后将成本中心折旧费调整到订单中

背景&#xff1a;设备原作为通用设备&#xff0c;按成本中心折旧&#xff0c;在12月月结正常折旧后才明确为专用设备&#xff0c;需要按内部订单折旧。 问&#xff1a;折旧能不能冲销。 回复&#xff1a; 在SAP中&#xff0c;折旧凭证是无法直接冲销的。如果折旧计提有误&#…

前端CSS3学习

学习菜鸟教程 火狐-moz- 谷歌 Safari -webkit- 前面都加这个&#xff0c;可能才生效 边框 border: 1px solid #ddd 粗细 样式 样色 经常和border-radius 一块用 border-radius: 50px 20px 第一个左右 第二个右左 border-top-left-radius … box-shadow: 10px 5px 10px 0 #88…

【LeetCode Hot100 二分查找】搜索插入位置、搜索二维矩阵、搜索旋转排序数组、寻找两个正序数组的中位数

二分查找 搜索插入位置搜索二维矩阵在排序数组中查找元素的第一个和最后一个位置寻找旋转排序数组中的最小值搜索旋转排序数组寻找两个正序数组的中位数&#xff08;hard&#xff09; 搜索插入位置 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并…

nature reviews genetics | 需要更多的针对不同种族的癌症基因组图谱研究,促进精准治疗和维护治疗公平权益

–https://doi.org/10.1038/s41576-024-00796-w Genomic landscape of cancer in racially and ethnically diverse populations 研究团队和单位 Ulrike Peters–Public Health Sciences Division, Fred Hutchinson Cancer Center Claire E. Thomas–Public Health Scienc…