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

论文阅读:AutoDIR Automatic All-in-One Image Restoration with Latent Diffusion

论文阅读:AutoDIR: Automatic All-in-One Image Restoration with Latent Diffusion
这是 ECCV 2024 的一篇文章,利用扩散模型实现图像恢复的任务。

Abstract

这篇文章提出了一个创新的 all-in-one 的图像恢复框架,融合了隐扩散技术,各种不同的图像退化都可以用这一个模型搞定,简称 AutoDIR。AutoDIR 模型可以自动的识别以及恢复一系列未知的图像退化。AutoDIR 提供了直观的开放式词汇图像编辑功能,使用户能够根据自己的喜好定制和增强图像。AutoDIR 由两个关键阶段组成:一个基于语义无关的视觉语言模型的盲图像质量评估(BIQA)阶段,它会自动检测输入图像中的未知图像退化类型;一个一体化图像恢复(AIR)阶段,利用结构校正的隐扩散来处理多种类型的图像退化。大量的实验评估表明,AutoDIR 在更广泛的图像恢复任务中优于当前最先进的方法。AutoDIR 的设计还能够实现灵活的用户控制(通过文本提示),并作为图像恢复的基础模型推广到新的任务中。

在这里插入图片描述

Introduction

文章作者探索了一种能够处理单个图像的多种未知退化的通用模型。为实现这一目标,相应的模型应具备以下能力:(1)分解和区分未知的退化类型,(2)一个与具体任务无关的框架,能够恢复各种退化,(3)理想情况下,允许用户根据自己的视觉偏好自由调整恢复结果。为解决类似问题已经有了很多相关的工作,但没有一个能够同时满足这三点。

为了能同时解决上述三个问题,文章作者提出了一个名为 AutoDIR 的流程,它满足上述所有三种能力,并且能够自动检测和恢复具有多种未知退化的图像。AutoDIR 由两个阶段组成:语义无关的盲图像质量评估(SA-BIQA)阶段和由 SA-BIQA 中生成的文本提示引导的一体化图像恢复(AIR)阶段。

在 SA-BIQA 阶段,我们能够以开放词汇的方式准确识别未知伪影情况下的每种退化。这是通过我们提出的语义无关的 CLIP(SA-CLIP)模型实现的,该模型采用了语义无关的正则化项,将原始的语义识别 CLIP 转换为语义无关的形式,重点关注图像的结构质量而非语义内容。此外,我们可以利用 SA-BIQA 阶段生成的文本嵌入作为指令来引导进一步的恢复模型。这种方法不仅能够实现有效的恢复,而且通过提供开放词汇的指令,还允许在运行时进行灵活的用户控制和编辑。

AIR 阶段是使用在广泛任务上联合训练的多任务图像恢复模型来处理退化。鉴于不同任务的多样性(例如,像超分辨率这样的一些任务需要生成纹理,但像低光增强这样的其他任务需要保留除亮度之外的一切),我们提出了一种混合方法,在通过引入额外的结构归纳偏差来保持图像结构一致性的同时,最大限度地发挥扩散模型的生成能力。

为了评估 AutoDIR 的有效性和泛化能力,我们进行了一组全面的实验,涵盖了七个图像恢复任务,包括去噪、运动去模糊、低光增强、去雾、去雨、去雨滴和超分辨率。实验结果表明,AutoDIR 始终优于当前最先进的方法。AutoDIR 还针对屏下摄像头和水下摄像头拍摄的图像恢复进行了评估,这些是具有多种未知退化的成像系统的例子。

Method

在这里插入图片描述

图 2 展示了所提出的 AutoDIR(具有潜在扩散的自动一体化图像恢复)的总体流程图,这是一个能够自动检测和处理图像中多种未知退化的统一模型。AutoDIR 包括两个主要阶段:

  • 语义无关的盲图像质量评估(SA-BIQA):此阶段会自动识别输入图像中主要存在的退化,如噪声、模糊、雾霾,并生成相应的文本提示,记为 e a u t o e_{auto} eauto,随后在图像恢复过程中使用。
  • 一体化图像恢复 (AIR):此阶段利用结构校正潜在扩散模型(SC-LDM),在来自 SA-BIQA 的文本嵌入 e a u t o e_{auto} eauto 或用户自定义的开放词汇指令 e u s e r e_{user} euser 的引导下,生成恢复后的图像 I r e s I_{res} Ires
