动态头部:统一目标检测头部与注意力

news2024/11/29 8:44:30

论文地址:https://arxiv.org/pdf/2106.08322.pdf

ai阅读论文_论文速读_论文阅读软件-网易有道速读

创新点是什么?

这篇文档的创新点是提出了一种统一的方法,将对象检测头和注意力机制结合起来。作者在文中提出了一种称为Dynamic Head的方法,通过引入注意力机制来动态地选择和调整不同的对象检测头,以适应不同的任务和场景。这种方法可以提高对象检测的性能和效率。

摘要

在目标检测中,定位与分类相结合的复杂性导致了各种方法的蓬勃发展。以前的工作试图提高在不同的目标检测头的性能,但未能呈现一个统一的视图。在本文中,我们提出了一种新的动态头部框架来统一目标检测头部和注意力。通过在尺度感知的特征层次之间、空间感知的空间位置之间以及任务感知的输出通道内连贯地组合多重自注意机制,该方法显著提高了目标检测头的表征能力,且不增加任何计算开销。进一步的实验证明了该方法在COCO基准上的有效性和有效性。使用标准的ResNeXt-101- DCN骨干网,我们大大提高了流行的目标检测器的性能,并实现了新的最先进的54.0 AP。此外,使用最新的变压器骨干网和额外的数据,我们可以将当前最好的COCO结果推到60.6 AP的新记录。代码将在https://github.com/microsoft/DynamicHead上发布。

1. 介绍

在计算机视觉应用中,目标检测是为了回答“什么物体在哪里”的问题。如何提高目标检测头的性能已成为现有目标检测工作中的一个关键问题。

开发一个好的目标探测头所面临的挑战可以概括为三类。首先,头部应该是尺度感知的,因为在一个图像中经常存在多个具有不同尺度的物体。其次,头部应该有空间意识,因为物体通常是移动的

在不同的视角下,梨的形状、旋转和位置都有很大的不同。第三,头部需要是任务感知的,因为物体可以有不同的表示(例如,边界框[12],中心[28]和角点[33]),它们拥有完全不同的目标和约束。我们发现最近的研究[12,35,28,31,33]只侧重于以各种方式解决上述问题之一。如何形成一个能同时解决所有这些问题的统一的头脑,仍然是一个悬而未决的问题。

在本文中,我们提出了一种新的检测头,称为动态头,将尺度感知、空间感知和任务感知统一在一起。如果我们将主干的输出(即检测头部的输入)视为维度为×space ×channel的三维张量,我们发现这样一个统一的头部可以被视为一个注意学习问题。一个直观的解决方案是在这个传感器上建立一个完全的自关注机制。然而,该优化问题求解难度大,计算成本高。

相反,我们可以在特征的每个特定维度上分别部署注意力机制,即关卡智能、空间智能和渠道智能。尺度感知注意力模块仅部署在级别维度上。它学习各种语义层次的相对重要性,以便根据单个对象的规模在适当的层次上增强特征。空间感知注意力模块在空间维度(即高度×width)上进行部署。它在空间分配中学习连贯的判别表征。任务感知注意力模块部署在通道上。它根据对象的不同卷积核响应,指导不同的特征通道分别支持不同的任务(例如,分类、盒回归和中心/关键点学习)。

通过这种方式,我们显式地实现了检测头的统一注意机制。虽然这些注意机制分别应用于特征张量的不同维度,但它们的表现可以相互补充。在MS-COCO基准上进行了广泛的实验证明我们方法的有效性。它为学习更好的表示提供了巨大的潜力,可用于改进各种目标检测模型,AP增益为1.2% ~ 3.2%。使用标准ResNeXt- 101-DCN骨干网,该方法在COCO上实现了54.0%的AP。此外,与EffcientDet[27]和SpineNet[8]相比,动态头部的训练时间只有1/20,但性能更好。此外,利用最新的变压器主干和来自自我训练的额外数据,我们可以将当前最佳COCO结果推向60.6 AP的新记录(详见附录)。

2. 相关工作

近年来的研究主要从尺度感知、空间感知和任务感知等方面对目标检测器进行改进。

