十五章:使用类别峰值响应的弱监督实例分割

0.摘要

        目前,使用图像级别标签而不是昂贵的像素级掩码进行弱监督实例分割的研究还未得到充分探索。本文通过利用类别峰值响应来实现一个分类网络,用于提取实例掩码,来解决这个具有挑战性的问题。只通过图像标签的监督下,完全卷积的CNN分类器可以生成类别响应图,该图指定每个图像位置的分类置信度。我们观察到,类别响应图中的局部最大值,即峰值,通常对应于实例内部的强视觉线索。受此启发,我们首先设计了一个过程,以从类别响应图中引出峰值。然后,这些峰值被反向传播并有效地映射到每个目标实例的高信息区域,例如实例边界。我们将从类别峰值响应生成的上述地图称为峰值响应图(PRMs)。PRMs提供了细致的实例级表示,即使使用一些现成的方法也可以提取实例掩码。据我们所知,我们首次报告了挑战性的图像级别监督实例分割任务的结果。广泛的实验证明,我们的方法不仅提升了弱监督点位定位和语义分割性能,而且在广泛使用的基准测试集(包括PASCAL VOC 2012和MS COCO)上报告了最先进的结果。

1.引言

        大多数当代语义分割方法依赖于大规模的密集注释来训练深度模型;然而,标注像素级掩码是昂贵且劳动密集的[18]。相反,图像级别的注释,即图像中是否存在特定物体类别,更便宜且更容易定义。这促使了弱监督语义分割方法的发展,这些方法使用图像标签来学习卷积神经网络(CNN)进行类别感知的分割。

        大多数现有的弱监督语义分割方法将CNN中的卷积滤波器视为物体检测器,并聚合深度特征图来提取类别感知的视觉证据[47,43]。通常,预训练的分类网络首先被转换为全卷积网络(FCN),以在单次前向传递中生成类别响应图。这样的类别响应图指示网络用于识别图像类别的关键图像区域,但不能区分同一类别中的不同对象实例。因此,现有的弱监督语义分割方法不能简单地推广到实例级别的语义分割[16,12],该方法旨在检测图像中的所有对象,并为每个实例预测精确的掩码。

        在本文中,我们探索了使用图像级别弱监督训练卷积神经网络(CNN)进行实例级别语义分割(简称实例分割)的挑战性问题。具体而言,我们提出利用类别响应图中的峰值来实现一个分类网络,例如VGGNet、ResNet,以进行实例掩码的提取。

        类别响应图中的局部最大值,即峰值,通常对应于实例内部的强视觉线索,如图1所示。受到这种观察的启发,我们首先设计了一个过程,在训练阶段刺激峰值从类别响应图中出现。在推理阶段,这些出现的峰值被反向传播并有效地映射到每个对象实例的高信息区域,例如实例边界。从类别峰值响应生成的上述地图被称为峰值响应图(PRMs)。如图1所示,PRMs作为实例级别的表示,指定了每个对象的空间布局和细节边界,因此即使使用一些现成的方法[3,38,27]也可以提取实例掩码。

        与许多通常使用复杂框架(如条件随机场(CRF)[46,45]、循环神经网络(RNN)[30,32]或模板匹配[37])来处理实例提取的完全监督方法相比,我们的方法简单而有效。它与任何现代网络架构兼容,并且可以使用标准的分类设置进行训练,例如图像类别标签和交叉熵损失,计算开销可以忽略不计。由于训练效率高,我们的方法非常适用于大规模数据的应用。

总结一下,本文的主要贡献如下:

  • 我们观察到类别响应图中的峰值通常对应于各个实例内部的强视觉线索,这一简单的观察引导了一种有效的弱监督实例分割技术。
  • 我们提出利用类别峰值响应来使分类网络能够进行实例掩码提取。我们首先刺激峰值从类别响应图中出现,然后将其反向传播到每个对象实例的高信息区域,如实例边界。
  • 我们在流行的CNN模型中实现了所提出的方法,如VGG16和ResNet50,并在多个基准测试中展示出顶级性能。据我们所知,我们首次报道了挑战性的图像级监督实例分割任务的结果。