Semantic-Agnostic Blind Image Quality Assessment (SA-BIQA)

正如之前的工作所表明的,评估图像退化的一种常见方法是专门为此目的训练一个图像分类器。然而,这种简单的方法在处理包含广泛伪影的大型数据集时面临挑战。即使使用重型的 ViT 编码器,仅基于图像信息对图像退化进行分类的准确率也限制在 77.65%。

为了解决这一限制,我们提出利用人类语言知识来增强对图像退化的检测。我们引入了一个语义无关的 CLIP(SA-CLIP)模型作为我们盲图像质量评估(BIQA)的主干。SA-CLIP 基于 CLIP 模型构建,该模型在人类语言知识和图像质量之间建立了联系。然而,我们观察到,直接应用 CLIP 或为 BIQA 任务对其进行简单微调并不能产生可靠的结果。我们深入研究了这个问题,并找出了这个问题背后的原因。预训练的 CLIP 模型主要是为视觉识别任务而训练的,这些任务优先考虑语义信息而不是图像质量。因此,它在 BIQA 任务中的准确率较低。例如,该模型可能难以区分低光的狗图像和有噪点的狗图像,因为它更关注 “狗” 的方面,而不是噪声或光照的存在。

为了克服这个问题,我们分两步解决:(i)我们为微调 CLIP 构建了一个新的图像质量评估任务。(ii)我们提出了一个新的正则化项,用于语义无关和图像质量感知的训练,以导出 SA-CLIP 模型。

如图 2 所示,假设 C \mathcal{C} C 表示文章中考虑的图像退化类型的集合, C = { c 1 , c 2 , . . . , c K − 1 , c K } \mathcal{C}=\{c_1, c_2, ..., c_{K-1}, c_K \} C={c1,c2,...,cK1,cK},其中 c i c_i ci 表示某种退化类型, K − 1 K-1 K1 表示总的退化类型的数量,我们还添加了一种特殊类型 c K = " n o " c_K = "no" cK="no" 表示多步图像恢复的结束标识。文本提示描述集 T = { T ∣ T = "A photo needs ci artifact reduction , c ∈ C } \mathcal{T}=\{T|T = \text{"A photo needs ci artifact reduction}, c \in \mathcal{C} \} T={TT="A photo needs ci artifact reduction,cC}。给定一张包含了若干未知伪影的受损图像 I I I,我们的语义无关 CLIP 旨在识别 I I I 的主要退化并提取相应的文本嵌入。SA-CLIP 包含一个图像编码器 ε I \varepsilon_{I} εI 和一个文本编码器 ε T \varepsilon_{T} εT。首先获得图像嵌入 ε I ∈ R d \varepsilon_{I} \in \mathbb{R}^{d} εIRd 和文本嵌入 ε T ∈ R K × d \varepsilon_{T} \in \mathbb{R}^{K \times d} εTRK×d,然后计算图像嵌入与每个文本嵌入的余弦相似度。

logit ( c i ∣ I ) = ε I ( I ) ⋅ ε T ( T i ) ∥ ε I ( I ) ∥ 2 ∥ ε T ( T ) ∥ 2 (1) \text{logit}(c_i | I) = \frac{ \varepsilon_{I}(I) \cdot \varepsilon_{T}(T_i) }{\left \| \varepsilon_{I}(I) \right \|_2 \left \| \varepsilon_{T}(T) \right \|_2 } \tag{1} logit(ciI)=εI(I)2εT(T)2εI(I)εT(Ti)(1)

其中, T i T_i Ti 表示第 i i i 个文本嵌入,对计算得到的余弦相似度用 softmax 计算每个相似度量的概率 p ^ ( c i ∣ I ) \hat{p}(c_i | I) p^(ciI)

p ^ ( c i ∣ I ) = exp ⁡ ( logit ( c i ∣ I ) ) ∑ i = 1 K exp ⁡ ( logit ( c i ∣ I ) ) (2) \hat{p}(c_i|I) = \frac{\exp(\text{logit}(c_i | I))}{\sum_{i=1}^{K} \exp(\text{logit}(c_i | I))} \tag{2} p^(ciI)=i=1Kexp(logit(ciI))exp(logit(ciI))(2)

e a u t o = ∑ i = 1 K p ^ ( c i ∣ I ) ε T ( T i ) (3) e_{auto} = \sum_{i=1}^{K} \hat{p}(c_i | I) \varepsilon_{T}(T_i) \tag{3} eauto=i=1Kp^(ciI)εT(Ti)(3)

图像质量评估的简单微调,在 CLIP 模型的优化期间,我们冻结文本编码器 ε T \varepsilon_{T} εT 的参数,并使用多类别保真度损失微调图像编码器 ε I \varepsilon_{I} εI。保真度损失可以表示为:

L F I D = 1 − ∑ i = 1 K y ( c i ∣ I ) p ^ ( c i ∣ I ) (4) L_{FID} = 1 - \sum_{i=1}^{K} \sqrt{y(c_i | I) \hat{p}(c_i | I)} \tag{4} LFID=1i=1Ky(ciI)p^(ciI) (4)

其中, y ( c i ∣ I ) y(c_i | I) y(ciI) 表示一个二分类的变量,如果某个退化类型占主导,那么该变量值为 1,否则为 0 。

图像质量评估的语义无关约束微调,由于原始的 CLIP 模型是在诸如图像分类等任务上进行预训练的,其相应的 ε I \varepsilon_{I} εI 编码器倾向于根据图像的语义信息(例如,猫或狗)而不是图像质量(例如,有噪点或清晰)对图像进行编码。当我们根据图像质量微调 CLIP 模型以生成用于 BIQA 的文本时,这成为一个显著的限制。如图 3 a)和 b)所示,由原始 CLIP 和在有雾图像上微调的 CLIP 提取的图像嵌入,以及它们相应的真实干净图像,无法分开,这表明其重点在于语义信息而非图像质量差异。
在这里插入图片描述

