Appearance-Motion Memory Consistency Network for Video Anomaly Detection 论文阅读

Appearance-Motion Memory Consistency Network for Video Anomaly Detection 论文阅读

  • Abstract
  • Introduction
  • Related Work
  • Method
  • Experiments
  • Conclusions
  • 阅读总结

论文标题:Appearance-Motion Memory Consistency Network for Video Anomaly Detection

文章信息:
在这里插入图片描述
发表于:AAAI 2021(CCF A会议)

原文链接:https://ojs.aaai.org/index.php/AAAI/article/view/16177/15984

源代码:https://github.com/NjuHaoZhang/AMMCNet_AAAI2021

Abstract

监控视频中的异常事件检测是一项重要但具有挑战性的任务,已经提出了许多方法来解决这个问题。以前的方法要么只考虑外观信息,要么直接整合外观和运动信息的结果,而不明确地考虑它们的内生一致性语义。受人类从多模态信号中识别异常帧的规则的启发,我们提出了一种外观-运动-记忆一致性网络(AMMC-Net)。我们的方法首先充分利用外观和运动信号的先验知识,明确地捕捉它们在高级特征空间中的对应关系。然后,它将多视图特征相结合,以获得规则事件的更本质、更稳健的特征表示,这可以显著增加异常事件和规则事件之间的差距。在异常检测阶段,我们进一步在潜在空间中引入提交误差和像素空间中的预测误差,以提高检测精度。在各种标准数据集上的可靠实验结果验证了我们方法的有效性。

Introduction

视频异常检测(VAD)是监控视频中的一项关键任务。它已经研究了很多年,但由于收集异常数据的困难和挑战,仍未解决(Kiran、Thomas和Parakkal,2018)。与常规事件相比,异常发生的频率较低,而且异常类型多样,甚至是无限的。因此,收集平衡的正常和异常数据并使用传统的监督二进制分类方法来解决这个问题似乎是不可行的。考虑到视频监控中的常规事件非常丰富,一个普遍的场景(Luo,Liu,and Gao 2017a;Kiran,Thomas,and Parakkal 2018;Liu等人2018;Ionescu等人2019)只是提供的正常数据。
在这种设置下,对规则事件的外观和运动信息进行建模是第一原则。除了独立地表示这两种类型的数据外,对它们之间的对应关系进行建模也是至关重要的。
自然界中存在的一致性定律是一个重要概念,在计算机视觉中得到了广泛应用(Wang,Jabri,and Efros 2019)。与上述使用时间对应关系的工作不同,本文提出的VAD中的一致性明确考虑了对规则事件中的外观和运动信号之间的对应关系进行建模。例如,在超市购物中心的环境中,经常发生的事件是人们向前推购物车或与购物车呆在一起。一些异常可以分别通过外观(火灾爆发)或动作(人们相互打斗)来检测。相反,一些异常需要通过考虑外观和运动之间的相关性来检测。例如,当人们站着不动,购物车在人类无法控制的情况下向前移动时,就会发生异常情况。单从外观上看,人和购物车都是规则的物体,任何不寻常的外观都会发生变化。仅从运动来看,人们站着不动和购物车向前移动都是正常情况。如果不考虑外观和运动之间的相关性,异常检测器可能不可避免地会在这些异常上失败。只有对外观(人、购物车)和运动(人向前推购物车)之间的一致性进行建模,我们才能检测到这些异常,并使异常检测器更加稳健。
然而,先前的方法忽略了VAD中外观和运动之间的一致相关性,包括重建(Hasan等人,2016)、预测(Liu等人,2018)和运动融合(Xu等人,2017;Yan等人,2018;Vu等人,2019)。前两种方法忽略了运动信息,后一种方法在测试阶段直接结合了两种模态的信息。在训练阶段,它没有在同一空间对这两种类型的信息进行联合建模,也没有捕捉到这两种模式的一致性。

为了明确地对外观和运动信息之间的一致性进行建模,我们提出了一种用于视频异常检测的外观-运动-记忆一致性框架。

