第十章:重新审视扩张卷积:一种用于弱监督和半监督语义分割的简单方法

news2024/9/23 1:24:46

0.摘要

        尽管取得了显著的进展,弱监督分割方法仍然不如完全监督方法。我们观察到性能差距主要来自于它们在从图像级别监督中学习生成高质量的密集目标定位图的能力有限。为了缓解这样的差距,我们重新审视了扩张卷积[1]并揭示了它如何以一种新颖的方式被用于有效地克服弱监督分割方法的这一关键限制。具体而言,我们发现不同的扩张率可以有效地扩大卷积核的感受野,并且更重要的是将周围的有辨别力的信息传递给非辨别性的目标区域,促进这些区域在目标定位图中的出现。然后,我们设计了一个具有不同扩张率的卷积块的通用分类网络。它可以产生密集且可靠的目标定位图,并有效地有利于弱监督和半监督语义分割。尽管表面上看起来很简单,我们提出的方法在性能上超过了现有技术水平。特别是,在弱监督(只有图像级别标签可用)和半监督(有1,464个分割掩码可用)的设置下,在Pascal VOC 2012测试集上实现了60.8%和67.6%的mIoU分数,创下了新的技术水平。

1.引言

        由于不需要昂贵的人力成本,弱监督的图像识别方法[11,15,16,19,23,38-42,44]已经得到广泛研究。其中最有吸引力的方法之一是仅使用图像级别注释学习对图像进行分割。对于这种方法来说,目前仍然存在一个被认为是最关键的挑战,即如何准确地和密集地定位目标区域,以获取高质量的目标线索,从而启动和改进分割模型的训练[1,20,45]。

        最近,一些自顶向下的方法[43,46]提出利用分类网络来生成类别特定的注意力线索,用于目标定位。然而,直接使用图像分类模型生成的注意力只能识别目标对象的一个小的有辨别力的区域,这对于训练一个良好的分割模型来说不够密集和广泛。例如,图1(b)的第二行展示了由最先进的类别激活映射(CAM)[46]生成的一些类别特定区域定位的样本。可以观察到,在存在大型对象的常见情况下,CAM很难生成密集的目标区域,这与语义分割任务的要求不符。CAM发现的这些区域通常散布在目标对象周围,例如孩子的头部和手部等有辨别力的部分。无法从图像级别监督中学习生成密集目标定位是发展性能良好的弱监督分割模型的关键障碍。基于这样的观察,我们提出将那些稀疏突出的区域中的有辨别力的知识转移到相邻的目标区域,从而形成密集的目标定位,这可以有效地促进分割模型的学习。

        为了实现这一目标,我们重新审视了流行的扩张卷积,并发现它确实提供了一个有前景的解决方案,只要能够正确地利用它。扩张卷积最初由Chen等人引入用于语义分割[1,2]。其一个关键优势是能够有效地扩大感受野的大小,以融入上下文信息,而不引入额外的参数或计算成本。我们发现这个特性非常适合在图像区域之间传播有辨别力的信息,并突出非辨别性的目标区域以生成密集的目标定位。受此启发,我们引入了多个扩张卷积块来增强标准的分类模型,如图1(a)所示。

        具体而言,我们提出的方法通过改变卷积核的扩张率,在多个尺度上扩大感受野。通常,分类网络能够识别出一个或多个具有高响应的小的有辨别力的部分,以正确识别图像。通过扩大感受野,具有低响应的目标区域可以通过感知周围高响应的上下文来提高辨别力。这样,目标对象高响应部分的辨别信息可以在多个尺度上传播到相邻的目标区域,使它们更容易被分类模型识别。我们利用CAM [46]为每个卷积块生成一个目标定位图。如图1(a)所示,在不扩大扩张率(即d=1)的情况下,卷积块只能定位两个小的有辨别力的区域。通过逐渐增加扩张率(从3到9),发现了更多与目标相关的区域。

        然而,一些真实的负面区域可能会被错误地突出显示,使用较大的扩张率(例如,对应于d=9的定位图)。因此,我们提出了一种简单但有效的抗噪声融合策略来解决这个问题。这个策略可以有效地抑制被扩大感受野激活的与目标无关的区域,并将不同扩张块产生的定位图融合为一个整体,清晰地突出显示目标区域。从图1(b)中所示的例子可以看出,我们的方法对尺度变化非常鲁棒,并能够密集地定位目标对象。

