第三章:Seed,Expand and Constrain:——种子、扩展和约束:弱监督图像分割的三个原则

news2024/11/18 21:23:49

0.摘要

        我们引入了一种新的损失函数,用于基于三个指导原则进行弱监督训练的语义图像分割模型:使用弱定位线索进行种子标记,根据图像中可能出现的类别信息扩展对象,将分割结果约束在物体边界上。我们通过实验证明,使用所提出的损失函数训练深度卷积神经网络可以在具有挑战性的PASCAL VOC 2012数据集上获得比先前最先进方法更好的分割结果。此外,我们通过详细的实验研究揭示了我们方法的工作机制,说明了所提出的损失函数中每个项及其组合对分割质量的影响。关键词:弱监督图像分割·深度学习

1.引言

        计算机视觉研究近年来取得了巨大的进展。许多具有挑战性的视觉任务现在可以获得高精度的解决,前提是有足够多的标注数据用于训练。然而,收集大规模的标注数据是耗时的,通常需要大量的财务投入。因此,训练数据的创建已经成为计算机视觉方法进一步发展的瓶颈。然而,未标记的视觉数据可以以相对快速和廉价的方式大量收集。因此,计算机视觉研究的一个有希望的方向是开发可以从未标记或部分标记的数据中学习的方法。

        在本文中,我们专注于语义图像分割任务。图像分割是一个重要的视觉任务的突出例子,创建标注数据对其来说尤其昂贵:如[4,29]所报道的,手工制作分割掩码每张图像需要几分钟的工作时间。因此,大量的先前研究致力于研究如何从较弱形式的注释中训练分割模型。

        一个特别有吸引力的设定是使用仅具有每张图像标签的训练集来学习图像分割模型,因为这种形式的弱监督可以非常高效地收集。然而,目前仍然存在从每张图像标签训练的模型和从完整分割掩码训练的模型之间的性能差距。在本文中,我们证明相对于先前的最先进技术,这种差距可以大大减小。

        我们提出了一种用于弱监督图像分割任务的卷积神经网络训练的新的复合损失函数。我们的方法依赖于以下三个见解:

我们的方法基于以下三个见解来提出一个新的复合损失函数,用于训练卷积神经网络进行弱监督图像分割:

  1. 图像分类神经网络,如AlexNet [19]或VGG [33],可以用于生成可靠的对象定位线索(种子),但无法准确预测对象的空间范围。我们通过使用种子损失来纳入这一方面,该损失鼓励分割网络与定位线索匹配,但对图像的其他部分是不可知的。
  2. 为了从每张图像的注释中训练分割网络,可以使用全局池化层将分割掩码聚合为图像级别的标签得分。选择这个层对分割质量有很大影响。例如,最大池化倾向于低估对象的大小,而平均池化倾向于高估对象的大小。我们提出了一个全局加权排名池化,它被扩展损失利用来将对象种子扩展到合理大小的区域。它将最大池化和平均池化进行了泛化,并在我们的实证研究中表现优于它们。
  3. 从图像级别标签训练的网络很少能够捕捉到图像中对象的精确边界。在测试时通过完全连接的条件随机场(CRF)进行后处理通常不足以克服这个效应,因为一旦网络被训练,它们往往对错误分类的区域也很有信心。我们提出了一种新的边界约束损失,在训练时就缓解了不精确边界的问题。它努力约束预测的分割掩码尊重低级别的图像信息,特别是对象边界。

我们将我们的方法命名为SEC,因为它基于三个原则:种子(Seed)、扩展(Expand)和约束(Constrain)。在第3节中,我们正式定义和讨论了SEC损失函数的各个组成部分。在第4节中,我们在PASCAL VOC 2012图像分割基准上进行了实验评估,显示它在相同的实验设置下明显优于先前的最先进技术。我们还通过额外的实验证明并讨论了我们每个贡献的影响。

