Human Pose as Compositional Tokens 阅读笔记

news2024/11/26 2:38:49

人体姿态作为合成 token —— CVPR2023

论文链接
代码链接


摘要: 人体姿态常由身体关节的坐标向量或其热图embedding表示。虽然数据易于处理,但由于身体关节间缺乏依赖建模,即使是不现实的姿态也被接受。本文提出了一种结构化表示:Pose as Compositional Tokens(PCT),以探索关节依赖性,PCT 由M个离散的 token 表示一个姿态,每个token 都表征一个具有几个相互依赖关节的子结构(见图1)。这种合成设计能以低成本实现微小的重建误差,然后将姿态估计视作一项 分类任务具体而言,学习一个分类器来预测图像中M个token的类别。 一个预训练的 decoder 网络在无需后处理的情况下从 token 中恢复姿态。实验表明,PCT 在遮挡情况下的性能更佳,在普通情况下能实现相较现有方法更好或相当的结果。
在这里插入图片描述

图1. PCT通过M个离散 token 来表示姿态,这些 token 是 codebook entries 的索引(顶部)。每个 token 被学习用来表示一个子结构,底部的每一行表示,若将一个 token 的 state 更改为不同的值,它会相应更改为与该值相对应的子结构(黑色姿态表示更改前,橙色突出显示更改后的子结构)

文章目录

  • 人体姿态作为合成 token —— CVPR2023
  • 1. Introduction
  • 2. Related works
    • 2.1. Pose representations
    • 2.2. Modeling joint dependency
  • 3. Pose as Compositional Tokens
    • 3.1. Learning compositional tokens
    • 3.2. Human Pose Estimation
  • 4. Experiments
    • 4.1. Datasets and metrics
    • 4.2. Implementation details
    • 4.3. Results on COCO, MPII and H36M
    • 4.4. Results on CrowdPose, OCHuman, SyncOCC
    • 4.5. Empirical analysis
  • 5. Conclusion
  • Appendix


1. Introduction

近几年的人体姿态工作关注网络结构(如 HRNet,VitPose等)、训练方法(如弱监督,无监督,半监督等)以及融合策略,这些工作显著提高了姿态估计方法在公共数据集上的准确性。但具有挑战性的遮挡情况仍是一个悬而未决的问题,阻碍了姿态估计在实践中的应用。
无论是用坐标向量还是用热图embedding表示关节,关节都被独立处理,这忽略了身体关节间的依赖性,因此,如图2所示,在遮挡情况下会估计出不切实际的姿态。人体可以通过可见关节和视觉特征来预测完整姿态,一些工作引入树或图结构来建模关节间依赖性,但手工设计的规则通常会对依赖关系做不切实际的假设,使其无法代表复杂的模式。
在这里插入图片描述

图2:热图法(顶部)与PCT法(底部)在遮挡场景中的对比。PCT即使在严重遮挡的情况下也能预测出合理姿态。图片来自COCO val2017数据集。

本工作尝试无需任何假设,在表示阶段的早期,学习关节间的依赖关系。我们最初的想法是学习一组逼真的原型姿态,并用最接近的原型来表示每个姿态,虽然这样能保证所有姿态是真实的,但需要大量的原型模型将量化误差降低到一个合理的水平,这对算力的要求很高,因此,我们提出了一个分离的表示:PCT。
图3所示为 PCT 表示的两个stage:

  • stage1 学习一个组合encoder 将一个姿态转换为M个token features,每个token feature编码一个姿态的子结构(图1为子结构实例)。然后这些token被一个共享的codebook量化,因此,一个姿态就能被M个分离的 index 简单表示。codebook 的空间足够大以精确表示所有姿态。我们通过最小化重构误差来联合学习 encodercodebookdecoder
  • stage2 将人体姿态估计cast为一个分类任务:给定图像,预测M个token的类别,decoder 网络从中恢复姿态。PCT表示有一些优点:① 首先,关节间的依赖性由 token 建模,有助于避免估计不切实际的姿态,定性实验结果表明(图2 bottom),即使大部分身体部位被遮挡,也可能获得合理估计。② 其次,它无需任何像热图那样减少量化误差的高代价后处理模块,如UDP(The devil is in the details)。③ 它为2D和3D姿态提供了统一的表示。(此外,离散表示也可能促进其与其他离散模态(如文本和语音)的交互,但这并不是这项工作的重点。)
    在这里插入图片描述
