Paper Reading:《Consistent-Teacher: 减少半监督目标检测中不一致的伪目标》

news2024/11/19 14:47:51

#pic_center =550x200

在这里插入图片描述

目录

  • 简介
  • 工作重点
  • 方法
    • ASA, adaptive anchor assignment
    • FAM-3D, 3D feature alignment module
    • GMM, Gaussian Mixture Model
    • 实施细节
  • 实验
      • 与SOTA的比较
      • 消融实验
  • 总结

简介

题目:《Consistent-Teacher: Towards Reducing Inconsistent Pseudo-targets in Semi-supervised Object Detection》, CVPR’23(Highlight)
日期: 2023.3.28(v3),v1:2022.9.4
单位: 商汤、上海AI实验室、新加坡国立大学、北京大学
论文地址: http://arxiv.org/abs/2209.01589
GitHub: https://github.com/Adamdad/ConsistentTeacher

作者
在这里插入图片描述
研究方向主要是模型架构研究、半监督学习、目标检测

共同一作
在这里插入图片描述
个人主页:https://adamdad.github.io/
在这里插入图片描述

其他作者


  • 摘要
    在本研究中,我们深入研究了半监督目标检测(SSOD)中伪目标的不一致性。我们的核心观察结果是,振荡的伪目标破坏了精确探测器的训练。它给学生的训练注入了噪音,导致了严重的过拟合问题。因此,我们提出了一个系统的解决方案,称为Consistent Teacher,以减少不一致性。首先,自适应锚分配(ASA) 取代了基于静态IoU的策略,使学生网络能够抵抗噪声伪边界盒。然后,我们通过设计三维特征对齐模块(FAM-3D) 来校准子任务预测。它允许每个分类特征在任意尺度和位置自适应地查询回归任务的最优特征向量。最后,高斯混合模型(GMM) 动态修正了伪框的得分阈值,在早期阶段稳定了GT的数量,并弥补了训练过程中不可靠的监督信号。Consistent Teacher在SSOD的大量评估中提供了强有力的结果。它在ResNet-50主干上实现了40.0mAP,只给出了10%的注释MS-COCO数据,这比以前使用伪标签的基线高出了约3mAP。当在带有附加未标记数据的完全注释MS-COCO上训练时,性能进一步提高到47.7mAP。

本文通过分析现有半监督目标检测(SSOD)伪标签的偏移问题与不稳定性(Inconsistancy),提出了一种新的半监督目标检测器Consistent-Teacher。本文被CVPR2023评为Highlight(占提交总数的2.5%)。

  • 什么是伪标签的不稳定性?
    在半监督目标检测中,生成的伪标签存在不稳定(Inconsistency)的问题。主流的半监督目标检测器生成伪标签时是基于当前时刻的Teacher模型的预测。与全监督训练时的静态标签(在训练过程中不会变化)不同,一个无标签图像中一个物体的伪标签可能在训练过程中某个时间点出现,不断变化,直至最后稳定或消失。在使用不稳定的伪标签监督下进行训练会导致一系列问题,学生网络的优化目标不一致,会导致模型训练的不稳定和性能下降,以及模型收敛速度的下降。
    在这里插入图片描述

  • 提出了3种不稳定性(设计inconsistency问题)并分析原因
    在这里插入图片描述

    1. Assignment inconsistency:分配不一致。
      当前主流的两阶段(Two-stage)或者单阶段(Single-stage)目标检测网络都使用基于IoU阈值的静态anchor分配方法,这种方法对于伪标签框中的噪声非常敏感。即使伪标签框中只有微小的噪声,伪标签的不稳定性也会导致anchor分配的不同。
    2. Subtasks inconsistency:下游任务的不一致性,即分类Cls-回归Reg任务的不一致性。
      在主流的半监督目标检测方法中,分类与回归任务的不一致也是导致不稳定性的一个重要原因。为了筛选高质量的伪标签,通常会使用分类置信度作为指标,并设置阈值来筛除低置信度的伪标签框。然而,一个伪标签框的分类置信度好坏并不一定能反映其定位准确度的高低。因此,利用分类置信度进行伪标签筛选的方法会进一步加剧伪标签在训练过程中的不稳定性。
    3. Temporal inconsistency:时序不一致。
      固定阈值筛选伪标签的方法同样会导致不一致性。在半监督目标检测中,为了筛选高质量的伪标签进行训练,常常采用一个固定的阈值对分类的置信度进行筛选。然而,这种方法会导致在训练不同阶段的不一致性。在训练初期,由于模型对预测结果不够自信,固定的阈值会导致过少的伪标签框被筛选,而随着模型的不断训练,每张图的伪标签框数量会逐渐增多,直到训练后期过多。这种伪标签框数量的不一致同样会导致 Student 网络训练的不一致。
  • Consistent Teacher很大程度上,改善了生成伪标签的不一致性
    左图:比较“Mean Teacher”和“Consistent Teacher”的训练损失。不一致的伪目标会导致分类分支过拟合,而回归损失则难以收敛(如下图)。

