AKConv:具有任意采样形状和任意数目参数的卷积核

文章目录

  • 摘要
  • 1、引言
  • 2、相关工作
  • 3、方法
    • 3.1、定义初始采样位置
    • 3.2、可变卷积操作
    • 3.3、扩展AKConv
    • 3.3、扩展AKConv
  • 4、实验
    • 4.1、在COCO2017上的目标检测实验
    • 4.2、在VOC 7+12上的目标检测实验
    • 4.3、在VisDrone-DET2021上的目标检测实验
    • 4.4、比较实验
    • 4.5、探索初始采样形状
  • 5、分析讨论
  • 6、结论

摘要

https://arxiv.org/pdf/2311.11587.pdf
基于卷积运算的神经网络在深度学习领域取得了显著的成果,但标准卷积运算存在两个固有缺陷。一方面,卷积运算被限制在一个局部窗口,不能从其他位置捕获信息,并且其采样形状是固定的;另一方面,卷积核的大小是固定为k × k的,它是一个固定的方形形状,参数的数量往往与大小成正比。很明显,在不同的数据集和不同的位置,目标的形状和大小是不同的。具有固定样本形状和正方形的卷积核不能很好地适应不断变化的目标。针对上述问题,本研究探索了可变核卷积(AKConv),它为卷积核提供了任意数量的参数和任意采样形状,为网络开销和性能之间的权衡提供了更丰富的选择。在AKConv中,我们通过一种新的坐标生成算法来定义任意大小的卷积核的初始位置。为了适应目标的变化,我们引入偏移量来调整每个位置的样本形状。此外,我们通过使用相同大小和不同初始采样形状的AKConv来探索神经网络的效果。AKConv通过不规则卷积运算完成了高效的特征提取过程,为卷积采样形状带来了更多的探索选择。在COCO2017、VOC 7+12和VisDrone-DET2021等代表性数据集上的目标检测实验充分展示了AKConv的优势。AKConv可以作为即插即用的卷积运算来替代卷积运算,提高网络性能。相关任务的代码可以在https://github.com/CV-ZhangXin/AKConv上找到。

1、引言

卷积神经网络(CNN),如ResNet [1]、DenseNet [2]和YOLO [3],已经在各种应用中展示了出色的性能,并在现代社会的许多方面引领了技术进步。它已经从自动驾驶汽车中的图像识别[4]和医疗图像分析[5]变得不可或缺,以及智能监控[6]和个性化推荐系统[7]。这些成功的网络模型在很大程度上依赖于卷积操作,有效地提取图像中的局部特征,并确保模型的复杂性。

尽管CNN在分类[8]、目标检测[9]、语义分割[10]等方面取得了许多成功,但它们仍然存在一些局限性。最值得注意的是,关于卷积样本形状和大小的选择。标准的卷积操作往往依赖于具有固定采样位置的正方形内核,例如1×1、3×3、5×5和7×7等。规则内核的采样位置是不可变形的,不能动态地响应目标形状的变化。可变形的卷积[11,12]通过偏移来增强网络性能,以灵活地调整卷积核的采样形状,从而适应目标的变化。例如,[13,14,15]利用它来对齐特征。赵等人[16]通过将其添加到YOLOv4[17]中来改进检测死鱼的有效性。杨等人[18]通过将其添加到主干网络中来改进检测牛的YOLOv8[19]。李等人[20]将可变形卷积引入到深度图像压缩任务中[21,22],以获得内容自适应的接收域。

