万字长文破解 AI 图片生成算法-Stable diffusion (第一篇)

news2024/11/13 23:44:48

     想象一下:你闭上眼睛,脑海中构思一个场景,用简短的语言描述出来,然后“啪”的一声,一张栩栩如生的图片就出现在你眼前。这不再是科幻小说里才有的情节,而是Stable Diffusion——一种前沿的AI图片生成算法——所带来的现实。在本系列的万字长文中,我们将深入探索Stable Diffusion的神秘面纱,揭秘它是如何将文字描述转化为令人惊叹的视觉艺术。无论你是AI技术的爱好者、数字艺术的探索者,还是仅仅对这门新兴科学充满好奇,这都将是一次知识与想象的盛宴。那么,系好安全带,让我们一起启程,进入AI创造的奇妙世界。

Stable diffusion 效果如何

    先来感受一下 stable diffusion 能创造出什么样的神奇效果。

    8K 画质的变色龙图片,不敢相信这不是摄像机拍摄的而是 AI 生成的。

    自拍写真也充满了细节!远处的模糊处理和近处的细节凸显,像极了真人拍摄的图片。那是不是 AI 只能生成类似真人拍摄的图片呢?

    梦幻风格的图片也能拿捏!接下来是硬核技术部分,绑好安全带,发车!

Stable diffusion 整体介绍:

  • Stable Diffusion 是一个2022年发布的文本到图像潜在扩散模型,基于 Latent Diffusion Models(LDMs)实现,由 CompVis、Stability AI 和 LAION的研究人员创建。

  • Stability AI公司在2022年10月完成了1.01亿美元的融资,估值目前已经超过10亿美元。

原理:

  • Diffusion Models的核心原理源于物理中的扩散过程。在物理学中,扩散过程描述的是粒子从高浓度区域向低浓度区域的随机性运动,而 Diffusion Models 将数据生成过程建模为粒子扩散过程,也就是一系列微小的、连续的随机变化过程,具体表现就是从一些随机噪声逐步生成真实数据的过程,就像在随机扩散过程中,分子从高浓度区域向低浓度区域移动那样。

  • Diffusion Models可以生成高质量的图片,主要是得益于以下几点:

  • (1)生成过程是迭代的:在Diffusion Models中,数据的生成过程是一个多次不断迭代和优化的过程,会经历从粗糙到细致 --> 更细致 --> 非常细致 的过程,这就使得模型能够逐步生成出越来越精细的特征,因此可以生成很高质量逼真的图片。

  • (2)全概率模型:Diffusion Models是一种全概率模型,它会考虑数据的所有可能性。由于添加的噪声是随机的,这就使得数据在各个维度上都可能发生变化,换句话说,就是在全局范围内都有可能出现的数据,因此可以说从简单分布进行扩散的过程将会遍历所有可能的数据点。事实上,一直扩散下去(时间趋向无穷),理论上可以覆盖整个数据空间。这使得模型能够生成出各种各样的图片,包括那些在训练数据中很少出现但是仍然符合现实世界特征的图片。

  • (3)字符级细节:由于Diffusion Models的生成过程可以通过控制迭代的步数,生成过程可以捕获到非常小的细节,比如图像的纹理,形状和颜色等,因此可以生成出高质量的图片。

  • (4)最大似然训练:Diffusion Models通常采用最大似然训练,这确保了模型能够精确地拟合训练数据的分布,从而生成出高质量的图片。

主要流程:

  1. 文本编码器(Text Encoder): 将人类输入的文字串转换成机器可理解的数字信息,输出语义向量。

  2. 图片生成器(Image Generator): 核心模块,接受 latent + text + time 作为输入,生成图片。

  3. 图片解码器(Image Generator): 将生成的 latent image 解码为 RGB 图片;

应用:

  • 可用于文生成图、图生成图、特定角色刻画、超分或上色任务。

  • 可用于AI绘画,图像生成等领域,提高生成可控性,改变部分行业的生产模式。

模型发展路径:

    Diffusion model --> Latent diffusion model --> Stable diffusion model, 我们按照这个顺序来学习掌握 Stable Diffusion. 

    接下来我们会逐步学习 Stable diffusion, 欢迎点赞关注获取最新的技术教程!

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

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

相关文章

有多少小于当前数字的数字

链接:https://leetcode.cn/problems/how-many-numbers-are-smaller-than-the-current-number/description/ 思路: 最简单的思路来说,就是双重for循环进行遍历,来判断个数, 优化思路,其中一个思路就是递推 …

首次曝光!我喂了半年主食冻干,喵状态真滴顶~

科学养猫理念的推广,使得主食冻干喂养越来越受到养猫者的欢迎。主食冻干不仅符合猫咪的自然饮食习惯,还能提供丰富的营养,有助于保持猫咪的口腔和消化系统健康。我家喂了半年主食冻干,猫咪的状态是真的不一样了! 然而…

轻松玩转2.5GHz 12nm双核CPU实战—Black Box

在2.5GHz 12nm A72双核CPU项目物理设计中,BlackBox 类似于一个 Hard Macro,它内部的东西完全看不见,只是一个黑盒子,但是它又类似于一个 Module Boundary。它可以被改变形状,而且它可以被分配 pin 和被分割出去&#x…

C++自定义头文件使用(函数和类)

简单案例需求: 1,计算正方形和三角形的周长——函数 2,模拟不同类型的动物叫声——类 一、创建项目 C空项目 Class_Study 二、创建主函数 在源文件下添加新建项,main.cpp 三、自定义头文件——函数 需求:1&a…

K210开发板MicroPython开发环境搭建

