PointCore——利用局部全局特征的高效无监督点云异常检测器论文与算法解读

概述

三维点云异常检测旨在从训练集中检测出异常数据点,是工业检测、自动驾驶等众多应用的基础。然而,现有的点云异常检测方法通常采用多个特征存储库来充分保留局部和全局特征表示,这带来了高昂的计算成本以及特征之间的不匹配问题。为解决这些问题,我们提出了一种基于联合局部 - 全局特征的无监督点云异常检测框架PointCore。具体而言,PointCore仅需一个存储库来存储局部(坐标)和全局(PointMAE)特征表示,并为这些局部 - 全局特征分配不同的优先级,从而降低推理过程中的计算成本和不匹配干扰。此外,为了增强对异常值的鲁棒性,我们引入了一种归一化排序方法,不仅可以将不同尺度的值调整到一个统一的尺度,还能将密集分布的数据转换为均匀分布。在Real3D - AD数据集上进行的大量实验表明,与最先进的Reg3D - AD方法及其他几种竞争方法相比,PointCore在推理时间上具有竞争力,并且在检测和定位方面均取得了最佳性能。

论文地址:https://arxiv.org/html/2403.01804v1

一、引言

异常检测旨在找出产品的异常区域,在工业质量检测、自动驾驶等多个领域发挥着重要作用。当前的异常检测方法大多是无监督的,主要针对二维图像,这些模型通常在具有成熟架构的图像上进行训练。对于基于三维点云的异常检测任务,目前相关文献的研究还相对较少。与二维图像相比,三维点云具有更丰富的结构信息,但同时也存在无序、高度稀疏和分布不规则的问题。为了有效地处理点云数据,人们应用了各种不同尺度的手工制作或基于深度学习的特征描述符。

最近,出现了一个大规模、高分辨率的三维异常检测数据集Real3D - AD。Real3D - AD数据集中的物体分辨率为0.001mm - 0.0015mm,具有360度覆盖范围和完美的原型。在相关研究中,作者将图像异常检测中的PatchCore方法应用于点云异常检测,并开发了一种基于通用配准的点云异常检测器Reg3D - AD。Reg3D - AD采用双特征表示方法来保留训练原型的局部和全局特征,检测精度较高,但推理速度较慢。目前的点云异常检测器主要可分为两类:
(1)基于重建的方法,这类方法通过自动编码器重建输入的点云数据,并通过比较原始数据和重建数据之间的偏差来识别异常。然而,这些方法对点云分辨率较为敏感,导致推理速度较慢且精度较差。
(2)基于存储库的方法,存储库可用于存储代表性特征,以隐式构建正态分布并查找分布外的缺陷。与前者相比,直接使用预训练的特征提取器构建存储库训练速度快,且不受点云分辨率的影响。除此之外,现有的点云异常检测器通常采用多个特征存储库来充分保留局部和全局特征表示,这带来了高昂的计算成本以及特征之间的不匹配问题。
在这里插入图片描述

图1:几种方法在Real3D - AD数据集上获得的异常得分热图。从可视化结果可以看出,与其他方法相比,本文提出的方法能够更准确地检测和定位异常数据点。

为解决上述问题,我们提出了一种基于联合局部 - 全局特征的无监督点云异常检测框架PointCore。具体而言,我们的贡献总结如下:

  1. PointCore仅需一个存储库来存储局部 - 全局特征表示,并为这些局部 - 全局特征分配不同的优先级,以降低推理过程中的计算成本和不匹配干扰。
  2. 我们提出了一种基于排序的归一化方法,以消除各种异常得分之间的分布差异,并应用点到平面迭代最近点(point - plane ICP)算法对 点云配准结果进行局部优化,从而做出更可靠的决策。
  3. 在Real3D - AD数据集上进行的大量实验表明,与最先进的Reg3D - AD方法及其他几种竞争方法相比,PointCore在推理时间上具有竞争力,并且在检测和定位方面均取得了最佳性能。

二、方法

2.1 全局和局部配准

