GFF: Gated Fully Fusion for Semantic Segmentation门控融合语义分割-论文阅读笔记

news2024/10/26 4:14:46

摘要:

语义分割通过对每个像素密集预测其类别,生成对场景的全面理解。深度卷积神经网络的高级特征已经在语义分割任务中证明了它们的有效性,然而高级特征的粗分辨率经常导致对小/薄物体的结果不佳,而这些物体的细节信息非常重要。很自然地,我们考虑引入低级特征来补偿高级特征中丢失的细节信息。不幸的是,简单地结合多级特征会因为它们之间的语义鸿沟而受到影响。在本文中,我们提出了一种新的架构,名为门控全融合(Gated Fully Fusion,GFF),以全连接的方式使用门控机制选择性地融合来自多个级别的特征。具体来说,每个级别的特征都通过具有更强语义的高级特征和具有更多细节的低级特征来增强,并且使用门控来控制有用信息的传播,这显著减少了融合过程中的噪声。我们在四个具有挑战性的场景解析数据集上取得了最先进的结果,包括Cityscapes、Pascal Context、COCO-stuff和ADE20K。

PS:

深度卷积神经网络(Deep Convolutional Neural Networks,DCNNs)的高级特征通常指的是在网络的较深层次中提取的特征。这些特征往往具有以下特点:

  1. 语义信息丰富:高级特征能够捕捉到图像中更抽象的概念和对象的高级属性,如物体的类别和场景的上下文信息。

  2. 空间分辨率低:由于网络中的池化(pooling)和卷积操作,高级特征图的空间分辨率通常较低,这意味着它们在描述图像细节方面的能力有限。

  3. 全局上下文感知:高级特征能够提供全局上下文信息,有助于理解图像的整体内容和结构。

  4. 对小物体和细节不敏感:由于分辨率较低,高级特征在识别图像中的小物体或细节方面表现不佳。

在语义分割任务中,高级特征的这些特性使得它们在处理大场景和识别高级概念时非常有效,但在需要精细细节的任务中,如小物体的识别或边缘的精确定位,它们的性能可能会下降。因此,研究者们通常会尝试将高级特征与低级特征(如来自网络浅层的特征,具有高空间分辨率)结合起来,以提高分割的精度和细节。GFF(Gated Fully Fusion)架构就是其中一种尝试,它通过门控机制选择性地融合多级特征,以增强特征表示并减少融合过程中的噪声。

空间分辨率(Spatial Resolution)是指图像或特征图中能够区分的最小细节或最小物体的大小。在深度学习和计算机视觉中,空间分辨率是一个重要的概念,因为它直接影响到模型对图像细节的捕捉能力。

在深度卷积神经网络中,空间分辨率的变化通常由以下几个因素决定:

  1. 卷积层:卷积操作本身不会改变特征图的空间分辨率,除非使用步长(stride)大于1的卷积,这会导致特征图的尺寸减小。

  2. 池化层:池化(Pooling)操作,尤其是最大池化(Max Pooling)和平均池化(Average Pooling),通常会减小特征图的空间尺寸,从而降低其空间分辨率

  3. 步长:卷积和池化操作中的步长决定了操作的覆盖范围,步长越大,特征图的空间尺寸减小得越快。

  4. 网络深度:随着网络深度的增加,特征图的空间分辨率通常会逐渐降低,因为每经过一层卷积或池化,特征图的尺寸都会减小。

  5. 上采样:在某些网络结构中,如U-Net或FPN(Feature Pyramid Network),会使用上采样(Upsampling)操作来增加特征图的空间分辨率,以便更好地恢复图像细节。

引言:

语义分割密集地预测图像中每个像素的语义类别,这种全面理解图像的能力对于许多基于视觉的应用非常有价值,例如医学图像分析(Ronneberger, Fischer, 和 Brox 2015)、遥感(Kampffmeyer, Salberg, 和 Jenssen 2016)以及自动驾驶(Xu et al. 2017)。然而,正如图1所示,为每个像素精确预测标签是具有挑战性的,因为像素可能来自微小或大型物体、远或近的物体,以及物体内部或物体边界。

