【目标检测论文阅读笔记】Dynamic Head: Unifying Object Detection Heads with Attentions

Abstract

        在目标检测中结合定位和分类的复杂性导致了方法的蓬勃发展。以前的工作试图提高各种目标检测头的性能,但未能提出统一的观点。在本文中,我们提出了一种新颖的动态头部框架 统一目标检测头部和注意力通过在用于尺度感知的特征级别之间用于空间感知的空间位置之间以及用于任务感知的输出通道内 连贯地结合多个自注意力机制,所提出的方法显著提高了目标检测头的表示能力,而无需任何计算开销。进一步的实验证明了所提出的动态头部在 COCO 基准测试中的有效性和效率。借助标准的 ResNeXt-101DCN 骨干网,我们大大提高了流行目标检测器的性能,并在 54.0 AP 上实现了最新的技术水平。此外,借助最新的transformer主干和额外数据,我们可以将当前最好的 COCO 结果推向 60.6 AP 的新记录。

该代码将在 https://github.com/microsoft/DynamicHead 上发布。


1. Introduction

        目标检测是在计算机视觉应用中回答“什么物体位于何处”的问题。在深度学习时代,几乎所有现代目标检测器 [11、23、12、35、28、31、33] 都共享相同的范例——用于特征提取的骨干和用于定位和分类任务的头部如何提高目标检测头的性能已成为现有目标检测工作中的一个关键问题

        开发一个好的目标检测头的挑战可以概括为三类。首先,头部应该具有尺度感知能力,因为具有截然不同尺度的多个对象通常会共存于一幅图像中。其次,头部应该具有空间感知能力,因为在不同的视角下,物体通常会以截然不同的形状、旋转和位置出现。第三,头部需要有任务感知能力,因为对象可以有各种表示(例如,边界框 [12]、中心 [28] 和角点 [33]),它们拥有完全不同的目标和约束。我们发现最近的研究 [12、35、28、31、33] 只关注以各种方式解决上述问题之一如何开发一个可以同时解决所有这些问题的统一头部仍然是一个悬而未决的问题

        在本文中,我们提出了一种新的检测头,称为动态头,以统一尺度感知、空间感知和任务感知。如果我们将主干的输出(即检测头的输入)视为 维度为 level × space × channel 的 3 维张量,我们发现这样一个统一的 head 可以被视为注意力学习问题一个直观的解决方案是在这个张量上构建一个完整的自注意力机制。然而,优化问题太难解决,并且计算成本是负担不起的

        相反,我们可以在特征的每个特定维度上分别部署注意力机制,即水平、空间和通道尺度感知注意力模块只部署在层级level维度上。它学习各种语义级别的相对重要性,以根据其规模在适当级别为单个对象增强特征。空间感知注意力模块部署在空间维度(即高度×宽度)上。它在空间位置学习连贯的判别表示。任务感知注意力模块部署在通道上。它根据来自目标的不同卷积核响应,引导不同的特征通道分别支持不同的任务(例如,分类、框回归和中心/关键点学习)。

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


2. Related Work

        最近的研究侧重于从不同的角度改进目标检测器:尺度感知、空间感知 和 任务感知

Scale-awareness 尺度感知.

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

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


Spatial-awareness 空间感知.

        以前的工作试图提高目标检测中的空间感知,以实现更好的语义学习。已知卷积神经网络在学习图像中存在的空间变换方面受到限制 [41]一些工作通过 增加模型能力(大小)[13、32] 或 涉及昂贵的数据增强 [14] 来缓解这个问题,从而导致推理和训练中的计算成本极高。后来,提出了新的卷积算子 来改进空间变换的学习。 [34] 提出使用 膨胀卷积 从指数扩展的感受野中 聚合上下文信息。 [7] 提出了一种 可变形卷积 来对具有额外自学习偏移量的空间位置进行采样。 [37] 通过引入学习的特征幅度 重新制定偏移量并进一步提高其能力。

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