图2. PCT表示的 2 个stage (a,b) 和合成 encoder 结构(c)。stage1中,学习一个合成的encoder将一个pose转化成M个token,这些 token 由一个 codebook 量化。因此,一个姿态由一组离散的 codebook 索引表示。stage2中,通过预测M个 token 的类别(即 codebook 条目的索引)将姿态估计 cast 为分类任务。他们由一个 decoder 网络解码,来获得最终姿态。

我们在5个2D姿态估计基准数据集上广泛评估了我们的方法,结果与目前的 sota 方法相比有过之而无不及。而且,其能更好的应对遮挡关节,验证了其依赖建模能力的优势。我们的方法在3D姿态估计H36M数据集上实现了与使用简单架构的 sota 方法相当的精度,这表明该方法具有广泛的适用性。

2. Related works

2.1. Pose representations

Coordinates. 坐标法虽然效率高,但因为其难以学习高度非线性的mapping,因此其精度不如热图法。一些工作通过关注关节周围的局部特征来改进它们。残差对数似然估计RLE提出了一种新的回归范式来捕捉潜在的输出分布。MDN引入了用于回归的混合密度网络。最近,transformer 由于其捕获long-range 信息的能力,给坐标法带来了显著改进。

Heatmap. 热图表示具有强大的定位和泛化能力,自引入以来就一直独占鳌头。许多后续工作致力于不断改进热图法,包括提出强大的网络来更准确地估计热图、引入注意力算子、减少量化误差、与坐标法融合、细化结果、利用其他任务、利用大型 unlabelled 数据集。但热图法需要下采样操作,因此在解码时会引起量化误差。此外,热图无法建模关节相关性

Discrete bins. 最近的工作[A unified sequence interface for vision tasks,Is 2d heatmap representation even necessary for human pose estimation,Unified-io: A unified model for vision, language, and multi-modal tasks]提出将单个 pixel 划分为多个 bins,从而实现 sub-pixel 定位精度。每个关节的水平坐标和垂直坐标被分别量化为离散的类。与我们的工作类似,他们也将人体姿态估计cast 为一项分类任务,但独立处理姿态的每个坐标,这不同于我们的结构化表示。

2.2. Modeling joint dependency

由于人体具有关节结构,因此许多工作试图建模关节依赖性,以帮助解决 low-level 的模糊性,但绝大部分工作都关注于建模而非表示,而本工作着重关注于表示
Pictorial structures. 一些工作提出使用可变形模型,基于解剖先验(例如肢体长度)来明确考虑身体关节间的关系。但它们有三个缺点:① 首先,他们通常对关系做出强有力的假设,例如两个关节间偏移的高斯分布,使他们无法表示复杂的模式。② 其次,他们仍需要先从图像中独立检测身体关节,并在此基础上使用依赖先验来获得最合理的配置。然而,在有严重遮挡的杂乱场景中,第一步已经非常困难了。③ 他们无法用深度网络进行端到端训练。
Implicit modeling. 最近的基于深度学习的方法通过在关节之间传播视觉特征来隐式建模依赖性。例如,Chu等人引入了几何变换 kernel 来融合不同通道的特征,不同通道表示不同关节的特征。Wang等人使用图卷积网络 refine 由热图法得到的姿态估计。此外,Chen等人提出学习姿态鉴别器,以排除不现实的姿态估计,并推动预测器学习具有合理结构的姿态。Li等人明确学习每个关节的 type embedding,并应用 transformer 对关节间的关系进行建模,不过从表示的角度来看,他们仍独立处理每个关节,并预测每个关节的热图。
我们的 PCT 表示在三个方面与之前的方法不同:① 首先,关节依赖性在表示中由 token 提前编码(改变 token 的状态会改变相应的子结构,而不是单个关节),相比之下,其他三种表示分别处理每个关节。② 其次,子结构是从训练数据中自动学习的,因此不会做出任何不切实际的假设,实验表明,这种方法具有处理遮挡歧义的强大能力。③ 第三,显示强加关节依赖,而非通过隐式特征传播,后者仍会在遮挡(或其他挑战性场景)情况下进行不切实际的姿态估计。