图1:类别峰值响应对应于各个实例内部的强视觉线索。这些峰值可以反向传播并有效地映射到每个对象的高信息区域,从而可以提取实例掩码。最佳观看方式为彩色显示。

2.相关工作

弱监督语义分割。语义分割方法通常在训练阶段需要密集标注。鉴于像素级标注的低效性,先前的研究探索了各种替代的弱标注方法,例如实例上的点[1]、物体边界框[5,22]、涂鸦[17,42]和人工选择的前景[34]。尽管这些方法是有效的,但它们需要比图像级监督方法[24,25,41,14,33]更多的人力投入。一些工作以无监督的方式利用物体线索。例如,图形模型被用于推断段的标签[44,15],但其物体定位能力仍然有限。因此,使用外部定位网络来初始化对象位置[26,14,23],并使用预生成的对象分割提议先验来改进低分辨率的CNN平面。先前的工作通常涉及耗时的训练策略,例如重复的模型学习[40]或在线提议选择[29,39]。相比之下,在本文中,我们使用标准分类网络来生成具有卷积响应的类别感知和实例感知的视觉线索。

实例分割。与寻求生成类别感知掩码的语义分割相比,实例分割需要同时生成实例感知的区域标签和细节化的分割掩码,因此更具挑战性。即使有来自准确的像素级注释的监督,许多实例分割方法仍会使用来自精确物体边界框的额外约束。FCIS方法[16]结合了分割提议模块[6]和物体检测系统[7]。Mask R-CNN [12]充分利用了由提议网络[31]生成的精确物体边界框来辅助对象掩码的预测。在像素级GT掩码的强监督下,上述方法大大提升了实例分割的性能。然而,如何在弱监督下进行实例分割仍然是一个待解决的问题。Khoreva等人[13]提出利用边界框监督来获得伪造的真实掩码,以减轻标注成本。相反,我们利用在分类网络中自然学习的实例感知视觉线索;因此,训练只需要图像级注释。

对象先验信息。当准确的注释不可用时,视觉识别方法通常利用先验信息获得额外的视觉线索。在弱监督的对象检测和分割中,常常使用推测对象位置和范围的对象提议方法来提供对象先验。选择性搜索[38]和边界框[49]使用低级特征(如颜色和边缘)作为线索,生成对象候选窗口多尺度组合分组(MCG)[27]使用低级轮廓信息,例如结构化边缘[8]或超度量轮廓地图[20],来提取包含细节化对象边界的对象提议,这对于实例分割是有价值的。在本文中,我们利用MCG提议的对象先验来进行实例掩码提取。

图像级监督的深度激活。只使用图像级监督,需要将CNN的深度响应,即特征图,聚合成全局的类别置信度,以便可以使用图像标签进行训练。全局最大池化(GMP)[21]选择每个类别最具辨别力的响应来生成分类置信度分数,但会丢弃许多其他有信息量的区域全局平均池化(GAP)[47]对所有响应赋予相等的重要性,这使得很难区分前景和背景对数求和指数(LSE)[35]提供了GMP和GAP的平滑组合,以约束类别感知的对象区域。全局排名最大最小池化(GRP)[9]选择部分高分像素作为正例,低分像素作为负例,增强区分能力。

        现有的方法通常在全局范围内激活深度响应,而不考虑局部空间相关性,这使得在图像中难以区分对象实例。卷积响应中的峰值暗示了学习滤波器与信息感受野之间的最大局部匹配在我们的方法中,峰值刺激过程聚合了局部最大值的响应,增强了网络的定位能力。基于深度响应,提出了自顶向下的注意力方法,通过探索视觉注意力证据生成精细的类别显著性地图[4,43]。这些类别感知且与实例无关的线索可以用于语义分割[14,33],但对于实例分割来说,还不足够,如图2所示。相反,我们的方法提供了适用于弱监督实例级问题的细节化实例感知线索。