尽管上述研究已经证明了可变形卷积的优越性,但它仍然不够灵活。因为卷积核仍然局限于选择核大小,标准卷积操作和可变形卷积中的卷积核参数数量随着卷积核尺寸的增加呈现出平方增长的趋势,这对硬件环境来说不是一个友好的增长方式。因此,在对标准卷积操作和可变形卷积进行仔细分析后,我们提出了可变核卷积(AKConv)。与标准常规卷积不同,AKConv是一种新型卷积操作,可以使用任何参数数量的有效卷积核提取特征,例如(1,2,3,4,5,6,7…),这是标准卷积和可变形卷积无法实现的。AKConv可以轻松地用于替换网络中的标准卷积操作以提高网络性能。重要的是,AKConv允许卷积参数的数量呈现线性上升或下降的趋势,这对硬件环境是有利的,它可以作为轻量级模型的替代方案来减少模型参数和计算开销。其次,在具有充足资源的条件下,它为大型内核提供了更多提高网络性能的选择。图1显示了常规卷积核使参数数量呈现平方增长趋势,而AKConv仅显示线性增长趋势。与平方增长趋势相比,AKConv增长较为平缓,为卷积核的选择提供了更多选项。此外,其思想可以扩展到特定领域。因为可以根据先验知识为卷积操作创建特殊的采样形状,然后通过偏移动态地自动适应目标形状的变化。
在这里插入图片描述

在代表性的数据集VOC [23]、COCO2017 [24]、VisDrone-DET2021 [25]上进行的目标检测实验充分证明了AKConv的优势。总的来说,我们的贡献如下:

  1. 对于不同大小的卷积核,我们提出了一种算法,用于生成任意大小卷积核的初始采样坐标。
  2. 为了适应目标的不同变化,我们通过获得的偏移量来调整不规则卷积核的采样位置。
  3. 与常规卷积核相比,所提出的AKConv实现了不规则卷积核提取特征的功能,为各种变化的目标提供了具有任意采样形状和大小的卷积核,弥补了常规卷积的不足之处。

2、相关工作

近年来,许多作品从不同的角度考虑和分析标准卷积操作,并设计新型卷积操作以提高网络性能。

Li等人[26]认为,卷积核在所有空间位置共享参数会导致模型在各个空间位置上的建模能力有限,并且不能有效地捕捉空间上的长距离关系。其次,为每个输出通道使用不同的卷积核的方法实际上效率不高。因此,为了解决这些不足,他们提出了倒置卷积操作,该操作反转了卷积操作的特征以改善网络性能。Qi等人[27]基于可变形卷积提出了DSConv。从可变形卷积中学习的偏移量具有自由性,导致模型损失一小部分精细结构特征,这对于分割细长的管状结构任务构成了巨大挑战,因此他们提出了DSConv。Zhang等人[28]从新的角度理解了空间注意力机制。他们断言,空间注意力机制本质上解决了卷积操作参数字典共享的问题。但是,一些空间注意力机制,如CBAM[29]和CA[30],并未完全解决大尺寸卷积参数字典共享的问题。因此,他们提出了RFAConv。Chen等人[31]提出了动态卷积。与在每一层使用卷积核不同,动态卷积根据注意力动态聚合多个并行卷积核。动态卷积提供了更大的特征表示。Tan等人[32]认为,在CNN中,核大小经常被忽视,这可能影响网络的准确性和效率。其次,仅使用逐层卷积并不能充分利用卷积网络的全部潜力。因此,他们提出了MixConv,该操作在单个卷积中自然地混合多个核大小以改善网络性能。

尽管这些方法提高了卷积运算的性能,但它们仍然局限于常规卷积运算,不允许卷积采样形状的多种变化。相反,我们所提出的AKConv能够有效地使用具有任意数量参数和采样形状的卷积核来提取特征。

3、方法

3.1、定义初始采样位置

卷积神经网络基于卷积运算,通过规则的采样网格将特征定位到相应位置。在[11, 33, 34]中给出了 3 × 3 3 \times 3 3×3卷积运算的规则采样网格。让 R \mathrm{R} R 表示采样网格,则 R \mathrm{R} R 表示如下:

R = { ( − 1 , − 1 ) , ( − 1 , 0 ) , … , ( 0 , 1 ) , ( 1 , 1 ) } (1) R=\{(-1,-1),(-1,0), \ldots,(0,1),(1,1)\} \tag{1} R={(1,1),(1,0),,(0,1),(1,1)}(1)

但是,采样网格是规则的,而AKConv的目标是不规则形状的卷积核。因此,为了让不规则卷积核具有采样网格,我们创建了任意大小卷积的算法来生成卷积核的初始采样坐标 P_{n}。首先,我们生成规则的采样网格,然后创建剩余采样点的不规则网格,最后将它们拼接起来以生成整个采样网格。伪代码如下算法1所示。
在这里插入图片描述