3. Pose as Compositional Tokens

3.1节描述如何学习 codebook 和 encoder/decoder 网络。3.2节解释PCT如何在人体姿态估计任务中使用。

3.1. Learning compositional tokens

G ∈ R K × D G∈R^{K×D} GRK×D是原始姿态,K是身体关节数量,D是每个关节的维度,对于2D姿态估计 D=2。我们学习一个 compositional encoder: f e ( ⋅ ) f_e(·) fe() 将一个姿态转换为 M 个 token features:
在这里插入图片描述
每个token feature t i ∈ R H t_i∈R^H tiRH 近似对应于姿态的子结构,该子结构包含几个相互依赖的关节。图1所示为一些学习的示例。注意,这个表示有许多冗余,因为不同的token可能有重叠的关节。冗余度使其对单个遮挡关节具有鲁棒性。
图3(c)显示了encoder网络结构,每个身体关节先喂给一个 linear projection 层去提高特征维度,然后特征再喂给一系列 MLP-Mixer blocks来深度融合不同关节特征。最后,通过对所有关节上的特征应用 linear projection 来提取M个 token features。
[Neural discrete representation learning] 一样,通过一个 codebook C = ( c 1 , . . . , c V ) T C=(c_1,...,c_V)^T C=(c1,...,cV)T,(V表示 codebook entries 数量)定义一个隐式 embedding space。使用 embedding space 通过最近邻查找来量化每个token,如以下等式所示:
在这里插入图片描述
使用 q ( t i ) q(t_i) q(ti)来表示对应codebook entry 的索引,然后,将量化的 tokens ( c q ( t 1 ) , c q ( t 2 ) , ⋅ ⋅ ⋅ , c q ( t M ) cq(t_1), cq(t_2),···,cq(t_M) cq(t1),cq(t2),⋅⋅⋅,cq(tM))喂给 decoder 网络以恢复原始姿态:
在这里插入图片描述
decoder 除了使用只有一个 block 的较浅 MLP Mixer 网络之外,网络结构与 encoder 网络的顺序相反。
通过最小化训练集上的以下loss来联合学习 encoder 网络,codebook 和 decoder 网络:
在这里插入图片描述
遵循[Neural discrete representation learning]中使用的优化策略来处理量化步骤中的 broken gradients 问题,并且使用先前 的 token features 的指数移动平均 (EMA) 来更新 codebook。我们的实现中,有两个改进结果的设计:① 首先,随机 mask 一些关节,并要求模型重建它们。② 其次,将关节周围的图像特征与位置特征连接起来,以增强其识别能力。
Discussion. 我们试图解释为什么PCT能学习与姿态子结构相对应的token。在一个极端例子中,若每个 token 对应单个关节,那么需要 w×h(关节点也是以一个像素表示的,那么对于大小为256×256的图像为65536)个 codebook entries 来实现小量化误差。但我们的实验仅使用了1024个entries,这驱动模型学习比单个关节更大的结构,以提高 codebook 的效率。另一个极端例子,若让一个 token 对应于一个完整的姿态,那么只需要一个 token,而不是M个 token。但最坏情况下,为了以小误差来量化姿态,需要 ( w h ) K (wh)^K (wh)K 个codebook entries。相反,我们的方法驱动模型将一个姿态划分为多个基本子结构,并且可以用一个共享的 set 来描述这些基本子结构的可能的配置。
Relation to VQ-VAE. PCT表示法的灵感来自 VQ-VAE [Neural discrete representation learning],主要区别在于,VQ-VAE将定义明确的规则数据(例如,分辨率为16×16的图像 patch)视为 token。但对于人体姿态,我们通过合成encoder 和 codebook 共享方案实现PCT自动学习有意义的子结构作为token。此外,编码器和解码器的网络结构是专门针对人体姿态设计的,不同于VQ-VAE。