Scale-awareness。由于自然图像中经常存在不同尺度的物体,因此许多研究都认识到尺度感知在物体检测中的重要性。早期的工作已经证明了利用图像金字塔方法进行多尺度训练的重要性[6,24,25]。代替图像金字塔,特征金字塔[15]被提出,通过连接下采样卷积特征的金字塔来提高效率,并已成为现代目标检测器的标准组件。然而,不同层次的特征通常是从网络的不同深度提取的,这导致了明显的语义差距。为了解决这一差异,[18]提出从特征金字塔开始,通过自下而上的路径增强来增强下层的特征。后来[20]通过引入平衡采样和平衡特征pyra- mid对其进行了改进,最近[31]提出了一种基于改进的三维卷积的金字塔卷积同时提取尺度和空间特征。

在这项工作中,我们在检测头中提出了一个尺度感知的注意,这使得各种特征级别的重要性自适应于输入。

空间意识。以往的研究试图通过提高物体检测中的空间意识来提高语义学习。已知卷积神经网络在学习图像中存在的空间变换方面是有限的[41]。一些工作通过增加模型能力(大小)[13,32]或涉及昂贵的数据增强[14]来缓解这个问题,导致推理和训练的计算成本极高。后来,提出了新的卷积算子来改进空间变换的学习。[34]提出使用相关卷积从指数扩展的接受野中聚合上下文信息。[7]用ad-提出了可变形卷积对空间位置进行采样

额外的自学补偿。[37]通过引入学习到的特征幅度,重新制定了偏移量,并进一步提高了其能力。

在这项工作中,我们提出了检测头部的空间意识注意,它不仅将注意力应用于每个spa位置,而且还自适应地将多个特征级别聚合在一起以学习更具判别性的表征。

Task-awareness。目标检测起源于两阶段范式[39,6],该范式首先生成目标提案,然后将提案分为不同的类别和背景。[23]通过引入区域建议网络(RPN)将这两个阶段形成一个单一的卷积网络,形式化了现代两阶段框架。后来,一级目标探测器[22]因其效率高而流行起来。[16]通过引入特定于任务的分支进一步改进了ar架构,以超越两级检测器的精度,同时保持先前的一级检测器的速度。

最近,越来越多的研究发现,物体的各种表征可能会潜在地提高性能。[12]首先证明了结合对象的绑定盒和分割掩码可以进一步提高性能。[28]提出使用中心表示以逐像素预测的方式解决目标检测问题。[35]进一步提高了基于中心的方法的性能,根据对象的统计特征自动选择阳性和阴性样本。后来,[33]将目标检测作为具有代表性的关键点来简化学习。[9]进一步提高了性能,通过检测每个对象作为一个三元组,而不是一对关键点,以减少错误的预测。最近,[21]提出了从每个边界的极值点提取边界特征来增强点特征,并存档了最先进的性能。

在这项工作中,我们在检测头中提出了一个任务感知的注意力,它允许注意力部署在信道上,它可以自适应地支持各种任务,无论是单/两级探测器,还是基于框/中心/关键点的探测器。

更重要的是,在我们的头部设计中,所有这些属性都被整合到一个统一的注意机制中。据我们所知,这是第一个通用的检测头框架,它朝着理解注意力在目标检测头的成功中所起的作用迈出了一步。

3. 我们的方法

3.1. 动机

为了在统一的对象分析中同时实现尺度感知、空间感知和任务感知检测头,我们需要大致了解以前对目标检测头的改进。

给定特征金字塔中不同层次的特征Fin = {Fi}Li=1的连接,我们可以使用上采样或下采样来调整连续层次特征的大小,使其接近中位数水平特征的规模。重新缩放的特征金字塔可以表示为一个四维张量f∈RL×H×W ×C,其中L表示金字塔中的层级数,H、W、C分别表示中位层级特征的高度、宽度和通道数。我们进一步定义S = H ×W将张量重塑为三维张量F∈RL×S×C。基于这种表示,我们将探讨每个张维的作用。

•物体尺度的差异与不同层次的特征有关。改善不同层次F的表征学习有助于目标检测的尺度感知。•不同物体形状的各种几何变换与不同空间位置的特征有关。改进F在不同空间位置上的表征学习有利于目标检测的空间感知。•不同的对象表示和任务可以与不同渠道的特征相关联。改善不同通道的表征学习有助于目标检测的任务感知。

在本文中,我们发现在一个有效的注意学习问题中,上述所有方向都是可以统一的。我们的工作是第一次尝试将所有三个维度的多重关注结合起来,形成一个统一的头部,以最大限度地提高它们的改进。

3.2. 动态头部:与注意力统一