与Reg3D - AD模型类似,我们应用快速点特征直方图(FPFH)特征描述符和随机抽样一致性(RANSAC)算法来实现点云的全局配准。为了增强点云配准的稳定性,引入了点到平面迭代最近点(point - plane ICP)算法对全局配准的输出进行局部优化。假设需要配准两个点云 X s X_{s} Xs(源点云)和 x t x_{t} xt(目标点云),具体步骤如下:

  1. 应用从全局配准获得的旋转矩阵和平移向量对 X s X_{s} Xs进行变换。
  2. x t x_{t} xt中搜索与 X s X_{s} Xs p i p_{i} pi距离最近的点 q i q_{i} qi,其中 q i q_{i} qi的法向量记为 n i n_{i} ni
  3. 假设最优旋转欧拉角 α \alpha α β \beta β γ \gamma γ趋近于0,此时 cos ⁡ ( θ ) → 1 \cos(\theta)\to1 cos(θ)1 sin ⁡ ( θ ) → 0 \sin(\theta)\to0 sin(θ)0 θ → 0 \theta\to0 θ0。旋转矩阵 R R R可近似表示为: R ≈ [ 1 − γ β γ 1 − α − β α 1 ] R \approx\left[\begin{array}{ccc}1 & -\gamma & \beta \\ \gamma & 1 & -\alpha \\ -\beta & \alpha & 1\end{array}\right] R 1γβγ1αβα1
  4. 假设最优平移向量为 t = [ t x , t y , t z ] t=[t_{x}, t_{y}, t_{z}] t=[tx,ty,tz] 。通过摩尔 - 彭罗斯逆将损失函数表示为最小二乘问题: E ( R , t ) = ∑ i = 1 n ( ( R p i + t − q i ) T n i ) 2 E(R, t)=\sum_{i=1}^{n}\left(\left(R p_{i}+t-q_{i}\right)^{T} n_{i}\right)^{2} E(R,t)=i=1n((Rpi+tqi)Tni)2
  5. 应用计算得到的旋转矩阵和平移向量对 X s X_{s} Xs进行变换,并重复步骤2 - 5,直到损失值低于预定义的阈值。需要注意的是,用于配准的目标点云 X t X_{t} Xt是固定的。

2.2 存储库构建

  1. 坐标采样:我们采用贪心下采样算法对 点云进行采样。给定 点云 X X X和点集 C a C_{a} Ca α \alpha α C a C_{a} Ca中的点数),我们的目标是从 C a C_{a} Ca中获取 S m a x S_{max} Smax个均匀分布的点。具体步骤如下:
    • C a C_{a} Ca中随机选择 S i n i t S_{init} Sinit个点构建初始点集 P i n i t = P 1 , P 2 , P 3 , … , P S i n i t P_{init }={P_{1}, P_{2}, P_{3}, \ldots, P_{S_{init }}} Pinit=P1,P2,P3,,PSinit
    • 计算 C a C_{a} Ca P i n i t P_{init } Pinit之间的距离,得到一个维度为 a × S i n i t a×S_{init } a×Sinit的矩阵 d 2 d d_{2d} d2d d 2 d = [ d 11 ⋯ d 1 S m a x ⋮ ⋱ ⋮ d a 1 ⋯ d a S m i n ] d_{2d}=\left[\begin{array}{ccc} d_{11} & \cdots & d_{1 S_{max }} \\ \vdots & \ddots & \vdots \\ d_{a 1} & \cdots & d_{a S_{min }}\end{array}\right] d2d= d11da1d1SmaxdaSmin
    • 计算矩阵 d 2 d d_{2d} d2d每一行的平均值,得到 d 1 d = [ d 1 m a n , d 2 m a n ⋯ , d a m a n ] d_{1d}=[d_{1_{man }}, d_{2_{man }} \cdots, d_{a_{man }}] d1d=[d1man,d2man,daman]
    • 找到矩阵 d 1 d d_{1d} d1d中的最大值,并将对应的点添加到 P i n i t P_{init } Pinit中。重复步骤2 - 4,直到 P i n i t P_{init } Pinit中的元素数量等于 S m a x S_{max} Smax
  2. 点特征插值:我们使用在ShapeNet数据集上预训练的点变换器(PointMAE)作为三维特征提取器。对于每个点云,我们将坐标采样阶段得到的坐标作为组中心点。每个中心点形成一个存储元素,将其与坐标和PointMAE特征绑定。这些元素构成了图2中的存储库。为了降低推理过程中计算PointMAE特征的计算复杂度,需要对 点云坐标进行下采样。因此,我们进一步进行点特征插值,为特征库中的每个坐标分配一个PointMAE特征值。特征插值方法如图3所示。