1) :我们首先学习常规事件中的外观和运动信号的先验信息,并将其存储在两个名为AppMemPool和MotMemPool的内存池中。由于像素空间中有许多与异常检测无关的背景像素,并且原始特征包含样本中存在的特定信息,因此我们选择在特征空间中对这两个特征的先验信息进行建模。考虑到单个存储单元的表示能力不足,我们建议使用多个存储单元来表示查询向量的原型特征。
2) :然后,我们通过学习从AppMemPool引导的特征到MotMemPool指导的特征的两个映射函数,反之亦然,对外观和运动之间的一致相关性进行建模,称为外观-运动特征传递网络(AMFT)。
3) :由于记忆项只包含来自训练数据的先验信息,并且每个输入的唯一信息可能会丢失,为了通过记忆先验来补偿丢失的信息,我们最终集成了来自编码器的初始特征,即记忆模块生成的原型特征,以及来自AMFT的变换后的特征,以形成规则事件的鲁棒性和表达性特征。
4) :在测试阶段,我们结合原始特征和记忆项之间的外观/运动预测误差和提交误差(Den Oord,Vinyals,and Kavukcuoglu 2017)来计算异常分数,并确定帧是否异常。

Related Work

最近,已经提出了大量的方法来解决视频异常事件检测。在(Hasan等人2016;Sabokrou、Fathy和Hoseini 2016)中,基于在常规事件上训练的模型不能重建他们没有看到的异常事件的假设,提出了基于重建的模型。Conv AE(Hasan等人,2016)使用深度自动编码器从训练视频集中重建帧的输入序列。Conv3D AE(Sabokrou、Fathy和Hoseini 2016)使用3D卷积神经网络对视频片段的外观和运动信息进行编码。使用去卷积神经网络来重构输入视频剪辑。提出了一系列基于预测的模型(Luo,Liu,and Gao 2017a;Shi等人2015;赵等人2017)来缓解重建模型中的同一性映射。这些方法将视频帧视为时间模式或时间序列,目标是学习一个生成模型,该模型可以使用过去的帧来预测未来的结构。在(Luo,Liu,and Gao 2017a;Shi等人2015)中,输入视频的卷积表示被输入到卷积LSTM。。然后,去卷积层将所学习的特征的输出重建为原始分辨率。(赵等人2017)提出了一种时空自动编码器(STAE),该编码器利用深度神经网络通过执行三维卷积从空间和时间维度提取特征,重建当前片段并生成未来帧。此外,还提出了一些基于双流网络的模型(Xu et al.2017;Yan et al.2018)来解决异常检测问题。这些方法最初用于动作识别(Simonyan和Zisserman 2014),因为它允许分别对外观和运动信息进行显式建模。在另一项工作中(Vu等人,2019),Hung提出了一种使用强度和运动数据的多级表示来编码规则帧的框架。该检测器可以通过在低级数据之外的高级表示中发现异常对象并结合这些检测结果,以高精度和低错误检测来定位异常区域。更多作品可以在(Kiran,Thomas,and Parakkal 2018)中找到。

与我们的工作最相关的方法是以下三篇论文(Gong等人,2019;Nguyen和Meunier 2019;Xu等人2017)。在(Gong et al.2019)中,提出了一种称为MemAE的内存增强自动编码器,以提高网络的性能。给定一个输入,MemAE首先从编码器获得编码,然后将其用作查询,以检索最相关的内存项进行重建。它试图利用自动编码器架构来重建外观。在(Nguyen和Meunier 2019)中,提出了一种rgb到光流翻译网络,以利用外观与其运动之间的对应关系。它使用U-Net结构来预测给定输入RGB帧的相应运动。(Xu et al.2017)提出了一种将传统的早期融合和后期融合策略相结合的双融合框架。它首先使用堆叠的去噪自动编码器来分别学习外观和运动特征以及联合表示(早期融合)。然后,多个一类SVM模型基于所学习的特征来预测每个输入的异常分数。最后,它使用后期融合策略来组合计算的分数并检测异常事件。与上述方法相比,我们提出的模型可以明确地强制两种模式在训练阶段在共享空间中表示它们的特征,从而有助于异常检测

Method

在这里插入图片描述

如图1所示,我们提出的AMMC-Net可以分为三个部分:编码器、解码器和外观运动记忆增强特征转移模块(AMMT)。我们首先将图像片段及其光流片段输入到编码器中,以获得外观和运动的初始特征表示。然后,我们将初始特征图输入到内存模块(AppMemPool和MotMemPool)中,以提取这两种模式的原型项目。接下来,我们使用两个神经网络在两个输入原型特征之间传递信息,以获得两个一致的特征。之后,我们在初始特征、记忆引导的原型特征和一致特征之间进行特征融合。最后,将融合的特征输入解码器,以预测未来的外观(图像)和运动(光流),如算法1所示。
在这里插入图片描述