我们使用我们提出的方法生成的定位图来为训练分割模型生成分割掩码。我们的方法是通用的,并可以以弱监督和半监督的方式用于学习语义分割网络。尽管看起来简单,但我们的方法确实提供了密集的目标定位,可以轻松提升弱监督和半监督语义分割的效果,这在广泛的实验证明中得到了证实。总结起来,这项工作的主要贡献有三个方面:

        •我们重新审视了扩张卷积,并揭示了它自然适应于密集定位目标区域的要求,以构建一个良好的弱监督分割模型,这对于弱监督/半监督图像语义分割是新的。

        •我们提出了一种简单而有效的方法,利用扩张卷积来通过传递辨别性的分割信息密集地定位目标。

        •我们提出的方法可以以弱监督和半监督的方式学习语义分割网络。具体而言,在弱监督和半监督设置下,它在Pascal VOC分割基准测试集上分别达到了60.8%和67.6%的mIoU分数,这是最新的技术水平。

图1.(a)我们提出的方法:为标准分类网络配备具有不同扩张率的多个扩张卷积块,以实现密集的目标定位。(b)比较最先进的CAM [46](第2行)和我们的方法(最后一行)在生成的目标定位图质量上的差异。我们的方法即使在存在很大的尺度变化的情况下,也能更准确地定位目标对象。

2.相关工作

使用粗糙注释进行分割为了训练语义分割模型,收集大量的像素级注释是一项费时费力的工作。为了减轻像素级注释的负担,Dai等人[3]和Papandreou等人[21]提出使用带有注释边界框的方法来学习语义分割。Lin等人[17]使用语义涂鸦作为语义分割的监督。最近,监督注释进一步放宽为实例点[28]。

使用图像级别注释进行分割图像级别标签是最简单的分割学习监督,容易获取。一些工作[22–24]提出利用多实例学习和图像级别标签进行语义分割。Papandreou等人[21]提出基于期望最大化算法动态预测前景对象和背景进行监督。最近,在这一具有挑战性的任务上取得了很大的进展[8,9,13,14,26,29,31,34,35]。Wei等人[35]和Qi等人[26]利用提议生成像素级注释以进行监督。然而,使用MCG[25]提议或采用额外的网络[36]进行基于提议的分类通常会导致较长的时间消耗,并且也会固有地使用更强的监督(MCG是从带有像素级注释的PASCAL训练图像中训练得到的)。Wei等人[34]提出了一个从简单到复杂(STC)的框架,逐步提高分割网络的能力。然而,STC的成功主要依赖于大量简单图像的训练。Kolesnikov等人[14]提出了一种SEC方法,将三种损失函数(种子、扩张和边界约束)集成到统一的框架中来训练分割网络。但是SEC只能获得与对象相关的小而稀疏的种子用于监督,这不能为学习可靠的分割模型提供足够的信息。最近,Wei等人[33]提出了一种对抗擦除(AE)方法来挖掘密集的目标区域进行监督。虽然它在PASCAL VOC基准测试中达到了最先进的性能,但AE方法需要重复的训练过程来学习多个分类模型,然后将这些模型应用于定位与对象相关的区域。相比之下,在这项工作中,我们只需要训练一个分类模型来定位密集且完整的目标区域。

图2.我们方法的动机:通过改变卷积核的扩张率,信息可以从最初具有区分性的区域传递到其他区域。对应的定位图在第二行显示。最佳观看效果为彩色显示。

3.所提出的方法