图2:与现有的弱监督方法旨在为每个类别获得显著性地图(中间)相比,所提出的方法提取了每个实例的细节化表示(右侧),包括明确的布局和边界(用不同颜色可视化)。

图3:峰值响应图(PRMs)的生成和利用。刺激过程有选择地激活每个对象内部的强视觉线索,形成类别峰值响应。反向传播过程进一步从结果峰值中提取每个实例的细节。最后,将类别感知线索、实例感知线索和来自提议的对象先验信息综合考虑,以预测实例掩码。最佳查看方式为彩色图像。

3.方法

        在本节中,我们提出了一种利用类别峰值响应的图像级监督实例分割技术。完全卷积的CNN分类器可以生成类别响应图,该图指定了每个图像位置的分类置信度[21]。基于我们的观察,即类别响应图的局部最大值,即峰值,通常对应于实例内部的强视觉线索,我们首先设计了一个过程,在网络训练阶段激活峰值从类别响应图中出现在推理阶段,出现的峰值被反向传播生成突出显示每个对象信息区域的映射,称为峰值响应图(PRMs)PRMs为每个实例提供了精细的分离表示,进一步利用这些表示从现成的对象分割提议中检索实例掩码,如图3所示。

图4:通过峰值刺激,可以在类别响应图(中间)上更好地区分多个实例。通过激活最大化[10]可视化学习到的表示(右侧)。最佳查看方式为彩色图像。

3.1.全卷积架构

        通过简单地移除全局池化层并将全连接层适应为1x1卷积层,现代CNN分类器可以无缝地转换为完全卷积网络(FCNs)[19],在整个前向过程中自然地保留空间信息转换后的网络通过单次前向传递输出类别响应图,因此适用于空间预测。在这项工作中,网络首先被转换为FCN。

3.2.峰值激发

        为了激活类别响应图中的峰值,我们构建了一个峰值刺激层,将其插入在顶层之后,如图3所示。考虑一个标准的网络,令M ∈RC×H×W表示顶层卷积层的类别响应图,其中C是类别的数量,H×W表示响应图的空间尺寸。因此,峰值刺激层的输入是M,输出是类别-wise的置信度得分s ∈RC。第c个响应图Mc的峰值被定义为窗口大小为r 2内的局部最大值,峰值的位置被表示为Pc ={(i1,j1),(i2,j2),...,(iNc,jNc)},其中Nc是第c个类别的有效峰值的数量。在前向传递过程中,为计算第c个对象类别的分类置信度得分,生成采样核Gc ∈RH×W。可以通过Gc x,y访问位于位置(x,y)的核的元素。不失一般性,核可以形成为:

         其中 0 ≤ x < H, 0 ≤ y < W,(ik, jk) 是第 k 个峰值的坐标,f 是一个采样函数。在我们的设置中,f 是一个狄拉克δ函数,用于仅从峰值聚合特征;因此,第 c 个类别的置信度得分 sc 可以通过类别响应图 Mc 和采样核 Gc 之间的卷积来计算,如下所示:

         公式2可以看出,网络仅使用峰值来做出最终决策;自然地,在反向传播过程中,梯度通过Gc分配给所有峰值位置,如下所示:

         其中δc是顶层卷积层第c个通道的梯度,L是分类损失。从模型学习的角度来看,类别响应图是通过对所有感受野(RFs)进行密集采样来计算的,在其中大多数感受野是不包含有效实例的负样本。公式3表明,与传统网络不加条件地从极端的前景-背景不平衡集中学习不同,峰值刺激强制学习集中在经过类别峰值响应估计的一组稀疏的信息丰富的感受野(潜在的正样本和难负样本),因此在训练过程中防止大量的简单负样本压倒学习到的表示,如图4(右侧所示)。