Encoder and Decoder
编码器用于从输入视频帧中提取特征表示。解码器被训练为通过获取从先前步骤获得的聚合特征来重构样本。我们采用编码器中使用的res块和类似UNet的跳跃连接结构(Ronneberger、Fischer和Brox 2015)作为骨干网络来构建整个模块。首先,为了增强网络输出的范围和提高表示能力,本文将原来的ReLU修改为Tanh。其次,将原始体系结构的4尺度缩减为3尺度,以控制模型的复杂性,减少参数数量和训练时间。
AMMT
它由三个组件组成,即内存池、特征传输模块和特征聚合模块。存储器池首先提取外观和运动特征的原型模式。然后,我们将这些特征图输入到特征转移模块(AMFT)中,以学习转移的特征。最后,我们聚合编码器特征、记忆先验和传输特征。

  • Memory Pool.
    与异常事件类型的多样性和无界性相比,可用于训练的常规事件可以是详尽无遗的。因此,从理论上总结规则模式的先验信息是可行的。然而,原始特征包含正常事件的先验信息及其特定信息。只有先验信息在两种模式之间具有很强的相关性。因此,我们引入了一种具有离散潜在空间的内存模块,并将其与传统的重构模型相结合,以提取原型特征并将其存储在内存池中。具体来说,我们为外观和运动信息设计了单独的内存模块,称为AppMemPool和MotMemPool。我们的记忆模块定义了一个潜在嵌入空间 M ∈ R D × N M∈R^{D×N} MRD×N,包含N个维度为D的记忆项。我们将外观和运动记忆池分别表示为 M a M^a Ma M o M^o Mo。内存池接收来自编码器的功能, z e a z^a_e zea z e o z^o_e zeo作为输入。然后,它计算从编码器到每个存储器项的每个空间特征,并选取K个最接近的项作为存储器先验特征 z m a z^a_m zma z m o z^o_m zmo。我们展示了算法1第3行到第6行的整个过程。
    在这里插入图片描述

  • Appearance-Motion Feature Transfer Module.
    我们在记忆先验空间中对外观和运动相关性进行建模。具体地,在接收到存储器先验特征 z m a z^a_m zma z m o z^o_m zmo之后,我们首先使用1x1卷积层对先验特征进行特征约简。然后我们应用两个映射函数 Φ a → o Φ_{a→o} Φao Φ o → a Φ_{o→a} Φoa,以学习外观和运动先验之间的一致相关性,并获得转移的特征 z ^ m o \widehat{z}^o_m z mo z ^ m a \widehat{z}^a_m z ma。整个过程如算法1中从第7行到第10行所示。与之前在特征空间中执行从外观到运动的方法(Vu等人,2019)相比,我们了解到在先验空间中外观和运动之间的一致相关性。因为在记忆空间中,它可以避免复杂背景的副作用,并且直接学习从运动(光流)到外观(图像)的转换是一个病态的问题,因此使用先验信息将使问题更加可行。
    在这里插入图片描述

  • Feature Aggregation
    由于内存项只包含先前的信息,它们将丢失每个输入的唯一信息。为了使特征更具代表性,我们聚合来自编码器的原始特征 z e a z^a_e zea z e o z^o_e zeo)、记忆先验 z m a z^a_m zma z m o z^o_m zmo)和转移的特征 z ^ m o \widehat{z}^o_m z mo z ^ m a \widehat{z}^a_m z ma)。最后,我们将融合的特征输入到解码器中,以预测未来的帧 F ^ t \widehat{F}^t F t和光流 O ^ t − 1 \widehat{O}^{t−1} O t1。我们在算法1中从第11行到第14行对这些进行了说明。
    在这里插入图片描述

