探索 AIGC 生图:原理、案例与代码示例

            💓 博客主页:倔强的石头的CSDN主页 

           📝Gitee主页:倔强的石头的gitee主页

            ⏩ 文章专栏:《AI大模型》

                                  期待您的关注

 

47f09392526c71b5885ec838a3ea7ffe.gif

目录

引言

一、AIGC 生图技术原理

(一)技术基础

1.深度学习:

2.生成式模型:

(二)主要模型

1.生成对抗网络(GAN):

2.扩散模型(Diffusion Model):

(三)工作原理

1.数据学习:

2.特征提取:

3.图像生成:

4.优化调整:

二、AIGC 生图代码示例

三、AIGC 生图应用案例


 

引言

在当今数字化浪潮汹涌澎湃的时代,人工智能生成内容(AIGC)领域正以令人瞩目的速度不断演进与拓展。

其中,AIGC 生图技术作为一颗璀璨的明星,正逐渐改变着我们对于图像创作与生成的传统认知。从艺术设计到商业广告,从影视特效到游戏开发,AIGC 生图技术都展现出了其独特的魅力与巨大的潜力。

 

本文将深入剖析 AIGC 生图的技术原理,通过详细的代码示例揭示其背后的技术奥秘,并展示一系列丰富多样的应用案例,带领读者全面领略 AIGC 生图技术所构建的奇妙视觉世界,探寻其如何在各个领域中掀起创新变革的浪潮,为技术爱好者、创作者以及相关从业者提供一份全面而深入的 AIGC 生图技术指南。

一、AIGC 生图技术原理

 

6d074d82847aed051a694ba46824f515.jpeg

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 生图代码示例

 

43967be235a51189fc6b19ea2217d8a2.png

 

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 生图应用案例

 

57c6c5faf30c0bb9846f1df25f325ee7.jpeg

 

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 升频控制等方法保持表情包的一致性。

 

 

评论 188
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

倔强的石头_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值