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

【LLIE专题】基于码本先验与生成式归一化流的低光照图像增强新方法

在这里插入图片描述

GLARE: Low Light Image Enhancement via Generative Latent Feature based Codebook Retrieval(2024,ECCV)

  • 专题介绍
  • 一、研究背景
  • 二、GLARE方法
      • 阶段一:正常光照代码本学习(Normal-Light Codebook Learning)
      • 1. 训练目标
      • 2. 网络结构
      • 3. 公式
    • 阶段二:生成潜在特征学习(Generative Latent Feature Learning)
      • 1. 训练目标
      • 2. 网络结构
      • 3. 公式
    • 阶段三:自适应特征转换与图像解码(Adaptive Feature Transformation and Image Decoding)
      • 1. 训练目标
      • 2. 网络结构
  • 三、实验结果
      • 1. 定量结果
      • 2. 定性结果
    • 3. 消融研究
  • 四、总结
      • 优势
      • 局限性
      • 个人思考

本文将对 GLARE: Low Light Image Enhancement via Generative Latent Feature based Codebook Retrieval,这篇暗光增强算法进行讲解。参考资料如下:
[1] GLARE 文章
[2] GLARE 代码


专题介绍

在低光照环境下,传统成像设备往往因画面昏暗、细节丢失而受限。LLIE(低照度暗光增强)技术应运而生,它通过提升图像亮度、对比度,减少噪点并恢复色彩细节,让暗夜变得清晰可见。

LLIE技术从传统方法如直方图均衡化、Retinex模型等起步,近年来借助深度学习,尤其是卷积神经网络(CNN),GAN模型,扩散模型实现了质的飞跃。这些算法能自动学习图像特征,精准处理低光照图像,效果显著优于传统技术。

本专题将聚焦LLIE技术的核心原理、应用案例及最新进展,让我们一起见证LLIE如何点亮暗夜,开启视觉新视界!欢迎一起探讨交流!

系列文章如下
【1】ZeroDCE
【2】HVI
【3】CLIP-LIT


一、研究背景

现有的基于深度学习的LLIE方法大多存在一些局限性,比如这些模型在处理具有复杂光照变化和场景差异的图像时,泛化能力不足。为了改善这类问题,作者提出了GLARE(Generative Latent Feature based Codebook Retrieval for Low Light Image Enhancement)方法,将Codebook技术引入到了LLIE任务中。GLARE 方法的核心思想是利用编码本中的潜在特征来指导低光照图像的增强过程。具体来说,该方法首先将输入的低光照图像分解为多个潜在特征,这些潜在特征能够捕捉图像的不同属性,如亮度、颜色、纹理等。然后,通过检索与之匹配的高质量潜在特征,将这些高质量潜在特征与原始低光照图像特征进行融合,从而生成增强后的图像。

二、GLARE方法

在这里插入图片描述

整个训练过程分为三个阶段,每个阶段都有其独特的训练目标和网络结构。

阶段一:正常光照代码本学习(Normal-Light Codebook Learning)

1. 训练目标

在第一阶段,主要目标是利用大量高质量、正常光照的图像数据,通过自监督的方式学习一个通用且全面的正常光照图像特征码本。这个码本能够捕捉正常光照图像的各种特征模式,为后续的低光照到正常光照映射提供先验知识。

2. 网络结构

阶段一使用了类似 VQGAN 的结构,包括正常光照编码器(NL Encoder)和正常光照解码器(NL Decoder,Dnl)。

  • 正常光照编码器(NL Encoder) :将输入的正常光照图像 I n l {I}_{nl} Inl转化为潜在特征表示 z n l {z}_{nl} znl。其结构通常由多个卷积层、激活函数和可能的归一化层组成,用于提取图像的高级特征。
  • 正常光照解码器(NL Decoder,Dnl) :将量化后的潜在特征 z q {z}_{q} zq转换回图像空间,重建正常光照图像 I n l r e c {I}_{nl}^{rec} Inlrec。解码器的结构通常是编码器的逆过程,包含反卷积层或上采样层,以逐步恢复图像的空间分辨率。