Task-awareness 任务感知.

        目标检测起源于两阶段范式 [39, 6],它首先生成目标候选框,然后将proposals分类为不同的类别和背景。 [23] 通过引入区域生成网络 (RPN) 将两个阶段制定为单个卷积网络,从而形式化了现代双阶段框架。后来,单阶段目标检测器[22]因其高效率而流行起来。 [16 Focal loss] 通过引入特定于任务的分支 来进一步改进架构,以超越两阶段检测器的准确性,同时保持以前的单阶段检测器的速度

        最近,更多的工作发现 目标的各种表示可能会提高性能。 [12]首先证明了结合目标的边界框和分割掩码可以进一步提高性能。 [28] 提出使用中心表示 以逐像素的预测方式 解决目标检测。 [35 Bridging the gap between anchor-based and anchorfree detection via adaptive training sample selection. ]通过根据 目标的统计特征 自动选择正样本和负样本,进一步提高了 基于中心的center-based方法的性能。后来,[33] 将目标检测制定为 代表性的关键点 以简化学习。 [9] 通过将每个目标检测为三元组 而不是一对关键点来进一步提高性能,以减少不正确的预测。最近,[21] 提出从每个边界的极值点中 提取边界特征 以增强点特征 并达到了最先进的性能。

        在这项工作中,我们在检测头中提出了一个任务感知注意力,它允许将注意力部署在通道上,它可以自适应地支持各种任务,无论是单阶段/两阶段检测器,还是box-/center-/keypoint-based检测器

        更重要的是,在我们的头部设计中,上述所有属性都集成到一个统一的注意力机制中。据我们所知,它是第一个通用的检测头框架,它朝着理解注意力在目标检测头的成功中所扮演的角色迈出了一步。


3. Our Approach

3.1. Motivation

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

        给定来自特征金字塔中 L 个不同层级的特征  的连结concatenation,我们可 以使用上采样或下采样 将连续层特征的大小调整为中间级特征的尺度。重新缩放后的特征金字塔可以表示为一个4维张量,其中L表示金字塔的层数,H、W、C分别表示高度、宽度和 中间级特征的通道数。我们进一步定义 S = H × W 以将张量重塑为 3 维张量 。基于这种表示,我们将探讨每个张量维度的作用

目标尺度的差异与不同层级的特征有关改进 F 的不同级别的表示学习 可以有利于目标检测的尺度感知

• 来自不同的物体形状的各种几何变换 与不同空间位置的特征相关改进 F 的不同空间位置的表示学习 可以有益于目标检测的空间感知

不同的目标表示和任务可以与不同通道的特征相关改进 F 不同通道的表示学习可以有利于目标检测的任务感知

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


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

        给定特征张量,应用自注意力的一般公式为: 

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

        相反,我们将注意力函数转换为三个连续的注意力,每个注意力只关注一个视角

其中 πL(·)、πS(·) 和 πC(·) 是分别应用于维度 L、S 和 C 的三个不同注意力函数。


尺度感知注意力 πL。

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

其中 f(·) 是由 1 × 1 卷积层逼近的线性函数,而 σ(x) = max(0, min(1,x+1 2 )) 是硬 sigmoid 函数。


空间感知注意力 πS。

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

其中 K 是稀疏采样位置的数量,pk + Δpk 是通过自学空间偏移量 Δpk 偏移的位置,以关注判别区域,而 Δmk 是位置 pk 处的自学习重要性标量。两者都是从 F 的中间级的输入特征中学习的


任务感知注意力 πC 。

        为了实现联合学习并概括目标的不同表示,我们在最后部署了任务感知注意力。它动态地切换特征的 ON 和 OFF 通道以支持不同的任务

