亮网络解锁器,解锁网络数据的无限可能 了解详情
写点什么

BigDL 教程:使用 Stable Diffusion 从文本生成你自己的图像

  • 2023-04-16
    北京
  • 本文字数:3050 字

    阅读完需:约 10 分钟

BigDL 教程:使用 Stable Diffusion 从文本生成你自己的图像

本文最初发表于 Medium 博客,经原作者授权,InfoQ 翻译并分享。

 

导读:本文介绍了如何使用 Stable Diffusion 模型从文本生成图像。作者详细介绍了该模型的架构概述以及学习过程,并指出该模型需要大量计算,但可以使用英特尔提供的优化技术缩短运行时间。同时,文章还提供了文本到图像的实现步骤,并鼓励读者在 GitHub 上跟随实现。

 

如果说每种技术都有其季节,那么人工智能已经迎来了“夏天”。人工智能的一系列进步引领了该学科目前的繁荣,并带来了对未来的巨大期望。

 

计算机视觉就是一个典型例子。尽管对计算资源的需求很高,但在图像生成(Huang 等,2018)领域已经取得了巨大的进展。图像生成始于生成式对抗网络(Generative Adversarial Network,GAN)范式,然后逐步发展到如今的扩散模型。这种进化为数据科学家提供了易于训练、快速收敛并能可靠生成高质量图像的模型。

 

这种技术在人工智能内容生成(generative AI,AIGC)中发挥着重要作用,它能够生成各种数据,包括音频、代码、图像、文本、模拟、3D 对象、视频等等。它通过训练算法来基于以前的训练数据生成新的信息。AIGC 有许多用途包括文本生成(如 GPT,Bidirectional Encoder Representations from Transformer(BERT)或最近的 ChatGPT)、音频生成、文本到图像的创建(DALL-EStable Diffusion)等。


在本文中,我们将展示如何借助 BigDLBigDL Nano 中的优化)在 Intel 笔记本电脑上运行优化后的 Stable Diffusion 模型,从而实现文本到图像的生成。


使用 Stable Diffusion 的两种方法

 

使用 Stable Diffusion 生成图像有两种方式:无条件和有条件。

 

无条件图像生成:可以从噪声种生成新的图像而不需要任何条件(例如提示文本或其他图像)。模型在训练之后可以生成新的随机图片。相关详细信息,请查看此使用蝴蝶图像训练模型的示例。



训练集



生成的图像


有条件图像生成:该模型可以根据输入条件生成新的图像,而有条件图像生成的具体应用包括文本到图像、图像到图像、语义、修补和补全等。让我们来详细看一下:

 

  • 文本到图像(txt2img):基于输入文本生成图像。输入:文本-> 输出:图像

 

以下是一个输入文本的示例:一只戴眼镜的狗。



  • 图像到图像:该模型基于低分辨率图像生成高分辨率图像。下面展示了一种上采样扩散模型的实现。输入:图像->输出:图像。