给定包含所有中心点坐标的点集 P c e n t r a l P_{central } Pcentral,其对应的PointMAE特征集为 M i n i t M_{init } Minit 。以一个非中心点 P e P_{e} Pe为例,我们使用k近邻算法在点集 P c e n t r a l P_{central } Pcentral中获取三个最近邻点 [ P k 1 , P k 2 , P k 3 ] [P_{k1}, P_{k2}, P_{k3}] [Pk1,Pk2,Pk3] 。它们对应的欧氏距离和PointMAE特征值分别为 [ D k 1 , D k 2 , D k 3 ] [D_{k1}, D_{k2}, D_{k3}] [Dk1,Dk2,Dk3] [ M k 1 , M k 2 , M k 3 ] [M_{k1}, M_{k2}, M_{k3}] [Mk1,Mk2,Mk3] 。通过公式(3),我们可以得到 P e P_{e} Pe的PointMAE特征 M e M_{e} Me 。重复此过程,直到所有非中心点都获得其对应的PointMAE特征。 M e M_{e} Me的计算公式为: M e = D k 1 D k 2 M k 3 + D k 1 D k 3 M k 2 + D k 2 D k 3 M k 1 D k 1 D k 2 + D k 1 D k 3 + D k 2 D k 3 M_{e}=\frac{D_{k1} D_{k2} M_{k3}+D_{k1} D_{k3} M_{k2}+D_{k2} D_{k3} M_{k1}}{D_{k1} D_{k2}+D_{k1} D_{k3}+D_{k2} D_{k3}} Me=Dk1Dk2+Dk1Dk3+Dk2Dk3Dk1Dk2Mk3+Dk1Dk3Mk2+Dk2Dk3Mk1

2.3 推理模块

  1. 多特征异常得分计算:存储库由元素集组成,即 M t r a i n = { ( M 1 c , l M 1 p ) , ( M 2 c , M 2 p ) , … , ( M n c , M n p ) } M_{train }=\{(M_{1_{c}}, l M_{1_{p}}),(M_{2_{c}}, M_{2_{p}}), \ldots,(M_{n_{c}}, M_{n_{p}})\} Mtrain={(M1c,lM1p),(M2c,M2p),,(Mnc,Mnp)} ,其中 M i c M_{i_{c}} Mic表示第 i i i个点的坐标, M i p M_{i_{p}} Mip表示第 i i i个点的PointMAE特征。测试特征库定义为 F t e s t = { ( F 1 c , F 1 p ) , ( F 2 c , F 2 p ) , … , ( F m c , F m p ) } F_{test }=\{(F_{1_{c}}, F_{1_{p}}),(F_{2_{c}}, F_{2_{p}}), \ldots,(F_{m_{c}}, F_{m_{p}})\} Ftest={(F1c,F1p),(F2c,F2p),,(Fmc,Fmp)} ,其中 F j c F_{j_{c}} Fjc是第 j j j个点的坐标, F j p F_{j_{p}} Fjp是第 j j j个点的PointMAE特征。对于 F t e s t F_{test } Ftest中的一个元素 ( F j c , F j p ) (F_{j_{c}}, F_{j_{p}}) (Fjc,Fjp) ,我们使用其坐标信息 F j c F_{j_{c}} Fjc M t r a i n M_{train } Mtrain中找到三个最近邻点,记为 ( M i c , M i p ) (M_{i_{c}}, M_{i_{p}}) (Mic,Mip) ( M o c , M o p ) (M_{o_{c}}, M_{o_{p}}) (Moc,Mop) ( M u c , M u p ) (M_{u_{c}}, M_{u_{p}}) (Muc,Mup) 。使用欧氏距离,得到它们的坐标距离 { D C 1 , D C 2 , D C 3 } \{DC_{1}, DC_{2}, DC_{3}\} {DC1,DC2,DC3}和特征距离 { D P 1 , D P 2 , D P 3 } \{DP_{1}, DP_{2}, DP_{3}\} {DP1,DP2,DP3} 。最终的坐标异常得分 S c = m e a n ( D C 1 , D C 2 , D C 3 ) S_{c}= mean(DC_{1}, DC_{2}, DC_{3}) Sc=mean(DC1,DC2,DC3),PointMAE异常得分 S p = m i n ( D P 1 , D P 2 , D P 3 ) S_{p}=min (DP_{1}, DP_{2}, DP_{3}) Sp=min(DP1,DP2,DP3)
  2. 排序模块:由于两种异常得分在尺度和分布上存在差异,因此需要对它们进行归一化处理。传统的归一化方法通常采用区间缩放法。对于一组数据 S l i s t S_{list } Slist,区间缩放过程为 S n o r m = S l i s t − m i n ( S l i s t ) m a x ( S l i s t ) − m i n ( S l i s t ) S_{norm }=\frac{S_{list }-min (S_{list })}{max (S_{list })-min (S_{list })} Snorm=max(Slist)min(Slist)Slistmin(Slist) 。如图4所示,区间缩放法可以消除两种异常得分之间的尺度差异,但无法解决分布差异问题。当坐标异常得分存在两个异常值时,最终的异常得分会远小于PointMAE异常得分,这对基于算术运算的集成策略有显著影响。为解决这一问题,我们设计了一种基于排序的归一化方法,其中 S o r t _ r a n k ( S l i s t ) Sort\_rank (S_{list }) Sort_rank(Slist)用于获取 S l i s t S_{list } Slist中每个值的排名, l e n ( S l i s t ) len(S_{list }) len(Slist) S l i s t S_{list } Slist的长度,即: S n o r m = S o r t _ r a n k ( S l i s t ) l e n ( S l i s t ) S_{norm }=\frac{ Sort\_rank \left(S_{list }\right)}{len\left(S_{list }\right)} Snorm=len(Slist)Sort_rank(Slist)