其中 Fc 是第 c 个通道的特征切片,是学习控制激活阈值的超函数。 θ(·)的实现方式与[3]类似,首先对L×S维进行全局平均池化降维,然后使用两个全连接层和一个归一化层,最后应用shifted sigmoid函数对输出到[-1, 1]。

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

        综上所述,我们提出的动态头部目标检测的整个范例如图 1 所示任何类型的主干网络都可以用来提取特征金字塔,进一步调整到相同的比例,形成一个 3 维张量 ,然后作为动态头的输入。接下来,依次堆叠几个 DyHead 块包括尺度感知、空间感知 和 任务感知注意力。动态头的输出可用于不同的任务和目标检测的表示,例如分类、中心/框回归等。

        在图 1 的底部,我们展示了每种注意力类型的输出。正如我们所看到的,由于与 ImageNet 预训练的域差异来自主干的初始特征图是嘈杂的。通过我们的尺度感知注意模块后,特征图对前景物体的尺度差异更加敏感;进一步通过我们的空间感知注意模块后,特征图变得更加稀疏,并专注于前景物体的辨别空间位置。最后,在通过我们的任务感知注意力模块后,特征图根据不同下游任务的要求重新形成不同的激活这些可视化很好地展示了每个注意力模块的有效性。 


3.3.推广到现有检测器

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

单阶段检测器。

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


两阶段检测器。 

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


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

Deformable.

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


Non-local.

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


Transformer.

        最近,有一种趋势是将 Transformer 模块 [29] 从自然语言处理引入到计算机视觉任务中。初步工作 [2, 38, 5] 已经证明在改进目标检测方面有希望的结果。 Transformer 提供了一种简单的解决方案,通过应用多头全连接层 来学习 cross-attention交叉注意力的对应关系 并融合来自不同模态的特征。这种行为可以被视为仅对我们表示中的 S × C 子维度进行建模

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


4. Experiment

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

4.1. Implementation Details

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


Training.

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


Inference.

        为了与使用测试时间增强 报告的最先进方法进行比较,我们还通过多尺度测试评估了我们的最佳模型。其他技巧,例如模型 EMA、马赛克、混合、标签平滑、软 NMS 或自适应多尺度测试 [25],都没有使用。


4.2.消融研究

        我们进行了一系列消融研究,以证明我们动态头部的有效性和效率。

注意力模块的有效性。

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


注意力学习的有效性。

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

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


头部深度的效率。

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


Generalization on Existing Object Detectors.

        我们通过将动态头部插入流行的目标检测器来评估动态头部的泛化能力,例如 FasterRCNN [23]、RetinaNet [16]、ATSS [35]、FCOS [28] 和 RepPoints [33]。这些方法代表了各种各样的对象检测框架(例如,两阶段与一阶段、基于锚点与无锚点、基于框与基于点)。如表 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 主干的 1.1 AP 和使用 ResNeXt-64x4d-101 主干的 1.2 AP 方面优于它,其中改进是显著的,因为应对 COCO 基准测试中的挑战。


Compared to State-of-the-Art Detectors.

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

        与仅进行多尺度训练的方法相比,我们的方法在 52.3 AP 下达到了最新的技术水平,训练时间仅为 2 倍。与 EffcientDet [27] 和 SpineNet [8] 相比,我们的方法具有竞争力且学习效率更高,训练时间显着减少 1/20。与利用 Transformer 模块作为注意力的最新工作 [2、38、5] 相比,我们的动态头优于这些方法,AP 增益超过 2.0,同时使用的训练时间比他们的少。它表明我们的动态头部可以将来自不同角度的多种注意力模式连贯地结合到一个统一的头部中,从而提高效率和有效性

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


5. Conclusion

        在本文中,我们提出了一种新颖的目标检测头,它将尺度感知、空间感知和任务感知注意力统一在一个框架中。它提出了一种新的带有注意力的目标检测头视图作为一个插件块,动态头可以灵活地集成到任何现有的目标检测器框架中以提高其性能。而且,学习效率很高。我们的研究表明,在目标检测头中设计和学习注意力是一个有趣的方向,值得更多的重点研究。这项工作只迈出了一步,还可以在这些方面进一步改进:如何使全注意力模型易于学习和计算高效,以及如何系统地将更多的注意力模式考虑到头部设计中以获得更好的性能。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SpringCloud学习笔记06