3.3.峰值反向传播

        我们提出了一种概率反向传播过程,用于进一步生成细节丰富且具有实例感知性的表示,即峰值响应图。与先前的自上而下的注意力模型[43,36]不同,这些模型寻找与输出类别最相关的神经元来生成类别感知的注意力图,我们的公式明确考虑了感受野,并可以从特定的空间位置提取实例感知的视觉线索,即类别峰值响应。峰值反向传播可以解释为一个从峰值(顶层)开始并随机向底层行走的过程。然后,底层中每个位置的自上而下的相关性被形式化为该位置被行者访问的概率。考虑一个具有单个滤波器W ∈ RkH×kW的卷积层,为了简化数学,将输入和输出特征图分别表示为U和V,其中每个空间位置可以通过Uij和Vpq进行访问。通过Vpq和两个特征图之间的转移概率,可以获得Uij的访问概率P(Uij),如下所示:

         Uˆij是U在位置(i,j)处的自下而上激活(在前向传播中计算),W +=ReLU(W)表示丢弃负连接,Zpq是一个归一化因子,用于确保 p,q P (Uij|Vpq)=1。需要注意的是,在大多数采用ReLU作为传递函数的现代CNN中,负权重对增强输出响应没有积极影响,因此被排除在传播之外。其他常用的中间层,例如平均池化层和最大池化层,被视为执行输入的仿射变换的相同类型的层[43];因此,相应的反向传播可以以与卷积层相同的方式建模。通过由公式4和公式5定义的概率传播,我们可以以自上而下的方式定位每个类别峰值响应的最相关空间位置,生成细节丰富的实例感知的视觉线索,称为峰值响应图,如图5所示。

图5:峰值反向传播过程将类别峰值响应映射到每个物体内部的细节丰富的视觉线索,即峰值响应图(PRM),从而实现了实例级别的掩码提取。最好以彩色查看。

3.4.弱监督实例分割

        我们进一步利用PRM的实例感知线索来执行具有挑战性的实例分割任务。具体而言,我们提出了一种简单而有效的策略,通过将来自PRM的实例感知线索、来自类别响应图的类别感知线索以及来自现成的物体提议的空间连续性先验相结合,来预测每个物体实例的掩码。我们使用图3中的度量方法从提议库中检索实例分割掩码。

        其中,R是与类别峰值响应对应的PRM,Sˆ是通过形态梯度计算得到的提议S的轮廓掩码,Q是通过类别响应图和偏置(基于该图的均值)获取的背景掩码。类独立的自由参数α和β在验证集上进行选择。在公式6中,实例感知项鼓励提议与PRM最大化重叠,边界感知项利用PRM中的细节边界信息选择具有类似形状的提议。此外,类别感知项利用类别响应图抑制与类别无关的区域。这三个项的效果在4.3节中进行了消融研究。

弱监督实例分割的整体算法在算法1中说明。

4.实验

        我们使用最先进的CNN架构,包括VGG16和ResNet50,对提出的方法进行了实现,并在几个基准数据集上进行了评估。在第4.1节中,我们对峰值刺激和反向传播过程进行了详细分析,以展示所提出的技术能够生成准确的物体定位和高质量的实例感知线索。在第4.2节中,我们展示了PRM在弱监督语义分割中通过分割提议的帮助下提取类别感知掩码的能力。在第4.3节中,我们首次报道了具有挑战性的基于图像级监督的实例分割结果。我们还进行了消融研究和上限分析,以展示我们方法的有效性和潜力。

4.1.峰值响应分析

        我们使用点级定位度量[21]来评估类别峰值响应的定位能力和峰值刺激的有效性。我们首先通过双线性插值将类别响应图上采样到与图像大小相同的尺寸。对于每个预测的类别,如果最大类别峰值响应的坐标落在相同类别的真实边界框内,我们计为一个真正例(true positive)。

        我们在PASCAL VOC 2012 [11]和MS COCO 2014 [18]的训练集上对带有/不带有峰值刺激的ResNet50进行微调,并在验证集上报告了性能,见表1。结果显示,类别峰值响应对应于物体的视觉线索,并可以用于定位物体。我们的完整方法在性能上表现出色,超过了基线(没有刺激)很多,这表明刺激过程可以使网络发现与有效实例相对应的更好的视觉线索。