3.1.重新审视扩张卷积

        一些自顶向下的方法[43,46]可以识别对分类网络决策有贡献的具有区分能力的目标区域,但它们通常会漏掉非区分目标区域。我们提出通过使信息能够从具有区分性的区域传递到相邻的非区分性区域来增强分类模型,以克服这种局限性。我们发现,扩张卷积[1]可以通过增大卷积核的感受野大小有效地融入周围上下文,提供了一个有希望的解决方案。图2说明了扩张如何实现信息传递。原始图像中绿色循环中的头部区域对于分类网络将其识别为"鸟"图像最具区分能力。我们采用一个3x3的卷积核来学习红色循环所示位置的特征表示。通过将3x3卷积核的扩张率从1增大到3,靠近头部的位置将被感知并提高其区分性。通过进一步增加扩张率(到d=6,9),一些更远的位置将感知到头部,并同样有助于分类模型发现这些区域。为了证明扩张卷积确实可以提高低响应目标区域的区分能力,我们使用CAM[46]在不同的扩张率下生成了定位图。我们可以观察到,在d=1的定位图上那些低响应的目标区域可以通过各种扩张率有效地突出显示。根据不同的扩张率产生的定位图是互补的,因此整合来自多个扩张块的结果也是必要的。

图3.多个扩张卷积块训练网络的说明。

3.2.用于定位的多扩张卷积

        受以上发现的启发,我们提出了一个增强的分类网络,使用多个扩张卷积块(MDC)来产生密集的目标定位,如图3所示。该网络基于在ImageNet上预训练的VGG16 [32]模型构建。我们移除了那些全连接层,并移除一个池化层以增加特征图的分辨率。然后,在conv5后附加具有多个扩张率(即d=ri,i=1,···,k)的卷积块,以定位由不同感受野感知到的与对象相关的区域。在全局平均池化(GAP)之后,生成的特征表示经过一个全连接层进行图像级别的分类预测。我们通过最小化sigmoid交叉熵损失来优化分类网络,然后使用分类激活映射(CAM)[46]方法为每个块生成类别特定的定位图。

        我们实现了两种卷积操作。1)我们应用标准的卷积核,即d=1。在这种情况下,我们可以获得准确的定位图,其中目标对象的一些具有区分性的部分被突出显示,但是很多与对象相关的区域被漏掉了。2)为了将稀疏突出显示区域的区分性知识转移到其他对象区域,我们改变扩张率以扩大卷积核的感受野。通过这种方式,相邻突出显示区域的区分性特征可以传递到尚未被发现的与对象相关的区域。我们观察到,具有较大扩张率的卷积块会引入一些无关的区域,即通过利用相邻具有区分性的对象部分突出显示的一些真负区域。因此,我们在这项工作中提出使用小的扩张率(即d=3,6,9)。

        然而,即使我们采用小的扩张率,仍然可能会识别出一些无关的区域。为了解决这个问题,我们提出了一个简单的抗噪声融合策略,用于抑制与对象无关的区域,并将生成的定位图融合成一个整体的定位图,其中对象区域被清晰地突出显示。我们注意到,真正的正面与对象相关的区域通常可以通过两个或更多的定位图区分,而真负区域在不同的扩张情况下表现出多样性。为了减少错误区域,我们对由不同扩张卷积块(d=3,6,9)生成的定位图进行平均操作。然后,将平均图添加到标准卷积块(d=1)的定位图中,以生成最终的定位图。通过这种方式,标准卷积块挖掘的准确区域不会被漏掉。形式上,我们使用H0和Hi(i=1···nd,nd为扩张卷积块的数量)来表示标准和扩张卷积块生成的定位图。用于生成对象区域的最终定位图H由H = H0 + n1d n i=1 d Hi产生。

        基于H,像素值大于预定义阈值δ的像素被视为支持对象相关区域的前景。此外,还需要背景定位线索来训练分割网络。受到[14,33,34]的启发,我们利用显著性检测方法[37]生成训练图像的显著性图,并将显著性值较低的像素视为背景。我们遵循[33]中详细介绍的相同策略来合并突出显示的对象区域和背景线索。最后,我们能够获得每个训练图像的预测分割掩码,用于学习分割。

 图4.我们提出的弱监督或半监督方式下训练语义分割的细节。具体而言,(a)是从密集定位图推断出的分割掩码;(b)是在线预测的分割掩码;(c)是人工标注的分割掩码。