3.2. Human Pose Estimation

利用学习的 codebook 和 decoder,我们将人体姿态估计作为一项分类任务。如图3所示,给定 cropped 图像 I,简单预测M个 token 的类别,并将这些 token 喂给 decoder 以恢复姿态。使用 backbone 来提取图像特征X,并设计以下分类头。
Classification head: 先使用两个基本的残差卷积块来调制 backbone 特征,然后展平特征,并通过一个 linear projection layer 来更改维度:
在这里插入图片描述
将一个 1-D output feature reshape 为一个矩阵 X f ∈ R M × N X_f∈R^{M×N} XfRM×N,使用 4 个 MLP-Mixer block 处理 features,并且输出 token 分类的logits:

在这里插入图片描述

Training. 使用两个loss来训练分类头:首先,强制执行交叉熵损失:
在这里插入图片描述
L 表示将 GT pose喂给 encoder 获得的 gt token classes。
强制执行一个 pose reconstruction loss 来最小化预测姿态和 gt 姿态间的差异。为了让来自 decoder 网络的梯度流回分类头,将硬推理方案替换为软版本:
在这里插入图片描述
S ∈ R M × N S∈R^{M×N} SRM×N 表示线性插值 token features。然后将 token features S 喂给预学习的 decoder 以获得预测的姿态 G ^ \hat{G} G^。完整的损失函数为:

在这里插入图片描述

注意,解码器网络在训练期间不进行更新。

4. Experiments

4.1. Datasets and metrics

2D pose datasets: 选用 COCO、MPII、CrowdPose test set、OCHuman val set 和 test set、SyncOCC数据集*[Adafuse: Adaptive multiview fusion for accurate human pose estimation in the wild]*,SyncOCC 数据集是由 UnrealCV 生成的合成数据集,因此它提供了遮挡关节的准确位置。在COCO数据集上训练的模型应用于四个数据集,而无需重新训练

3D pose datasets: Human3.6M dataset。

Evaluation metrics. 遵循COCO、MPII 和 Human3.6M 数据集的标准评估指标。具体而言,COCO数据集使用基于OKS的AP(平均精度)、AP50和AP75。PCKh(head-normalized probability of correct keypoint)分数用于评估MPII数据集。MPJPE(mean per joint position error)用于评估 Human3.6M 数据集。在四个遮挡数据集上,使用仅在遮挡关节上计算的基于OKS的APOC。

4.2. Implementation details

采用 top-down pipeline。训练过程中使用数据集提供的GT框,测试过程中,使用 SimpleBaseline 为COCO提供的检测结果,对于MPII数据集使用 gt box,遮挡数据集遵循常见做法。
使用在 ImageNet-1k 上用 SimMIM 预训练的Swin Transformer V2 作为 backbone。它也在具有热图监督的COCO数据集上进行训练。为节省计算成本,固定主干,只训练分类头。将基本学习率、权重衰减和 batch size 分别设置为8e-4、0.05和256。在COCO和MPII上训练了 210 个 epoch,在Human3.6M上训练 50个 eoch,使用 flip testing。
使用MMPose 提供的默认数据增强,包括 random scale (0.5, 1.5),random rotation (−40◦, 40◦),random flip (50%),grid dropout and color jitter (h=0.2, s=0.4, c=0.4, b=0.4)。还为COCO数据集额外添加了 half body augmentation。图像大小为256×256。
学习表示过程中,使用 AdamW 优化器,基本学习率分别设置为1e-2和权重衰减为0.15。对500次迭代的学习率进行 warm up,并根据余弦计划降低学习率,batch size 设置为512。2D姿态训练 50个 epoch,3D姿态估计训练20个epoch。