一、安装CanMV IDE开发软件 1、进入如下连接 https://developer.canaan-creative.com/resource 2、点击下载 3、下一步 4、修改安装路径,下一步 5、接受许可下一步 6、下一步 7、安装 8、完成 9、区域①菜单栏:操作文件,使用工具等。…

【Python大数据】PySpark

CSDN不支持多个资源绑定,另外两个数据文件下载: 订单数据-json.zip search-log.zip Apache Spark是用于大规模数据(large-scala data)处理的统一(unified)分析引擎 简单来说,Spark是一款分布式的计算框架,用于调度成百上千的服…

Unity射击游戏开发教程:(13)如何在Unity中播放音效

在本文中,我将向大家展示一些为游戏添加声音的不同方法。 我们为游戏添加声音的第一种方法是播放背景音乐。在此,我们将创建游戏对象(“音频管理器”)并创建一个子游戏对象(“背景音乐”)。该子游戏对象将是播放音乐的对象,因此需要向其添加音频源组件。如果没有音频源组…

山东大学计算机考研数据分析,初复试占比6:4,复试内容不少得花精力准备!

山东大学(ShandongUniversity),简称山大,位于中国山东,是中华人民共和国教育部直属的综合性全国重点大学,是国家“211工程”、“985工程”重点建设院校,入选“111计划”、“珠峰计划”、“卓越工…

【软考】模拟考卷错题本2024-05-14

1 活动图-计算时间差 审题,第几天~选的3、10是结束了上一次的活动并未开始呢 !所以记得按照正常的语序表达哦! 2 队列-算长度 代入法,设计一个开始为0,结尾为9 ,容量为10即M的队列;带入计算当前…

国际化日期(inti)

我们可以使用国际化API自动的格式化数字或者日期,并且格式化日期或数字的时候是按照各个国家的习惯来进行格式化的,非常的简单; const now new Date(); labelDate.textContent new Intl.DateTimeFormat(zh-CN).format(now);比如说这是按照…

web学习笔记(五十五)

目录 1. 配置代码片段的步骤 2. 条件判断 2.1 v-if、v-else、v-else-if 2.2 v-show 2.3 v-show和v-if的区别 1. 配置代码片段的步骤 在Visual Studio Code中我们可以将常用的代码配置成代码片段,这样就可以在页面上快速输入大段代码了。 (1&#…

Linux进程控制——Linux进程程序替换

前言:Linux进程控制包含了进程终止,进程等待,进程程序替换。走到现在我们也只剩下进程程序替换没介绍了,那么让我们来看看进程程序替换到底是什么! 本篇主要内容: 替换原理 替换函数 实现简易shell 我们所创…

Linux FT260驱动内核学习笔记

目录 1. 安装ft260驱动 2. 编译ft260源码 3. 通过sysfs配置ft260设备 3.1 多功能GPIO配置 3.2 控制GPIO 3.3 配置i2c总线频率 4. UART 5. 使用i2c-tools交互I2C设备 5.1 安装i2c-tools 5.2 探测I2C设备 5.3 读取所有寄存器数据 5.4 读取和写入 5.5 16位地址的读写…

私活更好用:SpringBoot开源项目!!【送源码】

今天分享一款非常香的SpringBoot大屏开源项目,非常适合接私活用。 这是一款基于SpringBoot代码生成器的快速开发平台!采用前后端分离架构:SpringBoot,Mybatis,Shiro,JWT,Vue&Ant Design。强…

C++ 日志库 log4cpp 编译、压测及其范例代码 [全流程手工实践]

文章目录 一、 log4cpp官网二、下载三、编译1.目录结构如下2.configure 编译3.cmake 编译 四、测试五、压测源码及结果1.运行环境信息2.压测源码3.压测结果 文章内容:包含了对其linux上的完整使用流程,下载、编译、安装、测试用例尝试、以及一份自己写好…

使用VMware或VirtualBox安装eNSP Pro并使用CRT连接设备

文章目录 使用Oracle Virtual Box安装eNSP Pro创建虚拟机配置网卡配置带外管理网络 使用VMware Workstation安装eNSP Pro转换文件格式及虚拟磁盘模式配置网卡创建虚拟机配置使用CRT连接管理设备 前一段时间是开放了eNSP Pro的账号权限,但是在写博客时,权…

[董晓算法]搜索相关题目及模板

前言: 本系列是学习了董晓老师所讲的知识点做的笔记 董晓算法的个人空间-董晓算法个人主页-哔哩哔哩视频 (bilibili.com) 动态规划系列(还没学完) 【董晓算法】动态规划之线性DP问题-CSDN博客 【董晓算法】动态规划之背包DP问题&#xff…

html--互动星空

<!doctype html> <html> <head> <meta charset"utf-8"> <title>互动星空</title><style> html,body {margin:0;overflow:hidden;width:100%;height:100%;cursor:none;background:black;background:linear-gradient(to bot…

第十四届蓝桥杯大赛软件赛国赛C/C++ 大学 B 组 拼数字

//bfs只能过40%。 #include<bits/stdc.h> using namespace std; #define int long long int a,b,c,dp[2028]; struct s {int x,y,z;string m; }; map<vector<int>,int>k; signed main() {ios::sync_with_stdio(false);cin.tie(0),cout.tie(0);cin>>a…

大模型时代下的先行者:景联文科技引领数据标注新时代

在大模型时代&#xff0c;数据标注不再是简单的分类标注&#xff0c;而是一项融合了技术革新、专业技能、法律合规和精细化管理的综合性任务&#xff0c;对推动AI技术的发展和落地应用具有重要意义。 景联文科技作为AI基础行业的数据供应商&#xff0c;可协助人工智能企业解决整…