峰值响应图的质量。为了评估提取的实例感知线索的质量,我们测量了峰值响应图(PRM)R与GT掩码G之间的相关性,即R与G之间的相关性,这表明PRM发现了位于实例内部的视觉线索的能力。对于每个PRM,我们定义其分数为与相同类别的GT掩码之间的最大相关性。因此,分数为0表示相应的PRM没有定位到任何有效的物体区域,而分数为1意味着PRM完美地区分了实例的视觉线索与背景。分数大于0.5的PRM被视为真正的正例。在VOC 2012上,我们使用分类数据训练带有不同方法的响应聚合策略的ResNet50,并根据分割数据集上的mAP评估生成的PRM的质量,见表2。峰值刺激迫使网络从信息丰富的感受野中学习显式表示,从而获得更高质量的PRM。

        我们对PRM质量与图像拥挤程度之间的关系进行了统计分析,见图6(左侧)。平均而言,对于单个物体的图像,落入实例的PRM能量达到78%,对于2-5个物体的图像,达到67%。令人惊讶的是,即使是拥挤的场景中有超过六个物体,实例的能量平均上也比背景更高,这表明PRM提取的实例感知视觉线索质量很高。我们进一步分析了物体大小的影响,见图6(右侧),结果显示PRM可以从常见大小的物体中定位到细致的证据。

表1:在VOC2012和COCO2014验证集上的点级定位的平均精确度(mAP%)。

表2:不同响应聚合策略对峰值响应图质量的影响的比较。

图6:关于物体数量和大小对峰值响应图质量影响的统计分析。

表3:基于VOC 2012验证集的弱监督语义分割结果,以平均IoU(%)表示。标记†表示引入可忽略的训练成本的方法。

4.2.弱监督语义分割

        上述实验结果显示,PRM对应准确的实例“种子”,但另一个具有挑战性的任务是将每个种子扩展为完整的对象分割。我们评估了配备了峰值刺激的ResNet50模型在弱监督语义分割任务中的性能,该任务要求将来自相同类别的对象分配为相同的分割标签。在VOC 2012分割数据的验证集上,我们将相同类别的实例分割掩码合并以生成语义分割预测。性能以像素交并比平均值来衡量,跨越20+1个类别(20个对象类别和背景)。

        我们的方法不使用耗时的训练策略[33]或额外的监督[1,34],而是使用图像级标签和标准分类设置来训练模型,并在弱监督语义分割任务中报告了具有竞争力的结果,无需CRF后处理(参见表3)。图7展示了不同场景下的预测示例。

图7:预测的语义分割示例。不同颜色表示不同的类别。

4.3.弱监督实例分割

        使用提出的技术,我们在PASCAL VOC 2012分割数据集上对ResNet50和VGG16模型进行实例分割,这些模型是在分类数据集上训练的。据我们所知,这是首次报告基于图像级监督的实例分割结果的工作。我们根据从地面真实值和弱监督定位方法[39,47,48]获取的对象边界框构建了几个基准线(参见表4)。使用定位的边界框,我们设置了三种合理的掩模提取策略:

        (1)矩形,简单地用实例标签填充对象框,

        (2)椭圆,在每个框内拟合最大椭圆,

        (3)MCG,检索与边界框具有最大交并比的MCG分割建议。

数值结果。实例分割评估使用IoU阈值0.25、0.5和0.75的mAP r进行,并且还使用平均最佳重叠(ABO)[28]指标进行评估,以便从不同的角度进行评估。表4显示,我们的方法明显优于使用相同设置的弱监督定位技术,即仅使用图像级标签进行模型训练。在较低的IoU阈值(例如0.25和0.5)下的性能改进显示了峰值刺激在对象定位中的有效性,而在较高的IoU阈值(例如0.75)下的性能改进表明了峰值反向传播对捕捉细节实例线索的有效性。与最新的MELM [39]相比,该方法通过多尺度增强、在线提案选择和特殊设计的损失进行训练,我们的方法简单而有效,并展示了竞争性能。