如图2所示,它显示了任意大小卷积的初始采样坐标的生成。规则卷积的采样网格以点 (0,0) 为中心。而不规则卷积没有许多尺寸的中心,为了适应所使用的卷积尺寸,我们在算法中将左上角点 (0,0) 设置为采样原点。
在这里插入图片描述

定义了不规则卷积的初始坐标 P_{n} 后,在位置 P_{0} 处的相应卷积操作可以定义如下:
Conv ⁡ ( P 0 ) = ∑ w × ( P 0 + P n ) (2) \operatorname{Conv}\left(P_{0}\right)=\sum w \times\left(P_{0}+P_{n}\right) \tag{2} Conv(P0)=w×(P0+Pn)(2)

这里,w 表示卷积参数。然而,不规则卷积操作是不可能实现的,因为不规则采样坐标无法与相应大小的卷积操作相匹配,例如大小为 5、7 和 13 的卷积。巧妙的是,我们提出的 AKConv 实现了这一点。

3.2、可变卷积操作

很明显,标准卷积的采样位置是固定的,这导致卷积只能提取当前窗口的局部信息,而无法捕捉其他位置的信息。可变形卷积通过卷积操作学习偏移量来调整初始规则模式的采样网格。该方法在一定程度上弥补了卷积操作的缺点。然而,标准卷积和可变形卷积都是规则的采样网格,不允许具有任意数量参数的卷积核。此外,随着卷积核大小的增加,它们的卷积参数数量趋于平方增长,这对硬件环境并不友好。因此,我们提出了一个新型的可变卷积操作(AKConv)。如图3所示,它展示了大小为5的AKConv的整体结构。
在这里插入图片描述

类似于可变形卷积,在AKConv中,相应核的偏移量首先通过卷积运算获得,其具有维度 ( B , 2   N , H , W ) (\mathrm{B}, 2 \mathrm{~N}, \mathrm{H}, \mathrm{W}) (B,2 N,H,W),其中 N \mathrm{N} N 是卷积核大小。以图3为例, N = 5 \mathrm{N}=5 N=5。然后通过将偏移量和原始坐标相加得到修改后的坐标 ( P 0 + P n ) (P_{0}+P_{n}) (P0+Pn)。最后通过插值和重新采样得到相应位置的特征。提取不规则卷积核采样位置的特征是困难的。为了解决这个问题,我们发现经过深入思考后有很多方法来解决这个问题。在可变形卷积[11]和RFAConv[28]中,他们在空间维度上堆叠了 3 × 3 3 \times 3 3×3 卷积特征。然后使用步长为3的卷积操作来提取特征。然而,这种方法针对的是方形采样形状。因此,可以将特征堆叠在行上或列上,以使用列卷积或行卷积提取与不规则采样形状相对应的特征。提取的特征将使用适当大小和步长的卷积核。此外,我们可以将特征转换为四个维度 ( C , N , H , W ) (\mathrm{C}, \mathrm{N}, \mathrm{H}, \mathrm{W}) (C,N,H,W) ,然后使用步长和卷积大小为 (N, 1,1) 的Conv3d来提取特征。当然,我们还可以将特征堆叠在通道维度上,以 ( C N , H , W ) (\mathrm{CN}, \mathrm{H}, \mathrm{W}) (CN,H,W),然后使用 1 × 1 1 \times 1 1×1 卷积将维度减少到 ( C , H , W ) (\mathrm{C}, \mathrm{H}, \mathrm{W}) (C,H,W)。因此,上述所有方法都可以提取与不规则采样形状相对应的特征。只需要重新调整特征的形状并使用相应的卷积操作即可。因此,在图3中,“Reshape”和“Conv”的最终表示可以是上述任何一种方法。此外,为了清楚地展示AKConv的过程,在图3中进行重新采样后,我们将与卷积相对应的特征维度放在了第三个维度。但在代码实现时,它位于最后一个维度。