九十五、Cloud Alibaba简介 0、why会出现SpringCloud alibaba Spring Cloud Netflix项目进入维护模式 1、是什么 官网:spring-cloud-alibaba/README-zh.md at 2.2.x alibaba/spring-cloud-alibaba GitHub 2、能干嘛 3、去哪下 spring-cloud-alibaba/README-…

【软考高项笔记】第3章 信息系统治理(针对甲方)3.1 IT治理

第3章 信息系统治理(针对甲方) 3.1 IT治理 不同于管理,角度更高3.1.1 IT治理基础 目标价值 与业务目标一致 有效利用信息与数据资源 风险管理 管理层次 最高管理层 (定目标,战略) 执行管理层 &#xff08…

【BingChat】Microsoft Edge/Bing Chat 注册使用完全指南

欢迎关注【youcans的学习笔记】原创作品,火热更新中 【BingChat】Microsoft Edge/Bing Chat 注册使用完全指南 1. BingChat 简介2. BingChat 用户注册2.1 下载微软浏览器 Edge 预览版2.2 申请微软账户2.3 登录 Bing.com2.4 手机/平板使用 BingChat 3. BingChat 的聊…

4.shell函数

文章目录 shell函数shell函数的作用函数返回值函数传参函数变量作用范围递归阶乘使用函数递归目录/var/log,如果是文件直接输出文件名,如果是目录则输出目录名且输出此目录下的所有目录和文件名通过脚本输出环境变量PATH所包含的所有目录以及其中的子目录…

【Jmeter快速入门】

Jmeter快速入门 Jmeter快速入门1.安装Jmeter1.1.下载1.2.解压1.3.运行 2.快速入门2.1.设置中文语言2.2.基本用法 Jmeter快速入门 1.安装Jmeter Jmeter依赖于JDK,所以必须确保当前计算机上已经安装了JDK,并且配置了环境变量。 1.1.下载 可以Apache Jm…

SSM整合详细教学(上)