作为一个语义预测问题,语义分割的基本任务为每个像素生成高级表示,即一个高级且高分辨率的特征图。鉴于卷积神经网络(ConvNets)在从数据中学习高级表示方面的能力,语义分割通过利用这种高级表示取得了很大进展。然而,卷积神经网络生成的高级表示是伴随着降低分辨率进行的,因此高分辨率和高级表示之间的平衡是一个关键问题。

这些特征图具有不同的属性:高级特征图能够以粗略的方式正确预测大部分大模式上的像素,这在当前的语义分割方法中被广泛使用;而低级特征图只能预测小模式上的少量像素。简单地将高级特征图和高分辨率特征图结合起来,会将有用信息淹没在大量无用信息中,无法得到信息丰富的高级和高分辨率特征图。因此,需要一个先进的融合机制,有选择性地从不同的特征图中收集信息。

为了实现这一点,提出了门控全融合(Gated Fully Fusion,GFF),它使用门控机制,这是一种通常用于从时间序列中提取信息的操作,来逐像素地衡量每个特征向量的有用性,并相应地通过门控制信息的传播。每层的门的设计原则是要么发送有用的信息到其他层,要么在本层信息无用时从其他层接收信息。通过这种方式,GFF能够显著减少融合过程中的噪声,并生成具有高分辨率和高级语义信息的特征图。

此外,大感受野内的上下文信息对于语义分割也非常重要,这一点已经被PSPNet(Zhao et al. 2017)、ASPP(Chen et al. 2018b)和DenseASPP(Yang et al. 2018)证明。因此,我们在GFF之后也对上下文信息进行了建模,以进一步提高性能。具体来说,我们提出了一个密集特征金字塔(Dense Feature Pyramid,DFP)模块,将上下文信息编码到每个特征图中。DFP重用每个特征级别的上下文信息,旨在增强上下文建模部分,而GFF在骨干网络上操作以捕获更详细的信息。将这两个组件结合在一个端到端的网络中,我们在四个场景解析数据集上取得了最先进的结果。

我们工作的主要贡献可以总结为三点:

  • 首先,我们提出了门控全融合来从多级特征图中生成高分辨率和高级特征图,以及密集特征金字塔来增强多级特征图的语义表示。
  • 其次,通过不同层学习的门的详细分析和可视化直观地展示了GFF中的信息调节机制。

ps:语义分割的目标是为图像中的每个像素分配一个类别标签,从而能够识别和区分图像中的不同物体和场景。这种技术可以提供图像的详细理解,因为它不仅识别出图像中的主要物体,还能精确地知道每个像素属于哪个物体或场景的哪一部分。

相关工作:

上下文建模 尽管卷积神经网络中的高级特征图在语义分割上显示出了有希望的结果(Long, Shelhamer, 和 Darrell 2015),但它们的接受域大小仍然不足以捕获大物体和区域的上下文信息。因此,上下文建模成为语义分割中的一个实用方向。PSPNet(Zhao et al. 2017)使用空间金字塔池化来聚合多尺度上下文信息。Deeplab系列(Chen et al. 2015; 2018b; 2017)开发了扩张空间金字塔池化(ASPP),通过具有不同扩张率的扩张卷积层来捕获多尺度上下文信息。与PSPNet和Deeplab中采用的并行聚合不同,Yang et al.(Yang et al. 2018)和Bilinski et al.(Bilinski and Prisacariu 2018)遵循密集连接(Huang et al. 2017)的思想,以密集的方式编码上下文信息。在(Peng et al. 2017)中,直接使用分解的大型滤波器来增加接受域大小,以进行上下文建模。SVCNet(Ding et al. 2019)为每个像素生成一个尺度和形状变化的语义掩码,以限制其上下文区域,2018年),根据在投影特征空间中定义的相似性,从所有位置收集上下文信息。同样,DANet(Fu et al.2018)、CCNet(Huang et al.2018)、EMAnet(Li et al.2019)和ANN(Zhu et al.2019)使用非局部风格操作符(Wang et al. 2018)根据像素间的亲和性从整个图像中聚合信息。

