当前位置: 首页 > news >正文

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

在这里插入图片描述

目录

  • 简介
  • 工作重点
  • 方法
    • 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。

相关文章:

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

目录 简介工作重点方法ASA, adaptive anchor assignmentFAM-3D, 3D feature alignment moduleGMM, Gaussian Mixture Model实施细节 实验与SOTA的比较消融实验 总结 简介 题目&#xff1a;《Consistent-Teacher: Towards Reducing Inconsistent Pseudo-targets in Semi-supervi…...

设计模式:观察者模式(C#、JAVA、JavaScript、C++、Python、Go、PHP)

简介&#xff1a; 观察者模式&#xff0c;它是一种行为型设计模式&#xff0c;它允许一个对象自动通知其依赖者&#xff08;观察者&#xff09;状态的变化。当被观察者的状态发生改变时&#xff0c;它会通知所有的观察者对象&#xff0c;使他们能够及时做出响应。在观察者模式…...

kotling构造函数

Kotlin-继承与构造函数 - 简书 (jianshu.com) Kotlin语言中的继承与构造函数&#xff08;详解&#xff09;_kotlin 继承 构造函数_young螺母的博客-CSDN博客...

SpringMVC - 详解RESTful

文章目录 1. 简介2. RESTful的实现3.HiddenHttpMethodFilter4. RESTful案例1、准备工作2、功能清单3、具体功能&#xff1a;访问首页a>配置view-controllerb>创建页面 4、具体功能&#xff1a;查询所有员工数据a>控制器方法b>创建employee_list.html 5、具体功能&a…...

html表格标签

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title> </head> <body><!--表格table 行 tr 列 td --> <table border"1px"><tr> <!--colsp…...

Node.JS---npm相关

文章目录 前言一、package.json配置项version&#xff1a;1.0.0devDependenciesdependenciespeerDependenciesoptionalDependencies 二、npm命令1、npm config listxmzs使用2、npm installpackage-lock.json作用 3、npm run4、 查看全局安装的可执行文件 npm生命周期npxnpx简介…...

Flutter的Don‘t use ‘BuildContext‘s across async gaps警告解决方法

文章目录 问题有问题的源码 问题原因问题分析Context的含义BuildContext的作用特殊情况 解决方法 问题 Flutter开发中遇到Don’t use BuildContext’s across async gaps警告 有问题的源码 if (await databaseHelper.isDataExist(task.title)) {showDialog(context: context,…...

Nginx 实战教程

本篇博客我会演示日常的工作中&#xff0c;我们是怎么利用nginx部署项目的。我们以部署一套前后分离的项目为本次讲述的内容 一、搭建后端项目 创建一个最简单的springboot项目&#xff1a; 只需要依赖一个web模块即可&#xff1a; 提供一个api接口&#xff0c;可以获取服务端…...

Web自动化——python

文章目录 1.八大元素定位2.元素基本操作3.浏览器常用操作4.获取元素信息的常用方法5.鼠标和键盘相关操作6.元素等待1.隐式等待2.显示等待 7.下拉选择框8.弹出框9.滚动条操作10.frame表单的切换11.多窗口切换12.窗口截图、验证码处理 1.八大元素定位 元素属性定位&#xff1a;id…...

华为OD 整数最小和(100分)【java】A卷+B卷

华为OD统一考试A卷+B卷 新题库说明 你收到的链接上面会标注A卷还是B卷。目前大部分收到的都是B卷。 B卷对应20022部分考题以及新出的题目,A卷对应的是新出的题目。 我将持续更新最新题目 获取更多免费题目可前往夸克网盘下载,请点击以下链接进入: 我用夸克网盘分享了「华为O…...

正则表达式:文本处理中的瑞士军刀

正则表达式是用于提取字符串规律的规则&#xff0c;通过特定语法表达&#xff0c;以匹配符合该规律的字符串。它具有通用性&#xff0c;不仅适用于Python&#xff0c;也可用于其他编程语言。 下面我用Python的re模块来进行实战演示&#xff1a;&#xff08;记得import re&…...

WebSocket 入门案例

目录 WebSocket入门案例WebSocket-server新增项目:添加依赖:yml:启动类&#xff1a; frontend-server前端项目&#xff1a;添加依赖&#xff1a;添加yml&#xff1a;启动类&#xff1a;前端引入JS:前端页面&#xff1a;后端代码&#xff1a;测试&#xff1a; WebSocket 入门案…...

华为OD 最大社交距离(100分)【java】A卷+B卷

华为OD统一考试A卷+B卷 新题库说明 你收到的链接上面会标注A卷还是B卷。目前大部分收到的都是B卷。 B卷对应20022部分考题以及新出的题目,A卷对应的是新出的题目。 我将持续更新最新题目 获取更多免费题目可前往夸克网盘下载,请点击以下链接进入: 我用夸克网盘分享了「华为O…...

Nginx缓存

Nginx缓存 一般情况下系统用到的缓存有三种 服务端缓存&#xff1a;缓存存在后端服务器&#xff0c;如redis 代理缓存&#xff1a;缓存存储在代理服务器或中间件&#xff0c;内容从后端服务器获取&#xff0c;保存在本地 客户端缓存&#xff1a;缓存在浏览器 [ ] 什么时候会出现…...

Pyecharts绘图教程(2)—— 绘制多种折线图(Line)参数说明+代码实战

文章目录 &#x1f3af; 1 简介&#x1f3af; 2 图表配置项2.1 导入模块2.2 数据配置项2.3 全局配置项 &#x1f3af; 3 代码实战3.1 基础折线3.2 平滑曲线&#xff08;is_smooth&#xff09;3.3 阶梯折线&#xff08;is_step&#xff09;3.4 空值过渡&#xff08;is_connect_n…...

oracle实现搜索不区分大小写

<if test"code ! null and code ! ">and upper(code) like upper(%${code}%) </if>关键字upper...

C++中->与.的区别

在类中 在 C 中&#xff0c;-> 和 . 都可以用于访问类的成员变量和成员函数。但它们在使用上有一些区别&#xff1a; 1. 对于指针类型的对象&#xff0c;必须使用 -> 来访问其成员&#xff1b;而对于非指针类型的对象&#xff0c;则需要使用 . 。 2. -> 运算符在实…...

大语言模型(LLM)综述(二):开发大语言模型的公开可用资源

A Survey of Large Language Models 前言3. RESOURCES OF LLMS3.1 公开可用的模型CheckPoints或 API3.2 常用语料库3.3 库资源 前言 随着人工智能和机器学习领域的迅速发展&#xff0c;语言模型已经从简单的词袋模型&#xff08;Bag-of-Words&#xff09;和N-gram模型演变为更…...

【vSphere 8 自签名证书】企业 CA 签名证书替换 vSphere Machine SSL 证书Ⅳ—— 替换默认证书

目录 博文摘要6. 使用企业 CA 签发的 SSL 证书 替换 vSphere 默认 SSL 证书6.1 确认证书文件6.2 替换默认 vSphere 证书6.3 验证自签名证书6.4 补充说明 关联博文参考资料 博文摘要 博文主要描述了在 vCenter Server 8 上通过实用工具 certificate-manager 将 vSphere 默认 Ma…...

NI9234 4 通道, ±5 V, 24 位软件可选 IEPE 和 AC/DC模拟输入模块振动测试国产替代

NI的自动化测试和测量系统将助您打破桎梏&#xff0c;化不可能为可能。让我们携手合作&#xff0c;选择最适合您的硬件、软件和服务组合&#xff0c;为您提供全副武装&#xff0c;助您成就非凡。 购买NI的产品或服务&#xff0c;并非只是单纯的一次性交易行为。如果您有任何疑…...

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...

7.4.分块查找

一.分块查找的算法思想&#xff1a; 1.实例&#xff1a; 以上述图片的顺序表为例&#xff0c; 该顺序表的数据元素从整体来看是乱序的&#xff0c;但如果把这些数据元素分成一块一块的小区间&#xff0c; 第一个区间[0,1]索引上的数据元素都是小于等于10的&#xff0c; 第二…...

DockerHub与私有镜像仓库在容器化中的应用与管理

哈喽&#xff0c;大家好&#xff0c;我是左手python&#xff01; Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库&#xff0c;用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...

Day131 | 灵神 | 回溯算法 | 子集型 子集

Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a; 笔者写过很多次这道题了&#xff0c;不想写题解了&#xff0c;大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...

SCAU期末笔记 - 数据分析与数据挖掘题库解析

这门怎么题库答案不全啊日 来简单学一下子来 一、选择题&#xff08;可多选&#xff09; 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘&#xff1a;专注于发现数据中…...

vscode(仍待补充)

写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh&#xff1f; debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...

2024年赣州旅游投资集团社会招聘笔试真

2024年赣州旅游投资集团社会招聘笔试真 题 ( 满 分 1 0 0 分 时 间 1 2 0 分 钟 ) 一、单选题(每题只有一个正确答案,答错、不答或多答均不得分) 1.纪要的特点不包括()。 A.概括重点 B.指导传达 C. 客观纪实 D.有言必录 【答案】: D 2.1864年,()预言了电磁波的存在,并指出…...

在Ubuntu中设置开机自动运行(sudo)指令的指南

在Ubuntu系统中&#xff0c;有时需要在系统启动时自动执行某些命令&#xff0c;特别是需要 sudo权限的指令。为了实现这一功能&#xff0c;可以使用多种方法&#xff0c;包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法&#xff0c;并提供…...

ElasticSearch搜索引擎之倒排索引及其底层算法

文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现录音机应用

1. 项目配置与权限设置 1.1 配置module.json5 {"module": {"requestPermissions": [{"name": "ohos.permission.MICROPHONE","reason": "录音需要麦克风权限"},{"name": "ohos.permission.WRITE…...