Loss Function
设F表示rgb图像序列, F ^ \widehat{F} F 表示F的预测,O表示F的相应光流剪辑, O ^ \widehat{O} O 表示O的预测。当给定 F 1 … t − 1 F_{1…t−1} F1t1 O 1 … t − 2 O_{1…t−2} O1t2时,模型输出 F ^ t \widehat{F}_t F t O ^ t − 1 \widehat{O}_{t-1} O t1。为了生成更真实的帧,我们在模型中利用了GAN变体(最小二乘GAN(Mao et al.2017))。我们遵循(Mao et al.2017)的原始训练程序进行minmax game。具体来说,我们交替训练生成器和鉴别器。生成器试图产生一个看起来现实的结果,并愚弄鉴别器。鉴别器试图对哪个图像是真实的还是伪造的(生成的)进行分类。

  • 训练生成器.
    为了训练AMMC-Net的生成器,我们分别从外观和运动信号的像素空间和特征空间构造以下损失函数。
    在这里插入图片描述
    对于外观,我们采用强度、梯度、流量和对抗性损失(分别为 L i n t L_{int} Lint L g d l L_{gdl} Lgdl L o p L_{op} Lop L a d v G L^G_{adv} LadvG)。
    在这里插入图片描述
    其中超参数 λ i n t λ_{int} λint λ g d l λ_{gdl} λgdl λ o p λ_{op} λop λ a d v λ_{adv} λadv用于调整每个部分的重要性。
    我们采用 l 2 l_2 l2的距离,以最小化强度空间中预测帧 F ^ \widehat{F} F 与真实值 F F F之间的损失:
    在这里插入图片描述
    为了锐化图像预测,随后(Mathieu,Couprie,and Lecun 2016),在我们的损失函数中采用了梯度损失。它直接惩罚预测与其基本事实之间的图像梯度的差异:
    在这里插入图片描述
    其中i,j表示视频帧的空间索引,α可以调整预测图像的清晰度。
    为了保持运动的一致性,这对VAD至关重要,我们采用了运动约束损失(Liu et al.2018)来强制预测帧之间的光流接近真实帧:
    在这里插入图片描述
    对于运动,我们应用平滑的 l 2 l_2 l2损失,如方程(7)所示,因为它更适合于光流的高稀疏性(Girshick 2015):
    在这里插入图片描述
    为了优化内存模块(AppMemPool和MotMemPool),我们将外观 z e a z^a_e zea和运动 z e o z^o_e zeo的查询特性推至接近所选内存项 e a e_a ea e o e_o eo的查询特性,如下所示:
    在这里插入图片描述
    由于在我们的内存网络中存在不可微分的argmax操作,我们遵循停止梯度技巧sg(Bengio,Leonard,and Courville 2013;Den Oord,Vinyals,and Kavukcuoglu 2017)来处理损失反向传播。这里,β表示两种损失项目的重量。
  • 训练判别器
    为了迫使生成器学习正态分布,鉴别器试图将基本事实帧分类为真帧,将预测帧分类为假帧。在这里,我们遵循LSGAN(Mao et al.2017),如下所示:
    在这里插入图片描述
    Anomaly Detection in Testing Data
  • Memory Commit Error
    由于我们已经了解了内存中常规事件的先验知识,异常可能从查询特征 z e a z^a_e zea到内存原型 z m a z^a_m zma有很大的距离,而正常模式会导致较小的距离。我们使用内存提交错误来测量距离,如下所示:
    在这里插入图片描述
    第th帧的低错误表示它更有可能是正常的。
  • Image Prediction Error
    大量相关工作(Liu et al.2018)表明,与相同情况下的MSE相比,PSNR可以增加正常和异常事件之间的差距。因此,我们在我们的方法中采用了PSNR。
    在这里插入图片描述
  • Anomaly Score
    许多以前的方法(Nguyen和Meunier 2019)只将像素空间中的误差视为异常指标,忽略了特征空间中的错误对异常检测的影响。我们的AMMC网络弥补了这一缺陷。在测试阶段,结合潜在空间中的内存提交误差和像素空间中的图像预测误差,我们可以确定一个案例是否是异常。最终的正常分数可以推导如下:
    在这里插入图片描述
    其中 λ c λ_c λc表示两种类型误差之间的权重。H表示基于最小-最大的归一化操作,我们将整个测试视频中所有帧的两种类型的误差归一化到范围[0,1]。
    在这里插入图片描述
    因此,最终的 S ( t ) S(t) S(t)表示特定帧的法线程度。越大越正常,越小越异常,我们可以通过选择阈值来确定特定帧是正常还是异常。

Experiments

在这里插入图片描述

Conclusions