在RFAConv和Deformable Conv之后,我们将重采样的特征按列方向进行叠加,然后使用大小为(N, 1),步长为(N, 1)的行卷积。因此,AKConv可以很好地完成不规则卷积特征提取过程。AKConv通过不规则卷积完成特征提取过程,可以根据偏移量灵活调整样本形状,为卷积采样形状带来更多的探索选择。与标准卷积和可变形卷积不同,它们受到正则卷积核思想的限制。

3.3、扩展AKConv

我们认为AKConv的设计是一种新颖的设计,它完成了从不规则和任意采样形状卷积核中提取特征的壮举。即使没有使用可变形卷积中的偏移量思想,AKConv仍然可以使卷积核形状多样化。因为AKConv可以对初始坐标进行重新采样以呈现出各种变化。如图4所示,我们为大小为5的卷积设计了各种初始采样形状。在图4中,我们只展示了大小为5的一些示例。但是,AKConv的大小可以是任意的,因此随着大小的增加,AKConv的初始卷积采样形状变得更加丰富,甚至无限。鉴于目标形状因数据集而异,设计对应于采样形状的卷积操作至关重要。AKConv通过根据相位特化域设计具有相应形状的卷积操作而充分实现。它也可以类似于可变形卷积,通过添加一个可学习的偏移量来动态适应目标的变化。对于特定任务,卷积核初始采样位置的设计是重要的,因为它是一种先验知识。正如Qi等人[27]提出的那样,他们为细长管状结构分割任务提出了具有相应形状的采样坐标,但他们的形状选择仅适用于细长管状结构。

在这里插入图片描述

3.3、扩展AKConv

我们认为AKConv的设计是一种新颖的设计,它完成了从不规则和任意采样形状卷积核中提取特征的壮举。即使没有使用可变形卷积中的偏移量思想,AKConv仍然可以使卷积核形状多样化。因为AKConv可以对初始坐标进行重新采样以呈现出各种变化。如图4所示,我们为大小为5的卷积设计了各种初始采样形状。在图4中,我们只展示了大小为5的一些示例。但是,AKConv的大小可以是任意的,因此随着大小的增加,AKConv的初始卷积采样形状变得更加丰富,甚至无限。鉴于目标形状因数据集而异,设计对应于采样形状的卷积操作至关重要。AKConv通过根据相位特化域设计具有相应形状的卷积操作而充分实现。

4、实验

为了验证AKConv的优势,我们分别在先进的YOLOv5 [35]、YOLOv7 [36]和YOLOv8 [19]上进行了丰富的目标检测实验。实验中所有的模型都是基于RTX3090进行训练的。为了验证AKConv的优势,我们在代表性的COCO2017、VOC 7+12和VisDroneDET2021数据集上进行了相关实验。

4.1、在COCO2017上的目标检测实验

COCO2017包括训练集(118287张图片)和验证集(5000张图片),涵盖了80个目标类别。它已成为计算机视觉研究领域,尤其是目标检测领域的一项标准数据集。我们选择YOLOv5n和YOLOv5s作为基准模型,它们是目标检测领域的先进模型。然后,使用不同大小的AKConv来替换YOLOv5n和YOLOv5s的卷积操作。替换的细节与[28]中的目标检测实验相同。在实验中,除了epoch和batch-size参数外,默认使用网络的参数。在batch size为32的情况下,我们对每个模型训练了300个epochs。遵循以前的工作,我们报告了AP50、AP75、AP、APs、APm和APl。此外,我们还分别报告了使用大小为5、4、6、7、9和13的AKConv在YOLOv5n和YOLOv5s上的目标检测结果。如表1所示,YOLOv5的检测精度随着卷积核尺寸的增加而逐渐提高,但模型所需的参数数量和计算量也逐渐增加。与标准卷积操作相比,AKConv显著提高了YOLOv5在COCO2017上的目标检测性能。可以看出,当AKConv的大小为5时,它不仅使模型所需的参数数量和计算量减少,而且显著提高了YOLOv5n的AP50、AP75和AP,均提高了三个百分点,这是非常出色的。AKConv提高了基线模型的APs、APm和APl,但很明显,与小、中物体相比,AKConv显著提高了大物体的检测精度。我们断言,AKConv使用偏移量更好地适应大物体的形状。
在这里插入图片描述

4.2、在VOC 7+12上的目标检测实验