消融研究。为了研究峰值刺激以及我们的提案检索度量中每个项的贡献,我们在不同的骨干网络上进行了基于不同因素省略的实例分割。结果如表5所示。从消融研究中,我们可以得出以下结论:

        1)峰值刺激过程,在网络训练期间激发峰值,对于我们方法的实例分割性能至关重要。

        2)当省略实例感知项时,mAP0r.5从26.8%下降到13.3%,这证明了我们方法生成的良好隔离的实例感知表示的有效性。

        3)边界感知项显著提高了2.5%的性能,表明我们的方法确实提取了实例的细节边界信息。

        4)类别感知线索抑制了类别无关的区域,从而显著提高了我们方法的实例分割性能。

定性结果。在图8中,我们展示了一些实例分割的例子,包括成功的案例和典型的失败案例。可以看出,我们的方法可以产生高质量的视觉线索,并在许多具有挑战性的场景中获得良好的实例分割结果。在第一列和第二列中,当实例相互关闭或遮挡时,它可以区分实例。第三列和第四列中的示例显示,它在不同尺度的对象上表现良好。第五列中,不同类别的对象被很好地分割,这表明所提出的方法可以从分类网络中提取类别区分和实例感知的视觉线索。与弱监督系统典型的情况一样,PRMs可能会被噪声共现模式误导,并且有时难以区分对象部分和多个对象之间的区别。我们通过提案检索步骤来解决这个问题;然而,性能仍然受到提案质量的限制。

上限分析。为了探索我们方法的上限,我们构建了不同的提案库,如表6所示。首先,我们将GT掩码与MCG提案混合在一起,得到一个具有100%召回率的提案库,结果显示我们方法(基于图像级监督)检索提案的能力与GT边界框(26.9%对29.2%)相当。接下来,我们将GT掩码作为完美的提案库(注意,在高度遮挡的情况下,GT边界框仍然失败)来评估PRMs的实例定位能力。我们的结果进一步提升到73.3%,并且大大优于SPN,证明了所提出的技术在视频/RGB-D应用中的潜力,可以利用丰富的信息生成高质量的提案。

表4:以平均平均精度(mAP%)和平均最佳重叠(ABO)为指标,在PASCAL VOC 2012验证集上进行的弱监督实例分割结果。

表5:基于不同网络骨干的PASCAL VOC2012验证集上的消融研究结果。

图8:PASCAL VOC 2012验证集上的实例分割示例。可以看出,峰值响应图(第二行)包含了细节丰富的实例感知信息,可以用来生成实例级别的掩码(第三行)。最后一行展示了典型的失败案例。最好以彩色查看。

表6:在PASCAL VOC 2012验证集上的实例分割结果(mAP0r.75)的比较。

5.总结

        在本文中,我们提出了一种简单而有效的技术,可以使分类网络能够进行实例掩码提取。基于类别峰值响应,峰值刺激对于增强目标定位非常有效,而峰值反向传播则提取了每个实例的细节丰富的视觉线索。我们展示了点级定位以及弱监督语义分割的最佳结果,并且据我们所知,首次报告了图像级监督的实例分割结果。其基本事实是实例感知线索自然地被卷积滤波器学习,并编码在分层响应图中。发现这些线索为弱监督实例级问题提供了新的见解。

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

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

相关文章

HBuilder 编辑器终端窗口无法输入,未响应的解决方案

HBuilder 编辑器终端窗口无法输入&#xff0c;未响应的解决方案 一、找到 HBuilder 安装目录 找到 main.js HBuilderX - plugins - builtincef3terminal - script - main.js 二、编辑 main.js 将 main.js 文件中的 powershell.exe 和 cmd.exe 路径都改为绝对路径 C:/Windows…