给定特征张量F∈R ,大小为L×S×C,应用自注意的一般模拟为:

其中π(·)为注意函数。这种注意力功能的一个na¨ıve解决方案是由完全连接的层实现的。但是,由于张量的高维,直接学习所有维度上的注意函数在计算上是昂贵的,而且实际上是负担不起的。

相反,我们将注意功能转换为三个连续的注意,每个注意只关注一个角度:

式中πL(·)、πS(·)、πC(·)分别是作用于维度L、S、C上的三个不同的注意函数。

尺度感知注意力πL。我们首先引入尺度感知注意,根据不同尺度的语义重要性动态融合特征。

其中f(·)是1 ×1convolutional层近似的线性函数,σ(x) = max(0, min(1, x+12))是hard-sigmoid函数。

PAGE 4

空间意识注意力πS。我们采用另一种基于融合特征的空间感知注意模块,对空间位置和特征层次之间一致共存的判别区域进行聚焦。考虑到S的高维性,我们将该模块分解为两步:首先通过可变形卷积使注意力学习变得稀疏[7],然后在相同的空间位置跨层聚集特征:

其中,K为稀疏采样位置的个数,pk +∆p K为自学习空间偏移量∆p K移位的位置,以聚焦于判别区域,∆m K为位置pk处的自学习重要标量。两者都是从F的中位数水平的输入特征中学习到的。

任务感知注意力π。为了实现联合学习和概括对象的不同表示,我们在最后部署了任务感知注意力。它动态地切换功能的on和OFF通道,以支持不同的任务:

其中Fc是c-th通道的特征片,[α 1, α2, β1, β2]T = θ(·)是一个学习控制激活阈值的超函数。θ(·)的实现与[3]类似,首先对l ×S维进行全局平均池化降维,然后使用两个全连接层和一个归一化层,最后应用移位的sigmoid函数将输出归一化为[−1,1]。

最后,由于上述三种注意机制是顺序应用的,我们可以多次嵌套公式2,从而有效地将多个πL, πS和πC块堆叠在一起。我们的动态头部(即Dy-头部简化)模块的详细配置如图2 (a)所示。

作为总结,我们提出的动态头部的目标检测的整个范例如图1所示。任何一种骨干网络都可以用来提取特征金字塔,将其进一步调整为相同的尺度,形成一个三维张量F∈RL×S×C,然后作为动态头部的输入。接下来,将包括尺度感知、空间感知和任务感知在内的几个Dy- Head块依次堆叠。动态头部的输出可用于对象检测的不同任务和表示,如分类、中心/盒回归等。

在图1的底部,我们显示了每种类型的注意力的输出。我们可以看到,由于域的差异,来自主干的初始特征映射是有噪声的

ImageNet训练。经过我们的尺度感知注意模块后,特征图对前景物体的尺度差异更加敏感;在进一步通过我们的空间感知注意模块后,特征地图变得更加稀疏,并集中在前景物体的可鉴别空间位置上。最后,通过我们的任务感知关注模块,特征映射根据不同下游任务的需求重新形成不同的激活。这些可视化很好地展示了每个注意模块的有效性。

3.3. 推广到现有的检测器

在本节中,我们演示了如何将所提出的动态头集成到现有的检测器中,以有效地提高其性能。

单程探测器。单级检测器通过从特征图中密集采样来预测目标位置,简化了检测器的设计。典型的一级检测器(如RetinaNet[16])由提取密集特征的骨干网和多个任务特定的子网分支组成,分别处理不同的任务。如前所述[3],目标分类子网络的行为与边界框重构有很大不同移位子。与这种传统方法有争议的是,我们只在主干上附加一个统一的分支,而不是多个分支。由于我们的多重注意力机制的优势,它可以同时处理多个任务。这样可以进一步简化体系结构,提高效率。最近,无锚的单级探测器变体变得流行起来,例如,FCOS[28]、ATSS[35]和RepPoint[33]将目标重新制定为中心和关键点,以提高性能。与retanet相比,这些方法需要在分类分支或回归分支上附加一个中心预测或关键点预测,这使得任务特定分支的构建变得不容易。相比之下,部署动态head更加灵活,因为它只将各种类型的预测附加到head的末尾,如图2 (b)所示。

两级探测器。两阶段检测器利用区域建议和roi池[23]层从骨干网络的特征金字塔中提取中间表示。为了配合这一特征,我们首先在roi池层之前的特征金字塔上应用我们的尺度感知注意力和空间感知注意力,然后使用我们的任务感知注意力来替换原始的完全连接的层,如图2 (c)所示。