在这里插入图片描述
SSOD中关于COCO 10%评估的不一致性问题的说明。

(左)我们比较“Mean Teacher”和“Consistent Teacher”的训练损失。在Mean Teacher中,不一致的伪目标导致分类分支上的过拟合,而回归损失变得难以收敛。相反,我们的方法为学生设定了一致的优化目标,有效地平衡了这两项任务并防止了过度拟合。

(右)伪标签和分配动态的图片集。绿色和红色的box分别指的是北极熊的ground truth和伪标签。红点是为伪标签指定的定位框。热图表示老师预测的密集置信度分数(越大越亮)。附近的一块木板最终在基线中被错误地归类为北极熊,而我们的自适应分配防止了过度拟合。

Mean-Teacher的伪标签不一致性远高于 Consistent-Teacher ;随着训练进行不断增加,Mean-Teacher的伪标签的mAP也远低于Consistent-Teacher。

在这里插入图片描述
Consistent-Teacher提高了SSOD中训练的一致性。(左轴)不同时间未标记集合上的mAP。(右轴)伪标签的不一致性。

Mean-Teacher预测了很多分类置信度高但是定位不准确的伪标签框(左边红色框)。而本文提出的Consistent-Teacher预测的大多数是分类置信读高且定位准确的伪标签框,这说明本文提出的方法可以很好的对齐分类与回归的特征并且预测更为准确的伪标签框

在这里插入图片描述
预测的bboxes置信热力图及其与GTs的IoU得分。

在静态置信阈值τ=0.4、0.5、0.6的情况下,随着训练的进行,Mean-Teacher的伪标签的数量随着检测器变得更加自信而不断增加。而本文提出的Consistent-Teacher基于GMM的方法根据模型容量自适应地调整最佳阈值,具有几乎恒定数量的GT,这减少了时间不一致性,可以维持不同训练阶段中,伪标签框数量相对稳定

在这里插入图片描述
COCO上具有阈值时间表的伪标签/图像数量10%

在图6中,我们绘制了GMM在COCO 1%/5%/10%上获得的估计阈值曲线。随着训练的进行,有效值稳步增加。此外,在标记样本较少的情况下,GMM根据更多的过拟合问题设置更高的置信阈值。典型的静态阈值设置无法解决学习目标的不一致性,而GMM提供了一个令人满意的解决方案。

在这里插入图片描述
不同类别的均GMM阈值以及训练。

工作重点

  1. 首次对SSOD中的不一致目标问题进行了深入调查,该问题会导致严重的过拟合问题。
  2. 引入了一种自适应样本分配(ASA),以稳定噪声伪框和锚点之间的匹配,从而为学生模型提供稳健的训练。
  3. 我们开发了一个三维特征对齐模块(FAM-3D)来校准分类置信度和回归质量,从而提高了伪框的质量。
  4. 我们采用GMM来灵活地确定训练中每个类的阈值。自适应阈值随着时间的推移而变化,并减少了SSOD的阈值不一致性。
  5. Consistent Teacher在广泛的评估中取得了令人信服的进步,并成为SSOD的新的坚实基线。

方法

在分析现有半监督目标检测伪标签的偏移问题与不稳定性后,本文提出了一种新的半监督目标检测方法 Consistent-Teacher,整体如下图。Consistent-Teacher 设计了三种模块来解决上述问题,包括自适应的标签分配(ASA),3D特征对齐(FAM-3D)和基于高斯混合模型的自适应阈值(GMM-based Threshold)

