当前位置: 首页 > article >正文

扩散模型:AIGC领域的核心引擎,解锁图像生成新维度

一、扩散模型技术原理

扩散模型是一类生成模型,它运用了物理热力学中的扩散思想, 主要包括前向扩散和反向扩散两个过程。

1.1、生成模型

在深度学习中,生成模型的目标是根据给定的样本(训练数据) 生成新样本。首先给定一批训练数据X ,假设其服从某种复杂的真实 分布p ( x ),则给定的训练数据可视为从该分布中采样的观测样本 x 。如 果能够从这些观测样本中估计出训练数据的真实分布,不就可以从该 分布中源源不断地采样出新的样本了吗?生成模型实际上就是这么做 的,它的作用是估计训练数据的真实分布,并将其假定为q ( x )。在深度学习中,这个过程称为拟合网络。
那么问题来了,怎么才能知道估计的分布 q ( x )和真实分布 p ( x )的 差距大不大呢?一种简单的思路是要求所有的训练数据样本采样自 q( x )的概率最大。这种思路实际上来自统计学中的最大似然估计思
想,它也是生成模型的基本思想之一,因此生成模型的学习目标就是对训练数据的分布进行建模。

1.2、扩散过程

最大似然估计思想已经在一些模型(如VAE)上应用并取得了不 错的效果。扩散模型可看作一个更深层次的VAE。扩散模型的表达能力更加丰富,而且其核心在于扩散过程。 扩散的思想来自物理学中的非平衡热力学分支。非平衡热力学专 门研究某些不处于热力学平衡中的物理系统,其中最为典型的研究案 例是一滴墨水在水中扩散的过程。在扩散开始之前,这滴墨水会在水中的某个地方形成一个大的斑点,我们可以认为这是这滴墨水的初始状态,但要描述该初始状态的概率分布则很困难,因为这个概率分布非常复杂。随着扩散过程的进行,这滴墨水随着时间的推移逐步扩散
到水中,水的颜色也逐渐变成这滴墨水的颜色,如图1-1所示。此 时,墨水分子的概率分布将变得更加简单和均匀,这样我们就可以很 轻松地用数学公式来描述其中的概率分布了。
图1-1 一滴墨水在水中扩散分布的示意图
在这种情况下,非平衡热力学就派上用场了,它可以描述这滴墨 水随时间推移的扩散过程中每一个“时间步”(旨在将连续的时间过 程离散化)状态的概率分布。若能够想到办法把这个过程反过来,就 可以从简单的分布中逐步推断出复杂的分布。
公认最早的扩散模型DDPM(Denoising Diffusion Probabilistic Model)的扩散原理就由此而来,不过仅有上述条件依然很难从简单的 分布倒推出复杂的分布。DDPM还做了一些假设,例如假设扩散过程 是马尔可夫过程(即每一个时间步状态的概率分布仅由上一个时间步 状态的概率分布加上当前时间步的高斯噪声得到),以及假设扩散过 程的逆过程是高斯分布等
DDPM的扩散过程如图1-2所示,具体分为前向过程和反向过程两部分。
图1-2 DDPM的扩散过程

前向扩散之后为什么还要后向扩散?

  • 目标不同:前向扩散的目标是将数据逐步噪声化,最终得到纯噪声分布。而反向扩散的目标是从噪声出发,通过逐步去噪,恢复出与原始数据分布相似的干净数据。
  • 学习条件转移:前向扩散过程通过固定的高斯噪声来破坏数据结构。反向扩散过程则需要学习如何从带噪数据转移到干净数据。这个转移过程由神经网络参数化,需要通过训练来优化网络参数。
  • 构建生成模型:前向扩散虽然定义了带噪数据的边缘分布,但无法直接用于生成任务。反向扩散通过训练神经网络,学习每一步的去噪过程,从而将噪声逐步转化为干净数据。训练好的反向扩散模型就是我们需要的生成模型。
  • 实现可控生成:前向扩散过程是随机的,无法控制生成内容。但反向扩散可以通过调节每一步的去噪过程,引入条件信息,实现语义级的可控生成。这大大拓展了扩散模型的应用范围。
  • 提供训练目标:前向扩散和反向扩散的联合分布提供了一个变分下界,可以作为扩散模型的训练目标。优化该目标函数,就能同时完成前向噪声估计和反向去噪学习。