三、实验

3.1 实验细节

  1. 数据集:Real3D - AD数据集总共包含1254个样本,分布在12个不同的类别中。每个特定类别的训练集仅包含四个样本,类似于二维异常检测中的少样本场景。这些类别包括飞机、糖果棒、鸡肉、钻石、鸭子、鱼、宝石、海马、贝壳、海星和太妃糖。Real3D - AD数据集中的所有类别均为生产线的玩具。数据集中的物体分辨率为0.001mm - 0.0015mm,具有360度覆盖范围和完美的原型。
  2. 基线方法:我们与BTF、M3DM、PatchCore进行比较,以评估我们方法的性能。根据所使用的点云特征,它们可以分为7种不同的基线方法,即BTF(Raw)、BTF(FPFH)、M3DM(PointMAE)、PatchCore(FPFH)、PatchCore(FPFH + Raw)、PatchCore(PointMAE)、PatchCore(PointMAE + RAW),其中Raw表示使用坐标信息。PointMAE和FPFH是两种不同的特征描述符。
  3. 评估指标:所有评估指标与相关研究中的完全相同。我们通过接收者操作特征曲线下面积(AUROC)和精确率 - 召回率曲线下面积(AUPR/AP)来评估对象级异常检测性能和点级异常检测性能。AUROC和AUPR越高,异常检测性能越好。所有实验均在第12代英特尔酷睿i9 - 12900K CPU、64G DDR4 SDRAM和英伟达GeForce RTX 3090平台上进行。

3.2 Real3D - AD数据集上的异常检测

我们将我们的方法与Real3D - AD数据集上的几种方法进行比较,表1展示了对象级AUROC(O - AUROC)的异常检测结果。FPFH和PointMAE特征分别与Raw特征结合。结果表明,基于PointMAE的组合表现更好。对于所提出的PointCore架构,点云的坐标信息是不可或缺的。表2展示了我们的模型与最先进方法之间更全面的比较。PointCore在所有指标上都取得了有竞争力的性能,包括在O - AUROC指标上提升了17.75%。点级AUROC(P - AUROC)、对象级AUPR(O - AUPR)和点级AUPR(P - AUPR)的性能进一步证明了我们方法在异常检测方面的优越性能。表3列出了BTF、M3DM和PatchCore之间推理时间的比较。可以看出,表3中的BTF虽然速度快,但在O - AUROC和P - AUROC方面表现一般甚至较差。除BTF外,我们的方法是最快的。

3.3 消融实验