为了进一步验证我们的方法,我们在VOC 7+12数据集上进行了实验,该数据集是VOC2007和VOC2012的组合,包括16551个训练集和4952个验证集,涵盖20个目标类别。为了测试AKConv在不同架构上的泛化能力,我们选择了YOLOv7-tiny作为基准模型。由于YOLOv7和YOLOv5采用不同的架构,因此可以比较不同架构设置的AKConv的性能。在YOLOv7-tiny中,我们使用不同大小的AKConv来替换标准卷积操作。替换的细节遵循[28]中的工作。所有模型的超参数设置与前一节中的一致。如表2所示,随着AKConv大小的增加,网络的检测精度逐渐提高,而模型的参数数量和计算量也逐渐增加。这些实验进一步证实了AKConv的优势。

4.3、在VisDrone-DET2021上的目标检测实验

为了再次验证AKConv具有很强的泛化能力,我们基于VisDrone-DET2021数据集进行了相关的目标检测实验。VisDrone-DET2021是一个具有挑战性的数据集,由无人机在不同环境、天气和光照条件下拍摄而成。它是中国最大的无人机航拍图像数据集之一,涵盖范围最广。训练集数量为6471个,验证集数量为548个。与第4.1节一样,我们选择YOLOv5n作为基准模型,使用AKConv来替换网络中的卷积操作。实验中,将batchsize设置为16,以方便探索更大的卷积尺寸,而所有其他超参数设置与之前相同。如表3所示,很明显,基于不同大小的AKConv可以用作轻量级选项,以减少参数数量和计算量,并提高网络性能。实验中,当AKConv的大小设置为3时,与基准模型相比,模型的检测性能下降,但相应的参数数量和计算开销要小得多。此外,我们可以逐渐调整AKConv的大小来探索网络性能的变化。AKConv为网络带来了更丰富的选项。
在这里插入图片描述

4.4、比较实验

与可变形的Conv [11]不同,AKConv提供了更丰富的网络选择。AKConv弥补了可变形Conv的不足,可变形Conv只使用常规卷积操作,而AKConv可以使用常规和非常规卷积操作。当AKConv的大小设置为K的平方时,AKConv变成可变形的Conv。此外,DSConv [27]还使用偏移量来调整采样形状,但其采样形状是为管状目标设计的,并且采样形状的变化是有限的。为了对比AKConv、可变形Conv和DSConv的优点,我们在YOLOv5s和YOLOv5n的基础上在COCO2017和VOC 7+12上进行实验。如表4和表5所示。当卷积核参数的数量为9时(即标准的3 3卷积),可以看出AKConv和可变形Conv的性能相同。因为当卷积核大小规则时,AKConv就是可变形Conv。但是,我们之前提到过,可变形Conv没有探索非常规的卷积核大小。因此,不能实现参数数量为5和11的卷积操作。在设计AKConv时,我们没有对输入特征进行零填充。然而,在可变形Conv中使用了填充。因此,为了公平比较,在AKConv中我们也对输入特征进行零填充。实验表明,在AKConv中零填充有助于网络提高性能。由于DSConv是专为特定的管状形状设计的,因此可以看出其在COCO2017和VOC 7+12上的检测性能并不明显。在实现DSConv时,[27]将特征向行或列扩展,并最终使用列卷积或列卷积来提取与我们的方法相似的特征。因此,他们的方法也可以实现参数为2、3、4、5、6、7等的卷积操作。在同一规模下,我们也进行了比较实验。因为DSConv没有完成下采样方法,在实验中,我们使用AKConv和DSConv来替代YOLOv5n中的C3中的3 × 3卷积。实验结果如表4和表5所示。AKConv优于DSConv,因为DSConv不是为了提高任意大小的卷积核的性能而设计的,而是为了探索特定形状的目标。相比之下,AKConv提供了丰富的卷积核选择和探索选项,可以有效提高网络性能。
在这里插入图片描述

4.5、探索初始采样形状