二、扩散模型发展历史

2.1、基础扩散模型的提出与改进

在图像生成领域,最早出现的扩散模型是DDPM(于2020年提 出)。DDPM首次将“去噪”扩散概率模型应用到图像生成任务中, 奠定了扩散模型在图像生成领域应用的基础,包括扩散过程定义、噪 声分布假设、马尔可夫链计算、随机微分方程求解和损失函数表征等,后面涌现的众多扩散模型都是在此基础上进行了不同种类的改进。
论 文 “Score-Based Generative Modeling through Stochastic Differential Equations”证明了DDPM的采样过程是更 普遍的随机微分方程,因此只要能够更离散化地求解该随机微分方程,就可以将1000步的采样过程缩减至50步、20步甚至更少的步 数,从而极大地提高扩散模型生成图像的速度,如图1-3所示。针对 如何更快地进行采样这一问题,目前已经涌现了许多优秀的求解器, 如Euler、SDE、DPM-Solver++和Karras等,这些加速采样方法也是 扩散模型风靡全球至关重要的推力。

2.2、基于显式分类器引导的扩散模型

2021年5月以前,虽然扩散模型已经被应用到图像生成领域,但 它实际上在图像生成领域并没有“大红大紫”,因为早期的扩散模型在所生成图像的质量和稳定性上并不如经典的生成模型GAN(Generative Adversarial Network,生成对抗网络),真正让扩散模型开始在研究领域“爆火”的原因是论文“Diffusion Models Beat GANs on Image Synthesis”的发表。OpenAI的这篇论文贡献 非常大,尤其是该文介绍了在扩散过程中如何使用显式分类器引导。 更重要的是,这篇论文打败了图像生成领域统治多年的GAN,展 示了扩散模型的强大潜力,使得扩散模型一举成为图像生成领域最火 的模型。

2.3、基于CLIP的多模态图像生成

CLIP是连接文本和图像的模型,旨在将同一语义的文字和图片转 换到同一个隐空间中,例如文字“一个苹果”和图片“一个苹果”。 正是由于这项技术和扩散模型的结合,才引起基于文字引导的文字生 成图像扩散模型在图像生成领域的彻底爆发,例如OpenAI的GLIDE、 DALL-E、DALL-E 2(基于DALL-E 2生成的图像如图1-5所示), Google的Imagen以及开源的Stable Diffusion(Stable Diffusion v2扩散模型)等,优秀的文字生成图像扩散模型 层出不穷,给我们带来无尽的惊喜
图1-5 基于DALL-E 2生成的“拿着奶酪的猫“

2.4、大模型的“再学习”方法:DreamBooth、LoRA和ControlNet