3.3.弱监督和半监督语义分割学习

        我们使用所提出的方法生成的密集定位图来训练弱监督和半监督的分割模型。

3.3.1.弱监督学习

        对于弱监督应用,我们采用类似于[21,33]中提出的框架,利用推断的分割掩码中被忽略的像素,并对错误标注的像素具有鲁棒性,如图4上部所示。具体而言,我们以在线方式提取与真实图像级标签对应的置信度图,用于推断分割掩码,这与从密集定位图中得到的分割掩码一起作为监督信息。

        我们更正式地解释这个过程。设Iw是弱监督训练集Iw中的一张图像。对于任意的Iw ∈ Iw,Mw是由密集定位图生成的相应的伪分割掩码,C是标签集,其中包括背景类别。我们的目标是训练一个具有可学习参数θ的分割模型(例如FCN),表示为f(Iw;θ)。FCN模型建模了类别特定置信度图fu,c(Iw;θ)在任意位置u处的任意标签c ∈ C的条件概率。用Mˆw表示Iw的在线预测分割掩码,它与Mw一起用于监督。优化弱监督FCN的损失函数定义如下:

3.3.2.半监督学习

        除了大量带有图像级标注的图像外,我们还对利用少量图像的像素级标注进一步提高分割性能的半监督学习设置感兴趣。如图4底部所示,通过共享参数,可以将强标注和弱标注的图像结合起来学习分割网络。设Is为强监督训练集Is中的一张图像,Ms是由人工标注的相应分割掩码。用于优化半监督FCN的损失函数可以定义为:

4.实验

4.1.数据集和设置

数据集和评价指标:我们在PASCAL VOC 2012分割基准数据集[5]上评估了我们提出的方法。该数据集中注释了一个背景类别和20个物体类别。按照常规做法[1,6,33],通过数据增强将训练图像数量增加到10,582张。验证集和测试集分别包括1,449张和1,456张图像。我们以在21个类别上平均像素mIoU作为性能评价指标。在所有实验中,只使用图像级标签作为监督,并对验证集进行详细分析。我们将我们的方法与其他最先进的方法在验证集和测试集上进行了比较。测试集上的结果是通过将预测结果提交给官方PASCAL VOC评估服务器获得的。

训练/测试设置:我们采用了在ImageNet [4]上预训练的VGG16 [32]的卷积层来初始化分类网络,除了新增加的卷积块。对于分割网络,我们选择了[1]中的DeepLab-CRF-LargeFOV模型作为基础网络,其参数也是由VGG16进行初始化的。我们采用每批30张图像的小批量大小。从图像中随机裁剪出大小为321×321像素的补丁,用于训练分类和分割网络。我们训练模型15个epochs。初始学习率设置为0.001,在第6个epoch后降低10倍。所有实验都在NVIDIA TITAN X PASCAL GPU上进行。我们使用基于公开可用的Caffe框架[10]实现的DeepLab [1]代码。为了基于密集定位图获取与对象相关的区域,我们选择属于前30%最大值的唯一像素作为对象区域。利用[37]生成的显著图提供背景线索。根据[33]的设置,我们将标准化显著值小于0.06的像素设置为背景。所有冲突和未分配的像素在训练中被忽略。

4.2.与当下方法的对比