2.相关工作

        语义图像分割是计算机视觉研究中一个相对较新的研究方向,它涉及为图像中的每个像素分配一个语义类别标签。这个领域的发展需要现代机器学习技术的支持,比如判别分类器[5,31]或概率图模型[21,28]。由于完全标注训练数据的创建是这些系统进一步改进的主要瓶颈,因此很快提出了弱监督训练方法以节省标注工作量。特别是,竞争性的方法被开发出来,它们只需要部分分割[11,37]或物体边界框[8,20,52]作为训练数据。

        然而,一个仍然存在的挑战是如何从仅具有图像级标签的数据中学习分割模型[35,36]。现有方法可以分为三个主要类别。基于图的模型根据图像内部或图像之间的相似性推断出分割或超像素的标签[27,43,46–48]。多示例学习的变体[1]使用每个图像的损失函数进行训练,同时在内部维护一个可以用于生成分割掩码的图像空间表示[38–40]。自训练传统中的方法[30]训练一个完全监督的模型,但使用模型本身在类似EM的过程中创建所需的像素级注释[44,45,49]。我们的SEC方法结合了后两种方法的特点,它既利用了每个图像的损失,也利用了每个像素的损失项。

        就分割质量而言,目前只有基于深度卷积网络[19,33]的方法足够强大,能够处理与完全监督方法相似难度的分割数据集,例如我们在这项工作中使用的PASCAL VOC 2012 [9]。具体而言,MIL FCN [25],MIL-ILP [26]和[4,18]的方法利用多示例学习中的深度网络,主要区别在于它们的池化策略,即如何将内部的空间表示转化为每个图像的标签。EM-Adapt [23]和CCNN [24]依赖于自训练框架,不同之处在于它们如何保证每个图像注释与预测的分割掩码之间的一致性。SN B [41]添加了额外的步骤来创建和组合多个目标提议。在可能的情况下,我们在第4节中对这些方法进行了实验比较。

3.从图像级标签进行弱监督语义分割

        在本节中,我们介绍我们方法的技术描述。我们用X表示图像空间。对于任何图像X∈X,分割掩码Y是一个包含n个空间位置上的语义标签(y1,...,yn)的集合。这些语义标签属于大小为k的集合C=C'∪{cbg},其中C'是所有前景标签的集合,cbg是一个背景标签。我们假设训练数据D={(Xi,Ti)}Ni=1由N个图像Xi∈X组成,每个图像都被一个在图像中出现的前景标签集合Ti⊂C'进行了弱标注。我们的目标是训练一个由参数θ参数化的深度卷积神经网络f(X;θ),来模拟在任何位置u∈{1,2,...,n}上观察到任何标签c∈C的条件概率,即fu,c(X;θ)=p(yu=c|X)。为了简洁起见,我们经常在符号中省略参数θ,并将f(X;θ)简写为f(X)。

图1. SEC的示意图,它基于最小化一个由三个项组成的复合损失函数:种子损失、扩展损失和边界约束损失。详见第3节。

3.1.弱监督图像分割的SEC(Seed, Expand and Constrain)损失函数

        我们用于学习分割神经网络参数θ的方法依赖于最小化一个具有三个项的损失函数。第一个项Lseed提供了对网络的定位提示,第二个项Lexpand惩罚网络对预测的分割掩码中过小或错误的对象,第三个项Lconstrain鼓励分割结果尊重图像的空间和颜色结构。总体而言,我们提出解决以下优化问题来学习参数:

 在本节的剩余部分,我们详细解释每个损失项。图1中可以找到设置的示意概述。

 使用定位提示的种子损失。图像级别的标签并不明确提供图像中语义对象的位置信息。然而,正如许多最近的研究论文所指出的[3,22,32,50],仅从图像级别标签训练的深度图像分类网络可以成功地用于检索对象定位的线索。我们将这个过程称为弱定位,并在图2中进行了说明。

        不幸的是,定位提示通常不够精确,无法用作完整和准确的分割掩码。然而,这些提示可以非常有用地引导弱监督分割网络。我们提出使用种子损失来鼓励神经网络的预测只与弱定位过程给出的“地标”匹配,而忽略图像的其余部分。假设Sc是通过弱定位过程对类别c进行标记的位置集合。那么,种子损失Lseed的形式如下:

注意,为了计算Lseed,需要弱定位集合Sc,因此可以使用文献中的许多现有技术,基本上可以作为黑盒子使用。在这项工作中,我们依赖于[50]来弱定位前景类别。然而,该方法没有提供直接选择背景区域的方法,因此我们使用[32]中的基于梯度的显著性检测方法来实现此目的。我们在第4节中提供了关于弱定位过程的更多细节。

通过全局加权排名池化进行扩展损失。为了衡量分割掩码是否与图像级别标签一致,可以将分割分数聚合成分类分数,并应用于多标签图像分类的标准损失函数。在弱监督分割/检测的背景下,研究人员使用了各种技术将分数图聚合成分类分数。其中最突出的是全局最大池化(GMP)[22],它为图像X中的任意类别c分配一个分数max {1 u∈{1,...,n}fu,c(X),和全局平均池化[50],它为其分配一个分数n1 nu=1 fu,c(X)。

在实践中,这两种聚合方式都被成功地使用过。然而,它们各自都有缺点。对于出现在图像中的类别,GMP只鼓励单个位置的响应值高,而GAP则鼓励所有响应值高。因此,GMP会导致分割网络经常低估对象的大小,而使用GAP训练的网络则经常高估它们的大小。我们在第4节的实验中以实证的方式支持这个观点。为了克服这些缺点,我们提出了全局加权排名池化(GWRP),一种新的聚合技术,可以看作是GMP和GAP的泛化形式。GWRP为每个类别计算加权平均分数,其中权重对于更有前景的位置更高。这样可以鼓励对象占据图像的一定比例,但与GAP不同,它不容易高估对象的大小。

形式上,假设一个索引集合Ic={i1,...,in}定义了类别c的预测分数的降序排列,即fi1,c(x)≥fi2,c(x)≥···≥fin,c(x),其中x表示图像,C表示类别集合,0 < dc <= 1是类别c的衰减参数。那么我们定义图像X的GWRP分类分数Gc(f(X),dc)如下:

 需要注意的是,当dc = 0时,GWRP转变为GMP(根据惯例,00 = 1),当dc = 1时,它与GAP相同。因此,GWRP泛化了这两种方法,衰减参数可以用于在两个极端行为之间进行插值。原则上,衰减参数可以针对每个类别和每个图像单独设置。然而,在弱监督设置中,这需要关于每个类别的典型对象大小的先验知识,这是不可用的。因此,我们只区分三个组别:对于出现在图像中的对象类别,我们使用衰减参数d+,对于未出现的对象类别,我们使用d-,对于背景,我们使用dbg。我们将在第4节中讨论如何选择它们的值。总之,扩展损失项为:

 约束边界损失的高级思想是惩罚神经网络产生与输入图像中的空间和颜色信息不连续的分割结果。通过这种方式,它鼓励网络学习生成与对象边界相匹配的分割掩码。

        具体来说,我们构建一个完全连接的条件随机场(CRF),Q(X,f(X)),如[17]中所示,其中一元势函数由分割网络预测的概率分数的对数给出,而二元势函数具有仅依赖于图像像素的固定参数形式。我们将图像X缩小,使其与网络生成的分割掩码的分辨率匹配。关于CRF参数的选择的更多细节将在第4节中给出。然后,我们将约束边界损失定义为网络输出和CRF输出之间的平均KL散度,即:

这个构造实现了期望的效果,因为它鼓励网络输出与CRF输出一致,而CRF本身已被证明能够生成尊重图像边界的分割结果。这个效果的示意图可以在图1中看到。

 图2.弱定位过程的示意图。

3.2.训练

        提出的网络可以使用反向传播以端到端的方式进行训练,前提是所有层的个别梯度都是可用的。为了计算完全连接的CRF的梯度,我们采用了来自[34]的过程,该过程在语义图像分割的背景下取得了成功。图1以灰色箭头示意了反向传播过程的梯度流动。

4.实验

  在本节中,我们通过实验证实了我们提出的损失函数,包括对其不同项的效果进行了详细研究。

4.1.实验设置

数据集和评估指标。我们在PASCAL VOC 2012图像分割基准数据集上评估我们的方法,该数据集包含21个语义类别,包括背景[9]。数据集图像分为三个部分:训练集(train,1464张图像)、验证集(val,1449张图像)和测试集(test,1456张图像)。按照常规做法,我们通过从[10]中添加额外的图像来扩充训练部分。结果得到的trainaug数据集有10582个弱标注的图像,我们用这些图像来训练我们的模型。我们将我们的方法与其他方法在验证集和测试集上进行比较。对于验证集,我们有真实的分割掩码,因此我们可以评估不同实验结果。因此,我们还使用这些数据对我们方法中不同组成部分的影响进行了详细研究。对于测试集的真实分割掩码并不公开,因此我们使用官方的PASCAL VOC评估服务器来获取定量结果。作为评估指标,我们使用标准的PASCAL VOC 2012分割度量:平均交并比(mIoU)。

分割网络。作为分割架构的特定选择,在本文中我们使用了来自[6]的DeepLab-CRF-LargeFOV,这是16层VGG网络[33]的略微修改版本。该网络的输入大小为321×321,并生成大小为41×41的分割掩码,关于架构的更多细节请参考[6]。我们从均值为0、方差为0.01的正态分布中随机初始化最后一层(预测层)的权重。所有其他卷积层的初始化来自公开可用的VGG模型[33]。需要注意的是,原则上我们的损失函数可以与任何深度卷积神经网络结合使用。

定位网络。前景类别和背景类别的定位网络也是从标准的VGG架构中派生出来的。为了提高定位性能,我们对这些网络进行了微调,以解决trainaug数据上的多标签分类问题。由于空间限制,我们在技术报告[16]中提供了这些网络和优化参数的详细信息。需要注意的是,为了减少训练SEC所需的计算和内存消耗,可以预先计算定位提示。如果有预先计算的提示可用,SEC在训练时对于评估和存储定位网络不会产生额外的开销。

优化。我们使用批次随机梯度下降(SGD)来训练网络,其参数在[6]中取得了成功的结果。我们运行SGD进行8000次迭代,批次大小为15(从30减少到15以同时训练两个网络),dropout率为0.5,权重衰减参数为0.0005。初始学习率为0.001,每2000次迭代减小10倍。总体而言,在GeForce TITAN-X GPU上的训练时间为7-8小时,这与其他模型的训练时间相当,例如[23,24]中报道的结果。

衰减参数。GWRP聚合需要指定衰减参数d-、d+和dbg,这些参数控制着网络产生的分数聚合的权重。受以前的研究[23,24]的启发,我们使用以下经验法则来指定这些参数,这些法则表达了关于自然图像的先验信念:

  • 对于在我们要预测的图像中不存在的语义类别,我们希望尽可能少地预测像素。因此,我们将d-设置为0,对应于GMP。
  • 对于在图像中存在的语义类别,我们建议前10%的分数代表总体聚合分数的50%。对于我们的41×41的掩码,这大约对应于d+ = 0.996。
  • 对于背景,我们建议前30%的分数代表总体聚合分数的50%,从而得到dbg = 0.999。

训练时的全连接CRF。为了在训练时强制分割网络尊重对象的边界,我们使用了全连接CRF[17]。作为成对相互作用的参数,我们使用了作者公开实现的默认值,只是将所有空间距离项乘以12,以反映我们将原始图像缩小以匹配预测分割掩码的大小。

测试时的推理。我们的分割神经网络经过训练,可以为所有类别和位置生成概率分数,但预测的分割掩码的空间分辨率低于原始图像。因此,我们将预测的分割掩码放大以匹配输入图像的大小,然后应用全连接CRF [17]来优化分割结果。这是一种常见的做法,之前在[6,23,24]中也有使用。图3显示了我们在测试时的推理过程的示意图。

可重现性。在我们的实验中,我们依赖于caffe深度学习框架[13]以及SEC损失的python实现。代码和预训练模型已公开可用1。

图3.我们在测试时的方法的示意图。

4.2.结果

数值结果。表1比较了我们的弱监督方法与之前在相同设置下训练的方法的性能,即只使用来自PASCAL VOC 2012的图像和仅图像级别标签。结果表明,SEC明显优于先前的技术。在由独立的第三方PASCAL VOC评估服务器执行评估的测试数据上,它的平均交并比分数比最先进的方法高出13.5%,在21个语义类别中的20个上取得了新的最佳得分。在研究者可以自行计算得分的验证数据上,SEC相对于最先进的方法提高了14.1%,并在21个类别中的19个上取得了新的最佳得分。

表2总结了在PASCAL VOC上的其他弱监督方法的结果,以及DeepLab的全监督变体。我们提供这些结果供参考,但强调它们不应仅与表1进行比较,因为底层方法是在不同(且更大)的训练集上进行训练,或者给出了额外形式的弱监督,例如用户点击。在这方面,有些条目需要进一步解释:[23]报告了EM-Adapt模型在使用多个图像裁剪的弱注释进行训练时的结果。同样的模型在[24]中重新实现并只使用每个图像的监督进行训练,所以这些是我们在表1中报告的值。报告的SN B [41]和MIL+ILP+SP [26]的seg变体的结果与其他结果不可比较,因为它们是通过使用在PASCAL VOC数据上以全监督方式进行训练的MCG区域提议[2]的帮助获得的。类似地,MIL+ILP+SP-bb利用了由BING方法[7]生成的边界框提议,该方法使用了PASCAL VOC的边界框注释进行训练。

请注意,我们在表1中包含了MIL+ILP+SP的sppxl变体。虽然它是在大约76万张ImageNet数据集的图像上进行训练的,但与我们和其他方法相比,我们并不认为这是不公平的优势,因为当使用预训练的分类网络进行初始化时,这些方法也会从ImageNet图像中受益。

定性结果。图4展示了典型的成功分割示例。它显示我们的方法即使对于复杂的图像也能产生准确的分割结果,并恢复边界的细节。图5展示了一些失败案例。正如弱监督系统的典型情况,SEC在分割几乎总是出现在相同背景前的对象(例如水上的船或铁轨上的火车)方面存在问题。我们最近在后续工作中解决了这个问题。第二种失败模式是对象区域可以被正确分割,但被分配了错误的类别标签。对于SEC来说,这实际上相当罕见,我们将其归因于DeepLab网络具有较大的视野范围,因此在分配标签时可以利用整个图像。最后,有时分割结果可能只覆盖对象的部分。这可能是由于弱定位线索的不完美,这些线索往往只能可靠地检测到对象最具辨别力的部分,例如一个人的脸。然而,这可能不足以完整地分割整个对象,特别是当对象相互重叠或由外观差异很大的多个组件组成时。

表1。使用仅图像级别标签进行弱监督语义分割的PASCAL VOC 2012结果(mIoU,单位为百分比)

表2。其他方法在PASCAL VOC 2012上的总结结果(mIoU,单位为百分比)。注意:该表中的数值与表1不直接可比,因为它们是在不同的实验条件下获得的。

图4。预测分割的示例(验证集,成功案例)。

图5。预测分割的示例(验证集,失败案例)。

4.3.详细讨论

        为了进一步了解SEC损失函数的工作机制,我们在验证数据上进行了两组进一步的实验。首先,我们分析了不同的全局池化策略;其次,我们进行了一项消融研究,以直观和数值的方式说明了所提出的损失函数的每个部分的影响。

 全局池化策略的效果。如前所述,分割的质量取决于使用哪种全局池化策略将分割掩码转换为每个图像的分类得分。为了量化这种影响,我们使用GMP、GAP或GWRP作为聚合方法,从弱监督中训练了三个分割网络,用于对图像中存在的类别进行聚合。对于不存在的类别,我们始终使用GMP,即对这些类别的任何出现进行惩罚。在图6中,我们展示了每种池化策略的视觉结果,并报告了两个指标:被预测为前景类别的像素比例,以及以平均IoU衡量的分割性能。我们观察到,GWRP在分割质量方面优于其他方法,并且预测的前景像素比例支持我们之前的假设:使用GMP训练的模型倾向于低估物体大小,而使用GAP训练的模型平均而言则会高估物体大小。相反,使用GWRP训练的模型产生的分割结果中,物体的大小平均接近正确大小2。

不同损失项的影响。为了研究我们复合损失函数中每个项的贡献,我们使用省略SEC损失不同项的损失函数训练了分割网络。图7提供了数值结果,并说明了在省略某些损失项时可能发生的典型分割错误。当所有三个损失项都存在时,可以获得最佳结果。然而,这些实验还允许我们得出关于损失项之间相互作用的两个有趣的额外结论。

半监督损失和大视野。首先,我们观察到在损失函数中使用Lseed对于实现竞争性性能至关重要。如果没有这个损失项,我们的分割网络无法在预测中反映出物体的定位,尽管网络在全局标签统计方面表现得相当好。请参见图7的第三列以说明这种效果。

        我们认为这种效果可以通过分割网络的大视野(378×378)来解释:如果图像中存在一个物体,那么大部分预测得分可能会受到这个物体的影响,无论物体位于何处。这有助于预测正确的类别标签,但可能会对定位能力产生负面影响。其他研究人员通过明确改变网络的架构来解决这个问题,以减小其视野[23]。然而,视野较小的网络不够强大,往往无法识别图像上存在哪些语义标签。我们进行了额外的实验(详见技术报告[16]),证实了具有较小视野(211×211)的SEC网络的性能明显不如具有较大视野(378×378)的网络,具体数值结果和可视化示例请参见图8。因此,我们得出结论,种子损失提供了必要的定位指导,使得具有较大视野的网络仍然能够可靠地定

扩张损失和边界约束损失的效果。通过构造,边界约束损失鼓励相似颜色的附近区域具有相同的标签。然而,这通常不足以将弱定位线索转化为覆盖整个物体的分割掩码,特别是如果物体由外观不相似的部分组成,例如穿着不同颜色衣服的人。请参见图7的第六列以说明这种效果。位物体。

        不同颜色。请参见图7的第六列以说明这种效果。基于GWRP的扩张损失抑制了不应该出现在图像中的类别的预测,并鼓励图像中存在的类别具有合理的大小。但是,当与种子损失结合时,扩张损失实际上导致性能下降。图7的第五列显示了这个解释:物体的大小通常增加,但额外预测的区域与图像边界不匹配。

        综合来看,种子损失提供可靠的种子位置,扩张损失作为一种力量将分割掩码扩大到合理的大小,边界约束损失限制分割掩码与图像边界对齐,从而整合了低层次图像信息。如图7的最后一列所示,分割掩码得到了显著改善。

图6.在验证集上的结果以及使用不同池化策略训练的模型的分割掩码示例。

图7.在验证集上的结果以及使用不同损失函数训练的模型的分割掩码示例。

图8.在验证集上的结果以及具有小或大视野范围的模型的分割掩码示例。

5.总结

        我们提出了一种新的损失函数,用于在仅有图像级标签的情况下训练深度分割网络。我们证明,在相同的实验条件下,我们的方法在性能上明显优于先前的最先进方法,并提供了详细的消融研究。

        我们还确定了一些潜在的方向,可以进一步改善弱监督分割性能。我们的实验表明,对目标大小的了解可以显著提高分割性能。SEC通过衰减参数很容易地整合了大小信息,但自动估计目标大小的方法将是可取的。改进性能的第二种方式是更强的分割先验,例如关于形状或材料的先验信息。这可以提供一种避免目前弱监督分割网络(包括我们的网络)常见错误的方法,例如将船只与背景中的水混淆。

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

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

相关文章

【C++模板进阶】

目录 一、模板使用时的一个小注意点二、非类型模板参数三、类模板的特化3.1函数模板的特化3.2类模板的特化3.2.1全特化3.2.2偏特化 四、模板的分离编译4.1模板不支持分离编译4.2模板分离编译报错的分析4.2解决方案 五、模板的总结 一、模板使用时的一个小注意点 在使用模板时&…

创建Electron项目

一、使用vite 构建 electron项目 npm init vitelatest Need to install the following packages:create-vitelatest Ok to proceed? (y) y √ Project name: ... CertificateDownload √ Package name: ... certificatedownload √ Select a framework: Vue √ Select a var…

java正则表达式「.*?」匹配什么

先说结论&#xff1a;以非贪婪的方式匹配正则表达式".*" 举例子&#xff1a; String s "abdcababc"; String regx1 "ab(.*)c"; String regx2 "ab(.*?)c"; Pattern pattern1 Pattern.compile(regx1); Pattern pattern2 Pattern…

分组排序及首单时间计算

import pandas as pd import numpy as np downpath/Users/kangyongqing/Downloads/ downfile20230725_105033.csvddpd.read_csv(downpathdownfile) dd.rename(columns{student_user_id:学生id},inplaceTrue) result[] for i in range(dd.shape[0]):user,feetimedd.loc[i,[学生…

AES-CTR加密模式介绍 例题

文章目录 CTR&#xff08;Counter mode&#xff0c;CTR&#xff09;计数器模式题目一题目描述&#xff1a;题目分析&#xff1a; 浅记一下 CTR&#xff08;Counter mode&#xff0c;CTR&#xff09;计数器模式 原理&#xff1a; CTR将块密码变为流密码。它通过递增一个加密计数…

防御第三天

1.总结当堂NAT与双机热备原理&#xff0c;形成思维导图 2.完成课堂NAT与双机热备实验 fw1: <USG6000V1>sy [USG6000V1]int g0/0/0 [USG6000V1-GigabitEthernet0/0/0]ip add 192.168.18.2 24 [USG6000V1-GigabitEthernet0/0/0]service-manage all permit (地址无所谓&…

NVM下安装NPM、CNPM详解与坑不是内部命令

设置npm的全局安装路径&#xff1a;有了可以不设置 npm config set prefix "H:\A-work\nvm\npm"C盘用户文件夹&#xff08;C:\Users[name]&#xff09;下会生成一个.npmrc的文件&#xff0c;用记事本打开后可以看到如下内容&#xff1a; 配置环境变量&#xff08;重…

Sip IP网络对讲广播模块,sip网络寻呼话筒音频模块

Sip IP网络对讲广播模块&#xff0c;sip网络寻呼话筒音频模块 模块介绍 SV-2401VP和SV-2403VPIP网络对讲广播模块是一款通用的独立SIP音频功能模块&#xff0c;可以轻松地嵌入到OEM产品中。该模块对来自网络的SIP协议及RTP音频流进行编解码。 该模块支持多种网络协议和音频编…

AdaBoost的求解流程

对于任意Boosting算法&#xff0c;都需要明确以下几点&#xff1a; ① 损失函数&#x1d43f;(&#x1d465;,&#x1d466;)的表达式是什么&#xff1f;损失函数如何影响模型构建&#xff1f; ② 弱评估器&#x1d453;(&#x1d465;)是什么&#xff0c;当下boosting算法使用…

这是一个小程序求助帖

求助帖 请问各位大佬们&#xff0c;在vscode中运行android模拟器&#xff0c;报错&#xff1a;执行emulator命令失败, 错误信息&#xff1a;Error: spawn C:\WINDOWS\system32\cmd.exe ENOENT 该如何解决。环境变量什么的我都已经配置过了&#xff0c;电脑也重启过了&#xff…

Rman配置参数详解

using target database control file instead of recovery catalog指的是使用目标数据库控制文件代替恢复目录 1、CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default 设置rman备份过期条件&#xff1a;是用来决定那些备份不再需要了&#xff0c;它一共有三种可选项&…

mybatisPlus之自动填充功能及防全表更新与删除插件

自动填充功能 基本介绍 Mybatis-plus自动填充功能是指在数据库表进行增、删、改、查操作时&#xff0c;自动将某些字段的值进行填充。这些字段的值可以是当前时间、登录用户ID等。 在项目中有一些属性&#xff0c;如果我们不希望每次都填充的话&#xff0c;我们可以设置为自…

Cilium系列-5-Cilium替换KubeProxy

系列文章 Cilium 系列文章 前言 将 Kubernetes 的 CNI 从其他组件切换为 Cilium, 已经可以有效地提升网络的性能. 但是通过对 Cilium 不同模式的切换/功能的启用, 可以进一步提升 Cilium 的网络性能. 具体调优项包括不限于: 启用本地路由(Native Routing)完全替换 KubeProx…

数字身份、分布式存储、跨链技术等将如何推动Web3数据的发展?

Web3数据是基于区块链技术、去中心化、可信任的数据&#xff0c;具有较高的安全性和可信度。随着Web3.0时代的到来&#xff0c;Web3数据将会在金融、物联网、医疗、教育、政务等领域发挥重要的作用。其中&#xff0c;数字身份、分布式存储、跨链技术等将会是Web3数据发展的重要…

【教学类-34-07】20230726拼图(彩色图片+菱形凹凸拼图)3*4格子(中班主题《个别化拼图》偏美术)

作品展示&#xff1a; 背景需求 我尝试将拼图的“圆形凹凸角”变成"正方形凹凸角”&#xff0c;没有成功&#xff0c;但做出了“菱形凹凸角”。 实用性思考&#xff1a; 1、这种菱形凹凸角与正方形结构近似&#xff0c;裁剪难度中等&#xff08;比圆角容易剪&#xff0…

100天软件设计师备考计划

我已经毕业并且刚刚开始工作&#xff0c;目前在一家小公司从事Java开发工作。虽然我的工作轻松&#xff0c;但我希望在空闲时间里能够提升自己。由于我的专业与计算机相关&#xff0c;我有一定的基础&#xff0c;因此我计划在2023年用100天的时间考取软件设计师资格。在学习的过…

GB/T 25000.51解读——软件产品的易用性怎么测?

GB/T 25000.51-2016《软件产品质量要求和测试细则》是申请软件检测CNAS认可一定会用到的一部国家标准。在前面的文章中&#xff0c;我们为大家整体介绍了GB/T 25000.51-2016《软件产品质量要求和测试细则》国家标准的结构和所涵盖的内容以及对软件产品的八大质量特性中的功能性…

怎么在电脑中创建虚拟加密磁盘?

在生活和工作中&#xff0c;我们可以将重要数据存放在电脑加密磁盘中。可是不是每个电脑都拥有加密磁盘的。那么我们该怎么在电脑中创建虚拟加密磁盘呢&#xff1f; 将普通磁盘加密 我们可以将重要数据分类存放在一个磁盘中&#xff0c;随后将该磁盘加密&#xff0c;使其变成加…

Mac 快速生成树形项目结构目录

我这里使用的是通过包管理 Homebrew安装形式。没有安装的话可以自行搜索 Homebrew 安装方式 brew install tree直接到项目的根目录执行 tree 命令 tree 效果如下&#xff1a; or &#xff1a; tree -CfL 3效果如下&#xff1a;

Java的第十三篇文章——JAVA多线程

目录 学习目标 1. 线程的基本概念 1.1 进程 1.2 线程 2. Java实现线程程序 2.1 java.lang.Thread类 2.2 线程的内存图 2.3 Thread类的方法 3. Java实现线程程序 3.1 java.lang.Runnable接口 3.2 实现接口的好处 4. 线程安全 4.1 售票例子 4.2 同步代码块 4.3 同…