3.4. 与其他注意机制的关系

可变形。可变形卷积[7,37]通过引入稀疏采样,显著改进了传统卷积层的变换学习。它已被广泛应用于目标检测主干,以增强特征表示。虽然它很少用于目标检测头,但我们可以将其视为我们表示中的S子维的单独建模。我们发现在主干中使用的可变形模块可以与所提出的动态头部互补。事实上,使用ResNext-101-64x4d骨架的可变形变体,我们的动态头部实现了新的最先进的目标检测结果。

非本地。非局部网络[30]是利用注意力模块来提高目标检测性能的先驱工作。然而,它使用一种简单的点积公式,通过融合来自不同空间位置的其他像素的特征来增强像素特征。这种行为可以被视为只对我们的表示中的L×S子维度进行建模。

transformer。最近,有一种趋势是将transformer模块从自然语言处理引入到计算机视觉任务中[29]。前期工作[2,38,5]在改进对象方面显示出良好的效果

检测。Transformer提供了一个简单的解决方案,通过应用多头完全连接层来学习不同模式的交叉注意对应和融合功能。这种行为可以看作是在我们的表示中只建模这些×C子维度。

上述三种类型的注意仅部分地对特征张量中的子维度进行建模。作为一个统一的设计,我们的动态头部将不同维度的关注结合到一个连贯有效的实现中。下面的实验表明,这种专门的设计可以帮助现有的目标检测器取得显着的增益。此外,与现有解决方案中的隐式工作原理相比,我们的注意力机制明确地解决了目标检测的挑战。

4. 实验

我们根据常用的设置在MS-COCO数据集[17]上评估了我们的方法。MS-COCO包含从网络上收集的约160K图像的80个类别。数据集被分成train2017、val2017和test2017三个子集,分别有118K、5K和41K张图像。标准平均精度(AP)指标用于报告不同IoU阈值和对象尺度下的结果。在我们所有的实验中,我们只在train2017图像上进行训练,没有使用任何额外的数据。对于烧蚀研究的实验,我们在val2017子集上评估了性能。当与最先进的方法进行比较时,我们在测试开发子集上报告从测试服务器返回的正式结果。

4.1. 实现细节

我们基于流行的Mask R-CNNbenchmark[12]的实现,将动态头块作为插件实现。如果没有特别提到,我们的动态头部是使用ATSS框架进行训练的[35]。所有模型都使用一个计算节点进行训练,每个计算节点有8个v100gpu,每个计算节点有32GB内存。

培训。我们使用ResNet-50作为所有消融研究的模型主干,并使用标准的1x配置对其进行训练。其他模型使用[12]中介绍的标准2x训练配置进行训练。我们使用初始学习率为0.02,权重衰减为1e−4,动量为0.9。在67%和89%的训练阶段,学习率下降了0.1倍。采用随机水平翻转的标准增广。为了与以往使用多尺度输入训练的方法相比,我们还对选择性模型进行了多尺度训练。

推理。为了与使用测试时间延长的最新方法进行比较,我们还评估了我们的方法.多尺度测试的最佳模型。其他技巧,如模型EMA、马赛克、混合、标签平滑、软nmr或自适应多尺度测试[25],都没有使用。

4.2. 消融实验。

注意模块的有效性。我们首先通过逐步将不同成分添加到基线中,对动态头块中的不同成分的有效性进行对照研究。如表1所示,“L。”、“年代。”、“C。分别表示我们的尺度感知注意力模块、空间感知注意力模块和任务感知模块。我们可以观察到,单独将每个组件添加到基线实现中,可以提高0.9AP, 2.4 AP和1.3 AP的性能。由于空间感知注意力模块在三个模块中占主导地位,因此预计会看到空间感知注意力模块的收益最大。当我们把两个“L”加在一起时。和“S”到基线,它不断提高2.9 AP的性能。最后,我们的全动态头部块显着提高了3.6AP的基线。实验表明,不同的组件作为一个相干模块工作。

注意学习的有效性。然后,我们在动态头部模块中验证了注意学习的有效性。图3显示了在我们的尺度感知注意力模块中,在不同级别的特征上学习到的缩放(通过将高分辨率的学习权重除以低分辨率的学习权重计算)的趋势。直方图是使用来自theCOCO val2017子集的所有图像计算的。可以清楚地看到,我们的尺度感知注意模块倾向于将高分辨率特征图(图中“5级”紫色直方图)调节到低分辨率,将低分辨率特征图(图中“1级”蓝色直方图)调节到高分辨率以平滑化