【深度学习】WaveMix: A Resource-efficient Neural Network for Image Analysis 论文

论文&#xff1a;https://arxiv.org/abs/2205.14375 代码&#xff1a;https://github.com/pranavphoenix/WaveMix 文章目录 ABSTRACTIntroductionBackground and Related WorksWaveMix Architectural FrameworkOverall architectureWaveMix block Experiments and ResultsTasks…

activemq消息中间件

ActiveMQ消息中间件详解 下载地址&#xff1a;https://activemq.apache.org/activemq-5015009-release 1、MQ的产品种类 1.1、消息中间件的特性/共同特性/共同维度 Kafka&#xff08;大数据专用、由java/scala编写&#xff09; API发送和接收MQ的高可用性MQ的集群和容错配置…

Docker 之 Consul容器服务更新与发现

一、Consul介绍 1、什么是服务注册与发现 服务注册与发现是微服务架构中不可或缺的重要组件。起初服务都是单节点的&#xff0c;不保障高可用性&#xff0c;也不考虑服务的压力承载&#xff0c;服务之间调用单纯的通过接口访问。直到后来出现了多个节点的分布式架构&#xff…

Android平台GB28181设备接入侧如何同时对外输出RTSP流?

技术背景 GB28181的应用场景非常广泛&#xff0c;如公共安全、交通管理、企业安全、教育、医疗等众多领域&#xff0c;细分场景可用于如执法记录仪、智能安全帽、智能监控、智慧零售、智慧教育、远程办公、明厨亮灶、智慧交通、智慧工地、雪亮工程、平安乡村、生产运输、车载终…

Flutter的开发环境搭建-图解

前言&#xff1a;Flutter作为一个移动应用开发框架&#xff0c;具有许多优点和一些局限性。最大的优点就是-跨平台开发&#xff1a;Flutter可以在iOS和Android等多个平台上进行跨平台开发&#xff0c;使用一套代码编写应用程序&#xff0c;节省开发时间和成本。 Flutter可以编…

了解Unity编辑器之组件篇Mesh(三)

Mesh&#xff1a;是一种三维模型的表示形式&#xff0c;它由一系列顶点、三角形&#xff08;或其他多边形&#xff09;和相关属性组成。Mesh用于表示物体的外观和形状&#xff0c;它是可见物体的基本组成部分。通过操作Mesh&#xff0c;开发者可以实现各种视觉效果、物理模拟和…

基于PCA和小波算法联合实现红外与可见光图像融合的Matlab仿真(完整源码+35组数据集)

以下是一个使用PCA和小波实现红外与可见光图像融合的Matlab仿真完整源码。源码中只需修改红外图像&#xff08;IR.bmp&#xff09;和可见光图像&#xff08;VI.bmp&#xff09;名字即可 文章目录 效果展示数据集展示步骤说明完整源码下载地址 效果展示 最终融合效果展示&#x…

java执行ffmpeg命名的Docker镜像制作

今天来记录一下通过Dockerfile制作docker镜像的过程 背景 我需要通过java服务调用ffmpeg去执行视频合并的功能&#xff0c;想把这个环境封装到docker镜像当中&#xff0c;方便以后迁移部署。 实现方法 随便找一个路径创建一个Dockerfile文件 touch Dockerfilevim Dockerfi…

如何使用vscode连接远程服务器

1、安装remote-ssh 在应用商店搜索remote-ssh&#xff0c;安装remote-ssh 2、安装完成后会出现远程资源管理器 3、点击远程资源管理器 --ssh的➕号&#xff0c;在输出框内输入要连接的服务器ip及账户名 如&#xff1a;ssh 账户名ip地址 4、输入后回车保存 5、保存后刷新一下 6…

Redis学习路线(1)—— Redis的安装