4.2.1弱监督语义分割

        对于弱监督语义分割,我们主要比较使用粗糙的像素级注释(包括涂鸦、边界框和斑点)和图像级注释作为监督信息的方法。表1显示了在PASCAL VOC验证集和测试集上的比较结果。需要注意的是,一些方法利用更多的图像进行训练,例如MIL-*[24](700K)、TransferNet [7](70K)、STC [34](50K)和Hong等人[8](970K)。此外,由于使用了MCG [25]提案,一些方法(如SN B [35]和AF-MCG [26])隐式地使用了像素级监督。

        从表1可以看出,从我们生成的密集定位图推断出的分割掩码对于学习分割网络非常可靠,优于所有使用图像级标签作为弱监督的其他方法。我们注意到,Hong等人[8]在这个具有挑战性的任务上取得了最先进的性能。然而,改进主要受益于使用额外的视频数据进行训练。由于视频中的时间动态可以提供丰富的信息,因此从视频中区分整个对象区域比从静态图像中更容易。值得注意的是,我们只使用了1万张图像来训练模型,在验证集上的性能比Hong等人[8]提高了2.3%。这充分证明了所提方法在生成高质量密集对象定位图方面的有效性。AE-PSL需要进行多个对抗性擦除步骤来挖掘与对象相关的区域,这需要训练多个不同的分类模型来进行对象定位。所提出的方法只需要训练一个单一的分类模型来定位对象区域,并且在mIoU得分上比AE-PSL表现更好。与AF-MCG [26]相比,我们的方法不需要大量的提案,因此在生成提案和训练上更高效。在没有任何像素级监督的情况下,我们的弱监督结果进一步接近基于涂鸦和基于边界框的方法,并且比基于斑点的方法表现更好,提高了超过8.8%。我们在PASCAL VOC测试集上进行了额外的比较。我们的方法在这个竞争性的基准上达到了最新的最先进水平,并且在mIoU得分上超过其他方法超过2.1%。

表1。PASCAL VOC 2012验证集和测试集上弱监督语义分割方法的比较。

表2。PASCAL VOC 2012验证集和测试集上半监督语义分割方法的比较。

4.2.2.半监督语义分割

        对于半监督语义分割,我们主要与WSSL [21]进行比较,其弱监督注释是图像级标签。为了进一步验证密集定位图的质量,我们还与可以访问边界框进行监督的方法进行了比较。我们采用了与这些基线方法相同的强监督/弱监督划分,即1.4K个强标注图像和9K个弱标注图像。

        从表2可以看出,在相同的设置下,我们的方法取得了比WSSL更好的结果,即在验证集上分别为65.7%对64.6%,在测试集上为67.6%对66.2%。此外,我们还与其他使用对象边界框作为弱监督信息而不是图像级标签的方法进行了比较。尽管我们的方法使用了更弱的监督,但在验证集和测试集上仍分别取得了具有竞争力和更好的mIoU得分。

4.3.消融分析

        然后,我们分析了所提出的密集对象定位方法的有效性,以及它如何对弱监督和半监督语义分割都带来了好处。