在本节中,我们在表4的3视图设置下对基于Reg3D - AD的设计选择进行消融实验。

  1. 局部优化(LO)的有效性:Reg3D - AD模型采用FPFH + RANSAC方法进行配准,其中RANSAC算法通过迭代寻找最优位姿矩阵。然而,RANSAC每次迭代中随机选择点的方式会导致最终配准结果存在显著差异。我们对太妃糖数据集中的一对点云进行了20次实验,结果表明即使参数相同,也会有很大的变化。引入局部优化算法是为了提高配准过程的稳定性。欧拉角的方差从1.1058°降至 ( 7.7796 × 1 0 − 6 ) c (7.7796×10^{-6})^{c} (7.7796×106)c ,得分达到0.642±0.01。关于局部优化方法,我们在不同程度的高斯噪声下对点点ICP和点面ICP算法进行了配准误差测试。结果表明,在较低噪声水平下,点面ICP配准方法通常能得到更准确的结果。Reg3D - AD数据集中的异常样本类似于低噪声水平的点云,因此选择点面ICP作为局部优化方法。
  2. PointCore架构的有效性:与Reg3D - AD架构相比,PointCore架构可以更好地利用点云的坐标信息,实现更快、更准确的点云异常检测。在速度方面,我们通过绑定点的坐标信息和PointMAE特征信息加速了推理过程,减少了后续PointMAE寻找最近邻时引入的大量计算成本。相比之下,Reg3D - AD架构将坐标信息和PointMAE特征信息分别存储在不同的存储库中,推理时每个坐标和PointMAE都必须在相应的存储库中寻找最近邻,这带来了巨大的计算挑战,尤其是PointMAE特征有1154维。在准确性方面,我们增强了坐标信息的主导地位,避免了PointMAE特征中明显的不匹配。具体来说,在Reg3D - AD架构中,测试点云的PointMAE特征必须在不利用任何坐标信息的情况下在PointMAE存储库中寻找最近邻,这会导致局部相似组之间的错误匹配。通过严格限制坐标的匹配范围,我们显著降低了不匹配的概率。
  3. 排序模块(RB)的有效性:从表4可以看出,排序模块显著提高了对象级AUROC和对象级AUPR,但在点级指标上的提升有限。这是因为排序模块主要用于减轻异常值对不同异常分数分布的重大影响。它在对象级异常分数中起着重要的平衡作用,因为对象级异常分数的样本量相对较小。相比之下,点级异常分数本身样本众多,异常值的影响极小。

四、结论

我们提出了一种无监督点云异常检测器 PointCore,它基于单存储库开发,利用局部 - 全局特征来存储输入点云的多尺度信息。在 Real3D - AD 数据集上进行的大量实验表明,我们的方法具有更高的召回率和更低的误报率,在需要精确检测缺陷样本的实际应用中更具优势。此外,由于局部 - 全局特征存储库和多特征异常分数计算方法都降低了计算成本,所提出的框架效率较高。

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

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

相关文章

桌面应用UI开发方案

一、基于 Web 技术的跨平台方案 Electron Python/Go 特点: 技术栈:前端使用 HTML/CSS/JS,后端通过 Node.js 集成 Python/Go 模块或服务。 跨平台:支持 Windows、macOS、Linux 桌面端,适合开发桌面应用。 生态成熟&…

redis 配置日志和数据存储位置

Redis配置日志和数据存储位置 介绍 Redis是一个开源的高性能键值存储数据库,常用于缓存、消息队列和实时分析等场景。在使用Redis时,我们需要配置日志和数据存储位置,以便更好地管理和监控Redis的运行状态。本文将介绍如何配置Redis的日志和数…

OSI七层网络模型详解

OSI七层网络模型详解 OSI(开放系统互连)模型是国际标准化组织(ISO)提出的网络通信框架,旨在规范不同系统间的通信。它分为七层,每层承担特定功能,协同实现端到端的数据传输。 1. 物理层&#x…

Springboot 学习 之 logback-spring.xml 日志打印

文章目录 1. property2. springProperty3. appender4. logger4.1. 通过包路径控制日志4.2. 通过类名控制日志4.3. 按自定义 Logger 名称控制日志 5. root6. springProfile SpringBoot 项目中可以通过自定义 logback-spring.xml 中各项配置,实现日志的打印控制 1. p…

Gradle与Idea整合

文章目录 1. Groovy 简介2. Groovy 安装[非必须]3. 在idea中创建java工程 1. Groovy 简介 在某种程度上,Groovy可以被视为Java的一种脚本化改良版,Groovy也是运行在JVM上,它可以很好地与Java代码及其相关库进行交互操作。它是一种成熟的面向对象编程语言…

OpenFeign终极指南:超时控制、重试策略、拦截器与自定义Starter

目录 前言 使用 引入依赖 开启feign 编写feign客户端 效果 日志 超时配置 重试机制 拦截器 Fallback兜底返回 引入依赖 编写兜底实现 连接池 引入依赖 开启连接池 制作OpenFeign Starter 编写配置类 自动装配 前言 在RPC框架中,有openFeign和Du…

Windows桌面图标变白的解决方案

一、问题原因 桌面图标变白通常是由于系统图标缓存文件(IconCache.db)损坏或系统图表示现异常导致。图标缓存是Windows用于存储应用程序和文件夹图标图像的临时文件,当该文件损坏或系统未正确更新缓存时,图标会因无法加载原始图像…