一、NoSQL SQL VS NoSQL 1、名称 SQL 主要是指关系数据库。NoSQL 主要是指非关系数据库。 2、存储结构 SQL 是结构化的数据库&#xff0c;以表格的形式存储数据。NoSQL 是非结构化的数据库&#xff0c;以Key-Value&#xff08;Redis&#xff09;&#xff0c;JSON格式文档&…

【React】版本正确安装echarts-liquidfill(水球图表)包引入不成功问题

目标效果图&#xff1a; 安装&#xff1a; npm install echarts npm install echarts-liquidfill 引入&#xff1a; Import:import * as echarts from echarts; import echarts-liquidfill 或 import echarts-liquidfill/src/liquidFill.jsOr:import * as echarts from…

TreeMap的底层实现

0. 你需要知道的TreeMap的内置属性 0.1 节点属性 K key; // 键 V value; // 值 Entry<K,V> left; // 左子节点 Entry<K,V> right; // 右子节点 Entry<K,V> parent; // 父节点 boolean color; // 节点的颜色0.2 成员变量 //比较器对象private f…

Android性能优化之游戏引擎初始化ANR

近期&#xff0c;着手对bugly上的anr 处理&#xff0c;记录下优化的方向。 借用网上的一张图&#xff1a; 这里的anr 问题是属于主线程的call 耗时操作。需要使用trace 来获取发生anr前一些列的耗时方法调用时间&#xff0c;再次梳理业务&#xff0c;才可能解决。 问题1 ja…

14 Linux实操篇-进程管理(重点)

14 Linux实操篇-进程管理&#xff08;重点&#xff09; 文章目录 14 Linux实操篇-进程管理&#xff08;重点&#xff09;14.1 进程的基本操作14.1.1 进程和程序14.1.2 父进程和子进程14.1.3 常见的Linux进程14.1.4 显示系统执行的进程-ps14.1.5 终止进程-kill/killall14.1.6 查…

LeetCode 75 第十二题(11)盛最多水的容器

目录 题目: 示例: 分析: 代码: 题目: 示例: 分析: 配合着示例给出的图片我们可以得知找出盛水最多的容器是什么意思,给一个数组,找出数组中两个元素能围成的最大的矩阵面积是多少. 比较直观的想法是套两层for循环暴力解出来,但是这题是中等难度题,一般中等题是没法用暴力得…

【动态规划刷题 2】使⽤最⼩花费爬楼梯 解码⽅法

使⽤最⼩花费爬楼梯 746 . 使用最小花费爬楼梯 链接: 746 . 使用最小花费爬楼梯 给你一个整数数组 cost &#xff0c;其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用。一旦你支付此费用&#xff0c;即可选择向上爬一个或者两个台阶。 你可以选择从下标为 0 或下标为 …

【JAVA】 String 类简述笔记

个人主页&#xff1a;【&#x1f60a;个人主页】 系列专栏&#xff1a;【❤️初识JAVA】 文章目录 前言String类创建一个String类 常用方法字符串长度 length() 方法连接字符串 concat() 方法创建格式化字符串 format()功能 前言 string是C、java、VB等编程语言中的字符串&…

安卓:百度地图开发(超详细)

一、百度地图介绍 百度地图SDK是一套供开发者使用的软件开发工具包&#xff08;SDK&#xff09;&#xff0c;用于在Android应用程序中集成和使用百度地图功能。通过使用百度地图SDK&#xff0c;开发者可以实现在自己的应用中显示地图、获取定位信息、进行搜索、导航等功能。 百…

办公软件巨头CCED、WPS迎来新挑战,新款办公软件已形成普及之势

办公软件巨头CCED、WPS的成长经历 众所周知&#xff0c;CCED和WPS是中国办公软件行业的两大知名品牌。 但它们的成长经历不是一蹴而就的&#xff0c;都是经历了漫长的发展过程的。 CCED是中国大陆早期的一款文本编辑器&#xff0c;它在上个世纪80年代末和90年代初非常流行。 …