3. 公式

对于输入的正常光照图像 I n l {I}_{nl} Inl,通过正常光照编码器 E n l E_{nl} Enl得到潜在特征 z n l {z}_{nl} znl

z n l = E n l ( I n l ) \mathbf{z}_{nl} = E_{nl}(\mathbf{I}_{nl}) znl=Enl(Inl)

其中, E n l E_{nl} Enl表示正常光照编码器, I n l {I}_{nl} Inl是输入的正常光照图像。

然后,利用最近邻匹配,将每个潜在特征向量 z n l i {z}_{nl}^{i} znli 量化到代码本 C C C 中最近的{z}_{q}^{i}:

z q i = NearestNeighbour ( z n l i , C ) \mathbf{z}_{q}^{i} = \text{NearestNeighbour}(\mathbf{z}_{nl}^{i}, C) zqi=NearestNeighbour(znli,C)

这里,代码本 C C C 是一个包含 Nc 个离散码字的集合,每个码字代表一种特定的特征模式,即
C = [ c 1 , c 2 , … , c N c ] ∈ R d × N c C = [\mathbf{c}_1, \mathbf{c}_2, \ldots, \mathbf{c}_{N_c}] \in \mathbb{R}^{d \times N_c} C=[c1,c2,,cNc]Rd×Nc

量化后的潜在特征 z q {z}_{q} zq被送入正常光照解码器 Dnl 来生成重建图像 I n l r e c {I}_{nl}^{rec} Inlrec

I n l r e c = D n l ( z q ) \mathbf{I}_{nl}^{rec} = D_{nl}(\mathbf{z}_{q}) Inlrec=Dnl(zq)

其中, D n l D_{nl} Dnl表示正常光照解码器。

阶段二:生成潜在特征学习(Generative Latent Feature Learning)

1. 训练目标

阶段二的目标是学习从低光照特征到正常光照特征的分布转换。通过训练条件编码器(Conditional Encoder)和可逆潜在归一化流(Invertible Latent Normalizing Flow,I-LNF)模块,使低光照特征能够更好地匹配正常光照特征的分布,从而提升图像增强效果。

2. 网络结构

在阶段二中,主要优化两个关键组件:条件编码器(Conditional Encoder)和可逆潜在归一化流(I-LNF)模块。

  • 条件编码器(Conditional Encoder) :其结构与正常光照编码器相同,输入低光照图像 I l l {I}_{ll} Ill,输出条件特征 c l l {c}_{ll} cll。它用于提取低光照图像的特征,并为后续的特征转换提供条件信息。
  • I-LNF 模块 :通过可逆网络实现(可逆网络是一种特殊的深度学习网络,其设计目标是使得网络的前向传播和后向传播都是可逆的。这意味着,给定网络的输出,我们可以通过逆向传播精确地恢复出网络的输入),记为 f θ f_{\theta} fθ。该模块利用条件特征 c l l {c}_{ll} cll 将复杂的正常光照特征分布 z n l {z}_{nl} znl转换为潜在特征 v = f θ ( z n l ; c l l ) \mathbf{v} = f_{\theta}(\mathbf{z}_{nl}; \mathbf{c}_{ll}) v=fθ(znl;cll)。阶段二的目标是在 v \mathbf{v} v的空间中获得一个简化的分布 p v ( v ) \mathbf{p}_{\mathbf{v}}(\mathbf{v}) pv(v),例如高斯分布。

3. 公式

阶段二的训练目标是最小化负对数似然(Negative Log-Likelihood,NLL),具体公式如下:

L ( θ ; c l l , z n l ) = − log ⁡ p z n l ∣ c l l ( z n l ∣ c l l , θ ) \mathcal{L}(\theta; \mathbf{c}_{ll}, \mathbf{z}_{nl}) = -\log p_{\mathbf{z}_{nl}|\mathbf{c}_{ll}}(\mathbf{z}_{nl}|\mathbf{c}_{ll}, \theta) L(θ;cll,znl)=logpznlcll(znlcll,θ)

进一步展开,可以表示为:

L ( θ ; c l l , z n l ) = − log ⁡ p v ( v ) − ∑ i = 1 N log ⁡ ∣ det ⁡ ∂ f θ i ∂ h i − 1 ( h i − 1 ; c l l ) ∣ \mathcal{L}(\theta; \mathbf{c}_{ll}, \mathbf{z}_{nl}) = -\log p_{\mathbf{v}}(\mathbf{v}) - \sum_{i=1}^{N} \log \left| \det \frac{\partial f_{\theta}^i}{\partial \mathbf{h}^{i-1}}(\mathbf{h}^{i-1}; \mathbf{c}_{ll}) \right| L(θ;cll,znl)=logpv(v)i=1Nlog dethi1fθi(hi1;cll)

其中:

  • p v ( v ) p_{\mathbf{v}}(\mathbf{v}) pv(v)是潜在特征 v \mathbf{v} v的分布,假设为高斯分布,即 v ∼ N ( 0 , I ) \mathbf{v} \sim \mathcal{N}(\mathbf{0}, \mathbf{I}) vN(0,I)
  • f θ i f_{\theta}^i fθi 表示可逆网络的第 i 层。
  • h i − 1 \mathbf{h}^{i-1} hi1是第 (i-1) 层的特征。
  • N N N 是可逆层的总数。

通过最小化上述损失函数,可以训练条件编码器和 I-LNF 模块,使低光照特征分布与正常光照特征分布对齐。
此时可以从 中 v ∼ p v ( v ) v \sim p_v(v) vpv(v)采样并使用完全可逆的网络 f θ f_{\theta} fθ得到低光照输入的高质量特征 z l l = f θ − 1 ( v ; c l l ) z_{ll} = f_\theta^{-1}(v; c_{ll}) zll=fθ1(v;cll);用低光照输入的高质量特征去匹配码本里面由正常光照图像生产的高质量特征就更加容易(相较于直接从低质量图像特征 c l l {c}_{ll} cll匹配先验的高质量特征)。

阶段三:自适应特征转换与图像解码(Adaptive Feature Transformation and Image Decoding)

1. 训练目标

阶段三的训练目标是在固定码本、正常光照解码器、条件编码器和 I-LNF 模块的基础上,通过自适应特征转换策略,进一步提升图像增强的细节和保真度,使生成的正常光照图像更加逼真、精细。

2. 网络结构

阶段三主要包括固定正常光照解码器(Dnl)、自适应特征转换模块(Adaptive Feature Transformation,AFT)。AFT 模块包含自适应混合块(Adaptive Mix-up Block,AMB)和多尺度融合解码器(Multi-scale Fusion Decoder,MFD)。

  • 固定正常光照解码器(Dnl) :在阶段一中已经训练完成,用于将潜在特征转换为正常光照图像。
  • 自适应混合块(AMB) :根据低光照特征和生成的正常光照特征的相似性自适应地调整它们的权重,实现特征的融合。AMB 通过学习一组可调参数,动态地确定低光照特征和生成特征在融合过程中的贡献比例。
  • 多尺度融合解码器(MFD) :在多个尺度上对特征进行融合和解码,得到最终的增强图像。MFD 通常包含多个分支,每个分支处理不同尺度的特征,然后将这些特征进行融合,以充分利用不同尺度的信息。

综上所述,GLARE 通过三个阶段的训练,逐步实现了低光照图像的增强。阶段一学习正常光照图像的特征码本;阶段二学习从低光照特征到正常光照特征的分布转换;阶段三通过自适应特征转换和多尺度融合解码进一步提升图像质量。这些阶段相互配合,使得 GLARE 能够有效地处理低光照图像,生成高质量的正常光照图像。

三、实验结果

1. 定量结果

作者将 GLARE 方法与其他几种先进的低光照图像增强方法在不同的数据集上进行了比较,如下表所示
在这里插入图片描述

实验结果表明,GLARE 在多个评估指标上均优于或接近这些方法。

2. 定性结果

在这里插入图片描述