为了解决这个问题,我们提出了一种称为语义无关约束损失 L S A L_{SA} LSA 的新方法来规范微调过程,并防止模型仅仅依赖语义信息而非图像质量。当 CLIP 模型表明在真实干净图像 I g t I_{gt} Igt(对应于退化图像 I I I)中存在伪影 c i c_i ci 时,语义无关损失 L S A L_{SA} LSA 会施加惩罚。这种惩罚迫使 CLIP 模型根据图像质量区分 I g t I_{gt} Igt I I I,鼓励 CLIP 图像编码器 ε I \varepsilon_{I} εI 专注于提取图像质量信息而非语义信息。这种约束损失可以通过以下等式推导得出:

L S A = ∑ i = 1 K y ( c i ∣ I ) p ^ ( c i ∣ I g t ) (5) L_{SA} = \sum_{i=1}^{K} \sqrt{y(c_i | I)\hat{p}(c_i | I_{gt})} \tag{5} LSA=i=1Ky(ciI)p^(ciIgt) (5)

L S A L_{SA} LSA L F I D L_{FID} LFID 结合,得到最终的微调 loss:

L B I Q A = L F I D + λ L S A (6) L_{BIQA} = L_{FID} + \lambda L_{SA} \tag{6} LBIQA=LFID+λLSA(6)

All-in-one Image Restoration (AIR)

一体化图像恢复(AIR)阶段旨在在一个共享的框架中处理多种退化。基于扩散的生成模型的最新进展已经展示了它们生成多样化图像的卓越能力,使其适用于多任务图像恢复。先前的研究已经表明,生成模型具有生成缺失或扭曲细节的卓越能力,特别是对于需要虚构的任务,例如超分辨率。基于这些见解,我们基于隐扩散模型(LDM)进行 AIR 阶段。LDM 结合了文本和图像嵌入条件,使用生成先验来恢复图像 I s d I_{sd} Isd。文本嵌入条件 e = { e a u t o , e u s e r } e = \{ e_{auto}, e_{user} \} e={eauto,euser} 旨在区分不同类型的图像退化,而来自 LDM 的图像编码器 ε l d m \varepsilon_{ldm} εldm 的潜在图像嵌入条件 z I = ε l d m ( I ) z_{I} = \varepsilon_{ldm}(I) zI=εldm(I) 提供了结构信息。