在本文中,我们对外观和运动之间的一致性进行建模,以解决视频异常检测问题。我们首先优化外观和运动预测网络来构建两个内存池。然后,我们使用外观-运动特征转移(AMFT)网络来实现外观和运动模式之间的通信和融合操作。在测试阶段,给定由图像及其光流组成的输入序列,使用AMFT从AppMemPool和MotMemPool中提取外观运动特征。最后,我们将像素空间中的预测误差与特征空间中的提交误差相结合,计算测试帧的得分。与现有技术相比,许多实验证明了我们的方法的有效性。固体消融研究证明了我们提出的AMMCNet在捕捉视频异常检测的外观和运动之间的一致性方面的有效性。

阅读总结

1:运动外观一致
2:Memory模块

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

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

相关文章

Node.js-模块化(二)

1. 模块化的基本概念 1.1 什么是模块化 模块化是指解决一个复杂问题时,自顶向下逐层将系统拆分成若干模块的过程。对于整个系统来说,模块是可组合、分解和更换的单元。 1.2 编程领域中的模块化 编程领域中的模块化,就是遵守固定的规则&…

大一C语言作业题目2

目录 字符串? struct? index细节? scanf细节? 7-2 找出总分最高的学生 给定N个学生的基本信息,包括学号(由5个数字组成的字符串)、姓名(长度小于10的不包含空白字符的非空字符…

数据结构和算法笔记2:二分法

二分法网上有两种写法&#xff0c;一种左闭右闭&#xff0c;一种左闭右开&#xff0c;个人习惯左闭右闭的写法&#xff0c; 有序数组查找数 这是标准二分法&#xff0c;对应力扣的704. 二分查找&#xff1a; 求值为target的索引 int search(vector<int>& nums, i…

说说 style gan 中的感知路径长度(Perceptual Path Length)

我在之前的博库中介绍了 style gan 的基本原理&#xff0c;原文中有提出感知路径长度&#xff08;Perceptual Path Length&#xff09;的概念。这是一种评价生成器质量的方式。 PPL基本思想&#xff1a;给出两个随机噪声 z 1 , z 2 ​ &#xff0c;为求得两点的感知路径长度PPL…

利用ffmpeg cv2取h265码流视频(转换图片灰屏问题解决)

利用海康威视相机拍出来的视频是H265格式的&#xff0c;相比于常规的H264编码&#xff0c;压缩率更高&#xff0c;但因此如果直接用正常取流方法读取&#xff0c;会出现无法读取的情况 1. 如图h265码流取出图片为灰屏 2 、解决灰屏问题 import subprocess import cv2# 将h265流…

Spring事务管理—讲解、案例、应用

简介&#xff1a;Spring事务管理和数据库的事务管理的功能作用上是一样的&#xff0c;在学习数据库时&#xff0c;为了数据完整性&#xff0c;采用了事务管理&#xff0c;即开启事务、提交事务和管理事务。在SpringBoot框架中添加一个注解 Transactional 就可以将当前方法、类和…

c语言错误总结

函数 A:void类型函数可以 B&#xff1a;不需要&#xff0c;如果return 不返回任何值&#xff0c;函数会在return语句执行后终止执行&#xff0c;后面的语句不会执行 C&#xff1a;对的 D&#xff1a;不可能&#xff0c;return只能返回一个数据 A:函数不一定有返回值 B:可以…

柔性屏的性能、使用、维护

柔性屏是一种新型的显示技术&#xff0c;相比传统刚性屏幕&#xff0c;具有许多独特的优势。以下是关于柔性屏的性能、使用和维护的详细介绍&#xff1a; 一、性能 弯曲性&#xff1a;柔性屏幕可以轻松弯曲、卷曲或弯折&#xff0c;适应不同的表面形状&#xff0c;如弧形墙面、…

海康威视运行管理中心 Fastjson RCE

漏洞描述 海康威视运行管理中心系统存在低版本Fastjson远程命令执行漏洞&#xff0c;攻击者可在未鉴权情况下获取服务器权限&#xff0c;且由于存在相关依赖&#xff0c;即使服务器不出网无法远程加载恶意类也可通过本地利用链直接命令执行&#xff0c;从而获取服务器权限。 漏…

华为设备VRP基础

交换机可以隔离冲突域&#xff0c;路由器可以隔离广播域&#xff0c;这两种设备在企业网络中应用越来越广泛。随着越来越多的终端接入到网络中&#xff0c;网络设备的负担也越来越重&#xff0c;这时网络设备可以通过华为专有的VRP系统来提升运行效率。通用路由平台VRP&#xf…

判断上三角矩阵 C语言xdoj491

问题描述 上三角矩阵指主对角线以下的元素都为 0 的矩阵&#xff1b;主对角线为从矩阵的左上角至右下角的连线。 本题要求编写程序&#xff0c;判断一个给定的方阵是否上三角矩阵。 输入格式 第一行给出一个正整数 T&#xff0c;为待测矩阵的个数。接下来给出 T 个矩阵的信息&a…

ES排错命令

GET _cat/indices?v&healthred GET _cat/indices?v&healthyellow GET _cat/indices?v&healthgreen确定哪些索引有问题&#xff0c;多少索引有问题。_cat API 可以通过返回结果告诉我们这一点 查看有问题的分片以及原因。 这与索引列表有关&#xff0c;但是索引…

什么是密钥扩展?如何确保密码安全?

为了访问自己的数字账户&#xff0c;我们通常需要用到密码或口令。不过&#xff0c;正如现实生活中开锁的钥匙可能并不总是牢靠一样&#xff0c;并非所有的密码都是安全的。为了加强在线防御&#xff0c;安全专家开发了一系列技术和方法&#xff0c;来提高密码的安全性。这些方…

用23种设计模式打造一个cocos creator的游戏框架----(二十三)中介者模式

1、模式标准 模式名称&#xff1a;中介者模式 模式分类&#xff1a;行为型 模式意图&#xff1a;用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用&#xff0c;从而使其耦合松散&#xff0c;而且可以独立地改变它们之间的交互。 结构图&#xff…

Spring AOP入门指南:轻松掌握面向切面编程的基础知识

面向切面编程 1&#xff0c;AOP简介1.1 什么是AOP?1.2 AOP作用1.3 AOP核心概念 2&#xff0c;AOP入门案例2.1 需求分析2.2 思路分析2.3 环境准备2.4 AOP实现步骤步骤1:添加依赖步骤2:定义接口与实现类步骤3:定义通知类和通知步骤4:定义切入点步骤5:制作切面步骤6:将通知类配给…

【MYSQL】-数据类型

&#x1f496;作者&#xff1a;小树苗渴望变成参天大树&#x1f388; &#x1f389;作者宣言&#xff1a;认真写好每一篇博客&#x1f4a4; &#x1f38a;作者gitee:gitee✨ &#x1f49e;作者专栏&#xff1a;C语言,数据结构初阶,Linux,C 动态规划算法&#x1f384; 如 果 你 …

微波射频元件厂商恒利泰授权世强硬创代理,实现滤波器国产替代

据机构数据显示&#xff0c;2018-2022年全球射频元件市场规模从50亿美元增长至150亿美元&#xff0c;平均复合增长率为31.6%&#xff0c;预计到2025年市场规模有望超过302亿美元。其中&#xff0c;滤波器是射频前端各领域产值占比最高的产品。 为扩大产品覆盖率&#xff0c;提…

【密码学】使用mkcert安装CA、自签名ssl证书,配置nginx的https 证书笔记

文章目录 证书&#xff08;CA证书&#xff0c;服务端证书&#xff0c;客户端证书&#xff09;1 安装CA1.1 下载mkcert1.2 mkcert安装和配置根证书1.3设备安装根证书 2 自签名ssl证书2.1 CA 证书过程:2.2 自签名流程2.3签发证书2.4给已有的证书请求&#xff08;.csr&#xff09;…

PMP证书的PDU如何获得?

首先&#xff0c;让我们来了解一下PDU的含义。PDU代表专业发展单元&#xff08;Professional Development Unit&#xff09;&#xff0c;是指在获得认证后&#xff0c;您可以通过学习、授课或提供志愿服务来积累专业项目管理领域的学习时间。PDU以小时为单位计算&#xff0c;每…

idea 远程调试linux上的代码

背景介绍 开发过程中&#xff0c;我们经常会遇到部署的代码运行出问题、看日志由不是很直观、我们希望可以像调试本地代码一样去调试远程代码; IDEA提供了Remote工具,基于JVM的跨平台能力&#xff0c;我们可以远程调试部署的代码。 前提 保证远程和本地跑的代码是一致的 操…