在这里插入图片描述
Consistent-Teacher框架:我们设计了三个模块来解决SSOD中的不一致性,其中GMM动态地确定阈值;3D特征对齐校准回归质量;基于匹配成本的自适应标签分配。

  • 总体Loss
    在这里插入图片描述

ft(·; θt):教师检测器、fs(·; θs):学生检测器

N个样本的标记集,M个样本的未标记集

T:teacher网络的weak数据增强;T’:student的strong 数据增强

y:表示gt;^y:教师模型生成的伪标记,在这里插入图片描述

所有模型的Lcls和Lreg均设置了焦点损失和GIoU损失

  • ASA, adaptive anchor assignment

上文提到静态anchor分配由于使用IoU阈值分割来分配anchor,略微变化就会导致分配的不同。
而且由于类别和伪框有时是冲突的,不能直接用类别分数过滤。故提出:将伪框分配给锚点,最小化他们的loss

本文则提出采用自适应的标签分配 (ASA),与静态anchor分配不同,ASA为每一对anchor-真实值边界框计算一个匹配损失,然后选择匹配损失最小的若干对anchor-真实值边界框作为最终的anchor分配。(计算每个预测与给定的GT(也包括伪bbox)之间的匹配代价,并根据相对匹配代价执行分配。)

RetinaNet中的每个锚只有在其具有ground truth(GT)的IoU bbox大于阈值时才被分配为正。这种静态标签分配打破了半监督学习中的一个重要特性。以分类为例,实例级伪标签满足在这里插入图片描述

这意味着伪标签^c应该与其自己的预测对齐。然而,当SSOD采用静态锚点分配时,这一规则被打破了。也就是说,为锚分配的标签有时与他们自己的预测相矛盾,这是图中伪标签漂移现象的根源。1。因此,我们建议为锚分配伪bbox,以最大限度地减少其损失

将伪框分配给锚点,最小化他们的loss,公式如下,其中n代表anchor index。
在这里插入图片描述

n:锚索引

an∈{1,2,···,L+1}:L个预测的bbox中指定的伪bbox索引,索引L+1表示背景标签。

Cdist代表锚点和伪box中心的距离,每个伪box选取k个最小cost的作为正样本。

计算每个锚点与伪bbox之间的匹配成本,认为成本最低的为正样本。计算公式如下:其中Cdist代表锚点和伪box中心的距离。每个伪box选取k个最小cost的作为正样本

在这里插入图片描述

λreg和λdist是加权参数
Cdist计算锚点n的中心和伪bbox yl之间的距离,用作具有小权重值(λdist~0.001)的中心先验,以稳定训练。
对于每个伪bbox的匹配成本,具有最高K个最低成本的锚被分配为正。由于分配是根据模型的检测质量进行的,因此伪框中的噪声对特征点分配的影响可以忽略不计。

  • FAM-3D, 3D feature alignment module

img
Consistent-Teacher的检测头结构。左侧为头部结构,右侧为3D FAM模块

其次,为了解决上文提到的分类与回归任务之间存在的不一致问题,本文提出3D特征对齐模块 (FAM-3D),通过使分类特征自适应地检索到最佳回归特征,以执行回归任务。以此,FAM-3D成功地将分类和回归特征进行了对齐,即用分类置信度校准bbox定位

具体而言,FAM-3D在检测头中额外增加一个分支,用于预测最优回归特征位置的偏移量。FAM-3D中的“3D”意味着这个位置偏移量不仅在x和y维度上预测回归特征的偏移量,同时还预测特征金字塔中进行跨层的偏移量预测。
在不同的FPN水平上添加了一个额外的CONV3×3(RELU(CONV1×1))层,并为每个预测估计偏移向量d=(d0,d1,d2)∈R3。然后使用预测的偏移分两步对P进行重新排序
在这里插入图片描述

P:特征金字塔;P(i,j,l):第l个金字塔级别的空间位置(i,j)

P’<–S( P ):重新采样函数,重新排列特征图以进行回归任务,使P′更好地与分类特征对齐。

其中方程5是在2-D空间中进行特征偏移,而方程6是不同尺度上的偏移。在等式6中,i′和j′是i和j在不同FPN水平上的重新缩放坐标。等式5是通过双线性插值实现的,等式6是通过调整P′(:,:,l+[d2]+1)的大小,然后对十进制数d2使用P′(:,:,l+[d2])进行加权平均来实现的,其中[·]是底函数。训练成本增加了1%左右,mAP提升了0.6个点。

  • GMM, Gaussian Mixture Model