4.3. Results on COCO, MPII and H36M

COCO结果如表1所示:
在这里插入图片描述

表1。COCO test-dev2017和val2017 set的结果。报告了被引用论文中模型的最佳结果。在单个V100 GPU上测试所有 model 的速度时,设置 batch size=32。由于 Swin 的官方预训练模型使用 square,我们直接采用 square input size 来避免 domin gap。虽然我们的输入大小比竞争对手更大(256×256 vs 256×192),但因为附加区域大多是填充的无意义像素,所以有效像素的数量几乎相同。

表2,表7 所示为 MPII 数据集结果:
在这里插入图片描述

表2. MPII val set 上的结果(PCKh@0.5).

在这里插入图片描述

表7. MPII test set 的结果(PCKh@0.5). ’†’ 表示使用额外的训练数据集,’干’ 表示使用更大的图像。

表3所示为 H36M 数据集结果:
在这里插入图片描述

表3。Human3.6M 数据集上的3D姿态估计结果。'*'表示使用额外的2D MPII数据集进行训练。我们报告了MPJPE度量(mm)。我们只与表中静态的基于图像的方法进行比较。

4.4. Results on CrowdPose, OCHuman, SyncOCC

四个遮挡数据集的结果如表4所示,可以看出基于PCT的方法明显优于其他方法。图5为一些定性结果示例。
在这里插入图片描述

表4. sota 方法在遮挡数据集上的结果。仅在与 COCO 标注关节重叠的遮挡关节上计算度量。使用GT边界框。'OC’表示OCHuman数据集。

在这里插入图片描述

图5。使用Swin-Base backbone 结合我们的方法取得的定性结果。图像来自OChuman test set、COCO val2017 set、CrowdPose test set和SyncOCC。

我们还在完全公平的环境中比较了四种表示,包括坐标、热图、discrete bins 和PCT。结果如表5所示。
在这里插入图片描述

表5。在完全公平的环境中比较四种姿态表示。使用Swin-Base和256×256的输入大小进行实验。报告了与COCO标注关节重叠的遮挡关节的结果。使用GT边界框。'OC’表示OCHuman数据集。

4.5. Empirical analysis

Ablation study.

在这里插入图片描述

表6。四个主要组件的消融研究:Compo(compositional design)、MJM(masked joint modeling)、IG(image guidance)和 RecLoss(auxiliary pose reconstruction Loss)。报告了COCO val 2017 set 上重建姿态的APV、预测姿态的APP和SyncOCC测试集合上的APOC。所有结果都是使用 Swin-Base backbone 和256×256输入大小的情况下获得的。

Token number && Codebook size.
在这里插入图片描述

图4:codebook entries 数量和 token 数量的影响。使用基于 Swin-Base backbone 在COCO2017 val set 上训练了150个epoch的模型获得的。

5. Conclusion

本工作将结构化表示PCT引入人体姿态估计领域,对身体关节间的依赖性进行建模,并自动学习人体姿态的子结构。我们还在PCT表示的基础上提出了一个非常简单的姿态估计pipeline,无需任何负责的后处理,它在 5 个姿态估计基准上与 sota 方法相比有过之而无不及。离散表示也为与其他离散模态(如文本和语音)的交互开辟了道路。
未来的工作:通过在离散表示下探索其他线索来进一步减少姿态估计中的模糊性,例如,可以从周围物体等环境中对上下文进行建模。

Appendix

More visual illustrations for the sub-structures.
在这里插入图片描述