4.3.1.密集目标定位策略

        采用的用于对象定位的分类网络使用带有多个膨胀率的卷积块进行增强。来自不同膨胀块的与对象相关的线索可以集成到密集和完整的对象区域中。为了验证这一点,图5中可视化了来自不同卷积块和融合结果的定位图样本。我们观察到,块(d = 1)能够以高精度但低召回率定位对象(目标对象的大部分区域被忽略)。通过利用具有较大膨胀率(d = 3,6,9)的其他块,一些其他与对象相关的区域也被突出显示,例如第一行中右侧猫的身体(d = 6)和第二行中摩托车的一些部分(d = 3和d = 6)。然而,我们注意到,如果采用较大的膨胀率(例如,与d = 6和d = 9对应的那些定位图),也会突出显示一些真负区域。例如,我们可以观察到地图中的中心区域(第5行,第6列)对于狗这一类别具有区分能力。原因是当进行中心像素的卷积操作时,扩大的卷积核感知到周围两只狗的上下文,从而提高了产生的卷积特征的区分能力。

        可以观察到,真正的正面对象相关区域通常由两个或更多的定位图共享,而误报的区域则根据膨胀率而异。为了防止虚假的对象相关区域被突出显示,我们对这些具有较大膨胀率的定位图进行平均操作。然后,我们将得到的定位图与d = 1块产生的定位图相加,生成最终结果。从图5可以看出,即使对于一些具有挑战性的情况,如多类别和多实例,大多数对象的区域仍在最终融合的定位图中得到了突出显示。

        此外,我们方法值得强调的一个优点是,我们可以根据生成的密集定位图使用一个固定的阈值来准确获取大部分对象区域,而不受对象尺度的影响。然而,对于没有扩大膨胀率(即d = 1)的定位图,使用固定阈值准确提取对象区域非常困难,如图1(b)和图5所示。特别是,对于大型对象,我们需要一个较小的阈值来发现大多数与对象相关的区域。然而,对于小型对象,阈值需要较大,以防止出现真负区域。

        我们在图5的底部一行展示了一个失败案例。这个样本具有以下特点,即当d = 1时,对象具有较大的尺度,而区分性区域只在目标对象的一端稀疏地突出显示。在这种情况下,使用较小的膨胀率将区分性知识从头部传输到尾部是困难的。我们相信一些技术,如[33]中提出的对抗擦除技术,可能有助于解决这个问题。

4.3.2.弱监督语义分割

        表3显示了使用不同定位图生成的分割掩模作为学习分割网络的监督的比较结果。我们观察到,通过扩大卷积核的膨胀率,性能逐渐提高(从50.3%提高到54.4%),这进一步验证了使用扩张卷积块进行对象定位的有效性。此外,基于所提出的抗噪声融合策略生成的密集定位图,mIoU分数进一步提高到57.1%,这进一步证明了这种策略用于突出显示对象和去除噪声的有效性。需要注意的是,我们还尝试通过对所有卷积块(包括d = 1)的定位图进行平均来生成密集定位图。与使用当前融合策略相比,mIoU分数下降了近1%。此外,与使用一个膨胀率相同的四个卷积块(例如d = 1)相比,mIoU没有显著改善。由于条件随机场(CRF)被认为是语义分割的标准后处理操作,并且被所有先前的工作用于进一步提高性能,因此我们系统地使用CRF来优化预测的掩模,以便与其他最新技术进行公平比较。我们可以观察到,我们的方法最终在验证集和测试集上分别达到了60.4%和60.8%的mIoU分数,并超过了所有其他弱监督方法。

图5.不同膨胀块产生的定位图示例,以及具有抗噪声融合策略的密集定位图。底部两行显示了两个失败案例。

表3.在PASCAL VOC 2012数据集上使用不同定位图的mIoU得分比较。

4.3.3.半监督语义分割

        表4显示了在半监督方式下使用不同的强/弱标注集进行分割网络学习的结果。我们观察到,通过将强标注图像的数量从1.4K减少到500,性能仅下降了0.9%,这表明我们的方法即使在数量较少的强标注图像下也能轻松获得可靠的分割结果。基于生成的密集定位图,在CRF后处理的情况下,我们在验证集和测试集上取得了新的最佳结果(基于1.4K强标注图像)。我们还在另一种设置下进行评估,使用2.9K强标注图像进行训练。我们可以看到相应的mIoU得分为68.5%,与[21]中报告的结果相同。由于[21]和本文都基于相同的基本分割网络,当强标注图像的数量超过一定阈值时,性能可能会达到饱和状态。我们在图6中可视化了一些预测的分割掩模,显示出我们的方法可以在较少甚至没有强标注图像的情况下实现令人满意的分割结果。

表4.在PASCAL VOC 2012数据集上,使用不同的强/弱标注集进行的mIoU得分比较。

图6.我们的方法在弱监督和半监督方式下预测的分割掩模示例。