【mysql】Mac 通过 brew 安装 mysql 、启动以及密码设置

Mac 通过 brew 安装 mysql 、启动以及密码设置 使用 brew 安装 mysqlmysql 启动mysql密码设置参考文章: 使用 brew 安装 mysql brew install mysqlmysql 启动 下载完毕,终端告诉我们mysql数据库没有设置密码的,我们可以直接执行 mysql -u r…

Manus AI:突破多语言手写识别技术壁垒之路

Manus AI与多语言手写识别 讨论Manus AI如何突破多语言手写识别的技术壁垒。 写一篇详细的博客有重点有链接超详细 Manus AI:突破多语言手写识别技术壁垒之路 在人工智能领域,多语言手写识别一直是极具挑战性的难题。不同语言的字符形态、书写规则大相…

Redis字符串类型实战:解锁五大高频应用场景

精心整理了最新的面试资料和简历模板,有需要的可以自行获取 点击前往百度网盘获取 点击前往夸克网盘获取 Redis的字符串(String)类型是最基础的数据结构,但其灵活性和原子性操作使其成为解决高并发场景问题的利器。本文通过真实项…

边沿耦合与宽边耦合的串扰

边沿耦合与宽边耦合的串扰 我们知道,如果两条走线位于同一层,由于耦合两条线之间会存在串扰。如果PCB层叠中有相邻的信号层,那么同样存在耦合,这两个相邻信号层的走线之间也会存在串扰。同层走线之间的耦合称为边沿耦合&#xff0…

B端可视化像企业数据的透视镜,看清关键信息

在数字化时代,数据已成为企业最宝贵的资产之一。然而,数据的价值不仅取决于其数量,更在于企业能否快速、准确地提取关键信息并据此做出决策。B端可视化技术的出现,为企业提供了一种强大的工具,它如同企业的“透视镜”&…

苍穹外卖项目中所涉及到的测试内容

1.使用JWT令牌封装用户令牌,并且设置相应的拦截器校验JWT的有效性,从而确保了项目的安全可靠 1.基本功能测试: 验证合法JWT是否能够正常通过拦截器的校验 验证非法的JWT能否正常通过拦截器的校验 2.可靠性测试: 3.易用性测试 …

模拟投资大师思维:AI对冲基金开源项目详解

这里写目录标题 引言项目概述核心功能详解多样化的AI投资智能体灵活的运行模式透明的决策过程 安装和使用教程环境要求安装步骤基本使用方法运行对冲基金模式运行回测模式 应用场景和实际价值教育和研究价值潜在的商业应用与现有解决方案的对比局限性与发展方向 结论 引言 随着…

YOLO拓展-锚框(anchor box)详解

一.锚框(anchor box)概述 1.1什么是锚框 锚框就是一种进行预测的像素框,通过遍历输入图像上所有可能的像素框,然后选出正确的目标框,并对位置和大小进行调整就可以完成目标检测任务。 对于yolo锚框的建设须基于实际…

Excel自定义函数取拼音首字母

1.启动Excel 2003(其它版本请仿照操作),打开相应的工作表; 2.执行“工具 > 宏 > Visual Basic编辑器”命令(或者直接按“AltF11”组合键),进入Visual Basic编辑状态; 3.执行“…

Cril 截取字段-生成hostname

有些event 是不规则,需要用regular express 来加工一下, 下面说一下sample 数据: 2021-10-26 17:00:12 PDT sample log data from host eagle1 2021-10-26 17:00:12 PDT sample log data from host eagle2 2021-10-26 17:00:12 PDT sample log data from host eagle3 2021…

关于大型语言模型的“生物学”

我知道我们已经聊过很多次,关于LLM是怎么运作的,它们的影响力,还有它们的使用场景。但尽管现在有那么多讲LLM的文章,它们本质上还是个黑箱。 但我们真正要问自己的问题是,为什么理解这些系统的内部结构很重要&#xf…

压滤机与锡泥产生效率

的关系可从设备作用机制、工艺参数影响及效率评估方法三个维度展开,结合工业实践与实验室研究,其关联逻辑如下: 一、压滤机在锡泥处理中的核心作用 固液分离原理 压滤机通过正压强压脱水、挤压脱水、风吹脱水三步实现固液分离: …

简单线段树的讲解(一点点的心得体会)

目录 一、初识线段树 图例: ​编辑 数组存储: 指针存储: 理由: build函数建树 二、线段树的区间修改维护 区间修改维护: 区间修改的操作: 递归更新过程: 区间修改update&#xff1a…