图6。每个token被学习用于表示一个子结构。每一行表示,若将一个 token 的 state 更改为不同的值,它会相应更改为与该值相对应的子结构(黑色姿态表示更改前,橙色突出显示更改后的子结构)

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

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

相关文章

el-form-renderer 使用指南

目录 前言 起步 使用 update-form && getFormValue 表单项动态显示或隐藏(hidden) 表单数据联动(on) 输入/输出格式化(inputFormat/outputFormat) set-options el-form-renderer 实践案例 案例一 案例二 自定义组件接入指南 前言 el-form-renderer是基于e…

Starting Windows PowerShell (启动 Windows PowerShell)

Starting Windows PowerShell (启动 Windows PowerShell) Windows PowerShell is a scripting engine .DLL that’s embedded into multiple hosts. The most common hosts you’ll start are the interactive command-line powershell.exe and the Interactive Scripting Envi…

【Java笔试强训 26】

🎉🎉🎉点进来你就是我的人了博主主页:🙈🙈🙈戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔🤺🤺🤺 目录 一、选择题 二、编程题 🔥跳台阶扩…

Redis`数据结构`与`对象`概述

文章目录 Redis数据结构与对象概述一、数据结构1、简单动态字符串(SDS)SDS结构体定义SDS结构示意图使用SDS的五个优点 2、双端链表(list)链表结构体定义list结构示意图 3、字典(dict)字典结构体定义dict结构…

想要成为 NLP 领域的大牛?从 ChatGPT 的 5 大自然语言模型开始了解吧(LM、Transformer、GPT、RLHF、LLM)——小白也能看得懂

目录 前言ChatGPT基础科普——知其一点所以然1. LM2. Transformer3. GPT4. RLHF5. LLM 参考资料其它资料下载 前言 如果想在自然语言处理(Natural Language Processing,NLP)领域内脱颖而出,那么你一定不能错过 ChatGPT 的 5 大自然…

软件设计师笔记

软件设计师笔记 计算机组成与体系结构 数据的表示、计算机结构、Flynn分类法、CISC与RISC、流水线技术、存储系统、总线系统、可靠性、校验码 1. 数据的表示 (一)进制转换 R进制转十进制使用按权展开法: 十进制转R进制使用短除法 二进制…

Python——狂肝两万字带你学会【类与对象】

目录 01-初始对象 生活中的数据组织 程序中的数据组织​ 使用对象组织数据 总结01 02-类的成员方法 类的定义和使用 成员变量和成员方法 成员方法的定义语法 注意事项 成员方法——代码演示 总结02 03-类和对象 现实世界的事物和类 类和对象 使用类和对象描述…

Java 基础进阶篇(三)—— 权限修饰符、final 关键字与枚举