SSM整合详细教学(上) 一、SSM整合1. SSM整合配置1.1 SSM整合流程1.2 SSM整合配置1.2.1 创建工程,添加依赖和插件1.2.2 Spring整合Mybatis1.2.3 Spring整合SpringMVC 2. 功能模块开发2.1 数据层开发(BookDao)2.2 业务层开发(BookService/BookS…

TIM编码器接口

一、知识点 1、Encoder Interface 编码器接口的工作流程 编码器接口可接收增量(正交)编码器的信号,根据编码器旋转产生的正交信号脉冲,自动控制CNT自增或自减,从而指示编码器的位置、旋转方向和旋转速度 2、编码器接口…

「领域驱动设计」DDD,六边形架构,洋葱架构,整洁架构和CQRS的整合

这篇文章是软件架构编年史的一部分,一系列关于软件架构的文章。在这些文章中,我写了我对软件架构的了解,我如何看待它,以及我如何使用这些知识。如果您阅读了本系列以前的文章,那么本文的内容可能更有意义。 今天的帖子…

【多任务学习】Multi-task Learning 手把手编码带数据集, 一文吃透多任务学习

文章目录 前言1.多任务学习1.1 定义1.2 原理 2. 多任务学习code2.1 数据集初探2.2 预处理2.3 网络结构2.4 训练 3. 总结 前言 我们之前讲过的模型通常聚焦单个任务,比如预测图片的类别等,在训练的时候,我们会关注某一个特定指标的优化. 但是有时候,我们需要知道一个图片,从它身…

PostgreSQL 基础知识:psql 提示和技巧

对于积极使用和连接到 PostgreSQL 数据库的任何开发人员或 DBA 来说,能够访问psql命令行工具是必不可少的。在我们的第一篇文章中,我们讨论了 psql的简要历史,并演示了如何在您选择的平台上安装它并连接到 PostgreSQL 数据库。 在本文中&…

HTTPS协议介绍

文章目录 一、HTTPS协议的认识二、常见的加密方式1.对称加密2.非对称加密 三、数据摘要四、HTTPS的工作过程探究1.只使用对称加密2.只使用非对称加密3.双方都使用非对称加密4.非对称加密对称加密5.中间人攻击6.引入证书7.非对称加密对称加密证书认证 一、HTTPS协议的认识 HTTP…

HTTP的method方法 GET POST PUT DELETE HEAD OPTIONS CONNECT PATCH TRACE

HTTP的method方法 GET POST PUT DELETE HEAD OPTIONS CONNECT PATCH TRACE GET 向指定的资源发出“显示”请求。使用GET方法应该只用在读取数据,而不应当被用于产生“副作用”的操作中,例如在Web Application中。其中一个原因是GET可能会被网络蜘蛛等随意…

Docker 持久化存储 Bind mounts

Docker 持久化存储 Bind mounts Bind mounts 的 -v 与 --mount 区别启动容器基于bind mount挂载到容器中的非空目录只读 bind mountcompose 中使用 bind mount 官方文档:https://docs.docker.com/storage/bind-mounts/ Bind mounts 的 -v 与 --mount 区别 如果使用…

ePWM模块(1)

ePWM模块 ePWM模块内部包含有7个子模块,分别是时间基准子模块TB、比较功能子模块CC,动作限定子模块AQ、死区控制子模块DB、斩波控制子模块PC、事件触发子模块ET和故障捕获子模块TZ。 每个ePWM模块都具有以下功能: 可以输出两路PWM,EPWMxA和EPWMxB两路PWM可以独立输出,也可…

大二一个学期学这么点内容,没有概念,只有实操

如何查看所有的数据库: Show databases; 如何进入某个数据库: use xxx; 如何新进数据库: Create database jx; 如何删除数据库: Drop database jx; 如何查看所有的表格: Show tables; 如何创建数据表&#xf…

【Flink】DataStream API使用之执行环境

1. 执行环境 Flink 程序可以在各种上下文环境中运行:我们可以在本地 JVM 中执行程序,也可以提交 到远程集群上运行。不同的环境,代码的提交运行的过程会有所不同。这就要求我们在提交作业执行计算时,首先必须获取当前 Flink 的运…

(异或相消)猫猫数字异或和

E - Red Scarf (atcoder.jp) 刚入坑写的一道题被我拉出来对比分析了 我的思路: 垃圾运气选手凭借直觉乱搞猜出来的,没有思路。 题解思路: 由问题陈述中XOR的定义,我们可以看出计算3个或更多整数的XOR可以以任意顺序进行&#…

ChatGPT :十几个国内免费可用 ChatGPT 网页版

前言 ChatGPT(全名:Chat Generative Pre-trained Transformer),美国OpenAI 研发的聊天机器人程序 ,于2022年11月30日发布 。ChatGPT是人工智能技术驱动的自然语言处理工具,它能够通过理解和学习人类的语言…

树脂塞孔有哪些优缺点及应用?

树脂塞孔的概述 树脂塞孔就是利用导电或者非导电树脂,通过印刷,利用一切可能的方式,在机械通孔、机械盲埋孔等各种类型的孔内进行填充,实现塞孔的目的。 树脂塞孔的目的 1 树脂填充各种盲埋孔之后,利于层压的真空下…

盲目自学网络安全只会成为脚本小子?

前言:我们来看看怎么学才不会成为脚本小子 目录: 一,怎么入门? 1、Web 安全相关概念(2 周)2、熟悉渗透相关工具(3 周)3、渗透实战操作(5 周)4、关注安全圈动…