然而,尽管基于 LDM 的生成模型可以为多任务图像恢复提供基础,但由于具有变分自编码器(VAE)的压缩重建过程,它们在重建具有复杂和小结构的图像方面存在局限性,有工作试图通过在特定类别的图像(例如,人脸)上重新训练变分自编码器(VAE)网络以学习专门的概率分布来减少压缩重建过程引起的失真。然而,由于图像内容的多样性,这种方法不适用于图像恢复任务。为了解决这些限制,我们向 LDM 引入了一个轻量级的插件式结构校正模块,增强了其在图像恢复期间处理复杂和小结构的能力。

结构校正潜在扩散模型(SC-LDM), 虽然基于 LDM 的生成模型可以为多任务图像恢复提供基础,但人们普遍注意到它们可能无法保持原始图像结构,例如人脸和文本,如图 4 所示。为了解决结构失真问题,我们采用了一个有效的结构校正模块(SCM),记为 F \mathcal{F} F。SCM 的目的是以残差的方式从原始图像中提取上下文信息 R \mathcal{R} R,并将其与中间图像恢复结果 I s d I_{sd} Isd 相结合。这通过以下等式实现

在这里插入图片描述

I r e s = I s d + w ⋅ F ( [ I s d , I ] ) (7) I_{res} = I_{sd} + w \cdot \mathcal{F}([I_{sd}, I]) \tag{7} Ires=Isd+wF([Isd,I])(7)

其中 [ ] 表示连接,并且 w 是一个可调节系数,其范围在 0 到 1 之间。w 的值决定了利用上下文信息来恢复最终结果的程度。w 的值较大时强调上下文信息的使用,这对于需要结构一致性的任务(例如低光增强)是有益的。相反,w 的值较小时通常用于保持潜在扩散模型对于像超分辨率这样的任务的生成能力。通过集成 SCM,AutoDIR 有效地恢复了原始图像的失真上下文,如 图 4 所示,无缝地整合了在编辑阶段所做的增强。

在训练阶段,我们为图像恢复任务对潜在扩散模型(LDM)的 UNet 的 backbone ϵ θ ( e , [ z t , z I ] , t ) \epsilon_{\theta}(e, [z_t, z_{I}], t) ϵθ(e,[zt,zI],t) 进行微调,其目标函数为:

L L D = E ε l d m ( x ) , c I , e , ϵ , t [ ∥ ϵ − ϵ θ ( e , [ z t , z I ] , t ) ∥ 2 2 ] (8) L_{LD} = \mathbb{E}_{\varepsilon_{ldm}(x), c_I, e, \epsilon, t} [ \left \| \epsilon - \epsilon_{\theta}(e, [z_t, z_{I}], t) \right \|_{2}^{2} ] \tag{8} LLD=Eεldm(x),cI,e,ϵ,t[ϵϵθ(e,[zt,zI],t)22](8)

对于结构校正潜在扩散模型(SC-LDM),我们不使用耗时的完整逆向采样过程来生成编辑后的隐变量 z ^ t \hat{z}_t z^t,而是利用通过以下方式计算得到的估计编辑后的隐变量 z ~ \tilde{z} z~

z ~ = z t α ˉ − 1 − α ˉ ( ϵ θ ( e , [ z t , z I ] , t ) ) α ˉ (9) \tilde{z} = \frac{z_t}{\sqrt{\bar{\alpha}}} - \frac{\sqrt{1 - \bar{\alpha}}( \epsilon_{\theta}(e, [z_t, z_{I}], t) )}{\sqrt{\bar{\alpha}}} \tag{9} z~=αˉ ztαˉ 1αˉ (ϵθ(e,[zt,zI],t))(9)

其中 α \alpha α 表示引入的噪声调度器。结构校正潜在扩散模型(SC-LDM)的损失函数进一步定义为:

L A I R = ∥ I g t − ( F ( D ( z ~ ) , I ) + D ( z ~ ) ) ∥ (10) L_{AIR} = \left \| I_{gt} - (\mathcal{F}(\mathcal{D}(\tilde{z}), I) + \mathcal{D}(\tilde{z}) ) \right \| \tag{10} LAIR=Igt(F(D(z~),I)+D(z~))(10)

处理多任务图像恢复的机制

图 5 展示了我们在逆向扩散过程中探索文本条件解开不同图像恢复任务机制的实验。我们发现不同的文本条件会产生不同的交叉注意力图。如图 5 所示,改变文本提示会导致交叉注意力图发生显著变化。该图与文本提示紧密对齐,对于 “去雾” 提示,注意力在整个图像上均匀分布;对于 “低分辨率” 提示,注意力集中在具有边缘或纹理的部分;对于 “去雨滴” 提示,注意力集中在诸如雨滴等特定区域。这表明 AutoDIR 可以将扩散注意力引导到更有可能存在图像伪影的区域。

在这里插入图片描述

相关文章:

论文阅读:AutoDIR Automatic All-in-One Image Restoration with Latent Diffusion

论文阅读:AutoDIR: Automatic All-in-One Image Restoration with Latent Diffusion 这是 ECCV 2024 的一篇文章,利用扩散模型实现图像恢复的任务。 Abstract 这篇文章提出了一个创新的 all-in-one 的图像恢复框架,融合了隐扩散技术&#x…...

C++ | Leetcode C++题解之第392题判断子序列

题目&#xff1a; 题解&#xff1a; class Solution { public:bool isSubsequence(string s, string t) {int n s.size(), m t.size();vector<vector<int> > f(m 1, vector<int>(26, 0));for (int i 0; i < 26; i) {f[m][i] m;}for (int i m - 1; …...

操作系统概述(三、虚拟化)

系列文章目录 文章目录 系列文章目录前言十一、操作系统上的进程1. 从系统启动到第一个进程系统调用&#xff1a;fork(), 创建进程execv()PATH环境变量销毁进程 十二、进程的地址空间**查看进程的地址空间**进程地址空间管理进程地址空间隔离 十三、系统调用和 shell十四、C标准…...

基于ARM芯片与OpenCV的工业分拣机器人项目设计与实现流程详解

一、项目概述 项目目标和用途 本项目旨在设计和实现一套工业分拣机器人系统&#xff0c;能够高效、准确地对不同类型的物品进行自动分拣。该系统广泛应用于物流、仓储和制造业&#xff0c;能够显著提高工作效率&#xff0c;降低人工成本。 技术栈关键词 ARM芯片 步进电机控…...

UNITY UI简易反向遮罩

附带示例资源文件&#xff1a;https://download.csdn.net/download/qq_55895529/89726994?spm1001.2014.3001.5503 大致效果&#xff1a; 实现思路:通过ui shader的模板测试功能实现 通过让想要被突出显示的物体优先渲染并写入模板值,而后再让黑色遮罩渲染并判断模板值进行渲…...

牛客周赛59(A,B,C,D,E二维循环移位,F范德蒙德卷积)

比赛链接 官方讲解 很幸运参加了内测&#xff0c;不过牛客这消息推送天天发广告搞得我差点错过内测消息&#xff0c;差点进小黑屋&#xff0c;好在开赛前一天看到了。 这场不难&#xff0c;ABC都很签到&#xff0c;D是个大讨论&#xff0c;纯屎&#xff0c;E是需要对循环移位…...

C语言中的隐型计算

隐型计算&#xff08;Implicit Computation&#xff09;是C语言中一个不易察觉的特性&#xff0c;它发生在类型转换和操作顺序不明确的场合。隐型计算可能导致数据溢出、精度丢失或者不正确的结果。 例如&#xff0c;当你在一个int类型和unsigned类型混合的表达式中使用时&…...

ffmpeg面向对象-待定

1.常用对象 rtsp拉流第一步都是avformat_open_input&#xff0c;其入参可以看下怎么用&#xff1a; AVFormatContext *fmt_ctx NULL; result avformat_open_input(&fmt_ctx, input_filename, NULL, NULL);其中fmt_ctx 如何分配内存的&#xff1f;如下 int avformat_ope…...

大厂嵌入式数字信号处理器(DSP)面试题及参考答案