文章目录 一、权限修饰符二、final 关键字2.1 final 作用2.2 final 修饰变量举例2.3 常量 三、枚举3.1 枚举的格式3.2 枚举的特征3.3 枚举的应用 一、权限修饰符 权限修饰符 用于约束成员变量、构造器、方法等的访问范围。 权限修饰符: 有四种作用范围由小到大 (p…

vue+element 多选级联选择器自定义props

前言 我这里分享的是Cascader 级联选择器中的多选、以及如何自定义props的使用详解 1.使用Cascader 级联选择器 效果 代码 <div class"block"><span class"demonstration">默认显示所有Tag</span><el-cascader:options"op…

Vue电商项目--vuex模块开发

vuex状态管理库 vuex是什么&#xff1f; vuex是官方提供的一个插件&#xff0c;状态管理库&#xff0c;集中式管理项目中组件共有的数据。 切记&#xff0c;并不是全部的项目都需要Vuex,如果项目很小&#xff0c;完全不需要vuex,如果项目很大&#xff0c;组件很多&#xff0…

一道Python初学者常犯错误解析

1. 引言 在Python学习中&#xff0c;经常会遇到各种各样的代码错误&#xff0c;尤其对于初学者而言&#xff0c;明明觉得逻辑上是对的&#xff0c;但是代码运行起来&#xff0c;往往不是自己想要的结果。 本文就最近在某平台看到的一个常见错误进行展开&#xff0c;帮助大家更…

06 虚拟化Open vSwitch环境部署

文章目录 06 虚拟化Open vSwitch环境部署6.1 安装Open vSwitch网桥6.1.1 安装Open vSwitch组件6.1.1.1 安装Open vSwitch组件6.1.1.2 启动Open vSwitch服务6.1.1.3 设置Open vSwitch服务随系统自动启动 6.1.2 确认安装是否成功6.1.2.1确认 Open vSwitch组件是否安装成功6.1.2.2…

kill 信号

kill -0 PidNum 参数是0&#xff0c;不会发送任何的信号&#xff0c;不会关闭程序&#xff0c;但会执行错误检查&#xff0c;对程序运行状态进行监控。可以用他来检测某个进程ID或进程组ID是否存在。从理解上看&#xff0c;作用相当于ps -p 。 进程已停止、不存在或其他异…

前端小白是如何利用chatgt用一周时间从做一款微信小程序的

前端小白是如何利用chatgt用一周时间从0做一款微信小程序的 随着chatgpt的大火&#xff0c;真的是在工作上给各行各业的人带来了极大的便利&#xff0c;本人是一个java程序员&#xff0c;其实我自己是一直想开发一款属于自己的小程序的&#xff0c;但是迫于对前端知识的贫瘠&a…

【五一创作】VimPlug插件配置

目录 Install Question Q1&#xff1a;字体乱码 Q2&#xff1a;插件配置 Q3&#xff1a;安装扩展插件 Q4&#xff1a;查看安装插件状态 Q5&#xff1a;查看默认插件 Q6&#xff1a;卸载插件 Q7&#xff1a;增加用户配置 Install Github地址&#xff1a;GitHub - chxu…

内网渗透之横向移动NTMLRelay(中继)攻击-InveighNTLM-Relay重放

横向移动 NTLM中继攻击 Relay重放(smb) 适用于无法获取hash或密码时使用 NTML Relay重放包括smb to relay ldap ews webserver: 执行下面的命令时会默认以当前用户名和密码去登录目标计算机 dir \\ 192.168.3.32\c$webserver切换到本地的administrator时 dir \\ 192.168.3.3…

权限提升:令牌窃取 || 进程注入.

权限提升&#xff1a;令牌窃取 || 进程注入. 权限提升简称提权&#xff0c;由于操作系统都是多用户操作系统&#xff0c;用户之间都有权限控制&#xff0c;比如通过 Web 漏洞拿到的是 Web 进程的权限&#xff0c;往往 Web 服务都是以一个权限很低的账号启动的&#xff0c;因…

管理系统的实现_03

文章目录 登录界面的开发安装axios用于前后端交互第一步、在项目目录下执行命令第二步、在main.js文件夹添加如下代码第三步、使用this.axios 即可访问到 Login.vue 完整代码如下搭建第一个springboot项目第一步、修改配置文件(application.properties)第二步、创建包目录 用sp…

希尔排序(C++)

希尔排序 是插入排序的一种&#xff0c;也是缩小增量排序。希尔排序是记录按下标的一定增量分组&#xff0c;对每组使用直接插入排序算法排序&#xff1b;随着增量逐渐减少&#xff0c;每组包含的关键词越来越多&#xff0c;当增量减至1时&#xff0c;整个文件恰被分成一组&am…

常用的极限

常用的极限 方法1 利用基本极限求极限 1.常用的基本极限 一个函数极限是非零常数&#xff0c;分母极限为零&#xff0c;分子极限必为零 幂指函数转为指数函数的形式,再等价代换 方法二 分子分母凑成可以使用等价无穷小代换的形式 arcsinx 和 sin x 作为分子是相减的. 1 先使用…