如前所述,AKConv可以通过使用任意大小和任意采样形状来提取特征。为了探索AKConv与不同的初始采样形状在网络上的效果,我们在COCO2017和VisDrone-DET2021上分别进行了实验。在COCO2017上,我们在批量大小为32和每个周期为100的情况下进行了实验。在VisDrone-DET2021上,我们在批量大小为16和每个周期为300的情况下进行了实验。所有其他超参数都是网络默认值。在COCO2017中,我们选择YOLOv8n进行实验。如表6所示,AKConv仍然可以提高网络的检测精度。YOLOv8和YOLOv5的网络结构相似。区别在于C3和C2f的设计。可以看出,与在YOLOv5中添加AKConv相比,在YOLOv8中添加AKConv的性能提升不如YOLOv5。我们认为,在相同大小下,YOLOv8需要的参数比YOLOv5多,因此更多的参数可以提供更好的特征信息,就像AKConv一样。因此,随着AKConv的加入,YOLOv8的提升不如YOLOv5明显。此外,在相同大小下,我们在COCO2017上测试了不同初始采样形状对网络性能的影响。很明显,在不同的初始样本下,网络获得的检测精度的波动并不大。这得益于COCO2017的大量数据可以灵活地调整偏移量。但这并不意味着网络在所有初始采样坐标下获得的检测精度没有显著差异。为了再次探索AKConv与不同初始形状对网络的影响,我们在基于YOLOv5n的实验中探索了大小为5的AKConv以及不同的初始样本在VisDrone-DET2021上的效果。从表7中可以看出,网络在不同的初始样本下具有不同的检测精度。因此,具有不同初始采样形状的AKConv对网络性能有影响。此外,对于特定的网络和数据集,探索具有适当初始采样形状的AKConv以改善网络性能是很重要的。
在这里插入图片描述

5、分析讨论

我们在之前的实验中初步观察了大小为5的AKConv在不同采样位置下YOLOv5n的检测性能。可以清楚地注意到,网络在具有不同初始采样形状时表现不同。这表明偏移量的调整能力也是有限的。为了衡量每个给定位置的偏移量的变化,我们给出了平均偏移量的定义,定义如下:
A O = ( ∑ i 2 N ∣ O f f set ⁡ i ∣ ) / ( 2 N ) (3) A O=\left(\sum_{i}^{2 N}\left|O f f \operatorname{set}_{i}\right|\right) /(2 N) \tag{3} AO=(i2NOffseti)/(2N)(3)

AO(平均偏移量)是通过将偏移量相加并取平均值来衡量每个位置采样点的平均变化程度。为了观察偏移量的变化,我们选择了训练好的网络,并选择了AKConv的最后一层来分析偏移量的整体变化趋势。为了进行分析,我们随机选择了VisDrone-DET2021中的四张图像,然后可视化了大小为5的初始不同采样位置的AKConv。如图5所示,我们可视化了每个采样位置的偏移量的变化程度。图5中不同的颜色表示训练后不同初始样本在每个采样位置的偏移量的变化。线条的颜色对应于中间的初始采样形状。图5中不同的初始样本形状对应于表7中的初始样本形状。可以得出结论,图5中蓝色和红色的初始样本形状的变化较小。这意味着红色和蓝色的初始样本比其他初始样本更适合此数据集。如表7中的实验所示,与红色和蓝色相对应的初始采样形状获得了更好的检测精度。所有实验都证明了AKConv能够给网络带来显著的性能改进。与可变形的Conv不同,AKConv具有基于大小的灵活性来扩展网络性能。在所有实验中,我们广泛探索了大小为5的AKConv。因为在用大量数据训练COCO2017时,我们发现将AKConv的大小设置为5时,训练速度与原始模型相差不大。此外,随着AKConv大小的增加,训练时间逐渐增加。在COCO2017、VOC 7+12和VisDrone-DET2021的实验中,将AKConv的大小设置为5在网络中取得了良好的结果。当然,探索其他大小的AKConv是可能的,因为显示线性增长和任意采样形状的参数数量为AKConv的探索带来了丰富的选择。AKConv可以实现任意大小和任意样本的卷积操作,并可以通过偏移量自动调整样本形状以适应目标变化。所有实验都证明,AKConv提高了网络性能,并为网络开销和性能之间的权衡提供了更丰富的选择。
在这里插入图片描述