什么是模拟信号处理和数字信号处理(DSP)在嵌入式系统中的应用? 模拟信号处理是对连续变化的模拟信号进行操作和处理。在嵌入式系统中,模拟信号处理的应用包括传感器信号的调理,例如温度传感器、压力传感器等输出的模拟信号通常比较微弱且可能受到噪声干扰,需要通过放大器…...

GC-分代收集器

GC收集器介绍 十款GC收集器 上图中共有十款GC收集器&#xff0c;它们可以根据回收时的属性分为分代和分区两种类型&#xff1a; 分代收集器&#xff1a;Serial、ParNew、Parallel Scavenge、CMS、Serial Old&#xff08;MSC&#xff09;、Parallel Old 分区收集器&#xff…...

C++从入门到起飞之——priority_queue(优先级队列) 全方位剖析!

&#x1f308;个人主页&#xff1a;秋风起&#xff0c;再归来~&#x1f525;系列专栏&#xff1a;C从入门到起飞 &#x1f516;克心守己&#xff0c;律己则安 目录 1、priority_queue的介绍 2、priority_queue的使用 3、priority_queue的模拟实现 3.1、仿函数的介…...

[数据集][目标检测]西红柿缺陷检测数据集VOC+YOLO格式17318张3类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;17318 标注数量(xml文件个数)&#xff1a;17318 标注数量(txt文件个数)&#xff1a;17318 标…...

【小沐学OpenGL】Ubuntu环境下glut的安装和使用

文章目录 1、简介1.1 OpenGL简介1.2 glut简介1.3 freeglut 2、glut安装2.1 命令安装glut2.2 源码安装glut 3、glut测试3.1 测试1&#xff0c;版本打印3.2 测试2&#xff0c;绘制三角形3.3 测试3&#xff0c;VBO绘制三角形 结语 1、简介 1.1 OpenGL简介 OpenGL作为图形界的工业…...

ROS 发行版 jazzy 加载urdf 渲染到 RVIZ2

新版启动urdf需要两个包分别为urdf_tutorial、urdf_launch 配置package.xml <exec_depend>rviz_common</exec_depend> <exec_depend>rviz_default_plugins</exec_depend> <exec_depend>rviz2</exec_depend> <exec_depend>robot…...

SpringBoot中利用EasyExcel+aop实现一个通用Excel导出功能

一、结果展示 主要功能&#xff1a;可以根据前端传递的参数&#xff0c;导出指定列、指定行 1.1 案例一 前端页面 传递参数 {"excelName": "导出用户信息1725738666946","sheetName": "导出用户信息","fieldList": [{&q…...

排序链表(归并排序)

148. 排序链表 - 力扣&#xff08;LeetCode&#xff09; 以O(nlogn)时间复杂度&#xff0c; O(1)空间复杂度 排序链表 涉及知识点&#xff1a; 找到链表的中间节点 2095. 删除链表的中间节点 - 力扣&#xff08;LeetCode&#xff09;合并有序链表 21. 合并两个有序链…...

Adobe After Effects的插件--------CC Particle World

CC Particle World是一个粒子效果器,用于在三维空间中生成和模拟各种粒子系统,包括火焰、雨、雪、爆炸、烟雾等等。它会自动随时间变化发射粒子。 本文部分参照 https://www.163.com/dy/article/IEJVDN760536FE6V.html 使用条件 使用该插件的图层需是2D图层。 我们新建一个…...

电脑硬盘数据丢失了怎么恢复?简单实用的硬盘数据找回的方法

我们的电脑使用硬盘作为存储设备来保存数据&#xff0c;硬盘里的数据是存储在扇区上&#xff0c;这些存储数据的单元则位于表面有磁性材料的旋转的盘片上。硬盘内部的磁头悬浮于高速旋转的盘片上&#xff0c;用于读写和检索数据。 假如我们使用电脑时不小心删除了某个文件&…...

k8s调度(pod亲和、反亲和、污点、容忍度)

pod亲和性 针对对象为Pod&#xff0c;目的是实现&#xff0c;新建Pod和目标Pod调度到一起&#xff0c;在同一个Node上。 示例&#xff1a; apiVersion: v1 kind: Pod metadata:name: testpod01labels:app: myapp01env: test1 spec:containers:- name: testpod01image: nginx:…...