多级特征融合 除了缺乏上下文信息外,顶层还缺乏精细的细节信息。为了解决这个问题,在FCN(Long, Shelhamer, 和 Darrell 2015)中,使用中间层的预测来改善详细结构的分割,而超列(Hariharan et al. 2015)直接结合多层特征进行预测。U-Net(Ronneberger, Fischer, 和 Brox 2015)在编码器和解码器之间添加跳跃连接以重用低级特征,(Zhang et al. 2018b)通过将高级特征融合到低级特征中来改进U-Net。特征金字塔网络(FPN)(Lin et al. 2017b)使用U-Net的结构,并从特征金字塔的每个级别进行预测。DeepLabV3+(Chen et al. 2018c)通过结合低级特征来改进其先前版本的解码器。在(Lin et al.2018)和(Ding et al.2018)中,他们提出在特征金字塔中局部融合每两个相邻的特征图,直到只剩下一个特征图。这些融合方法在特征金字塔中局部操作,没有意识到所有要融合的特征图的有用性,这限制了有用特征的传播

门控机制 在深度神经网络中,特别是对于循环网络,门通常被用来控制信息传播。例如,LSTM(Hochreiter 和 Schmidhuber 1997)和GRU(Cho et al. 2014)是两个典型的案例,其中使用不同的门来处理长期记忆和依赖关系。高速公路网络(Srivastava, Greff, 和 Schmidhuber 2015)使用门使得训练深度网络成为可能。为了改进场景解析和深度估计的多任务学习,PAD-Net(Xu et al.2018)提出使用门来融合从多个辅助任务训练的多模态特征。DepthSeg(Kong 和 Fowlkes 2018)提出深度感知门控模块,该模块使用深度估计来自适应地修改高级特征图中的池化场大小。GSCNN(Takikawa et al.2019)使用门通过包括另一个形状流来编码边缘特征到最终表示中,以学习精确的边界信息。

我们的方法与上述方法有关并受到启发,与它们不同的是,多级特征图通过门控机制同时融合,并且结果方法超越了最先进的方法。

方法

在本节中,我们首先概述了多级特征融合的基本设置三种基线融合策略。然后,我们介绍了所提出的多级融合模块(GFF)以及带有上下文建模模块(DFP)的整个网络。

多级特征融合

给定从某些骨干网络(例如ResNet)提取的L个特征图 ,其中特征图按照它们在网络中的深度排序,语义信息随着深度增加而增加,但细节信息减少。分别是第i个特征图的高度、宽度和通道数。由于下采样操作,较高层的特征图分辨率较低,即 。在语义分割中,通常使用具有原始输入图像1/8分辨率的顶层特征图 ,因为它具有丰富的语义信息。的主要限制是其空间分辨率低,没有详细信息,因为输出需要与输入图像具有相同的分辨率。相比之下,来自浅层的低级特征图具有高分辨率,但语义信息有限。直观上,结合多个层级特征图的互补优势将实现高分辨率和丰富语义的目标,这个过程可以抽象为一个融合过程f,即,

其中是第l层的融合特征图。为了简化以下方程中的符号,忽略了双线性采样和 1X1 卷积,这些操作用于重塑右侧的特征图,使融合后的特征图与左侧的特征图具有相同的大小。连接(Concatenation)是一种直接的操作,用于聚合多个特征图中的所有信息,但它将有用信息与大量非信息特征混合在一起。加法(Addition)是另一种简单的特征图组合方式,通过在每个位置添加特征来实现,但它也遭受与连接类似的的问题。FPN(Lin et al. 2017b)通过自顶向下的路径和横向连接进行融合过程。这三种融合策略可以翻译为

  1. 连接(Concatenation):这是一种直接的操作,用于聚合多个特征图中的所有信息,但它会将有用信息与大量非信息特征混合在一起。
  2. 加法(Addition):这是另一种简单的特征图组合方式,通过在每个位置添加特征来实现,但它也遭受与连接类似的问题。
  3. FPN(Feature Pyramid Network):通过自顶向下的路径和横向连接进行融合过程。