6、结论

显然,在现实生活和计算机视觉领域中,物体的形状存在各种变化。卷积运算的固定样本形状无法适应这些变化。尽管可变形的Conv可以通过偏移量的调整灵活改变卷积的样本形状,但它仍然存在局限性。因此,我们提出了AKConv,它真正实现了允许卷积具有任意样本形状和大小,为卷积核的选择提供了多样性。此外,对于不同的领域,我们可以设计特定的初始采样坐标形状来满足实际需求。虽然在本论文中,我们仅针对大小为5的AKConv设计了多种采样坐标形状。但是,AKConv的灵活性在于它可以针对任何采样核大小来提取信息。因此,未来我们希望针对特定任务探索适当大小和采样形状的AKConv,这将对后续任务产生推动力。

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

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

相关文章

【动态规划】LeetCode-70.爬楼梯

🎈算法那些事专栏说明:这是一个记录刷题日常的专栏,每个文章标题前都会写明这道题使用的算法。专栏每日计划至少更新1道题目,在这立下Flag🚩 🏠个人主页:Jammingpro 📕专栏链接&…

C语言——深入理解指针(3)

目录 1. 字符指针 2. 数组指针 2.1 数组指针变量 2.2 数组指针变量的初始化 3.二维数组传参(本质) 4. 函数指针 4.1 函数指针变量的创建 4.2 函数指针的使用 4.3 typedef 5. 函数指针数组 6. 转移表(函数指针数组的使用&#xff…

4G5G防爆执法记录仪、防爆智能安全帽赋能智慧燃气,可视化巡检巡线,安全生产管控

随着燃气使用的普及,燃气安全问题日益突出。传统应急安全问题处理方式暴露出以下问题: 应急预案不完善:目前一些燃气企业的应急预案存在实用性不高、流程不清晰等问题,导致在紧急情况下难以迅速启动和有效执行。 部门协同不流畅…

网工内推 | 中高级网工,IE认证优先,带薪年假,五险一金

01 敏于行(北京)科技有限公司 招聘岗位:高级网络开发工程师 职责描述: 1、负责设计、参与数字身份安全中网络安全模块相关项目(零信任SDP、VPN等); 2、深入研究和理解网络底层协议和通信机制&…

【hacker送书第6期】深入理解Java核心技术

第6期图书推荐 内容简介作者简介精彩书评参与方式 内容简介 《深入理解Java核心技术:写给Java工程师的干货笔记(基础篇)》是《Java工程师成神之路》系列的第一本,主要聚焦于Java开发者必备的Java核心基础知识。全书共23章&#xf…

文件重命名:如何删除文件名中的下划线,特殊符号批量删除

在日常的工作中,经常会遇到文件名中包含特殊符号的情况,例如,一些文件名可能包含下划线、空格或其他特殊符号,这些符号可能会干扰我们的文件搜索和识别。此外,一些文件名可能包含无法识别的非标准字符,这可…

GeoServer改造Springboot源码四(图层管理设计)

一、界面设计 图 1图层管理列表 图 2选择图层数据源 图 3添加图层 图 4编辑图层

解决msvcr71.dll丢失5个方法,修复程序运行缺失dll问题

在计算机使用过程中,我们经常会遇到一些错误提示,其中之一就是“msvcr71.dll丢失”。这个错误提示通常出现在运行某些程序或游戏时,给使用者带来了很大的困扰。那么,究竟是什么原因导致了msvcr71.dll文件的丢失呢?本文…

JS动态转盘可自由设置个数与概率

让我为大家介绍一下转盘的实现过程与原理&#xff0c;介绍都放在下面代码块中&#xff0c;一步一步的教会你。 我们转盘使用线段来实现 <!DOCTYPE html> <html> <head><meta charset"utf-8"><title></title><style type&quo…

Linux小程序之进度条

> 作者简介&#xff1a;დ旧言~&#xff0c;目前大二&#xff0c;现在学习Java&#xff0c;c&#xff0c;c&#xff0c;Python等 > 座右铭&#xff1a;松树千年终是朽&#xff0c;槿花一日自为荣。 > 目标&#xff1a;自己能实现进度条 > 毒鸡汤&#xff1a; > …

MySQL主从复制架构

MySQL主从复制架构 一、MySQL集群概述 ##1、集群的主要类型 高可用集群&#xff08;High Available Cluster&#xff0c;HA Cluster&#xff09; 高可用集群是指通过特殊的软件把独立的服务器连接起来&#xff0c;组成一个能够提供故障切换&#xff08;Fail Over&#xff09…

【Hadoop】集群资源管理器 YARN

一、yarn 简介 Apache YARN (Yet Another Resource Negotiator) 是 hadoop 2.x 引入的分布式资源管理系统。主要用于解决 hadoop 1.x 架构中集群资源管理和数据计算耦合在一起&#xff0c;导致维护成本越来越高的问题。 yarn主要负责管理集群中的CPU和内存 用户可以将各种服…

[ISCTF2023] Crypto/PWN/Reverse

最近新生赛还挺多&#xff0c;不过这个开始后注册页面就被删了&#xff0c;没注册上。拿别人的附件作了下。 Crypto 七七的欧拉 这题只给了n,e,c这种情况一般正常没法解&#xff0c;猜n不正常 import gmpy2 import libnum from crypto.Util.number import *flagbISCTF{****…

C++ day44完全背包问题 零钱兑换Ⅱ 组合总和Ⅳ

完全背包&#xff1a;一个物品可以使用无数次&#xff0c;将01背包中倒序遍历背包变成正序遍历背包 遍历顺序&#xff1a;在完全背包中&#xff0c;对于一维dp数组来说&#xff0c;其实两个for循环嵌套顺序是无所谓的&#xff01; 先遍历物品&#xff0c;后遍历背包可以&#…

docker搭建rabbit集群

1.去rabbitMQ官网拉去images 我当前使用的是最新版本的镜像&#xff1a;rabbitmq:3.12-management 2.创建一个集群专用网络 docker的容器相互隔离是不可通信的&#xff0c;我们自行创建一个网络后&#xff0c;创建容器时 给他们放在一起&#xff0c;就可以通信了。 docker netw…

2023年【安全员-A证】考试题及安全员-A证最新解析

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 安全员-A证考试题考前必练&#xff01;安全生产模拟考试一点通每个月更新安全员-A证最新解析题目及答案&#xff01;多做几遍&#xff0c;其实通过安全员-A证模拟考试题很简单。 1、【多选题】下列关于高处作业吊篮叙…

基于深度学习的点云三维目标检测方法综述

论文标题&#xff1a;基于深度学习的点云三维目标检测方法综述 作者&#xff1a;郭毅锋&#xff11;&#xff0c;&#xff12;†&#xff0c;吴帝浩&#xff11;&#xff0c;魏青民&#xff11; 发表日期&#xff1a; 2023 1 阅读日期 &#xff1a;2023 11 29 研究背景&…

Bug 检查 0x7B:INACCESSIBLE_BOOT_DEVICE(未解决)

环境&#xff1a; HP ProDesk 480 G7 Win10 专业版 问题描述&#xff1a; INACCESSIBLE_BOOT_DEVICE bug 检查的值为0x0000007B。 此 bug 检查表明 Microsoft Windows 操作系统在启动过程中无法访问系统分区 原因&#xff1a; 1.INACCESSIBLE_BOOT_DEVICE bug 检查经常发生…

基于springboot实现实习管理系统的设计与实现项目【项目源码+论文说明】计算机毕业设计

基于sprinmgboot实现实习管理系统的设计与实现演示 摘要 随着信息化时代的到来&#xff0c;管理系统都趋向于智能化、系统化&#xff0c;实习管理也不例外&#xff0c;但目前国内仍都使用人工管理&#xff0c;市场规模越来越大&#xff0c;同时信息量也越来越庞大&#xff0c;…

Condition原码分析及实现原理

一、引言 Java作为一种广泛应用于企业级开发的编程语言&#xff0c;其内部机制和特性被许多开发者所关注。本文将深入分析Java Condition原码&#xff0c;以及Condition接口的实现原理&#xff0c;为大家提供一个更深入的了解。 二、Condition概述 Condition是Java并发编程中一…