自从扩散模型走上大模型之路后,重新训练一个图像生成扩散模 型变得非常昂贵。面对数据和计算资源高昂的成本,个人研究者想要 入场进行扩散模型的相关研究已经变得非常困难。 但实际上,像开源的Stable Diffusion这样的扩散模型已经出色地学习到非常多的图像生成知识,因此不需要也没有必要重新训练类 似的扩散模型。于是,许多基于现有的扩散模型进行“再学习”的技术自然而然地涌现,这也使得个人在消费级显卡上训练自己的扩散模 型成为可能。DreamBooth、LoRA和ControlNet是实现大模型“再 学习”的不同方法,它们是针对不同的任务而提出的。
DreamBooth可以实现使用现有模型再学习到指定主体图像的功 能,只要通过少量训练将主体绑定到唯一的文本标识符后,就可以通 过输入文本提示语来控制自己的主体以生成不同的图像,如图1-7所 示。图1-7 使用DreamBooth将小狗嵌入图像中并生成不同场景下的小狗
图1-7 使用DreamBooth将小狗嵌入图像中并生成不同场景下的小狗
LoRA可以实现使用现有模型再学习到自己指定数据集风格或人物 的功能,并且还能够将其融入现有的图像生成中。Hugging Face提 供了训练LoRA的UI界面,如图1-8所示。 图1-8 Hugging Face提供的LoRA训练界面,可定制的LoRA超参数:用户可以调整LoRA adapter的秩、alpha值等超参数,以平衡性能和效率。
图1-8 Hugging Face提供的LoRA训练界面
ControlNet可以再学习到更多模态的信息,并利用分割图、边缘 图等功能更精细地控制图像的生成。

三、扩散模型的应用

扩散只是一种思想,扩散模型也并非固定的深度网络结构。除此 之外,如果将扩散的思想融入其他领域,扩散模型同样可以发挥重要作用。

3.1、计算机视觉

计算机视觉包括2D视觉和3D视觉两个方面,这里仅介绍扩散模 型在2D图像领域的应用。
图像类的应用十分广泛,而且与人们的日常生活息息相关。在扩 散模型出现之前,与图像处理相关的研究已经有很多了,而扩散模型 在许多图像处理任务中都可以很好地发挥作用,具体如下。
●图像分割与目标检测。图像分割与目标检测是计算机视觉领域 的经典任务,在智能驾驶、质量监测等方面备受关注。而在加入扩散 的方法之后,就可以获取更精准的分割和检测结果了,例如Meta AI 的SegDiff分割扩散模型可以生成分割Mask图(如图1-14所示),检测扩散模型DiffusionDet同样可以端到端地从随机矩形框逐步生成检 测框(如图1-15所示)。不过,扩散模型仍然存在生成速度慢的问 题,在应用于一些需要实时检测的场景时还需继续优化。
图1-14 SegDiff生成的分割Mask图
图1-15 DiffusionDet生成的检测框
●图像超分辨率。图像超分辨率是一项能够将低分辨率图像重建 为高分辨率图像,同时保证图像布局连贯的技术。CDM(Cascaded Diffusion Model,级联扩散模型)通过采用串联多个扩散模型的方 式,分级式地逐步放大分辨率,实现了图像超分辨率,图1-16给出了 一个使用CDM实现图像超分辨率的示例。
图1-16 使用CDM实现图像超分辨率
●图像修复、图像翻译和图像编辑。图像修复、图像翻译和图像 编辑是对图像的部分或全部区域执行的操作,包括缺失部分修补、风 格迁移、内容替换等。Palette是一个集成了图像修复、图像翻译和图 像编辑等功能的扩散模型,它可以在一个模型中完成不同的图像级任务。

图1-17给出了一个使用Palette修复图像的示例。
图1-17 使用Palette修复图像

3.2、时序数据预测

时序数据预测旨在根据历史观测数据预测未来可能出现的数据, 如空气温度预测、股票价格预测、销售与产能预测等。时序数据预测 同样可以视为生成任务,即基于历史数据的基本条件来生成未来数 据,因此扩散模型也能发挥作用。

TimeGrad是首个在多元概率时序数据预测任务中加入扩散思想 的自回归模型。为了将扩散过程添加到历史数据中,TimeGrad首先 使用RNN(Recurrent Neural Network,循环神经网络)处理历史 数据并保存到隐空间中,然后对历史数据添加噪声以实现扩散过程, 由此处理数千维度的多元数据并完成预测任务。图1-18展示了 TimeGrad在城市交通流量预测任务中的表现。
图1-18 TimeGrad在城市交通流量预测任务中的表现

3.3、 自然语言