这些策略都是为了解决高层特征图分辨率低和低层特征图语义信息有限的问题,通过融合不同层级的特征图来提高语义分割的性能:

这些基本融合策略的问题是特征在不测量每个特征向量的有用性的情况下融合在一起,在融合过程中将大量无用的特征与有用的特征混合。

Gated Fully Fusion(门控全融合)

GFF模块设计:
多层次特征融合的基本任务是在大量无用信息的干扰下,将有用的信息聚集在一起。门控是一种成熟的机制,可以测量特征图中每个特征向量的有用性,并相应地聚合信息。本文基于简单的基于加法的融合,通过用门控制信息流,设计了门控全融合(GFF)。。具体来说,每个层级l都与一个门控图 相关联。利用这些门控图,基于加法的融合形式上定义为:
其中,·表示在通道维度上的逐元素乘法广播, G l = sigmoid(w i X i)由一个卷积层参数化来估计 总共有L个门控图,其中L等于特征图的数量。 表示除了第l层之外的其他层级特征图的加权和。门控图G的大小与该层特征图Xl的大小相同,根据可学习权重和特征图进行卷积操纵,根据sigmoid函数,生成门控图。详细操作可见图2。
涉及的步骤:门控图的生成、门控图的估计、特征融合
GFF involves duplex gating mechanism:GGF涉及双门控制机制
GFF(Gated Fully Fusion)采用了一种双门控机制,这种机制允许来自不同层级的特征向量在特定条件下进行融合。具体来说,位于位置 (x, y) 的特征向量从层级 i,只有在 G_i(x, y) 的值较大而 G_l(x, y) 的值较小时,才能与层级 l融合。这意味着,只有当 层级 i拥有层级 l所缺失的有用信息时,信息才会被发送除此之外,通过门控机制,有用信息可以被调节到正确的位置,无用信息也可以在发送和接收两侧有效地被抑制,从而避免了信息冗余,因为信息只有在当前位置的特征无用时才会被接收。更多的可视化示例可以在实验部分看到。

与其他门控模块的比较:Ding等人(2018)的工作也使用了门控机制来控制相邻层之间的信息。GFF的不同之处在于使用门控机制来完全融合来自每个层级的特征,而不是相邻层级,并且在所有层级中拥有丰富的信息和较大的可用性差异,这激励我们设计了双门控机制,它通过在发送者和接收者两侧的门控更有效地过滤掉无用信息。实验部分的实验结果展示了所提方法的优势。

密集特征金字塔

上下文建模旨在编码更多的全局信息,它与所提出的GFF正交(上下文建模和GFF是两个互补的过程,它们可以结合在一起以增强特征表示。GFF专注于在骨干网络中融合不同层级的特征而上下文建模则专注于增强特征的全局上下文信息,从而提高模型对场景的整体理解能力。),因为GFF是为骨干网络层级设计的。因此,我们进一步设计了一个模块来从PSPPNet(Zhao等人,2017)和GFF的输出中编码更多的上下文信息。受到密集连接可以加强特征传播(Huang等人,2017)的启发,我们也从PSPPNet输出的特征图开始,以自顶向下的方式密集连接特征图,并且高级特征图被多次重用来向低层添加更多的上下文信息,这在我们的实验中对于正确分割物体中的大模式被发现是重要的。这个过程如下所示:

因此,第j个特征金字塔接收所有前导金字塔的特征图 $y_{0}, \tilde{X}{1},\ldots\tilde{X}{i-1}$ 作为输入,并输出当前金字塔 $y_{i}$:其中 $y_{0}$ 是 PSP-Net 的输出,而 $\tilde{X}{i}$ 是第i个 GFF 模块的输出融合函数 $H{i}$ 由一个单一卷积层实现。由于特征金字塔密集连接,我们将这个模块称为密集特征金字塔(Dense Feature Pyramid,DFP)。DFP的输出集合 $y_{i}$ 用于最终预测。GFF和DFP都可以插入到现有的 FCNs(全卷积网络Fully Convolutional Networks) 中,以端到端的训练方式进行,并且只需额外的计算成本。

网络架构和实现