img 两种高斯混合的分数分布和拟合结果。正、负分布分别用橙色和蓝色线条表示。蓝色虚线表示最终阈值。

最后,为了解决硬阈值选择伪标签带来的不一致问题,本文提出使用动态的阈值。它随着训练过程中的模型能力变化,调整伪标签的阈值。为了动态的调整伪标签框筛选的阈值,Consistent-Teacher将伪标签框筛选的过程看作是一个二分类过程,即正样本类为筛选得到的高质量伪标签框,负样本类为要筛除的低质量标签框。本文采用高斯混合模型(GMM)对这个二分类进行建模。将正样本类别和负样本类别分别看作两个高斯分布,通过Expectation-Maximum(EM)算法迭代求解高斯混合模型的最优参数,通过高斯混合模型得到分类阈值(区分正样本和负样本)。在训练中,Consistent-Teacher维持一个class-wise的队列存储用于建模GMM的的样本,并在训练过程中不断通过GMM获得动态更新的阈值进行自适应的筛选样本。

假设类别c的得分预测sc 是从具有正和负两种模式的所有未标记数据上的高斯混合(GMM)分布P(sc) 中采样的,假设类别分别服从高斯分布,将所有unlabeled data分成2类,正样本§的分布,负样本(n)的分布,w代表权重。

在这里插入图片描述

N(μ,σ2):高斯分布

wcn,μcn,(σcn)2和wcp,μcp,(σcp)2分别表示负模态和正模态的权重、均值和方差

最大化正样本的分布。使用期望最大化(EM)算法来推断后验P(pos|sc,μcp,(σcP)2),这是检测应该被设置为学生的伪目标的概率,并且自适应得分阈值被确定为

在这里插入图片描述

在实践中,我们为每个类维护一个大小为N(N~100)的预测队列,以适应GMM。考虑到单级检测器的分数分布是强不平衡的,因为大多数预测都是负的,所以只有前K=∑K(sk)个预测存储在队列中。EM算法只占训练时间增加的约10%。然后可以根据模型在不同训练阶段的性能自适应地确定阈值。

实施细节

所有检测器都在8个GPU上进行训练,每个GPU有5个图像(1个标记图像和4个未标记图像),类似于soft teacher。检测器使用SGD进行优化,恒定学习率为0.01,动量为0.9,重量衰减为0.0001。未标记的数据权重为λU=2。没有应用学习率衰减。在COCO-PARTIAL和VOC-PARTIAL评估中,我们对检测器进行180K迭代的训练,而为了更好地收敛,我们将COCO-ADDITION的训练时间增加到720K。教师模型通过EMA更新,动量为0.9995。我们遵循soft teacher中相同的数据预处理和扩充管道。我们采用了以ResNet-50主干为基线的RetinaNet。ImageNet预训练的模型被用作初始化。

我们将我们的一致性教师与许多主流的SSOD方法进行了比较,包括CSD, STAC, Instant Teaching, Humble Teacher, Unbiased Teacher v1 and v2, Soft Teacher, ACRST, DSL, S4OD, Dense Teacher,PseCo。

此外,实现了一种基线方法,使用标记和伪标记数据对学生进行训练,并通过学生的移动平均值更新教师。我们将其命名为Mean-Teacher基线。默认置信度阈值设置为0.4。

实验

与SOTA的比较

本文在MS-COCO 2017以及PASCAL VOC数据集上进行实验。 在MS-COCO 2017不同比例的有标签的数据上,Consistent-Teacher均获得了远超SOTA的结果。如下图可见,Consistent-Teacher在1%,2%,5%以及10%的比例(有标注数据的比例)上分别获得了25.30, 30.40, 36.10以及40.00的mAP,这个结果稳定地比之前的SOTA Dense Teacher高出3个mAP。

在这里插入图片描述
COCO-PAPARTIAL与val2017上其他半监督检测器的比较。分别列出了两级(上半部分)和单级(下半部分)探测器的结果。我们还报告了仅在标记数据上训练的Faster RCNN和RetinaNet性能。所有型号均采用以FPN为骨干的ResNet50。我们用下划线突出显示之前的最佳记录。