除了定量评估,作者还通过视觉效果展示了 GLARE 的增强效果。通过对比低光照输入图像、其他方法的增强结果以及 GLARE 的增强结果,可以明显看出 GLARE 在细节恢复、色彩还原和整体视觉效果上的优势。GLARE 增强后的图像不仅在亮度上得到了提升,而且在细节和色彩上也更加逼真,产生了更加令人愉悦的效果。

3. 消融研究

在这里插入图片描述
为了验证阶段一(正常光照代码本学习)对最终结果的影响,作者进行了消融实验。实验结果表明,当不使用阶段一学习到的代码本时,模型的性能明显下降。这说明阶段一学习到的正常光照特征代码本对低光照图像增强起到了重要的先验作用,有助于模型更好地理解和生成正常光照图像。

其他模块作者同样也做了消融研究,具体可参考论文。

四、总结

《GLARE: Low Light Image Enhancement via Generative Latent Feature based Codebook Retrieval》提出了一种新颖的低光照图像增强方法,通过生成潜在特征的码本检索来实现高质量的图像增强。

优势

  • 分阶段学习策略:通过三个阶段逐步优化模型,充分利用正常光照图像的先验特征,逐步提升图像增强效果。
  • 自适应特征转换:通过自适应混合块(AMB)和多尺度融合解码器(MFD),能够动态调整特征融合比例,生成更加逼真和自然的图像。
  • 高质量代码本:在第一阶段学习到的高质量代码本为后续阶段提供了强大的先验知识,有助于模型更好地理解和生成正常光照图像。

局限性

  • 计算资源需求:模型的训练和推理过程需要较高的计算资源,这可能限制了其在实际应用中的实时性。

个人思考

GLARE 方法通过分阶段学习和自适应特征转换,有效地解决了低光照图像增强中的关键问题。这种方法不仅在理论上具有创新性,而且在实际应用中也表现出色。基于本方案,博主认为还能做以下一些尝试和研究:

  1. 多模态数据融合:在低光照图像增强中,除了利用正常光照图像的先验特征,还可以考虑引入其他模态的数据,如红外图像、深度图像等。通过多模态数据融合,可以进一步提升模型的鲁棒性和性能。

  2. 跨领域应用:GLARE 方法不仅适用于低光照图像增强,还可以扩展到其他图像处理任务,如图像复原任务等。

总之,GLARE 方法为低光照图像增强领域提供了一种新的思路和方法。


感谢阅读,欢迎留言或私信,一起探讨和交流。

相关文章:

【LLIE专题】基于码本先验与生成式归一化流的低光照图像增强新方法