我们的网络架构是基于之前最先进的网络 PSPNet(Zhao et al. 2017)设计的,使用 ResNet(He et al. 2016)作为骨干网络进行基本特征提取,ResNet 的最后两个阶段通过扩张卷积修改,使两个步长为1并保持空间信息。图3显示了包括 GFF 和 DFP 的整体框架。PSPNet 形成了自下而上的路径,与骨干网络和金字塔池化模块(PPM),其中 PPM 在顶部编码上下文信息。每个阶段的最后残差块的特征图翻译成骨干网络的特征图用作GFF模块的输入,所有特征图通过1×1卷积层减少到256个通道。来自GFF的输出特征图在输入到DFP模块之前,每个层级进一步通过两个3×3卷积层融合。所有卷积层后面都跟着批量归一化(Ioffe和Szegedy 2015)和ReLU激活函数。在DFP之后,所有特征图被连接起来进行最终的语义分割。与基本的PSPNet相比,提出的方法只略微增加了参数数量和计算量。整个网络以端到端的方式训练,由定义在分割基准上的交叉熵损失驱动。为了促进训练过程,辅助损失与主损失一起使用来帮助优化,遵循(Lee等人。2015),其中主损失定义在网络的最终输出上,辅助损失定义在ResNet的第3阶段的输出特征图上,权重为0.4(Zhao等人。2017)。

整体架构的说明。(a)骨干网络(例如ResNet(He等人2016)),顶部有金字塔池模块(PPM)(Zhao等人2017)。主干提供了一个不同层次的特征金字塔。(b),特征金字塔通过门控完全融合(GFF)模块。GFF模块的细节如图2所示。(c),然后从一个密集的特征金字塔(DFP)模块中获得包含上下文信息的最终特征。最佳视图和放大。

PS:PSPPNet(Pyramid Scene Parsing Network)是一种用于语义分割的深度学习模型,它通过构建一个金字塔结构来聚合多尺度的上下文信息,从而提高分割的精度。PPNet的核心组件包括:

  1. 金字塔池化模块(Pyramid Pooling Module):这个模块通过不同尺度的池化操作来捕获图像的多尺度上下文信息。

  2. 特征融合:PPNet通过融合金字塔池化模块输出的特征图和骨干网络中的特征图来增强特征的表达能力。

  3. 上采样和解码:融合后的特征图会经过上采样和解码过程,以生成高分辨率的分割图。

PPNet的输出通常是一个高分辨率的特征图,这个特征图包含了丰富的上下文信息,可以用于生成最终的像素级分割结果。在实际应用中,PPNet的输出可以进一步通过softmax层转换为每个像素的类别概率分布,从而得到最终的分割掩码(mask)。PPNet因其有效的上下文聚合能力和对多尺度物体的良好处理能力,在语义分割任务中取得了很好的效果。

最终的分割掩码(mask)是语义分割任务的输出结果,它是一个与输入图像大小相同的二维数组,其中每个像素的值代表该像素所属的类别。在语义分割中,分割掩码通常用于表示图像中每个像素的类别标签,从而实现对图像中不同区域的区分和识别。

分割掩码的生成过程通常包括以下步骤:

  1. 特征提取:使用深度卷积神经网络(如ResNet、VGGG等)提取图像的特征。

  2. 特征融合:通过特征融合技术(如PPNet、GFF等)聚合不同尺度或不同层级的特征信息,以增强特征的表达能力。

  3. 上采样:将融合后的特征图上采样到与原始图像相同的分辨率。

  4. 分类:通过一个分类层(通常是全连接层或卷积层)对每个像素进行分类,得到每个像素的类别概率。

  5. 生成掩码:根据分类结果,将概率最高的类别标签分配给每个像素,生成最终的分割掩码。

实验

Implementation Details
Experiments on Cityscapes Dataset
Cityscapes is a large-scale dataset for semantic urban scene  understanding.
Strong Baseline We choose PSPNet (Zhao et al. 2017) as our baseline model
Ablation Study on Feature Fusion Methods
Ablation Study for Improvement Strategies
Ablation Study for other architectures
Computation Cost
Comparison to the State-of-the-Art
Visualization of Gates
Results on Other Datasets