在COCO-Addition(利用全部的MS-COCO 2017作为有标注数据,并使用额外的COCO未标注数据)上本文同样获得了惊人的效果。如下图Table2,可以看到Consistent-Teacher获得了47.70的超强performance,比SOTA高1个mAP。在VOC的实验上本文提出的Consistent-Teacher同样获得了SOTA的结果。

在这里插入图片描述
以unbel2017为未标记集的val2017的COCO-ADDION实验结果。注意,1×表示90K训练迭代,N×表示N×90K迭代。

在这里插入图片描述
在VOC07标记和VOC12未标记的集合上与其他半监督检测器的VOC-PARTIAL实验结果比较。

消融实验

本文进一步进行消融实验说明本文提出的三个模块的有效性。

如表4所示,稳健的样本分配在SSOD中发挥着关键作用。通过专门化半监督任务的分配策略,我们的ASA在COCO上实现了38.50mAP 10%,与使用IoU的启发式匹配成本相比,提高了3mAP。另一个发现是,在SSOD(3.0mAP)上,ASA的性能效益几乎是在完全监督设置(1.7mAP)下的两倍。

在这里插入图片描述
基于IoU和我们在COCO上的自适应锚分配之间的比较。

在Figure 7和8中,通过在不同比例的有标签数据上进行训练,以及对比不同固定阈值的模型可以看到GMM可以带来稳定的0.5个点的提升。

Table 5中可以看到FAM-2D可以带来0.6的提升,而FAM-3D可以进一步带来0.4个点的提升。

在这里插入图片描述
基于GMM的伪标记滤波的消融研究。每个值表示COCO 10%数据上的mAP得分。

在这里插入图片描述
在COCO上以不同数据比率消融GMM。将模型与硬阈值为0.4的基线进行比较。

在这里插入图片描述
探测头结构的消融实验。我们比较了COCO 10%和标准1×评估的不同头部结构的性能、模型尺寸和FLOP。FLOP是在1280×800的输入图像大小上测量的。

总结

  • conclusion

本文对SSOD中出现的不一致性问题进行了系统的研究,并提出了一种简单有效的半监督对象检测器,称为“一致教师”作为解决方案。所提出的方法采用自适应锚点分配和FAM,前者识别具有最低匹配成本的正锚点,后者通过回归三维特征金字塔偏移来对齐分类和回归任务。为了解决伪框中的阈值不一致问题,利用GMM动态调整阈值进行自训练。通过集成这三个模块,我们的一致教师在各种SSOD基准测试上实现了比最先进方法的显著性能改进,展示了稳健的锚分配和一致的伪框。


  • supplementary material

    在这篇补充材料中,我们提供了更多的实验定量结果、模型大小的比较和边界框的可视化,所有这些都有助于增强我们提出的一致教师的有效性。此外,我们还提供了关于我们的实验方法、实现信息和超参数设置的更多细节。我们的代码也附在附件中供您参考。

在这里插入图片描述
(a)在不同的训练时间和(b)使用不同的噪声比,在ft和噪声边界框之间分配IoU分数。

在这里插入图片描述
使用IOU置信度线性回归(LR)误差进行分类和回归不一致性分析。提供了平均教师IoU置信图。

在这里插入图片描述
基于锚和无锚检测器的SSOD性能。

在这里插入图片描述
λdist的消融实验

在这里插入图片描述
用不同的方法每秒训练时间。

ASA不仅提高了性能,还降低了任务期间的时间复杂性,这主要是因为它的实现更高效,对锚点数量的要求更少。FAM3D引入了训练时间的边际增加,表明在性能增强和计算效率之间存在合理的平衡。在基于GMM的阈值化的情况下,每次迭代更新阈值会导致训练时间增加约10%,这表明GMM可以提供某些优势,但代价是延长训练持续时间。

在这里插入图片描述
COCO%10评估的定性比较。橙色中的边界框是基本事实,而紫色指的是预测。红色突出显示误报预测。

在这里插入图片描述
COCO%10评估的良好检测结果。橙色中的边界框是基本事实,而紫色指的是预测。

在这里插入图片描述
用于标记图像训练的数据扩充。

在这里插入图片描述
未标记图像的弱数据增强。