GLARE: Low Light Image Enhancement via Generative Latent Feature based Codebook Retrieval(2024,ECCV) 专题介绍一、研究背景二、GLARE方法阶段一:正常光照代码本学习(Normal-Light Codebook Learning&#xff09…...

26考研 | 王道 | 计算机组成原理 | 一、计算机系统概述

26考研 | 王道 | 计算机组成原理 | 一、计算机系统概述 文章目录 26考研 | 王道 | 计算机组成原理 | 一、计算机系统概述1.1 计算机的发展1.2 计算机硬件和软件1.2.1 计算机硬件的基本组成1.2.2 各个硬件的工作原理1.2.3 计算机软件1.2.4 计算机系统的层次结构1.2.5 计算机系统…...

Linux云计算训练营笔记day08(MySQL数据库)

Linux云计算训练营笔记day08(MySQL数据库) 目录 Linux云计算训练营笔记day08(MySQL数据库)数据准备修改更新update删除delete数据类型1.整数类型2.浮点数类型(小数)3.字符类型4.日期5.枚举: 表头的值必须在列举的值里选择拷贝表复…...

从基础到实习项目:C++后端开发学习指南

在当今技术快速迭代的背景下,后端开发作为软件工程的核心支柱持续发挥着关键作用。C凭借其卓越的性能表现和系统级控制能力,依然是构建高性能后端服务的首选语言之一。本文将系统性地解析现代C后端开发的核心技术体系,包括从语言特性精要到架…...

jedis+redis pipeline诡异的链接损坏、数据读取异常问题解决

文章目录 问题现象栈溢出(不断的重连)读取超时未知响应尝试读取损坏的链接读取到的数据和自己要读的无关,导致空指针、类型转换错误,数据读取错乱 问题写法问题分析修复注意点 问题现象 栈溢出(不断的重连&#xff09…...

十、HQL:排序、联合与 CTE 高级查询

作者:IvanCodes 日期:2025年5月15日 专栏:Hive教程 Apache Hive 作为大数据领域主流的数据仓库解决方案,其查询语言 HQL (Hive Query Language) 是数据分析师和工程师日常工作的核心。除了基础的 SELECT-FROM-WHERE,HQ…...

数据结构—排序(斐波那契数列,冒泡,选择,插入,快速,归并,图,广度优先算法)

目录 一 斐波那契数列(递归算法) 定义 原理 二 冒泡排序 定义 排序思路 函数原型 参数详解: 算法分析: 1. 使用函数库的qsort函数 2. 自定义冒泡排序 三 选择排序 定义 排序思路 四 插入排序 定义 排序思路 五 快速…...

NetSuite CSV导入Item Fulfillment的功能测试

上一篇我们说过如何通过CSV导入更新IF上的Department/Class信息,这篇是来测试一下如果SO在Pending Fulfillment的状态下通过CSV导入IF,这个新版本的一个功能,刚好将测试的过程与结果与大家分享~ 准备文件 External ID是外部ID; …...

网络原理 | 网络基础概念复习

目录 网络中的重要概念 IP地址 端口号 协议 五元组 协议分层 OSI七层网络模型 TCP/IP 五层(四层)模型 网络设备所在的分层 封装和分用 网络中的重要概念 IP地址 IP地址主要用于标识网络主机、其他网络设备的网络地址。在网络数据传输中&#…...

Vsan数据恢复——Vsan上虚拟机不可用,虚拟机组件信息破坏的数据恢复

Vsan数据恢复环境: 一台采用VsSAN分布式文件系统的存储设备由于未知原因关机重启。管理员发现上层的虚拟机不可用,存储内的数据丢失。 Vsan数据恢复过程: 1、将故障存储设备断电,将存储内的硬盘编号后取出。硬件工程师检测后没有发…...

V837s-LAN8720A网口phy芯片调试

目录 前言 一、LAN8720A 芯片概述 二、硬件连接 三、设备树配置 四、内核配置 五、网口调试 总结 前言 在嵌入式系统开发中,网络连接是至关重要的一部分。v837s开发板搭载了LAN8720A系列的网口PHY芯片,用于实现以太网连接。在开发过程中,对于网口的稳定性和性能的调试至…...

C++(12):using声明

目录 一、定义 二、核心用法示例 示例 1:单独引入 std::string 和 std::coun 示例 2:在局部作用域中使用 using 声明 三、对比 using namespace std(不推荐) 四、关键注意事项 1. 名称冲突问题 2. 作用域规则 3. 头文件中的陷阱 五、最佳实践总结 六、完整安全示…...

Xinference 命令大全:从模型部署到管理

Xinference 是一个高性能、分布式的模型推理框架,支持多种大语言模型(LLM)、嵌入模型(Embedding)和图像生成模型。本文将详细介绍 Xinference 的常用命令,涵盖模型启动、管理、监控及 API 调用,帮助你快速掌握其核心功能。 1. 安装与启动 Xinference 1.1 安装 Xinferen…...

如何在线免费压缩PDF文档?

PDF文件太大,通常是因为内部嵌入字体和图片。怎么才能将文件大小减减肥呢,主要有降低图片清晰度和去除相关字体两个方向来实现文档效果。接下来介绍三个免费压缩PDF实用工具。 (一)iLoveOFD在线转换工具 iLoveOFD在线转换工具&a…...

在Rocky Linux 9.5上部署MongoDB 8.0.9:从安装到认证的完整指南

mongodb 的部署 #安装依赖 yum -y install libcurl openssl #安装mongodb yum -y install https://repo.mongodb.org/yum/redhat/9/mongodb-org/8.0/x86_64/RPMS/mongodb-org-server-8.0.9-1.el9.x86_64.rpm #启动服务 systemctl start mongod.service && system…...

Unix Bourne Shell

本文来源 : 腾讯元宝 Unix Bourne Shell(简称sh)是Unix系统中最经典的命令行解释器(shell),由Stephen Bourne于1977年在贝尔实验室开发,并成为后续众多shell(如bash、ksh等&#xff…...

如何在 AWS 上构建支持 AVIF 的前端图片优化方案

一、为什么使用 AVIF 图片格式? 优势点 说明 高压缩率 在相似质量下,AVIF 文件比 JPEG/PNG/WebP 更小,能有效节省带宽和存储空间。 更高画质 即使在低码率下也能保持清晰细节,减少压缩带来的马赛克或模糊问题。 支持透明度 …...

Linux系统进行环境开发环境配置

一. 使用fishros(鱼香肉丝)配置开发环境 对于初学者来说,最难的关卡莫非是开发环境的的搭建,特别是在Ubuntu系统上ROS系统安装时后出现的各种报错以及失败,本篇博客讲述了ROS系统的一键安装过程,适用于18.04及以后的Ubuntu系统版本…...

前端npm的核心作用与使用详解

一、npm是什么? npm(Node Package Manager) 是 Node.js 的默认包管理工具,也是全球最大的开源代码库生态系统。虽然它最初是为 Node.js 后端服务设计的,但如今在前端开发中已成为不可或缺的基础设施。通过npm,开发者可以轻松安装、管理和共享代码模块。 特性: 依赖管理…...

软考软件评测师——软件工程之系统维护

一、系统质量属性 可维护性 衡量软件系统适应修改的难易程度,包括修复缺陷、扩展功能或调整规模的效率。计算公式为:系统可用时间占比 1/(1平均修复时间),其中平均修复时间(MTTR)指排除故障所需的平均耗时。 可靠性 vs 可用性 可靠性&…...

CSRF攻击 + 观测iframe加载时间利用时间响应差异侧信道攻击 -- reelfreaks DefCamp 2024

参考: https://0x90r00t.com/2024/09/30/3708/ 题目信息 有些事情最好还是保持低调。当然,除非你是个真正的怪胎。 注意:该网站通过HTTPS提供服务 标志格式:DCTF{}题目实现了一个类似视频网站的东西 在其提供的数据库中…...

火山RTC 8 SDK集成进项目中

一、SDK 集成预备工作 1、SDK下载 https://www.volcengine.com/docs/6348/75707 2、解压后 3、放在自己项目中的位置 1)、include 2)、lib 3)、dll 暂时,只需要VolcEngineRTC.dll RTCFFmpeg.dll openh264-4.dll, 放在intLive2…...

spring boot Controller 和 RestController 的区别

spring boot Controller 和 RestController 的区别 5.3.1常用注解 Spring MVC控制器中常使用的注解有如下几种。 Controller Controller 标记在类上。使用Controller 标记的类表示是Spring MVC的Controller对象。分发处理器将会扫描使用了该注解的类,并检测其中的…...

mavgenerate 在 win11 下环境搭建注意问题

开发随笔 mavgenerate 是mavlink配套的协议生成工具,mavgenerate 在 win11 下环境搭建注意问题: 1、Python 就使用文件包当中的版本,由于python 版本能与 future 及 pip 之间存在特定的组合关系,故不推荐下载使用最新版本 2、安…...

SSM项目集成redis、Linux服务器安装redis

在SSM(Spring Spring MVC MyBatis)项目中引入Redis主要分为以下步骤,确保配置正确并能在业务中灵活使用: 1. 添加Redis依赖​​ 在Maven的pom.xml中添加Spring Data Redis和Jedis(或Lettuce)依赖&#…...

sqli-labs靶场第七关——文件导出注入

一:目标 通过sql注入将php代码写入网站目录,通过这个php文件执行命令 二:确认前置条件 %secure_file_priv% 首先我们需要Mysql是否允许导出文件 先尝试在网页中sql注入,检查导出权限 ?id1)) union select 1,secure_file_pr…...

python使用matplotlib无法显示中文字体报错

python使用matplotlib字体报错 当我们使用python使用matplotlib总是出现报错,图片中文变成方框 findfont: Font family WenQuanYi Micro Hei not found. findfont: Font family Heiti TC not found. findfont: Font family [SimHei] not found. Falling back to De…...

VTEP是什么

VTEP(VXLAN Tunnel Endpoint,VXLAN 隧道端点)是 VXLAN(Virtual Extensible LAN)网络中的关键组件,用于处理 VXLAN 流量的封装和解封装。以下以可读的 Markdown 格式详细解释 VTEP 的定义、功能、实现方式以…...

React Native简介

React Native 是由 Meta(原 Facebook)开源的跨平台移动应用开发框架,基于 React 和 JavaScript,允许开发者使用同一套代码库构建 iOS 和 Android 原生应用。通过 JavaScript 调用原生组件实现高性能渲染。 跨平台开发 共享 80%-9…...

边缘计算模块

本文来源 :腾讯元宝 边缘计算模块是一种部署在网络边缘(靠近数据源)的集成化硬件/软件设备,用于实时处理本地数据,减少云端依赖,提升响应速度与安全性。以下是其核心要点: ​​1. 核心组成​​ …...

策略模式-枚举实现

策略模式的实现方法有很多,可以通过策略类if,else实现。下面是用枚举类实现策略模式的方法。 定义一个枚举类,枚举类有抽象方法,每个枚举都实现抽象方法。这个策略,实现方法是工具类的很实现,代码简单好理解 枚举实现…...

C++算法(22):二维数组参数传递,从内存模型到高效实践

引言 在C程序设计中,二维数组的参数传递是许多开发者面临的棘手问题。不同于一维数组的相对简单性,二维数组在内存结构、类型系统和参数传递机制上都存在独特特性。本文将深入探讨静态数组、动态数组以及STL容器三种实现方式,通过底层原理分…...

LeetCode LCR 015. 找到字符串中所有字母异位词 (Java)

LCR 015. 找到字符串中所有字母异位词 题目描述 给定两个字符串 s 和 p,要求找到 s 中所有是 p 的变位词(字母相同但排列不同)的子串,并返回这些子串的起始索引。例如: 输入 s "cbaebabacd", p "a…...

幼儿学前教育答辩词答辩技巧问题答辩自述稿

### 📘《幼儿园大班活动开展存在的问题及解决策略》📝 我的论文题目是《幼儿园大班活动开展存在的问题及解决策略》📖。我将从论文框架、研究内容、需要解决的问题、研究结论这四部分来阐述我的论文📝。 论文框架由绪论&#x1f4…...

双目立体视觉

文章目录 1,前言2,原理3,组成部分3.1,数字图像采集。3.2 ,相机标定。3.3,图像预处理与特征提取。3.4 ,图像校正。3.5 ,立体匹配。3.6 ,三维重建。 4,主要的算…...

机器人弧焊二八混合气体节约

焊接技术在现代工业生产中作为关键环节之一,其效率和成本直接影响到整个制造流程的经济性与环保性。近年来,随着节能减排理念深入人心,各行业都在积极探索绿色制造方案。在焊接领域,二八混合气体的应用结合WGFACS智能流量调节系统…...

Linux进程通讯和原子性

在Linux系统中,进程间通信(IPC)和原子性是并发编程中的核心问题。以下是对这些概念的详细分步解释: 一、进程间通信(IPC)方法 1. 管道(Pipe) 匿名管道:用于父子进程等有…...

深度学习之用CelebA_Spoof数据集搭建一个活体检测-一些模型训练中的改动带来的改善

实验背景 在前面的深度学习之用CelebA_Spoof数据集搭建一个活体检测-模型搭建和训练,我们基于CelebA_Spoof数据集构建了一个用SqueezeNe框架进行训练的活体2D模型,采用了蒸馏法进行了一些简单的工作。在前面提供的训练参数中,主要用了以下几…...

Oracle APEX IR报表列宽调整

1. 问题:如何调整Oracle APEX IR报表列宽 1-1. 防止因标题长而数据短,导致标题行的文字都立起来了,不好看。 1-2. 防止因数据太长而且中间还没有空格,把列撑开的太宽也不换行,不好看。 2. 解决办法 针对如上问题解…...

6大核心记忆方法

以下是结合脑科学原理和高效学习策略总结的 6大核心记忆方法,帮助你摆脱“学完就忘”的困境: 一、间隔重复与分散学习 遵循艾宾浩斯遗忘曲线:学习后20分钟遗忘58%,1天后遗忘66%。通过设定复习节点(如学后1天、3天、1周…...

conda更换清华源

1、概览 anaconda更换速度更快、更稳定的下载源,在linux环境测试通过。 2、conda源查看 在修改之前可以查看下现有conda源是什么,查看conda配置信息,如下: cat ~/.condarc 可以看到你的conda源,以我的conda源举例&am…...

5月15日星期四今日早报简报微语报早读

5月15日星期四,农历四月十八,早报#微语早读。 1、中国至越南河内国际道路运输线路正式开通; 2、免签国1,中乌(兹别克斯坦)互免签证协定6月生效; 3、杭州“放大招”支持足球发展:足…...

网络损伤仪功能介绍与应用场景剖析

以下是关于 网络损伤仪(Network Impairment Emulator) 的核心功能介绍及其应用场景的详细说明: 一、网络损伤仪的核心功能 带宽限制(Bandwidth Throttling) 模拟不同网络带宽(如从1Mbps到10Gbps&#xff09…...

超时检测机制和心跳包机制(Heartbeat)

一、超时检测机制 1. I/O 函数超时设置 1.1 select/poll/epoll 的超时参数 select c struct timeval timeout {3, 0}; // 3秒超时 int n select(maxfd1, &readfds, NULL, NULL, &timeout); if (n 0) printf("select timeout\n"); // 超时无事件poll c …...

经典卷积神经网络

目录 经典卷积神经网络 一、卷积神经网络基础回顾 二、LeNet:开启 CNN 先河 三、AlexNet:突破性进展 四、ZFNet:继承与优化 五、GoogLeNet:引入 Inception 模块 六、VggNet:深度与简单结构的融合 七、ResNet&a…...

Reactor模型详解与C++实现

Reactor模型详解与C实现 一、Reactor模型核心思想 Reactor模式是一种事件驱动的并发处理模型,核心通过同步I/O多路复用实现对多个I/O源的监听,当有事件触发时,派发给对应处理器进行非阻塞处理。 关键特征: 非阻塞I/O&#xff…...

观测云产品更新 | 安全监测、事件中心、仪表板AI智能分析等

观测云更新 安全监测 新增 SIEM 功能模块:实时分析企业各类系统(如服务器、应用、网络设备)的日志和事件数据,自动发现潜在威胁,帮助团队迅速定位异常,充分发挥安全监控中枢的作用。 注意:目…...

【HTML】个人博客页面

目录 页面视图​编辑 页面代码 解释&#xff1a; HTML (<body>): 使用了更加语义化的HTML5标签&#xff0c;例如<header>, <main>, <article>, <footer>。文章列表使用了<article>包裹&#xff0c;结构清晰。添加了分页导航。使用了Font…...

OrangePi Zero 3学习笔记(Android篇)10 - SPI和从设备

目录 1. 配置内核 2. 修改设备数 3. 修改权限 4. 验证 Zero 3的板子有2个SPI Master接口&#xff0c;其中SPI0接的是板载16MB大小的SPI Nor Flash&#xff0c;SPI1则是导出到26pin的接口上。 spi和i2c有点不同&#xff0c;spi是直接生成spi虚拟设备&#xff0c;所以在dev里…...

《Java 大视界——Java 大数据在智能电网分布式能源协同调度中的应用与挑战》

随着风电、光伏等分布式能源大规模接入电网&#xff0c;传统调度系统面临数据规模激增、响应延迟显著、多源异构数据融合困难等核心问题。本文聚焦Java生态下的大数据技术体系&#xff0c;深入探讨其在智能电网实时监测、负荷预测、资源优化配置等场景中的落地实践。通过分析Sp…...