实际上,扩散模型同样可以完成语言类的生成任务。只要将自然 语言类的句子分词并转换为词向量之后,就可以通过扩散的方法来学 习自然语言的语句生成,进而完成自然语言领域一些更复杂的任务, 如语言翻译、问答对话、搜索补全、情感分析、文章续写等。

Diffusion-LM是首个将扩散模型应用到自然语言领域的扩散语言 模型。该模型旨在解决如何将连续的扩散过程应用到离散的非连续化 文本的问题,由此实现语言类的高细粒度可控生成。经过测试, Diffusion-LM在6种可控文本生成任务中取得非常好的生成效果。
实际上,后续也有非常多的基于Diffusion-LM的应用。不过在自然语言领域,目前的主流模型仍然是GPT(Generative Pre-trained Transformer),我们非常期待扩散模型未来能在自然语言领域得到更 进一步的发展。

3.4、 基于文本的多模态

多模态信息指的是多种数据类型的信息,包括文本、图像、音/视 频、3D物体等。多模态信息的交互是人工智能领域的研究热点之一,对于AI理解人类世界、帮助人类处理多种事务具有重要意义。在诸如 DALL-E 2和Stable Diffusion等图像生成扩散模型以及ChatGPT等语 言模型出现之后,多模态开始逐渐演变为基于文本和其他模态的交 ,如文本生成图像、文本生成视频、文本生成3D等。

●文本生成图像。文本生成图像是扩散模型最流行、最成熟的应 用,输入文本提示语或仅仅输入几个词,扩散模型就能根据文字描述 生成对应的图片。本章开头介绍的大名鼎鼎的文本生成图像扩散模型 DALLE-2、Imagen以及完全开源的Stable Diffusion等,都属于文本 和图像的多模态扩散模型。下图给出了几个使用Imagen实现文字 生成图像的示例,后面我们将重点介绍与文本生成图像相关的应用。
使用Imagen实现文字生成图像的几个示例
●文本生成视频。与文本生成图像类似,文本生成视频扩散模型 能够将输入的文本提示语转换为相应的视频流。不同的是,视频的前 后帧需要保持极佳的连贯性。文本生成视频也有非常广泛的应用,如 Meta AI的Make-A-Video(如图1-20所示)以及能够精细控制视频 生成的ControlNet Video等。
Hugging Face上的 ControlNet Video Space应用界面
Meta AI的Make-A-Video:一条身着超人外衣、肩披红色斗 篷的狗在天空中翱翔
●文本生成3D。同样,文本生成3D扩散模型能够将输入的文本转 换为相应的3D物体。稍有不同的是,3D物体的表征有多种方式,如点云、网格、NeRF等。不同的应用在实现方式上也略有差异,例如:DiffRF提出了通过扩散的方法实现从文本生成3D辐射场的扩散模型。
虽然目前文本生成3D技术仍处于起步阶段,但其应用前景非 常广阔,包括室内设计、游戏建模、元宇宙数字人等。
应用界面用DiffRF生成3D沙发图1-23

3.5、 AI基础科学

AI基础科学又称AI for Science,它是人工智能领域具有广阔前 景的分支之一,甚至能够发展为造福全人类的技术。与AI基础科学相 关 的 研 究 成 果 也 不 止 一 次 荣 登 《 自 然 》 杂 志 。 例 如 , 2021 年 DeepMind研究的AlphaFold 2可以预测人类世界98.5%的蛋白质, 2022年DeepMind用强化学习控制核聚变反应堆内过热的等离子体 等。 扩散模型对生成类的任务一直表现十分专业,AI基础科学中生成 预测类的研究当然也少不了扩散模型的参与。SMCDiff创建了一种扩散模型,该扩散模型可以根据给定的模体结构生成多样化的支架蛋白质,如图1-24所示。CDVAE则提出了一种扩散晶体变分自编码器模型,旨在生成和优化具有固定周期性原子结构的材料。

SMCDiff生成的多样化的支架蛋白质

相关文章:

扩散模型:AIGC领域的核心引擎,解锁图像生成新维度

一、扩散模型技术原理 扩散模型是一类生成模型,它运用了物理热力学中的扩散思想, 主要包括前向扩散和反向扩散两个过程。 1.1、生成模型 在深度学习中,生成模型的目标是根据给定的样本(训练数据) 生成新样本。首先给…...

Java多线程与高并发专题——原子类和 volatile、synchronized 有什么异同?

原子类和 volatile异同 首先,通过我们对原子类和的了解,原子类和volatile 都能保证多线程环境下的数据可见性。在多线程程序中,每个线程都有自己的工作内存,当多个线程访问共享变量时,可能会出现一个线程修改了共享变…...

//要求:将输入的字符串中的数字转换为罗马数字,长度小于9(运用方法:Switch方法)

import java.util.Scanner;public class Num2 {public static void main(String[] args){ // I II III IV V VI VII VIII IX//要求:将输入的字符串中的数字转换为罗马数字,长度小于9(运用方法:查表法)//1输入数字//2有效字符判断/…...

【数据结构】数据结构,算法 概念

0.本篇问题: 数据、数据元素、数据对象、数据项之间的基本关系?ADT是什么?数据结构的三要素?数据的逻辑结构有哪些?数据的存储结构有哪些?算法的五个特征?O(1) O(logn) O(n^n) O(n) O(n^2…...

pytest 框架学习总结

视频:pytest01-快速上手_哔哩哔哩_bilibili 资料:pytest 框架 - 白月黑羽 基于 Python 语言的自动化测试框架 最知名的 有如下 3 款unittest、pytest、robotframework 前两款框架主要(或者说很大程度上)是 聚焦 在 白盒单元测试…...

总结 HTTP 协议的基本格式, 相关知识以及抓包工具fiddler的使用

目录 1 HTTP是什么 2 HTTP协议格式 3 HTTP请求(Request) 3.1 认识URL 3.2 方法 3.3 认识请求"报头"(header) 4 HTTP响应详解 4.1 认识"状态码"(statuscode) 4.2 认识响应"报头"(header) 4.3 认识响应"正⽂"(body) 5 通过f…...

python中的max(),需要注意的点

words ["apple", "banana", "grape", "cherry"] 对每个单词,keylambda x: len(x) 会计算它的长度: "apple" 长度是 5"banana" 长度是 6"grape" 长度是 5"cherry" 长度…...

DeepSeek-R1大模型微调技术深度解析:架构、方法与应用全解析

1. DeepSeek-R1大模型架构设计与技术特性 1.1 架构设计 DeepSeek-R1作为超大规模语言模型,其核心架构设计包含以下创新: 专家混合架构(MoE) 采用6710亿参数的混合专家架构(MoE),每个推理过程仅激活370亿参数,实现计算效率与资源利用率的突破性提升。 Transformer框架…...

探索Maas平台与阿里 QWQ 技术:AI调参的魔法世界

摘要:本文介绍了蓝耘 Maas 平台在人工智能领域的表现及其核心优势,包括强大的模型支持、高效的资源调度和友好的操作界面。文章还探讨了蓝耘 Maas 平台与阿里 QWQ 技术的融合亮点及应用拓展实例,并提供了调参实战指南,最后对蓝耘 …...

Linux第三次练习

1、创建根目录结构中的所有的普通文件 首先在根目录下面新创建一个test目录,然后将查找到的普通文件新建到test目录下 2、列出所有账号的账号名 3、将/etc/passwd中内容按照冒号隔开的第三个字符从大到小排序后输出所有内容 4、列出/etc/passwd中的第20行-25行内容…...

软件测试知识总结

1、黑盒测试、白盒测试、灰盒测试 1.1 黑盒测试 黑盒测试又叫功能测试、数据驱动测试 或 基于需求规格说明书的功能测试。该类测试注重于测试软件的功能性需求。 采用这种测试方法,测试工程师把测试对象看作一个黑盒子,完全不考虑程序内部的逻辑结构和…...

JConsole 监控线程池状态

JConsole 可以用来监控 Java 线程池(ThreadPoolExecutor)的状态,包括线程数量、任务执行情况、CPU 及内存使用情况等。下面是具体的操作步骤: 一、启动 JConsole 1. 启动 JConsole Windows:在 JDK bin 目录下找到 j…...

【HTML】三、表单与布局标签

文章目录 1、input1.1 input的占位文案1.2 单选框1.3 上传文件1.4 多选框 2、 下拉菜单3、文本域:多行输入4、label标签:说明与增大点击范围5、按钮与form表单6、无语义布局标签7、有语义的布局标签8、字符实体9、练习:注册页面 1、input in…...

OpenBMC:BmcWeb添加路由1 getParameterTag

BmcWeb对于路由的设计其实是参考了Crow BMCWEB_ROUTE(app, "/upload/image/<str>").privileges({{"ConfigureComponents", "ConfigureManager"}}).methods(boost::beast::http::verb::post, boost::beast::http::verb::put)([](const cro…...

【结构设计】3D打印创想三维Ender 3 v2

【结构设计】3D打印创想三维Ender 3 v2 文章目录 前言一、Creality Slicer1.2.3打印参数设置二、配件更换1.捆扎绑扎线2.气动接头3D打印机配件插头3.3D打印机配件Ender3pro/V2喷头套件4.读卡器 TF卡5.micro sd卡 三、调平四、参考文章总结 前言 使用工具&#xff1a; 1.创想三…...

嵌入式web服务器实现上传下载储存研究

标题:嵌入式web服务器实现上传下载储存研究 内容:1.摘要 随着互联网与嵌入式系统的不断融合&#xff0c;嵌入式设备对数据上传、下载及储存功能的需求日益增长。本文旨在研究嵌入式web服务器实现上传、下载和储存功能的有效方法。通过分析常见的嵌入式web服务器架构&#xff0…...

UE小:UE5.5 PixelStreamingInfrastructure 使用时注意事项

1、鼠标默认显示 player.ts中的Config中添加HoveringMouse:true 然后运行typescript\package.json中的"build":npx webpack --config webpack.prod.js...

Anaconda 入门指南

Anaconda 入门指南 一、下载安装 Anaconda 1、下载地址&#xff1a;Anaconda 推荐下载 python3 版本, 毕竟未来 python2 是要停止维护的。 2、安装 Anaconda 按照安装程序提示一步步安装就好了, 安装完成之后会多几个应用&#xff1a; Anaconda Navigtor &#xff1a;用于管…...

web组态可视化编辑器

Web组态可视化编辑器是一种用于创建和配置工业自动化、物联网&#xff08;IoT&#xff09;和智能建筑等领域的图形化用户界面&#xff08;GUI&#xff09;的工具。它允许用户通过拖放组件、配置参数和连接数据源来设计和部署实时监控和控制界面。以下是一些常见的Web组态可视化…...

CTA重建:脑血管重建,CT三维重建,三维建模 技术,实现

CTA&#xff08;CT血管造影&#xff09;是一种基于CT扫描的医学成像技术&#xff0c;主要用于血管系统的三维重建和可视化。脑血管重建是CTA的重要应用之一&#xff0c;能够帮助医生诊断脑血管疾病&#xff08;如动脉瘤、狭窄、畸形等&#xff09;。以下是实现CTA脑血管重建、C…...

Ollama+OpenWebUI本地部署大模型

OllamaOpenWebUI本地部署大模型 前言Ollama使用Ollama安装Ollama修改配置Ollama 拉取远程大模型Ollama 构建本地大模型Ollama 运行本地模型&#xff1a;命令行交互Api调用Web 端调用 总结 前言 Ollama是一个开源项目&#xff0c;用于在本地计算机上运行大型语言模型&#xff0…...

如何打包数据库mysql数据,并上传到虚拟机上进行部署?

1.连接数据库&#xff0c;使得我们能看到数据库信息&#xff0c;才能进行打包上传 2. 3. 导出结果如下&#xff0c;是xml文件 4.可以查询每个xml文件的属性&#xff0c;确保有大小&#xff0c;这样才是真实导出 5跟着黑马&#xff0c;新建文件夹&#xff0c;并且把对应的东西放…...

Vue 自定义指令深度解析与应用实践

文章目录 1. 自定义指令概述1.1 核心概念1.2 指令生命周期 2. 自定义指令基础2.1 指令注册2.2 指令使用 3. 指令钩子函数详解3.1 钩子函数参数3.2 钩子函数示例 4. 自定义指令应用场景4.1 表单自动聚焦4.2 权限控制4.3 图片懒加载 5. 高级应用技巧5.1 动态指令参数5.2 指令修饰…...

Vue中有什么组件可以实现轮播效果,每次出现四个元素?

在 Vue 中实现「每次显示四个元素」的轮播效果&#xff0c;可以通过以下组件实现&#xff08;推荐按优先级排序&#xff09;&#xff1a; 1. Swiper Vue-Awesome-Swiper&#xff08;推荐&#xff09; 特点&#xff1a; 最成熟的轮播库&#xff0c;支持复杂交互&#xff08;触…...

Doris表的分区数量保持在多少范围内性能是最好的

在 Apache Doris 中&#xff0c;分区数量的最佳范围需结合数据规模、查询模式及集群资源动态调整&#xff0c;以下是根据最新版本&#xff08;2025年&#xff09;的实践总结和官方建议&#xff1a; 1. 分区数量与数据量的平衡原则 • 单分区数据量建议&#xff1a;每个分区的数…...

Android 手机启动过程

梳理 为了梳理思路&#xff0c;笔者画了一幅关于 Android 手机启动的过程图片内容纯属个人见解&#xff0c;如有错误&#xff0c;欢迎各位指正...

Unity 开发资源汇总 | 插件 | 模型 | 源码(不断更新中,建议收藏)

&#x1f493; 欢迎访问 Unity 打怪升级大本营 Unity是一个强大的游戏开发平台&#xff0c;它提供了丰富的工具和资源&#xff0c;让开发者能够创造出令人惊叹的游戏和交互式体验。无论你是初学者还是经验丰富的开发者&#xff0c;Unity的生态系统中总有一些资源可以帮助你提升…...

JVM崩溃时产生的文件 hs_err.pid.log

hs_err.pid.log hs_err.pid.log&#xff1a;当jvm崩溃时&#xff0c;会生成一个hs_err_pid.log文件&#xff0c;并且把它存放到程序目录下&#xff0c;可以通过该文件来定位导致jvm崩溃的原因。 jvm崩溃&#xff0c;是由jvm自身的bug或者本地方法执行错误引起的&#xff0c;本…...

聊聊 Redis 的一些有趣的特性(上)

聊聊 Redis 的一些有趣的特性&#xff08;上&#xff09; 一、持久化 Redis 是内存数据库&#xff0c;数据全部保存在内存中。如果服务器发生宕机&#xff0c;内存中的数据将会全部丢失。为防止系统崩溃后数据丢失&#xff0c;Redis 提供了持久化功能&#xff0c;可将内存中的…...

使用OpenCV和MediaPipe库——抽烟检测(姿态监控)

目录 抽烟检测的运用 1. 安全监控 (1) 公共场所禁烟监管 (2) 工业安全 2. 智能城市与执法 (1) 城市违章吸烟检测 (2) 无人值守管理 3. 健康管理与医疗 (1) 吸烟习惯分析 (2) 远程监护 4. AI 监控与商业分析 (1) 保险行业 (2) 商场营销 5. 技术实现 (1) 计算机视…...