结论

在这项工作中,我们提出门控完全融合(GFF)来完全融合由学习门映射控制的多层次特征图。该新模块搭建了低语义高分辨率和高语义低分辨率之间的桥梁。我们探索了所提出的语义分割任务的GFF,并获得了新的最先进的结果,四个具有挑战性的场景解析数据集。特别是,我们发现缺失的低级特征可以融合到金字塔的每个特征层次中,这表明我们的模块可以很好地处理场景中的小的对象。


 

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

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

相关文章

如何在算家云搭建GPT-SOVITS(语音转换)

一、模型介绍 GPT-SOVITS是一款强大的小样本语音转换和文本转语音 WebUI工具。它集成了声音伴奏分离、自动训练集分割、中文ASR和文本标注等辅助工具。 具有以下特征: 零样本 TTS: 输入 5 秒的声音样本并体验即时文本到语音的转换。少量样本 TTS&…

Rust的move关键字在线程中的使用

为什么使用 move? 在 Rust 中,move 关键字主要用于闭包。当我们在一个线程中创建一个闭包并将其传递给另一个线程时,如果闭包中使用了某些变量,就需要决定这些变量的所有权归属。 不使用 move: 默认情况下&#xff0…

python实战项目42:themoviedb电影网站信息

python爬取themoviedb电影网站信息 一、寻找数据接口二、解析主页数据,获取详情页url三、向详情页url发送请求、获取并解析数据四、完整代码一、寻找数据接口 打开网站首页,F12打开开发者工具,刷新页面。 向下滑动页面,点击页面上的“Load More”图标。 寻找到数据接口,…

【网络原理】TCP/IP五层网络模型之网络层-----IP协议详解,建议收藏!!

💐个人主页:初晴~ 📚相关专栏:计算机网络那些事 前几篇文章中我们深入研究了TCP协议,因为TCP协议在我们日常开发中的使用频率非常高。而相比之下,IP协议与我们普通程序员关系就没那么近了。一般是专门开发…

2024年妈杯MathorCup大数据竞赛A题超详细解题思路

2024年妈杯大数据竞赛初赛整体难度约为0.6个国赛。A题为台风中心路径相关问题,为评价预测问题;B题为库存和销量的预测优化问题。B题难度稍大于A题,可以根据自己队伍情况进行选择。26日早六点之前发布AB两题相关解题代码论文。 下面为大家带来…

创建型模式-----建造者模式

目录 背景: 构建模式UML 代码示例 房子成品: 构建器抽象: 具体构建器: 建筑师: 测试部…

配置nginx服务通过ip访问多网站

1.关闭防火墙 [rootlocalhost wzj]# systemctl stop firewalld [rootlocalhost wzj]# sstenforce 0 bash: sstenforce: command not found... [rootlocalhost wzj]# setenforce 0 2,挂mnt [rootlocalhost wzj]# mount/dev/sr0/mnt bash: mount/dev/sr0/mnt: No suc…

C++20中头文件ranges的使用

<ranges>是C20中新增加的头文件&#xff0c;提供了一组与范围(ranges)相关的功能&#xff0c;此头文件是ranges库的一部分。包括&#xff1a; 1.concepts: (1).std::ranges::range:指定类型为range&#xff0c;即它提供开始迭代器和结束标记(it provides a begin iterato…

【WPF】中Dispatcher的DispatcherPriority参数使用

在 WPF 中&#xff0c;DispatcherPriority 参数用于指定通过 Dispatcher 调度的操作的执行优先级。加入 DispatcherPriority 参数的情况通常取决于你希望操作何时以及如何被执行。 1.Dispatcher的DispatcherPriority参数使用 以下是几种情况和示例说明&#xff1a; 1.1 需要…

量子纠错--shor‘s 码

定理1 (量子纠错的条件) C是一组量子编码&#xff0c;P是映射到C上的投影算子。假设是一个算子元素描述的量子操作&#xff0c;那么基于量子编码C&#xff0c;存在一个能对抗描述的噪声的纠错操作R的充要条件是 对某个复元素厄米矩阵成立。 将算子元素称为导致的错误。如果这样…