尺度差异形成了不同的特征层次。这证明了规模意识注意学习的有效性。

图4显示了使用不同数量(即2、4、6)的注意力模块块前后的特征图输出。在应用我们的注意力模块之前,从主干提取的特征图噪声很大,无法聚焦在前景对象上。随着特征图经过更多的关注模块(如图所示,从block2到block 6),我们可以明显地看到,特征图覆盖了更多的前景物体,并且更准确地聚焦于它们的判别空间位置。这种可视化很好地证明了空间意识注意学习的有效性

头部深度的效率。我们通过控制深度(块数)来评估动态头的效率。如表2所示,我们改变了使用的DyHead块的数量(例如,1、2、4、8、10块),并将它们的性能和计算成本(GFLOPs)与基线进行比较。我们的动态头部可以通过堆叠更多的方块来增加深度,直到8。值得注意的是,我们的2块方法已经以更低的计算成本超过了基线。同时,即使有6个区块,与主干的计算成本相比,计算成本的增量可以忽略不计,同时大大提高了准确性。它证明了我们方法的有效性。

现有目标检测器的泛化。我们通过将动态头部插入流行的目标检测器来评估其泛化能力,例如Faster- RCNN[23]、RetinaNet[16]、ATSS[35]、FCOS[28]和reppoints[33]。这些方法代表了各种各样的目标检测框架(例如,两阶段vs单阶段,基于锚点vs无锚点,基于框的vs基于点的)。如表3所示,我们的动态头显着提高了所有流行的目标检测器1.2 ~ 3.2 AP。这证明了我们方法的通用性。

4.3. 与技术水平的比较

我们比较了动态头部与几种标准骨干和最先进的目标检测器的性能。

与不同的骨干合作。首先对动态头部与不同骨架的兼容性进行了分析。如表4所示,我们通过将动态头部与ResNet-50、ResNet-101和ResNeXt-101骨干网相结合来评估目标检测器的性能,并与最近具有类似配置的方法(包括Mask R-CNN[12]、Cascade-RCNN[1]、FCOS[28]、ATSS[35]和BorderDet[21])进行比较。我们的方法一直比以前的方法有很大的优势。与最好的检测器BorderDet相比[21]

在相同的设置下,我们的方法在ResNet-101骨干网和theResNeXt-64x4d-101骨干网上的性能分别高出1.1 AP和1.2 AP,由于COCO基准测试中的挑战,这种改进是显著的。

与最先进的探测器相比。我们将这些方法与最先进的检测器进行了比较[35,31,21,4,2,27,8],包括一些并行工作[38,5]。如表5所示,我们将这些现有的工作总结为两类:一类使用多尺度训练,另一类使用多尺度训练和多尺度测试。

与只进行多尺度训练的方法相比,我们的方法在52.3 AP时达到了新的水平,只需要2倍的训练计划。与EffcientDet[27]和spinenet[8]相比,我们的方法更具竞争力,学习效率更高,训练时间明显缩短了1/20。与利用transformer模块作为注意力的最新工作[2,38,5]相比,我们的动态头部优于这些方法,增益大于2.0 AP,而训练时间比他们少。这表明我们的动态头部可以将不同角度的多种关注模式连贯地组合成一个统一的头部,从而提高了效率和有效性。

我们进一步将我们的方法与使用多尺度训练和多尺度测试的测试时间增加(TTA)的最新结果[35,21,4,38,5]进行了比较。我们的动态头有助于实现新的最先进的结果在54.0 AP,这明显优于1.3 AP的并发最佳方法。

5. 结论

在本文中,我们提出了一种新的目标检测头,它将尺度感知、空间感知和任务感知集中在一个框架中。提出了一种关注目标检测头的新观点。作为一个插件模块,动态头可以灵活地集成到任何现有的目标检测框架中,以提高其性能

曼斯。此外,它是有效的学习。研究表明,目标检测头部注意力的设计和学习是一个值得关注的研究方向。如何使全注意力模型易于学习和高效计算,以及如何在头部设计中系统地考虑更多的注意模式以获得更好的性能,这些工作只是迈出了一步,还有待进一步改进。

附录