5.总结

        我们重新审视了膨胀卷积,并提出利用不同膨胀率的多个卷积块生成密集的目标定位图。我们的方法易于实现,并且生成的密集定位图可以用于在弱监督或半监督方式下学习语义分割网络。我们在这两个具有挑战性的任务上取得了新的最佳mIoU得分。这项工作为仅使用分类网络来挖掘密集目标区域铺平了一条简单而全新的道路。如何通过将判别区域从一端扩展到另一端来解决失败案例,并在大规模数据集(如MS COCO [18]和ImageNet [4])上进行实验,将成为我们未来的工作。

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

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

相关文章

HTML编码-Form-ifram

字符编码: 主要有两类: 一类为非Unicode编码;一类是Unicode编码; 常见编码种类: 1、ASCII码: ASCII(American Standard Code for Information Interchange,美国信息交换标准代码&a…

25.6 matlab里面的10中优化方法介绍——模拟退火算法(matlab程序)

1.简述 相信没有相关物理知识背景的小伙伴看到“退火”二字是一脸懵逼的...固体的退火过程指的是将固体加热至足够高的温度,再使其慢慢冷却的过程。在加热过程中,原本有序排列的内部粒子开始无序运动,此时固体的内能不断增大;而在…

【GEC6818开发板简介】

(꒪ꇴ꒪ ),hello我是祐言博客主页:C语言基础,Linux基础,软件配置领域博主🌍快上🚘,一起学习!送给读者的一句鸡汤🤔:集中起来的意志可以击穿顽石!作者水平很有限,如果发现错误&#x…

计算机网络 day13 TCP拥塞控制 - tcpdump - DHCP协议 - DHCP服务器搭建 - DNS域名解析系统 - DNS域名解析过程

目录 TCP的流控机制 -- 拥塞控制 参考文章:什么是TCP拥塞控制算法? - 知乎 (zhihu.com) 拥塞控制主要是四个算法: 主机如何知道数据在传输的过程中,知道中间的网络堵塞了? TCP/IP协议栈 tcpdump抓包工具的学习使用…

AtcoderABC231场

A - Water PressureA - Water Pressure 题目大意 假设水压仅取决于深度,在深度为x米时,水压为x/100兆帕斯卡。 现在给定一个深度D米,需要计算在该深度下的水压是多少兆帕斯卡。 思路分析 直接将输入的深度除以100得到水压结果。 时间复杂…

【无标题】自定义类型:位段,枚举,联合

自定义类型:位段,枚举,联合 1. 位段1.1 什么是位段1.2 位段的内存分配1.3 位段的跨平台问题 2. 枚举2.1 枚举类型的定义2.2 枚举类型的优点2.3 枚举的使用 3. 联合(共用体)3.1 联合类型的定义3.2联合的特点3.2.1 相关面…

使用 ChatGPT 进行研究的先进技术

在这篇文章中,您将探索改进您研究的先进技术。尤其, 分析和解释研究数据进行文献综述并找出研究差距废话不多说直接开始吧!!! 分析和解释研究数据 一家小企业主希望分析客户满意度数据以改善客户服务。他们使用包含 10…

【vue】Vue中解读关于this.$emit()的用法:

文章目录 一、Vue.sync修饰符与this.$emit(‘update:xxx‘, newXXX)二、this.$emit()传多个参数 一、Vue.sync修饰符与this.$emit(‘update:xxx‘, newXXX) 二、this.$emit()传多个参数

python与深度学习(八):CNN和fashion_mnist二

目录 1. 说明2. fashion_mnist的CNN模型测试2.1 导入相关库2.2 加载数据和模型2.3 设置保存图片的路径2.4 加载图片2.5 图片预处理2.6 对图片进行预测2.7 显示图片 3. 完整代码和显示结果4. 多张图片进行测试的完整代码以及结果 1. 说明 本篇文章是对上篇文章训练的模型进行测…

基于新浪微博海量用户行为数据、博文数据数据分析:包括综合指数、移动指数、PC指数三个指数

基于新浪微博海量用户行为数据、博文数据数据分析:包括综合指数、移动指数、PC指数三个指数 项目介绍 微指数是基于海量用户行为数据、博文数据,采用科学计算方法统计得出的反映不同事件领域发展状况的指数产品。微指数对于收录的关键词,在指…

javaweb如何格式化日期时间

解决方式: 方式一:在属性上加入注解,对日期进行格式化 方式二:在 WebMvcConfiguration 中扩展Spring MVC的消息转换器,统一对日期类型进行格式化处理 package com.sky.json;import com.fasterxml.jackson.databind.Des…

[OnWork.Tools]系列 01-简介

说明 OnWork.Tools 是基于 Net6 的桌面程序。支持Windows7SP1及以上系统,主要是日常办公或者是开发工作过程中常用的工具集合。界面使用WPF Mvvm模式开发,目的是将开源项目中,好用的项目集成到一起,方便大家使用和学习。 功能 …

牛客周赛 Round 4

A 游游的字符串构造 思路分析 构造字符串&#xff0c;注意k>1 时间复杂度 O(n) AC代码 #include<bits/stdc.h> using namespace std; int main() {int n,k;cin>>n>>k;if(n>3*k){for(int i0;i<k;i)cout<<"you";for(int i0;i<…

工作纪实34-emoji表情包存储异常,修改db的字段类型

线上问题&#xff0c;发现emojo表情写入数据库出现异常 修改mysql字段的字符集 ALTER TABLE customer_cycle_info MODIFY COLUMN customer_sales_remark varchar(500) CHARACTER SET

已实现商业化却仍陷亏损泥潭,瑕瑜错陈的觅瑞集团求上市

撰稿|行星 来源|贝多财经 7月25日&#xff0c;Mirxes Holding Company Limited-B&#xff08;以下简称“觅瑞集团”&#xff09;向港交所递交上市申请材料&#xff0c;计划在港交所主板上市&#xff0c;中金公司和建银国际为其联席保荐人。 据招股书介绍&#xff0c;成立于2…

0基础系列C++教程 从0开始 第二课

0基础系列C教程 从0开始 第二课来了&#xff01; 复习第一课内容 1 怎么输出数字“1919810”&#xff1f; 答案&#xff08;关键语句&#xff09;: cout<<"1919810"; 2 怎么输出字符串“Hello World”&#xff1f; 答案&#xff08;关键语句&#xff09;&a…

MySQL案例——多表查询以及嵌套查询

系列文章目录 MySQL笔记——表的修改查询相关的命令操作 MySQL笔记——MySQL数据库介绍以及在Linux里面安装MySQL数据库&#xff0c;对MySQL数据库的简单操作&#xff0c;MySQL的外接应用程序使用说明 文章目录 系列文章目录 前言 一 创建数据库 1.1 创建一个部门表 1.…

7.24 C++

封装Vector #include <iostream> #include <cstring> using namespace std;template <typename T> class Vector { private:T *start; //指向容器的起始地址T *last; //指向容器存放数据的下一个位置T *end; //指向容器的最后的下一个位置 public:Vec…

MyBatis-入门-快速入门程序

本次使用MyBatis框架是基于SpringBoot框架进行的&#xff0c;在IDEA中创建一个SpringBBot工程&#xff0c;根据自己的需求选择对应的依赖即可 快速入门 需求&#xff1a;使用MyBatis查询所有用户数据步骤&#xff1a; 准备工作&#xff08;创建Spring Boot工程、数据库user表…

【MATLAB】ILOSpsi制导率的代码解析

ILOSpsi制导率的代码解析 这里记录一下关于fossen的MMS工具箱中&#xff0c;关于ILOSpsi制导率的代码解析内容&#xff0c;结合fossen的marine carft hydrodynamics and motion control这本书来参考看 文章目录 ILOSpsi制导率的代码解析前言一、代码全文二、内容解析1.persist…