在这里插入图片描述
COCO%10评估的故障检测结果。橙色中的边界框是基本事实,而紫色指的是预测。

在这里插入图片描述
针对未标记图像的强数据增强。

在这里插入图片描述
外观变换,称为TransAppearance。

在这里插入图片描述
几何变换,称为TransGeo。

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

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

相关文章

Flutter开发GridView控件详解

GridView跟ListView很类似&#xff0c;Listview主要以列表形式显示数据&#xff0c;GridView则是以网格形式显示数据&#xff0c;掌握ListView使用方法后&#xff0c;会很轻松的掌握GridView的使用方法。 在某种界面设计中&#xff0c;如果需要很多个类似的控件整齐的排列&…

AI绘画的魅力与未来:人工智能如何重塑艺术创作

随着人工智能&#xff08;AI&#xff09;技术的不断进步&#xff0c;AI绘画已经成为艺术与技术交汇的新领域。通过深度学习、神经网络等先进技术&#xff0c;AI不仅能理解和模拟人类艺术家的创作风格&#xff0c;还能生成令人惊叹的原创艺术作品。本文旨在探讨AI绘画的现状、挑…

单点登录是什么?

单点登录&#xff08;Single Sign On, SSO&#xff09;是指在同一帐号平台下的多个应用系统中&#xff0c;用户只需登录一次&#xff0c;即可访问所有相互信任的应用系统。 单点登录的本质就是在多个应用系统中共享登录状态。如果用户的登录状态是记录在 Session 中的&#xff…

“构建交互式用户界面的自定义组件应用与界面布局设置“

目录 引言自定义组件应用设置界面布局投票界面布局及实现投票选项界面总结 引言 在软件开发中&#xff0c;用户界面设计是至关重要的一环。良好的界面设计可以提升用户体验、增加用户黏性&#xff0c;并提高软件的易用性。本篇博客将介绍如何利用自定义组件应用和界面布局设置…

【自动化测试入门】用Airtest - Selenium对Firefox进行自动化测试(0基础也能学会)

1. 前言 本文将详细介绍如何使用AirtestIDE驱动Firefox测试&#xff0c;以及脱离AirtestIDE怎么驱动Firefox&#xff08;VScode为例&#xff09;。看完本文零基础小白也能学会Firefox浏览器自动化测试&#xff01;&#xff01;&#xff01; 2. 如何使用AirtestIDE驱动Firefox…

地铁大数据客流分析系统 设计与实现 计算机竞赛

文章目录 1 前言1.1 实现目的 2 数据集2.2 数据集概况2.3 数据字段 3 实现效果3.1 地铁数据整体概况3.2 平均指标3.3 地铁2018年9月开通运营的线路3.4 客流量相关统计3.4.1 线路客流量排行3.4.2 站点客流量排行3.4.3 入站客流排行3.4.4 整体客流随时间变化趋势3.4.5 不同线路客…

【JavaEE】计算机是如何工作的

计算机是如何工作的 冯诺依曼体系操作系统操作系统的概念与定位进程和任务操作系统对进程的管理PCB 的相关信息 冯诺依曼体系 现代的大多数计算机, 都遵循冯诺依曼体系 CPU 中央处理器: 进行算术运算和逻辑判断存储器: 分为外存和内存, 用于存储数据(使用二进制方式存储)输入…

最新Tuxera NTFS2024破解版mac读写NTFS磁盘工具

Tuxera NTFS for Mac是一款Mac系统NTFS磁盘读写软件。在系统默认状态下&#xff0c;MacOSX只能实现对NTFS的读取功能&#xff0c;Tuxera NTFS可以帮助MacOS 系统的电脑顺利实现对NTFS分区的读/写功能。Tuxera NTFS 2024完美兼容最新版本的MacOS 11 Big Sur&#xff0c;在M1芯片…

为什么重写 equals() 就一定要重写 hashCode() 方法

equals方法 这个 equals 方法是 String 这个类里面的实现。 从代码中可以看到&#xff0c;当调用 equals 比较两个对象的时候&#xff0c;会做两个操作&#xff1a; 用号比较两个对象的内存地址&#xff0c;如果地址相同则返回 true 否则&#xff0c;继续比较字符串的值&…

改委强化电力需求侧管理,缓解电力系统峰值压力-安科瑞黄安南