数字 图像处理算法的形式

一 基本功能形式 按图像处理的输出形式&#xff0c;图像处理的基本功能可分为三种形式。 1&#xff09;单幅图像 单幅图像 2&#xff09;多幅图像 单幅图像 3&#xff09;单&#xff08;或多&#xff09;幅图像 数字或符号等 二 几种具体算法形式 1.局部处理邻域对于任一…

第二单元历年真题整理

1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 参考答案 1. A 2. A 3. A 4. D 5. D 6. D 解析&#xff1a; 栈和队列是两个不一样的结构&#xff0c;不能放在一起表示 7. B 8. C 解析&#xff1a; S --> A0 | B1 --> (S1 | 1) 0 | (S0 | 0)1 --> S10 | 10 | S…

Java程序员如何获得高并发经验?

高并发编程 提到并发编程很多人就会头疼了&#xff1b;首先就是一些基础概念&#xff1a;并发&#xff0c;并行&#xff0c;同步&#xff0c;异步&#xff0c;临界区&#xff0c;阻塞&#xff0c;非阻塞还有各种锁全都砸你脸上&#xff0c;随之而来的就是要保证程序运行时关键…

蓝桥杯题目理解

1. 一维差分 1.1. 小蓝的操作 1.1.1. 题目解析&#xff1a; 这道题提到了对于“区间”进行操作&#xff0c;而差分数列就是对于区间进行操作的好方法。 观察差分数列&#xff1a; 给定数列&#xff1a;1 3 5 2 7 1 差分数列&#xff1a;1 2 2 -3 5 6 题目要求把原数组全部…

Leetcode239. 滑动窗口最大值

问题描述&#xff1a; 给你一个整数数组 nums&#xff0c;有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回 滑动窗口中的最大值 。 示例 1&#xff1a; 输入&#xff1a;nums [1,3,…

c#子控件拖动父控件方法及父控件限在窗体内拖动

一、效果 拖放位置不超过窗体四边,超出后自动靠边停靠支持多子控件拖动指定控件拖放(含父控件或窗体)点击左上角logo弹出消息窗口(默认位置右下角)1.1 效果展示 1.2 关于MQTTnet(最新版v4.3.7.1207)实现在线客服功能,见下篇博文 https://github.com/dotnet/MQTTnet 网上…

7、哈希表

7、哈希表 哈希表最主要的作用就是把一个比较庞大的空间或者值域 映射到比较小的值域 (0-n) 就是将-10^9 ~10^9 映射到 0 ~10^5 一、存储结构 映射的方法可以是 h(x) x mod 10^5 但是这样映射会出现一个问题 可能会有重复的数字出现 所以就引出了两个方法 开放寻址法 和…

时间数据可视化基础实验(南丁格尔玫瑰图)——Python热狗大胃王比赛数据集

【实验名称】 实验一&#xff1a;时间数据的可视化 【实验目的】 1.掌握时间数据在大数据中的应用 2.掌握时间数据可视化图表表示 3. 利用python程序实现堆叠柱形图的可视化 【实验原理】 时间是一个非常重要的维度与属性。时间序列数据存在于社会的各个领域&#xff0c;如&a…

金融工程--pine-script 入门

背景 脚本基本组成 策略实现 实现马丁格尔策略 初始化变量&#xff1a;定义初始资本、初始头寸大小、止损百分比、止盈百分比以及当前资本和当前头寸大小等变量。 更新头寸&#xff1a;创建一个函数来更新头寸大小、止损价格和止盈价格。在马丁格尔策略中&#xff0c;每次亏…

若依框架篇-若依集成 X-File-Storage 框架(实现图片上传阿里云 OSS 服务器)、EasyExcel 框架(实现 Excel 数据批量导入功能)

&#x1f525;博客主页&#xff1a; 【小扳_-CSDN博客】 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 文章目录 1.0 实现使用 Excel 文件批量导入 1.1 导入功能的前端具体实现 1.2 导入功能的后端具体实现 1.3 使用 EasyExcel 框架实现 Excel 读、写功能 1.4 将 Easy Excel 集成到…