💓 博客主页:倔强的石头的CSDN主页
📝Gitee主页:倔强的石头的gitee主页
⏩ 文章专栏:《AI大模型》
期待您的关注
目录
引言
在当今数字化浪潮汹涌澎湃的时代,人工智能生成内容(AIGC)领域正以令人瞩目的速度不断演进与拓展。
其中,AIGC 生图技术作为一颗璀璨的明星,正逐渐改变着我们对于图像创作与生成的传统认知。从艺术设计到商业广告,从影视特效到游戏开发,AIGC 生图技术都展现出了其独特的魅力与巨大的潜力。
本文将深入剖析 AIGC 生图的技术原理,通过详细的代码示例揭示其背后的技术奥秘,并展示一系列丰富多样的应用案例,带领读者全面领略 AIGC 生图技术所构建的奇妙视觉世界,探寻其如何在各个领域中掀起创新变革的浪潮,为技术爱好者、创作者以及相关从业者提供一份全面而深入的 AIGC 生图技术指南。
一、AIGC 生图技术原理
AIGC 生图主要基于深度学习和生成式模型,特别是生成对抗网络(GAN)和扩散模型(Diffusion Model)等先进技术。通过学习大量图像数据中的规律和模式,能够生成具有高度真实感和多样性的图像。
(一)技术基础
1.深度学习:
利用神经网络技术模拟人脑学习过程,在 AIGC 图像生成中,通过学习大量图像数据掌握生成图像所需的特征和规律。
深度学习是机器学习的一个重要分支,它采用神经网络结构来模拟人脑的学习方式。在 AIGC 图像生成领域,深度学习模型通过对海量的图像数据进行学习,逐步理解图像的各种特征,如颜色、纹理、形状等,以及更高层次的语义信息。这些模型能够从数据中自动提取特征,并利用这些特征来生成新的图像。
2.生成式模型:
根据输入数据生成新数据的模型,在 AIGC 图像生成中,捕捉训练数据中的分布信息,生成与真实图像相似的图像。
生成式模型是一类能够根据输入数据生成新数据的模型。在 AIGC 图像生成中,生成式模型的作用是捕捉训练数据中的分布信息,从而能够生成与真实图像相似的图像。这些模型可以接受各种类型的输入,如文本、噪声等,并通过学习数据的分布规律,生成具有特定特征和风格的图像。
(二)主要模型
1.生成对抗网络(GAN):
由生成网络和判别网络组成,两者在训练过程中相互对抗,不断优化,直至生成网络能生成足够真实的图像以欺骗判别网络。
生成对抗网络(GAN)是 AIGC 图像生成中一种重要的模型。它由生成网络(Generator)和判别网络(Discriminator)两部分组成。生成网络的任务是生成逼真的图像,而判别网络则负责判断输入的图像是真实的还是由生成网络生成的。在训练过程中,生成网络和判别网络相互对抗,不断优化自身的性能。生成网络试图生成更加真实的图像来欺骗判别网络,而判别网络则努力提高自己的辨别能力。通过这种对抗训练,生成网络逐渐能够生成足够真实的图像,以骗过判别网络。
2.扩散模型(Diffusion Model):
分为去噪和采样两个阶段,通过不断优化去噪过程,从噪声中生成高质量的图像。
扩散模型也是 AIGC 图像生成中的一种重要模型。它分为去噪和采样两个阶段。在去噪阶段,模型通过学习如何从噪声中去除干扰,逐步还原出图像的信息。在采样阶段,模型根据去噪后的结果生成高质量的图像。通过不断优化去噪过程,扩散模型能够从噪声中生成具有高度真实感和多样性的图像。
(三)工作原理
1.数据学习:
学习大量图像数据,为模型提供丰富的视觉信息。
在训练阶段,AIGC 图像生成模型会学习大量的图像数据。这些数据涵盖了各种风格、场景和对象的图像,为模型提供了丰富的视觉信息。通过对这些图像数据的学习,模型能够掌握不同图像的特征和规律,为后续的图像生成做好准备。
2.特征提取:
自动提取图像中的特征和规律。
通过深度学习技术,模型能够自动提取图像中的特征和规律。这些特征包括颜色、纹理、形状等低层次特征,以及更高级别的语义特征。低层次特征描述了图像的基本视觉属性,而语义特征则反映了图像的内容和含义。通过提取这些特征,模型能够更好地理解图像,并在生成图像时利用这些特征来创造出更加逼真和有意义的图像。
3.图像生成:
根据输入的数据生成新的图像,生成过程通常涉及随机性。
在生成阶段,模型会根据输入的数据生成新的图像。输入数据可以是文本描述、噪声等。生成过程通常涉及随机性,这是为了确保生成的图像具有多样性。通过引入随机性,模型可以在生成图像时产生不同的结果,从而满足用户对多样化图像的需求。
4.优化调整:
通过 GAN 或扩散模型的优化调整,生成的图像不断接近真实图像的质量,并进行合规检测。
生成的图像会通过 GAN 或扩散模型进行优化调整。在这个过程中,模型会不断地改进生成的图像,使其质量不断接近真实图像。同时,模型还会进行合规检测,确保生成的图像不包含违法和不良信息。合规检测是非常重要的一步,它可以保证生成的图像符合法律法规和道德规范,避免出现不良影响。
二、AIGC 生图代码示例
1.安装所需的库和工具,如 Data-Juicer、DiffSynth-Studio、peft、lightning、pandas、torchvision 等。
-
- 安装过程可以参考以下步骤:首先安装 simple-aesthetics-predictor;接着以开发模式安装 data-juicer;然后卸载 pytorch-lightning;再安装 peft、lightning、pandas 和 torchvision;最后以开发模式安装 DiffSynth-Studio。具体命令如下:
!pip install simple-aesthetics-predictor
!pip install -v -e data-juicer
!pip uninstall pytorch-lightning -y
!pip install peft lightning pandas torchvision
!pip install -e DiffSynth-Studio
2.从魔搭数据集中下载数据集,并进行数据筛选过滤。
-
- 从魔搭数据集中下载名为 “AI-ModelScope/lowres_anime” 的数据集,代码如下:
from modelscope.msdatasets import MsDataset
ds = MsDataset.load('AI-ModelScope/lowres_anime',subset_name='default',split='train',cache_dir="/mnt/workspace/kolors/data")
- 对下载的数据集进行预处理,将图像转换为 RGB 格式并保存,同时将每张图像的路径和对应的标签写入 metadata.jsonl 文件。然后定义配置文件,对数据集进行清洗,包括图像尺寸和宽高比的筛选。清洗后的数据处理包括读取结果文件,提取文本描述和图像路径,保存为 CSV 文件。代码如下:
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")
# 配置文件定义与数据清洗
data_juicer_config = """
# global parameters
project_name: 'data-process'
dataset_path: './data/data-juicer/input/metadata.jsonl' # path to your dataset directory or file
np:4 # number of subprocess to process your dataset
text_keys: 'text'
image_key: 'image'
image_special_token: '<__dj__image>'
export_path: './data/data-juicer/output/result.jsonl'
# process schedule
# a list of several process operators with their arguments
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
"""
with open("data/data-juicer/data_juicer_config.yaml", "w") as file:
file.write(data_juicer_config.strip())
!dj-process --config data/data-juicer/data_juicer_config.yaml
# 清洗后数据集处理
import pandas as pd
import os, json
from PIL import Image
from tqdm import tqdm
texts, file_names = [], []
os.makedirs("./data/data-juicer/output/images", exist_ok=True)
with open("./data/data-juicer/output/result.jsonl", "r") as f:
for line in tqdm(f):
metadata = json.loads(line)
texts.append(metadata["text"])
file_names.append(metadata["image"][0])
df = pd.DataFrame({"text": texts, "file_name": file_names})
df.to_csv("./data/data-juicer/output/result.csv", index=False)
3.下载可图模型,如 Kolors、SDXL-vae-fp16-fix。
-
- 下载模型代码如下:
from diffsynth import download_models
download_models(["Kolors", "SDXL-vae-fp16-fix"])
4.使用不同的工具和技术进行图像生成,如 Stable Diffusion、腾讯云的大模型图像创作引擎等,包括创建虚拟环境、搭建 torch 环境、使用特定的函数模块进行线稿生图等。
-
- 使用 Stable Diffusion 进行图像生成需要安装相关软件和依赖,如 Python、torch 等,并加载预训练模型。以下是一个简单的示例代码:
# 注册账号并开通服务
# 在使用大模型图像创作引擎服务前,需要先注册腾讯云账号。
# 注册并通过实名认证后,登录腾讯云大模型图像创作引擎控制台,阅读和同意服务条款,单击立即开通,即可获得大模型图像创作引擎的 API 接口调用权限。
# 新建/查看云 API 密钥
# 在控制台访问管理中,点击访问密钥菜单栏,进入 API 密钥管理页面,新建或查看密钥,保存 secretId 和 secretKey。
# 新建项目文件夹并安装依赖
# 进入项目目录,打开终端,输入以下命令安装依赖:
npm install tencentcloud-sdk-nodejs-aiart
# 新建云 API 函数模块 tencentCloudApi.js 文件
import tencentcloud from "tencentcloud-sdk-nodejs-aiart";
const AiartClient = tencentcloud.aiart.v20221229.Client;
const clientConfig = {
credential: {
secretId: "AKIDjIcgU1HI2VhcHxxxxxxxxxxxxxxxxxxxxx",
secretKey: "KOBhwykFagX8UaS5Sxxxxxxxxxxxxxxxx",
},
region: "ap-shanghai",
profile: {
httpProfile: {
endpoint: "aiart.tencentcloudapi.com",
},
},
};
const client = new AiartClient(clientConfig);
export async function sketchToImage(prompt, inputImage) {
const params = {
"Prompt": prompt,
"InputImage": inputImage,
"RspImgType": "url",
};
try {
const response = await client.SketchToImage(params);
if (!response.RequestId) {
throw new Error(`HTTP error!`);
}
return response;
} catch (error) {
console.error(`Error fetching`, error);
throw error;
}
}
# 新建保存 Url 图片功能函数 saveImageFromUrl.js
import https from 'https';
import fs from 'fs';
export async function saveImageFromUrl(url, outputFilePath) {
return new Promise((resolve, reject) => {
const file = fs.createWriteStream(outputFilePath);
https.get(url, (response) => {
if (response.statusCode!== 200) {
reject(new Error(`Failed to get image, status code: ${response.statusCode}`));
return;
}
response.pipe(file);
file.on('finish', () => {});
});
});
}
- 使用腾讯云的大模型图像创作引擎进行线稿生图,步骤如下:
# 注册账号并开通服务
# 在使用大模型图像创作引擎服务前,需要先注册腾讯云账号。
# 注册并通过实名认证后,登录腾讯云大模型图像创作引擎控制台,阅读和同意服务条款,单击立即开通,即可获得大模型图像创作引擎的 API 接口调用权限。
# 新建/查看云 API 密钥
# 在控制台访问管理中,点击访问密钥菜单栏,进入 API 密钥管理页面,新建或查看密钥,保存 secretId 和 secretKey。
# 新建项目文件夹并安装依赖
# 进入项目目录,打开终端,输入以下命令安装依赖:
npm install tencentcloud-sdk-nodejs-aiart
# 新建云 API 函数模块 tencentCloudApi.js 文件
import tencentcloud from "tencentcloud-sdk-nodejs-aiart";
const AiartClient = tencentcloud.aiart.v20221229.Client;
const clientConfig = {
credential: {
secretId: "AKIDjIcgU1HI2VhcHxxxxxxxxxxxxxxxxxxxxx",
secretKey: "KOBhwykFagX8UaS5Sxxxxxxxxxxxxxxxx",
},
region: "ap-shanghai",
profile: {
httpProfile: {
endpoint: "aiart.tencentcloudapi.com",
},
},
};
const client = new AiartClient(clientConfig);
export async function sketchToImage(prompt, inputImage) {
const params = {
"Prompt": prompt,
"InputImage": inputImage,
"RspImgType": "url",
};
try {
const response = await client.SketchToImage(params);
if (!response.RequestId) {
throw new Error(`HTTP error!`);
}
return response;
} catch (error) {
console.error(`Error fetching`, error);
throw error;
}
}
# 新建保存 Url 图片功能函数 saveImageFromUrl.js
import https from 'https';
import fs from 'fs';
export async function saveImageFromUrl(url, outputFilePath) {
return new Promise((resolve, reject) => {
const file = fs.createWriteStream(outputFilePath);
https.get(url, (response) => {
if (response.statusCode!== 200) {
reject(new Error(`Failed to get image, status code: ${response.statusCode}`));
return;
}
response.pipe(file);
file.on('finish', () => {});
});
});
}
三、AIGC 生图应用案例
1.设计提效:
缩短概念风格、设计初稿和设计终稿的反复沟通时间,提升效率 25 - 55%。
当未使用 Midjourney 和 Stable Diffusion 时,设计师在设计参考阶段需要花费大量时间找参考图,还需绘制设计草图,然后与业务确认风格和草图,接着进行设计建模和细化设计,最后确定设计定稿。而有了 AIGC 工具的辅助,如使用 Midjourney 生成设计参考图,可快速与业务确认设计风格,绘制线稿草图后,通过 Stable Diffusion 直接生成设计图,设计师再做细节优化,极大地缩短了整个设计流程的时间,提升了效率。
2.活动弹窗设计:
运用 ChatGPT 获取设计思路,通过 Stable Diffusion 生成更有质感和高级感的设计主体元素。
先运用 ChatGPT 获取弹窗的设计思路,从多角度切入设计,使设计方案更完善。通过 ChatGPT 分析后,提取关键词如黑金、高级感、精致、质感等,再具象延伸添加宝石、荣耀感、坚硬感和钻石等关键词,并转化为英文。将初稿中的钻石图放进 Stable Diffusion 图生图功能,输入关键词,重复幅度调到 5 以下,反复多批量产出后筛选出想要的结果,通过 Stable Diffusion 生成更有质感和高级感的设计主体元素,节省大量设计细节的时间。
3.勋章图标设计:
利用 Stable Diffusion 制作勋章图标,从简化版设计深入刻画精细版。
Midjourney 和 Stable Diffusion 可以制作勋章图标。勋章一般有简化版和精细版,用于不同尺寸的场景。以网易大神梦幻西游武神坛勋章为例,借助 Stable Diffusion,输出简化版本的设计,让 Stable Diffusion 深入刻画。从勋章自带荣誉感属性出发,得到宝石、金属质感、闪耀感和高级感等关键词,转化为英文后输入,得到设计图。然后用生成最满意的图继续下一轮刻画,以达到最贴合需求的出图效果。
4.IP 设计:
通过 Stable Diffusion 结合线稿和关键词生成 IP 形象,包括选择合适的模型和插件、设置 controlnet 面板等步骤。
在设计 IP 前期,确定 IP 的应用场景和角色动作。以网易大神 IP 霸哥为例,讲解如何用 Stable Diffusion 制作 IP 素材。首先绘制角色动作线稿,给角色设定动作如单手持玩具枪,眼神坚毅望向前方,注意草图线稿要干净连贯。然后选择并下载合适模型以及插件,结合 IP 形象特点,在 C 站选择相对应的模型,如大模型 MeinaMix,Lora 插件 blindbox。接着设置 controlnet 面板,在文生图界面找到 ControlNet 一栏,上传绘制好的线稿草稿,勾选启用,若线稿图片背景为白色,可勾选反色模式,并选择好预处理器和模型。最后输入关键词并设置参数,如描述霸哥形象特征的关键词,生成 IP 形象。
5.其他应用案例:
如模特宣传海报生成、表情包生成等,展示了 Midjourney 在不同领域的应用。
- 模特宣传海报生成:利用 Midjourney 生成模特宣传海报。首先通过 Midjourney 的图生文功能获取关键词灵感,生成模特素材,如 “Full body photo of a Chinese female model standing in front of a bright wall, Asian style, Product photography, Sophisticated and high-end, Panoramic view, 100mm lens, Super details of the highest quality, 8K --ar 9:16 --v 5.2”。然后生成服饰素材,用服装名称作为关键词,如 “a Plaid cardigan, White background, 8K --v 5.2 --no people”。接着把衣服素材抠图后叠到选好的模特图上,上传初步融合的模特图,通过垫图 + 关键词的方法批量生成模特图。最后挑选合适的模特图进行后期微调排版,完成海报。
- 表情包生成:使用 Midjourney 生成表情包。首先通过 Midjourney 的图生文功能获取关键词灵感,结合关键词描述的基本句式,如 “画面主体:企鹅卡通贴纸;画面修饰:企鹅的各种表情和动作,快乐的,生气的,悲伤的,失望的,吃惊的等;细节描述:白色背景,九宫格布局,插画设计,皮克斯风格;参数后缀:--niji 5”,生成一大批小企鹅。然后可以通过 Variations 升频控制等方法保持表情包的一致性。