摘要&#xff1a;近年来全国用电负荷特别是居民用电负荷的快速增长&#xff0c;全国范围内夏季、冬季用电负荷“双峰”特征日益突出&#xff0c;恶劣气候现象多发增加了电力安全供应的压力。具有随机性、波动性、间歇性特征的可再生能源大规模接入电网对电力系统的稳定性带来新…

【公众号开发】如何写出第一个公众号开发程序 · 动态自定义自动回复

【公众号开发】&#xff08;1&#xff09; 文章目录 【公众号开发】&#xff08;1&#xff09;1. 获得一个测试号2. 公众号开发原理3. 创建开发者服务器4. 内网穿透5. 验证开发者服务器的url5.1 公众号服务器对url发送get请求5.2 消息的验证逻辑5.3 代码实现 6. 接受并解析用户…

Java数字处理类-- Math类--数学运算

在Java中提供了一个执行数学基本运算的Math类,该类包括了常用的数学运算方法和常量&#xff0c;包括【三角函数方法】&#xff0c;【指数函数方法】&#xff0c;【取整函数方法】、【取最大值函数方法】、【取最小值函数方法】、【取平均值函数方法】、【对数函数方法】&#x…

C# Onnx Yolov8 Detect 路面坑洼检测

效果 项目 代码 using Microsoft.ML.OnnxRuntime; using Microsoft.ML.OnnxRuntime.Tensors; using OpenCvSharp; using System; using System.Collections.Generic; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms;namespace Onnx…

使用 VS Code 作为 VC6 的编辑器

使用 VS Code 作为 VC 6.0 的编辑器 由于一些众所周知的原因&#xff0c;我们不得不使用经典&#xff08;过时&#xff09;的比我们年龄还大的已有 25 年历史的 VC 6.0 来学习 C 语言。而对于现在来说&#xff0c;这个经典的 IDE 过于简陋&#xff0c;并且早已不兼容新的操作系…

kubernetes(2)

pod管理 应用部署 上传测试镜像 [rootk8s1 docker]# docker push reg.westos.org/library/myapp:v1 [rootk8s1 docker]# docker push reg.westos.org/library/myapp:v2创建自助式pod&#xff08;生产不推荐&#xff09; [rootk8s2 ~]# kubectl run demo --imagemyapp:v1[ro…

iZotope RX 10for Mac /Windows- 音频修复的终极解决方案

随着音乐和电影制作的复杂性日益增加&#xff0c;高质量的音频修复变得越来越重要。iZotope RX 10&#xff0c;作为业界公认的专业音频修复软件&#xff0c;为你提供了强大、精确的工具&#xff0c;让你的声音变得清晰、纯净。 在音频修复领域&#xff0c;iZotope RX 10凭借其…

【vue3】组件间通讯

1.上级传给下级 父级组件&#xff1a; <ReqTab ref"crontabRef" hide"openCronfalse" fill"crontabFill" :expression"expression" :method"method" ></ReqTab> 函数中赋值&#xff1a; 子组件&#xff1a; …

IP协议(上)

目录 一、初步认识IP协议 二、认识IP地址 三、协议报头格式 1.报头和有效载荷分离 2.20字节的固定数据 四、网段划分 1.一个小例子 2.认识IP地址的划分 3.数据的传输过程 4.特殊的IP地址 5.通信运营商 &#xff08;1&#xff09;通信运营商的作用 &#xff08;2&a…

Unity可视化Shader工具ASE介绍——9、整理节点让复杂的Shader条理更清晰

阿赵的Unity可视化Shader工具ASE介绍目录 大家好&#xff0c;我是阿赵。   继续介绍Unity可视化Shader编辑工具ASE。上一篇介绍UI特效Shader的时候&#xff0c;连接了一个Shader 这个shader不是很复杂&#xff0c;但看起来也有点乱七八糟的。接下来通过对这个shader的节点连…

微信小程序设计之主体文件app-json-pages

一、新建一个项目 首先&#xff0c;下载微信小程序开发工具&#xff0c;具体下载方式可以参考文章《微信小程序开发者工具下载》。 然后&#xff0c;注册小程序账号&#xff0c;具体注册方法&#xff0c;可以参考文章《微信小程序个人账号申请和配置详细教程》。 在得到了测…