智能制造核心领域:自动化、物联网、大数据分析、人工智能在现代制造业中的应用与融合

一、智能制造系统及领域 智能制造系统是一套集成的解决方案&#xff0c;它利用物联网&#xff08;IoT&#xff09;、大数据分析、人工智能&#xff08;AI&#xff09;、机器学习和云计算等技术&#xff0c;实现工厂和生产线的自动化、数据驱动和智能化。这些系统能够监控和控制…...

从零实现富文本编辑器#5-编辑器选区模型的状态结构表达

先前我们总结了浏览器选区模型的交互策略&#xff0c;并且实现了基本的选区操作&#xff0c;还调研了自绘选区的实现。那么相对的&#xff0c;我们还需要设计编辑器的选区表达&#xff0c;也可以称为模型选区。编辑器中应用变更时的操作范围&#xff0c;就是以模型选区为基准来…...

【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表

1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...

云原生安全实战:API网关Kong的鉴权与限流详解

&#x1f525;「炎码工坊」技术弹药已装填&#xff01; 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念 1. API网关&#xff08;API Gateway&#xff09; API网关是微服务架构中的核心组件&#xff0c;负责统一管理所有API的流量入口。它像一座…...

【HarmonyOS 5】鸿蒙中Stage模型与FA模型详解

一、前言 在HarmonyOS 5的应用开发模型中&#xff0c;featureAbility是旧版FA模型&#xff08;Feature Ability&#xff09;的用法&#xff0c;Stage模型已采用全新的应用架构&#xff0c;推荐使用组件化的上下文获取方式&#xff0c;而非依赖featureAbility。 FA大概是API7之…...

基于Uniapp的HarmonyOS 5.0体育应用开发攻略

一、技术架构设计 1.混合开发框架选型 &#xff08;1&#xff09;使用Uniapp 3.8版本支持ArkTS编译 &#xff08;2&#xff09;通过uni-harmony插件调用原生能力 &#xff08;3&#xff09;分层架构设计&#xff1a; graph TDA[UI层] -->|Vue语法| B(Uniapp框架)B --&g…...

Vue 实例的数据对象详解

Vue 实例的数据对象详解 在 Vue 中,数据对象是响应式系统的核心,也是组件状态的载体。理解数据对象的原理和使用方式是成为 Vue 专家的关键一步。我将从多个维度深入剖析 Vue 实例的数据对象。 一、数据对象的定义方式 1. Options API 中的定义 在 Options API 中,使用 …...

AT模式下的全局锁冲突如何解决?

一、全局锁冲突解决方案 1. 业务层重试机制&#xff08;推荐方案&#xff09; Service public class OrderService {GlobalTransactionalRetryable(maxAttempts 3, backoff Backoff(delay 100))public void createOrder(OrderDTO order) {// 库存扣减&#xff08;自动加全…...

从0开始学习R语言--Day17--Cox回归

Cox回归 在用医疗数据作分析时&#xff0c;最常见的是去预测某类病的患者的死亡率或预测他们的结局。但是我们得到的病人数据&#xff0c;往往会有很多的协变量&#xff0c;即使我们通过计算来减少指标对结果的影响&#xff0c;我们的数据中依然会有很多的协变量&#xff0c;且…...

python数据结构和算法(1)

数据结构和算法简介 数据结构&#xff1a;存储和组织数据的方式&#xff0c;决定了数据的存储方式和访问方式。 算法&#xff1a;解决问题的思维、步骤和方法。 程序 数据结构 算法 算法 算法的独立性 算法是独立存在的一种解决问题的方法和思想&#xff0c;对于算法而言&a…...

安全领域新突破:可视化让隐患无处遁形

在安全领域&#xff0c;隐患就像暗处的 “幽灵”&#xff0c;随时可能引发严重事故。传统安全排查手段&#xff0c;常常难以将它们一网打尽。你是否好奇&#xff0c;究竟是什么神奇力量&#xff0c;能让这些潜藏的隐患无所遁形&#xff1f;没错&#xff0c;就是可视化技术。它如…...