摘自《基于潜在扩散模型的高分辨率图像合成》(High-Resolution Image Synthesis with Latent Diffusion Models

 

  • 语义增强(img2img):该模型允许你基于输入的图像和文本生成新的图像。你可以尝试使用这个图像到图像教程。在下面的示例中,我们要求它生成一个美丽的海滩。然而,由于我们对理想的度假场景不满意,我们要求添加一个高尔夫球场。该模型以生成的海滩作为输入,并在其上添加了一个高尔夫球场。



海滩(上图)带高尔夫球场的海滩(下图)

 

  • 图像修补:该模型可以使用新内容填充图像中被遮蔽的区域,无论是因为图像的某些部分已经损坏,还是为了替换图像中现有但不需要的内容。使用这个多修补模型,下面的挂钟被替换成了蝙蝠侠面具。(对于替换图像,你可以使用你的想象力添加任何图像。)



家庭办公室(来自 UnSplash 的原始照片);带有生成的斗篷十字军面具的家庭办公室

 

  • 扩展绘制:这里的绘制发生在原始图像的外部区域。该模型会人工“填充”图像到所需的大小。在下面的示例中,我们要求模型生成一个名为“街上的汽车”的图像,并使用扩展绘制来填充图像的左下部分。



Stable Diffusion 的工作原理:概述

 

Stable Diffusion 是用于高分辨率图像生成的模型。为了理解扩散模型的工作原理,而不深入复杂的数学原理,我们将一个 txt2img 稳定扩散模型分解为三个主要部分:

 

  1. 文本编码器:是一个基于 TransformerClipText 模型,采取和 GPT 一样的架构。Transformer 已经证明了对语言的良好理解,因此它们可以基于你文本提示的意图轻松地识别和转换。

  2. 图像信息生成器(基于文本信息的 UNET):这是扩散发生的地方。在这一部分中使用了 U-Net(Resnet-CNN 架构)网络,在推理之前该网络已经进行了训练。扩散理论可以分解为前向扩散和反向扩散两个主要过程。工作原理是首先通过逐渐添加高斯噪声来破坏训练数据,然后通过学习反转噪声来恢复数据。

  • 预处理阶段:正向扩散过程,通过不断添加高斯噪声来破坏训练数据,以生成训练样本,对应下图从右到左的过程。


图片来源(Ho 等人,2020 年)

 

  • 训练/推理阶段:反向扩散过程,模型学习从噪声中恢复数据,对应上图从左到右的过程。

 

  1. 图像解码器(VAE 解码器):接收图像信息生成器生成的向量,将其转换为图像,并将最终图像转换为所需的格式。


架构概述。图片来源:Ezequiel Lanza

 

BigDL

 

你可以使用上述的架构来获得图像,但是你是否注意到这个过程需要很长时间,有时需要几分钟?

 

这是因为我们使用的模型很大,但可以通过优化来减少处理时间。具体哪些部分可以进行优化,这里不再详细介绍。优化已经被集成到了 BigDL 中,其考虑了多种优化,例如 Intel® Optimization for TensorFlowIntel® Extension for PyTorchIntel® Distribution of OpenVINOIntel® AVX-512 等等。


BigDL 架构。图:Ruonan Wang

 

使用 BigDL 生成图像

 

现在轮到你了。我们将在这里为你提供步骤,或者你可以在 GitHub 上跟随实现。


安装

 

我们建议使用至少 16GB RAM 和 15GB 可用磁盘空间的 Intel 笔记本电脑/台式机。

 

为了访问我们提供的实现,建议使用新的虚拟环境运行,并安装必要的先决条件。


conda create -n sd python=3.8 conda activate sd pip install -r requirements.txt 
复制代码

启动 Web UI

打开你下载文件的文件夹,然后运行启动脚本:

python launch.py 
复制代码

 

随后应用程序将在你的设备上运行,并且你可以在浏览器中输入此地址:http://127.0.0.1:7860/


优化模型

 

在生成图像之前,你需要获取优化后的模型。 请转到“优化模型”选项卡执行操作。

 


现在你可以选择以下两个选项:

 

  • CPU-FP32 将为 CPU 生成优化后的 fp32 模型,后面会出现“CPU FP32”选项(例如“v2.1-base CPU FP32”)。

  • CPU / iGPU FP16 将为 CPU 和 iGPU 生成优化后的 fp16 模型,后面将出现两个“FP16”选项(例如“v2.1-base CPU FP16”,“v2.1-base CPU+iGPU FP16”)。

 

注意:这一步可能需要一些时间,因为应用程序会实时下载原始模型并为你进行优化。

 

模型优化完成后,你可以键入任何文本以生成原始图像。

 


注意:由于我们正在使用 Hugging Face 模型,你需要按照上图所示添加访问令牌

 

现在你的模型已准备就绪,你可以从“txt2img”选项卡开始生成图像。此外,应用程序还提供了其他选项。

 


总结


Stable Diffusion 是一种功能强大的工具,具有革命性的潜力,可应用于许多现实世界的场景。本文介绍的模型及其学习过程需要大量计算,Intel 提供的优化技术可以缩短处理时间。如果想获取更多来自 Intel 的开源内容,请访问 open.intel 或关注我们的 Twitter

 

作者简介:

 

Ezequiel Lanza 是英特尔开放生态系统团队的开源倡导者,热衷于帮助人们发现令人兴奋的人工智能世界。他还是经常参加人工智能会议的演讲者,创建使用案例、教程和指南,帮助开发人员采用像 TensorFlow 和 Hugging Face 这 样的开源人工智能工具。

 

Ruonan Wang 是英特尔 AIA 的人工智能框架工程师,目前专注于开发 BigDL-Nano,这是一个 Python 包,可以在英特尔硬件上透明加速 PyTorch 和 TensorFlow 应用程序。

 

原文链接:

 

https://medium.com/intel-tech/bigdl-tutorial-generate-your-own-images-from-text-with-stable-diffusion-63f45634ab2c

公众号推荐:

跳进 AI 的奇妙世界,一起探索未来工作的新风貌!想要深入了解 AI 如何成为产业创新的新引擎?好奇哪些城市正成为 AI 人才的新磁场?《中国生成式 AI 开发者洞察 2024》由 InfoQ 研究中心精心打造,为你深度解锁生成式 AI 领域的最新开发者动态。无论你是资深研发者,还是对生成式 AI 充满好奇的新手,这份报告都是你不可错过的知识宝典。欢迎大家扫码关注「AI前线」公众号,回复「开发者洞察」领取。

2023-04-16 13:524291

评论

发布
暂无评论
发现更多内容

【文本检测与识别-白皮书】第一章:技术背景

合合技术团队

文字识别 文本 人工智能’

一文带你认知定时消息发布RocketMQ

华为云开发者联盟

云计算 后端 华为云 企业号九月金秋榜

MySQL 数据库 - 通用语法 DDL DML DQL DCL

喜羊羊

MySQL 9月月更

数据湖统一元数据与权限

阿里云大数据AI技术

大数据 企业号九月金秋榜

openGauss内核分析:SQL by pass & 经典执行器

华为云开发者联盟

数据库 后端 企业号九月金秋榜

有了QQ和微信,企业是否还需要另外一个即时通讯工具?

WorkPlus

Servent

喜羊羊

9月月更

LeetCode-9. 回文数(java)

bug菌

9月日更 9月月更

合阔智云核心生产系统切换到服务网格 ASM 的落地实践

阿里巴巴中间件

阿里云 Kubernetes 云原生 服务网格 合作

微信小程序挖坑汇总

Shine

微信小程序

MySQL 数据库 - 函数 约束 多表查询 事务

喜羊羊

MySQL 9月月更

Chrome操作指南——入门篇(一)

Augus

Chrome开发者工具 9月月更

Python图像处理丨认识图像锐化和边缘提取的4个算子

华为云开发者联盟

Python 人工智能 图像处理 企业号九月金秋榜

【从零开始学docker】一、Docker的安装,启动以及工作原理

泡泡

云计算 容器 云原生 9月月更

MobTech秒验 Android端如何在授权界面添加短信登录按钮

MobTech袤博科技

android sdk

红象云腾(Redoop Enterprise)V9 与龙蜥(Anolis OS)8 完成兼容认证

OpenAnolis小助手

大数据 开源 适配 龙蜥操作系统 红象云腾

数字人技术在直播场景下的应用

百度Geek说

人工智能 直播 企业号九月金秋榜

数据治理(十):Atlas案例演示

Lansonli

数据治理 9月月更

构建AI原生的智能计算基础设施,百度百舸·AI异构计算平台2.0发布

Baidu AICLOUD

模型训练 异构计算 智算中心

FreeRTOS记录(四、FreeRTOS任务堆栈溢出问题和临界区)

矜辰所致

堆栈溢出 临界区保护 FreeRTOS 9月月更

华为云WeLink直播助力高校毕业典礼:这届毕业生,我们云上嗨

科技怪咖

5年专业研究,这份云原生安全指南请查收!

博文视点Broadview

阿里云如何基于边缘云设计终端云化场景的架构?

阿里云视频云

边缘技术 边缘云

高性能数据访问中间件 OBProxy(四):一文讲透连接管理

OceanBase 数据库

LeetCode-13. 罗马数字转整数(java)

bug菌

9月日更 Leet Code 9月月更

吃透JAVA的Stream流操作,多年实践总结

Java快了!

stream java;

上海华为云SaaS应用创新创业大赛暨828 B2B企业节发布仪式

科技怪咖

MySQL不同隔离级别,都使用了什么锁?

Java全栈架构师

Java MySQL 数据库 程序员 程序人生

企业即时通讯IM能给移动办公带来哪些便利?

WorkPlus

不容错过的技术盛宴,4场全是 eBPF 技术干货,今天见 | 第 44-47 期

OpenAnolis小助手

Linux 开源 ebpf sig 龙蜥大讲堂

从采集到存储:时序数据库到底怎么处理时间?

Apache IoTDB

IoTDB Apache IoTDB

BigDL 教程:使用 Stable Diffusion 从文本生成你自己的图像_大数据_Ezequiel Lanza_InfoQ精选文章