提交后,我们不断改进我们的表现。近年来,变压器作为视觉主干网已成为研究的热点,并显示出良好的性能。当使用最新的transformerbackbone[19]、额外的数据和增加的输入大小来训练我们的动态头部时,我们可以进一步提高COCO基准上的当前SOTA。

配合变压器骨干。我们的动态头部与最新的基于变压器的骨干,如[19]合作。如表6所示,我们的动态头部与[1]竞争,这需要额外的掩模接地值来帮助提高性能。同时,与我们框架中使用的基线方法[35]相比,我们进一步将其性能提高了2.5 AP。这很好地证明了我们的动态头部与基于变压器的骨干相补充,可以进一步提高其在下游目标检测任务中的性能。

配合更多的输入和额外的数据。我们发现我们的动态头部可以进一步受益于更大的输入尺寸和使用自我训练方法生成的额外数据[40]。我们将最大图像边长从1333增加到2000,并使用最小图像边长从480到1200不等的多尺度训练。与4.1节中描述的训练方案类似,我们避免使用更多的技巧来确保可重复性。如表7所示,与最新作品[10,36]相比,我们的动态头具有显著的增益,并且在不使用额外掩膜接地真值的情况下与[19]的性能相匹配。同时,我们的动态头部所需的训练时间不到这些工作的1/3。这证明了我们卓越的效率和效力。皮毛,

因此,我们按照[40]在Im- ageNet数据上生成伪标签,并将其用作额外的数据。我们的动态头可以在很大程度上受益于大规模数据,并进一步提高COCO最先进的结果,达到60.6 AP的新纪录。

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

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

相关文章

Android 15 第一个开发者预览版

点击查看:first-developer-preview-android15 点击查看:Get Android 15 2024年2月16日,谷歌发布 Android 15 第一个开发者预览版 翻译 由工程副总裁戴夫伯克发布 今天,我们发布了Android 15的首个开发者预览版,这样我们的开发者就…

[技术杂谈]Chat With RTX 介绍

英伟达(Nvidia)已于近日发布了名为“Chat with RTX”的Demo版个性化AI聊天机器人,并在其海外官网渠道中提供了下载链接。 据了解,这是一款适用于Windows平台的聊天机器人,由TensorRT-LLM提供支持,完全在本地…

机器人革命:从斯坦福的通用操作接口到OpenAI的Sora,塑造未来的合成学习

