动态头部:统一目标检测头部与注意力
摘要
在目标检测中,定位与分类相结合的复杂性导致了各种方法的蓬勃发展。以前的工作试图提高在不同的目标检测头的性能,但未能呈现一个统一的视图。在本文中,我们提出了一种新的动态头部框架来统一目标检测头部和注意力。通过在尺度感知的特征层次之间、空间感知的空间位置之间以及任务感知的输出通道内连贯地组合多重自注意机制,该方法显著提高了目标检测头的表征能力,且不增加任何计算开销。进一步的实验证明了该方法在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∈RL×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模块从自然语言处理引入到计算机视觉任务中[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倍。采用随机水平翻转的标准增广。为了与以往使用多尺度输入训练的方法相比,我们还对选择性模型进行了多尺度训练。
推理。为了与使用测试时间延长的最新方法进行比较,我们还评估了我们的方法
PAGE 6
多尺度测试的最佳模型。其他技巧,如模型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),我们可以明显地看到,特征图覆盖了更多的前景物体,并且更准确地聚焦于它们的判别空间位置。这种可视化很好地证明了空间意识注意学习的有效性
PAGE 7
头部深度的效率。我们通过控制深度(块数)来评估动态头的效率。如表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的新纪录。
相关文章:
动态头部:统一目标检测头部与注意力
摘要 在目标检测中,定位与分类相结合的复杂性导致了各种方法的蓬勃发展。以前的工作试图提高在不同的目标检测头的性能,但未能呈现一个统一的视图。在本文中,我们提出了一种新的动态头部框架来统一目标检测头部和注意力。通过在尺度感知的特…...
【状态估计】深度传感器与深度估计算法(1/3)
深度传感器与深度估计算法 深度传感器概念 获得空间中目标位置或距离的传感器,按接收的媒介波来源可分为主动式和被动式两大范畴,主动式包括激光雷达、雷达、超声波传感器等,被动式主要为单目、多目相机等,同时两大类可组合为混…...
ClickHouse从入门到精通(高级)
第1章 Explain查看执行计划 第2章 建表优化 第3章 ClickHouse语法优化规则 第4章 查询优化 第5章 数据一致性(重点) 第6章 物化视图 第7章 MaterializeMySQL引擎 第8章 常见问题排查...
什么是Docker的容器编排工具,它们之间有何不同?
随着Docker容器技术的广泛应用,容器编排工具成为了自动化部署、扩展和管理容器化应用程序的关键组件。这些工具提供了一种抽象层,帮助开发者和管理员更高效地管理大量的Docker容器,确保它们在不同的主机和环境中能够可靠地运行。目前…...
qml之Control类型布局讲解,padding属性和Inset属性细讲
1、Control布局图 2、如何理解? *padding和*Inset参数如何理解呢? //main.qml import QtQuick 2.0 import QtQuick.Controls 2.12 import QtQuick.Layouts 1.12 import QtQuick.Controls 1.4 import QtQml 2.12ApplicationWindow {id: windowvisible: …...
【Jvm】性能调优(拓展)Jprofiler如何监控和解决死锁、内存泄露问题
文章目录 Jprofiler简介1.安装及IDEA集成Jprofiler2.如何监控并解决死锁3.如何监控及解决内存泄露(重点)4.总结5.后话 Jprofiler简介 Jprofilers是针对Java开发的性能分析工具(免费试用10天), 可以对Java程序的内存,CPU,线程,GC,锁等进行监控和分析, 1.安装及IDEA集成Jprofil…...
运行错误(竞赛遇到的问题)
在代码提交时会遇见这样的错误: 此处运行错误不同于编译错误和答案错误,运行错误是指是由于在代码运行时发生错误,运行错误可能是由于逻辑错误、数据问题、资源问题等原因引起的。这些错误可能导致程序在运行时出现异常、崩溃。 导致不会显示…...
nodename nor servname provided, or not known
异常信息 在 Maven 打包过程中出现的 nodename nor servname provided, or not known 异常通常是由于 Maven 无法解析某个域名,这可能是因为网络问题、DNS 解析失败或者 Maven 配置中指定的仓库地址错误导致的。这个问题通常出现在 Maven 试图从远程仓库下载依赖时 …...
前端vue金额用逗号分隔
实现效果 代码 template部分 <el-input v-model"state.val"></el-input><div>{{ priceFor(state.val) }}</div> js部分 const state reactive({ val: });const priceFor (val)> {if(!val){return }else if(val.length<4){return…...
vulvhub-----Hacker-KID靶机
打靶详细教程 1.网段探测2.端口服务扫描3.目录扫描4.收集信息burp suite抓包 5.dig命令6.XXE漏洞读取.bashrc文件 7.SSTI漏洞8.提权1.查看python是否具备这个能力2.使用python执行exp.py脚本,如果提权成功,靶机则会开放5600端口 1.网段探测 ┌──(root…...
遨博I20协作臂关节逆解组Matlab可视化
AUBO I20协作臂关节逆解组Matlab可视化 前言1、RTB使用注意点2、代码与效果2.1、完整代码2.2、运行效果 总结 前言 注意:请预先配置好Matlab和RTB机器人工具箱环境,本文使用matlab2022b和RTB10.04版本 工作需要,使用matlab实现对六轴机械臂…...
力扣题目训练(15)
2024年2月8日力扣题目训练 2024年2月8日力扣题目训练507. 完美数520. 检测大写字母521. 最长特殊序列 Ⅰ221. 最大正方形237. 删除链表中的节点115. 不同的子序列 2024年2月8日力扣题目训练 2024年2月8日第十五天编程训练,今天主要是进行一些题训练,包括…...
PCB差模辐射是如何产生的
在电路应用中,高频时钟信号往往会采用差分线传输模式,其优点是在提高速率的同时减小功耗和提高抗扰度,因此,差模辐射就成为电路正常工作的结果,是电流流过导体形成的环路所产生,差模辐射模型可以被模拟为一个小环形天线,对于一个面积为A的小环路,载有电流Idm,在远场中…...
车载诊断协议DoIP系列 —— 协议中术语解释和定义
车载诊断协议DoIP系列 —— 协议中术语解释和定义 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师(Wechat:gongkenan2013)。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 本就是小人物,输了就是输了,不要在意别人怎么看自己。江湖一碗茶,…...
【退役之重学前端】关于在控制台得到undefined的事
在浏览器控制台中,undefined 会时不时地,在我不想看到的地方出现。如果你遇到相同的问题,在这篇博客中你会得到答案。 先来看代码块 function test(){} test()//undefined再看下一个代码块 function test(){return 1; } test()//1再来看一个…...
指数和估计六大问题
1955年英国著名数学家R.A.Rankin在牛津大学出版的数学刊物Quart.J.Math.发表了论文(现 FRS D.R.Heath-Brown为主编),专门讲van der Corput方法产生的指数对理论(1933年E.Phillips提出的精彩理论,好友曲阜师范大学毕业中…...
【软件相关】基于Alist挂载云盘到本地文件资源管理器
文章目录 0 前言1 Alist挂载云盘2 RaiDrive配置3 rclone配置 0 前言 因为最近在研究各种云盘存储影视资源的方法,无意间看到一个教程是利用软件将云盘挂载到本地的资源管理器,这样就能实现类似本地文件操作的方式来操作云盘文件,还是有点意思…...
Java多线程系列——锁
0.引言 在并发编程中,锁是一种重要的同步机制,用于控制对共享资源的访问。Java 提供了多种锁的实现,每种锁都有不同的特性和适用场景。本文将深入介绍 Java 中常见的锁类型,包括内置锁、显式锁、读写锁等,并讨论它们的…...
蓝牙BLE学习-GAP
1.概述 GAP层(Generic access profile-通用访问配置文件)。GAP是对LL层payload(有效数据包)如何进行解析的两种方式的一种,而且也是最简单的一种。GAP简单的对LL payload进行一些规范和定义,因此GAP能实现的…...
算法训练营day28(补), 贪心算法2
//122. 买卖股票的最佳时机 II func maxProfit(prices []int) int { result : 0 //利润总和 for i : 1; i < len(prices); i { if prices[i]-prices[i-1] > 0 { result result (prices[i] - prices[i-1]) } } return result } //55. 跳跃游戏 func canJump(nums []…...
CTF show Web 红包题第六弹
提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框,很难让人不联想到SQL注入,但提示都说了不是SQL注入,所以就不往这方面想了 先查看一下网页源码,发现一段JavaScript代码,有一个关键类ctfs…...
苍穹外卖--缓存菜品
1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得,如果用户端访问量比较大,数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据,减少数据库查询操作。 缓存逻辑分析: ①每个分类下的菜品保持一份缓存数据…...
现代密码学 | 椭圆曲线密码学—附py代码
Elliptic Curve Cryptography 椭圆曲线密码学(ECC)是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础,例如椭圆曲线数字签…...
让AI看见世界:MCP协议与服务器的工作原理
让AI看见世界:MCP协议与服务器的工作原理 MCP(Model Context Protocol)是一种创新的通信协议,旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天,MCP正成为连接AI与现实世界的重要桥梁。…...
selenium学习实战【Python爬虫】
selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...
Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决
Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中,新增了一个本地验证码接口 /code,使用函数式路由(RouterFunction)和 Hutool 的 Circle…...
搭建DNS域名解析服务器(正向解析资源文件)
正向解析资源文件 1)准备工作 服务端及客户端都关闭安全软件 [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0 2)服务端安装软件:bind 1.配置yum源 [rootlocalhost ~]# cat /etc/yum.repos.d/base.repo [Base…...
深入理解Optional:处理空指针异常
1. 使用Optional处理可能为空的集合 在Java开发中,集合判空是一个常见但容易出错的场景。传统方式虽然可行,但存在一些潜在问题: // 传统判空方式 if (!CollectionUtils.isEmpty(userInfoList)) {for (UserInfo userInfo : userInfoList) {…...
Docker拉取MySQL后数据库连接失败的解决方案
在使用Docker部署MySQL时,拉取并启动容器后,有时可能会遇到数据库连接失败的问题。这种问题可能由多种原因导致,包括配置错误、网络设置问题、权限问题等。本文将分析可能的原因,并提供解决方案。 一、确认MySQL容器的运行状态 …...
热烈祝贺埃文科技正式加入可信数据空间发展联盟
2025年4月29日,在福州举办的第八届数字中国建设峰会“可信数据空间分论坛”上,可信数据空间发展联盟正式宣告成立。国家数据局党组书记、局长刘烈宏出席并致辞,强调该联盟是推进全国一体化数据市场建设的关键抓手。 郑州埃文科技有限公司&am…...