引言 在机器人成为平凡工匠和前沿先驱的时代,我们正站在新黎明的边缘。本文将探讨斯坦福大学的通用操作接口(UMI)及其与OpenAI的Sora如何共同推进机器人技术,开创未来学习的新纪元。 正文 斯坦福的通用操作接口(UMI…

电脑文件大爆炸,快用知识管理 | 咨询案例

在刚刚过去的春节假期,意料之外地完成了一次关于个人知识管理实践的咨询。为此,要特别感谢李博和双红老师的引介,使我有机会在帮助他人实践落地个人知识管理系统的同时,丰富了自己的经验积累和案例库。话不多说,来做个…

MySQL-锁(LOCK)

文章目录 1. 锁是什么?2. 全局锁2.1 相关语法2.2 特点 3. 表级锁3.1 表锁3.1.1 共享读锁(S)3.1.2 排它写锁(X) 3.2 元数据锁(MDL)3.2 意向锁(IS、IX) 4. 行级锁4.1 行锁 …

『随处指挥』:用这款APP,世界听你的!

在这个科技日新月异的时代,我们的生活被各种手机软件所包围。几乎每个人都有一个甚至多个手机,你是否也有遇到过需要远程操作自己某一台手机的场景呢?今天,我要向大家推荐一款神奇的手机远程操作神器,让你可以随时随地…

VTK使用指南:介绍

1、什么是可视化? 术语 不同的术语用于描述可视化。科学可视化是计算机科学领域的正式名称,包括用户界面、数据表示和处理算法、视觉表示和其他感官表示,如声音或触摸。术语数据可视化是用于描述可视化的另一个短语。数据可视化通常被解释为…

Apache Apisix网关系统历史漏洞复现分析

文章目录 前言CVE-2020-13945默认api令牌CVE-2021-45232未授权接口2.1 默认账户密码导致RCE2.2 未授权访问api接口RCE CVE-2022-24112 地址限制绕过CVE-2022-29266 JWT令牌伪造4.1 漏洞源码简析与修复4.2 漏洞环境搭建与复现 总结 前言 Apache APISIX 是一个动态、实时、高性能…

探索Linux系统中HTTP隧道技术的原理与实践

在Linux的世界里,HTTP隧道技术就像是一个神秘的魔法师,它能让你的网络请求穿越重重障碍,安全地到达目的地。今天,我们就来一起探索这个魔法师的奥秘,看看它是如何在Linux系统中施展魔法的。 首先,我们要明…

PFH特征描述符、对应关系可视化以及ICP配准

一、PFH特征描述符可视化 C #include <pcl/point_types.h> #include <pcl/point_cloud.h> #include <pcl/search/kdtree.h> #include <pcl/io/pcd_io.h> #include <pcl/features/normal_3d_omp.h>//使用OMP需要添加的头文件 #include <boos…

PyCharm - Project Interpreter (项目解释器)

PyCharm - Project Interpreter [项目解释器] References File -> Settings… -> Project: -> Project Interpreter References [1] Yongqiang Cheng, https://yongqiang.blog.csdn.net/

深入探讨Lambda表达式转换为委托类型的编译过程

了解了&#xff0c;如果要深入探讨Lambda表达式转换为委托类型的编译过程&#xff0c;我们需要关注C#编译器如何处理这个转换。这个过程涉及到编译时的类型推断、匿名方法的创建&#xff0c;以及生成对应的委托实例。我们来更详细地分析这个过程&#xff1a; 编译阶段 1. 解…

21. Merge Two Sorted Lists(合并两个有序链表)

问题描述 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 问题分析 我们只需要使用两个指针分别从两个链表的头部向后遍历整个链表&#xff0c;每一个次都让量个元素比较大小&#xff0c;小的元素并入的新的链表&#xf…

MySQL(1/3)

基本命令行操作 命令行连接 mysql -uroot -p 回车&#xff0c;然后在下一行输入密码&#xff0c;或者直接在p后写密码 修改密码 updata mysql.user set authentication_stringpassword(原密码) where userroot and Host localhost; 刷新权限 flush privileges; 查看所有数据库…

数据库索引面试的相关问题

查看索引的执行计划 索引失效的情况 1、索引列上做了计算&#xff0c;函数&#xff0c;类型转换等操作。索引失效是因为查询过程需要扫描整个索引并回表。代价高于直接全表扫描。 Like匹配使用了前缀匹配符“%abc” 字符串不加引号导致类型转换。 原因&#xff1a; 常见索…

03 SS之返回JSON+UserDetail接口+基于数据库实现RBAC

1. 返回JSON 为什么要返回JSON 前后端分离成为企业应用开发中的主流&#xff0c;前后端分离通过json进行交互&#xff0c;登录成功和失败后不用页面跳转&#xff0c;而是给前端返回一段JSON提示, 前端根据JSON提示构建页面. 需求: 对于登录的各种状态 , 给前端返回JSON数据 …

面向对象编程(三)

目录 1. 关键字&#xff1a;static 1.1 类属性、类方法的设计思想 1.2 static关键字 1.3 静态变量 1.3.1 语法格式 1.3.2 静态变量的特点 1.3.3 举例 1.3.4 内存解析 1.4 静态方法 1.4.1 语法格式 1.4.2 静态方法的特点 1.4.3 举例 2. 单例(Singleton)设计模式 2…

HarmonyOS router页面跳转

默认启动页面index.ets import router from ohos.router import {BusinessError} from ohos.baseEntry Component struct Index {State message: string Hello World;build() {Row() {Column() {Text(this.message).fontSize(50).fontWeight(FontWeight.Bold)//添加按钮&am…

简约火箭发射静态404错误页面源码

简约火箭发射静态404错误页面源码&#xff0c;源码由HTMLCSSJS组成,记事本打开源码文件可以进行内容文字之类的修改&#xff0c;双击html文件可以本地运行效果&#xff0c;也可以上传到服务器里面&#xff0c;重定向这个界面 蓝奏云下载&#xff1a;https://wfr.lanzout.com/iK…

烦人的鼠标唤醒电脑功能彻底禁用

1.常规操作禁用鼠标唤醒 搜索设备 电源管理取消勾选 这样操作后, 系统更新等各种原因, 又会失效, 需要反复操作, 很烦 2.关闭计算机管理的计划任务 禁用 3.查询唤醒原因 powercfg /waketimers powercfg /lastwake