Paper Reading: (ACRST) 基于自适应类再平衡自训练的半监督目标检测

在这里插入图片描述

目录

  • 简介
  • 工作重点
  • 方法
    • CropBank
    • FBR
    • AFFR
    • Two-stage Pseudo-label Filtering
  • 实验
    • 与SOTA比较
    • 消融实验

简介

题目:《Semi-Supervised Object Detection with Adaptive Class-Rebalancing Self-Training》,AAAI’22, 基于自适应类再平衡自训练的半监督目标检测
日期:2021.7.11(v1),2022.6.28(AAAI’22)
单位:清华大学
论文地址:https://arxiv.org/abs/2107.05031
GitHub:-

作者
在这里插入图片描述
在这里插入图片描述

王斌,清华大学软件学院副教授,个人主页:https://binwangthss.github.io/
在这里插入图片描述

  • 摘要

本研究深入研究了半监督对象检测(SSOD),以通过额外的未标记数据来提高检测器性能。最近,通过自我训练实现了最先进的SSOD表演,其中训练监督由GT和伪标签组成。在目前的研究中,我们观察到SSOD中的类失衡严重阻碍了自我训练的有效性。为了解决类不平衡问题,我们提出了一种新的内存模块CropBank的自适应类再平衡自训练(ACRST)。ACRST使用从CropBank中提取的前景实例自适应地重新平衡训练数据,从而缓解类不平衡。由于检测任务的高度复杂性,我们观察到自训练和数据再平衡在SSOD中都受到噪声伪标签的影响。因此,我们提出了一种新的两阶段滤波算法来生成准确的伪标签。我们的方法在MS-COCO和VOC基准方面取得了令人满意的改进。当在MS-COCO中仅使用1%的标记数据时,我们的方法比监督基线提高了17.02mAP,与最先进的方法相比提高了5.32mAP。


大多数真实世界的检测数据集都有偏差的类分布,其中很少的类占据了大多数实例,即前景前景不平衡,如图1(a)所示。而且,为了获得准确的伪标签,自我训练采用了高置信度阈值。该方案导致检测数据中前景实例分布稀疏,即前景-背景不平衡(见图1(b))
在这里插入图片描述

Fig1:1%COCO标准中伪标签的类不平衡。GT是标记数据的真实标签,伪标签由教师模型生成。

(a) 前景前景失衡在伪标签中加剧。 (b)前景背景失衡。在Faster RCNN中,背景实例在伪标签的训练目标中占主导地位。

针对这两个问题提出了,前景背景再平衡(FBR)和自适应前景前景再平衡(AFFR)

然而,如图2所示,伪标签的准确性是不可取的(Recall明显低于ACC?)。为了获得准确的伪标签,参考半监督的多标签学习(SSMLL)模块,该模块提供与原始检测置信阈值互补的图像级约束。

v1:因此,我们利用额外的高级语义来过滤有噪声的伪标签。提出了一种半监督多标签分类模块,用于为未标记的数据生成图像级伪标签。

设计了一个两阶段的过滤机制来过滤掉在分类置信度或多标签预测(v1:图像级伪标签)中激活负的伪标签

在这里插入图片描述

Fig2:1%COCO-standard中每类伪标签的准确性和召回率

工作重点

我们设计了一个名为CropBank的新型存储模块,用于区分检测数据中的前/背景和前/前景实例。通过CropBank,我们进一步提出了自适应类再平衡自我训练(ACRST),以解决SSOD中的前景-背景和前景-前景不平衡问题。

提出了一个半监督多标签分类模块来从未标记的数据中挖掘高级语义。然后,我们提出了一种具有分类置信度和高级语义的两阶段伪标签过滤机制。该机制在伪标签去噪中是有效的,从而进一步促进FBR和AFFR。

所提出的数据再平衡和伪标签过滤算法对于任何基于自训练的SSOD框架来说都是即插即用的。此外,CropBank提供了一种有效的检测专用数据增强算法。

方法

为了解耦这些纠缠,我们引入了一种名为CropBank的新型内存模块,用于在标记/未标记的数据中存储前景实例的GT/伪标签。利用CropBank,我们提出了两种特定于检测的数据再平衡算法:前景背景再平衡(FBR)和自适应前景前景再平衡(AFFR)。将原来的自我训练范式扩展到基于FBR和AFFR的自适应类再平衡自我训练(ACRST)

FBR解决SSOD中的前背景不平衡问题。FBR首先根据CropBank中存储的GT/伪标签从整个数据集中提取前景实例。此后,前景实例被增强并粘贴到训练图像中的随机位置。利用合成数据,FBR可以提高训练目标中前景实例的比例,缓解前景-背景的不平衡。

针对前景不平衡问题,提出了基于FBR的前景自适应再平衡(AFFR)算法。特别地,我们设计了一个称为伪召回的新标准来判断一个类在SSOD中是否被忽视或过度关注。此后,由于较高的负置信度,被忽略类的伪标签被更频繁地采样。因此,整个数据集的前景重新平衡,从而导致在随后的自我训练中为在线伪标记提供最小偏差检测器。

在这里插入图片描述

图3:我们的半监督对象检测框架概述。教师模型从弱增广的未标记数据生成伪标签,学生模型在具有基本事实和伪标签组合的强增广数据上进行训练。为了缓解SSOD中的类不平衡,我们首先设计了一个名为CropBank的内存模块。然后,将前景-背景再平衡(FBR)和自适应前景-前景再平衡(AFFR)应用于基于CropBank的自适应类再平衡自训练(ACRST)。我们还提出了一种两阶段伪标签过滤(TPF)方法和一种选择性监督方案,以帮助ACRST并生成准确的伪标签。

  • Loss
    在这里插入图片描述

CropBank

CropBank由两个子库组成,即Label CropBank在这里插入图片描述
和Pseudo CropBank在这里插入图片描述
,其中NL/NU表示Label /Pseudo CropBank的大小,yli / yui表示第i个标记 / 未标记图像的gt / 伪标签

在训练阶段,ΦL一旦生成就被固定,而ΦU在相互训练中用改进的伪标签定期更新。我们使用CropBank作为解耦实例的基础,并设计自适应类再平衡自训练(ACRST)来解决类不平衡问题。

CropBank的构成是少量的GT和大量的伪标签

FBR

foreground-background Rebalancing,前景-背景重平衡

给定训练mini batch 在这里插入图片描述
,我们根据采样分布P从每个图像xi的CropBank ΦL和ΦU中获取前景实例在这里插入图片描述
的集合,其中cj是从具有注释yj的原始图像中裁剪的前景实例。此后,如下生成新的训练mini batch在这里插入图片描述
在这里插入图片描述

α:粘贴对象的二进制掩码,ymixi:表示混合注释,xmixi:表示混合图像

cj:基于CropBank中的实例级注释从图像中裁剪的矩形区域

在训练期间,cj被扩充并随后被粘贴到xi的随机位置。这种组合过程增加了前景实例在训练数据中的比例,用于前景-背景重平衡,还从整体角度探索了基本的上下文语义。混合图像准备好后,我们将它们作为Mean Teacher的管道来训练检测器。再平衡过程如图4所示。

在这里插入图片描述

AFFR

Adaptive foreground-foregroundRebalancing,自适应前景前景重平衡

在自我训练过程中被忽视的类中的样本被更频繁地选择。为了测量每一类的被忽略程度,我们提出了一个新的标准伪召回(PR)对于每个类别k,我们根据经验使用低阈值(0.1)来过滤噪声预测

使用PR,我们设计了一种自适应样本策略:在这里插入图片描述

μk:选择类k的实例的概率,k:类别的数量。β:用于调整样本概率。

其中的PRk是累积来自教师检测器的针对每个前景实例的检测置信度:

在这里插入图片描述

ski:第i个伪标签的检测置信度。

PR定义了一个类在SSOD中被忽略的程度。高的PRk表明检测器对类k是肯定的,甚至是过度自信的。因此,应该将较低的样本概率分配给类k中的样本,以避免过度拟合。低PRk意味着检测器对检测类k的实例缺乏信心。因此,在随后的训练中应该更频繁地选择这些实例。

当类别被类似地忽略时,较低的PR被自适应地分配给尾部类别,并引起人们对它们越来越多的关注。PR的定义不依赖于任何未标记数据的先验信息。

该机制自适应地将较高/较低的采样率分配给被忽略/过度聚焦的实例。AFFR和FBR同时执行。


(v1版本)

提出了一种用于前景前景重平衡的自适应采样概率分布P。在训练过程中,被忽略类中的样本被更频繁地选择。为了衡量一类的被忽视程度,我们提出了一个新的标准pseudo recall伪召回(PR),它量化了伪标签与gt的比例。详细地,我们根据标记数据和未标记数据之间的分布相似性,从标记数据中估计未标记数据的类分布。假设数据集中有K个类{1,2,…K}。我们将第k类的伪召回计算为:

在这里插入图片描述

Nku / Nkl:第k类的伪标签和gt的数量

r:未标记数据与标记数据的比率

定义了在SSOD设置下一个类被忽略的程度。高PRk表明检测器对类k是肯定的,甚至是过度自信的。因此,应将较低的采样概率分配给类k中的样本,以减轻过度拟合。相反,低PRk意味着检测器对检测k类实例缺乏信心。因此,我们应该经常选择这些实例。

作为一种解决方案,我们根据伪召回按降序对类进行排序,并设计以下自适应采样策略:

在这里插入图片描述

μk:选择第k类实例的概率,β:用于调整采样概率

该机制自适应地将较高/较低的采样率分配给被忽略/过度聚焦的实例。

这种机制的一个潜在问题是,被忽略类中的伪标签的噪声被放大。因此,提出了一种两阶段伪标签过滤机制


Two-stage Pseudo-label Filtering

两阶段伪标签过滤,pipeline中杏黄和砖红的模块,黄色就是最基础的置信度过滤,红的标明的是高阶语义过滤,其实就是设置一个图像级伪标签,看成一个多标签分类问题,预测图像级伪标签的置信度并进行过滤

  • 半监督多标签分类

    针对分类任务,提出了基于Mean Teacher的半监督多标签分类模块。对于每个图像xi,预测其图像级伪标签vi={lk}Kk=1,lk∈{0,1},其中k是总类别数,lk确定图像中是否存在类k的实例。在训练阶段,教师模型的预测被转换为监督学生模型的图像级伪标签。我们利用焦点-二进制-交叉熵(focal–binary–cross-entropy)损失来优化学生模型。

    与SSOD相比,SSMLL是一个容易得多的辅助任务,并且能够为两阶段伪标签选择生成可靠的参考。请注意,我们还扩展了ACRST以缓解SSMLL中的类不平衡,并且由于步骤更少、输入大小更小和框架更简化,SSMLL的总训练只需要SSOD的1/5分之一的时间。

  • 两阶段伪标签过滤

    对于来自教师模型的预测,我们采用两阶段伪标签过滤方案来获得 置信度得分为s的精确伪标签和图像级伪标签v。在第一阶段, 去除得分为s<τcls 的预测,以获得具有高对象性的伪标签。在第二阶段,去除具有在v中激活为负的类的预测(即激活值小于τml),以获得具有正确类标签的伪标签。请注意,我们使用消极而不是积极的多标签作为参考,因为消极学习比积极学习具有更高的准确性和回忆力。

  • 选择性监督

    虽然之前SSOD研究中的边界框回归损失(Liu et al.2021)由于回归不准确而被消除,但它们对我们的框架是有益的。我们将成功归功于CropBank,它减轻了部分检测到的实例的噪声,这些实例在有偏差的预测中占很大比例(在1%COCO标准中为81.2%)。使用这些嘈杂的伪标签盲目学习将严重恶化模型性能。然而,在我们的工作中,当从CropBank中部分检测到的实例被裁剪并粘贴到其他图像时,它们在新的背景中变得独立和完整,从而为回归学习提供了额外的准确监督。

    在选择性监督的情况下,方程5中的损失函数Lunsup可以表示如下:

在这里插入图片描述

~ yiss:表示源自xiu的CropBank中的实例

实验

  • dataset:MS-COCO和PASCAL VOC

  • 实验细节

    使用带FPN的Faster RCNN和ResNet50,并在Detectron2的基础上构建我们的框架

    标记和未标记图像的批量大小均为32。我们使用SGD优化器,lr=0.01,动量率=0.9。

    设定λema=0.9996,τcls=0.7,λunsup=4。设置β=0.6,τml=0.2。

    对于0.5/1/2/5/10%COCO标准,预训练需要3000/5000/5000/10000步,总训练需要180000步。

    对于VOC,预培训需要5000步,总训练需要72000步。

    我们对强增强应用颜色抖动、高斯模糊和剪切,对弱增强应用随机调整大小和翻转、剪切。广泛使用的mAP(AP50:95)用作比较的度量。

    对于SSMLL,标记图像和未标记图像的批量大小均为64。

    对于VOC/COCO-standard/COCO-addition,预训练需要2k/2k/6k步,总训练需要18k/36k/96k步,使用lr=1e-5的Adam优化器。数据扩充与SSOD相同,但图像的大小调整为576*576。

    v1:

    backbone:FPN Faster RCNN和ResNet-50

    ResNet-50使用ImageNet预训练的权重进行初始化。我们设置超参数λunsup=2,β=2。对于两阶段伪标签滤波,我们使用分类置信阈值τcls=0.7和多标签置信阈值τml=0.2。我们使用AP50:95,即mAP作为评估指标。我们用所有训练设置的32个标记图像和32个未标记图像构建每个训练批次。

    对于COCO-standard,0.5/1/2/5/10%的COCO-standard的预训练阶段为2500/5000/10000/20000/40000步,整个COCO标准训练阶段为180000步。对于COCOadditional,预训练阶段需要90000个步骤,总共需要270000个训练步骤。

    对于VOC07和12,预训练阶段需要12000步,整个训练阶段需要36000步。

与SOTA比较

在这里插入图片描述

表1:在1%到10%的COCO-standard中与SOTA比较实验结果

在这里插入图片描述

表2:COCO-addition和0.5%COCO-standard与SOTA的比较。

在这里插入图片描述

表3:VOC07&12中与SOTA的比较实验结果。

消融实验

在这里插入图片描述

表4:1%COCO-standard下的消融实验。

来自具有大随机样本范围的Labeled和Pseudo-CropBank的采样实例实现了最高的mAP。

在这里插入图片描述

表5:CropBank和样本范围的消融实验。
第k类的数量?

当β=0时,AFFR相当于均匀样品,并降解为FBR。当β=0.6较大时,AFFR可提供1.04mAP的性能提升。注意,当β=0.4或β=0.8时,AFFR获得了类似的增益,这些结果证明了AFFR对唯一的超参数β不敏感

在这里插入图片描述

表6:AFFR中不同β值的结果。

如图4(a)所示,在FBR之后,前景实例的分布得到了重新平衡。

图4(b)表明,当使用AFFR时,KL散度从0.00024降低到0.00013。这一结果进一步证实了AFFR在处理伪标签中的前景-前景不平衡和生成无偏数据分布方面的有效性。

在这里插入图片描述

图4:FBR(a)和AFFR(b)的消融实验。

Fig5:(a) 具有/不具有两阶段伪标签过滤的伪标签的框精度。(b) 在有/没有选择性监督(SS)的情况下,伪标签和GT之间的框mIoU。

如图5(b)所示,选择性监督不断提高伪标签的mIoU。虽然选择性监督是利用SSOD中部分检测到的伪标签的有效方法,但仍有改进的空间。例如,当对象在伪标签中相互重叠时,当前策略无法处理噪声。

在这里插入图片描述

图5:1%COCO-standard中Box准确性和Box mIoU的伪标签改进。

最常见和最罕见类别的消融研究。我们对所提出的模块对图中过度聚焦(最频繁)/被忽视(最罕见)类别的影响进行了另一项消融研究。图6(a)和(b)表明,两阶段伪标签滤波(TPF)和ACRST在过聚焦/忽略类上都表现良好。如(b)所示,ACRST在具有AFFR的被忽略类上实现了显著的改进,而基线在最稀有的类中出现了性能下降。

在这里插入图片描述

图6:TPF和ACRST对1%COCO标准中被忽视/过度关注类的影响。

在STAC框架上的消融

在这里插入图片描述

表7:1%COCO-standard上的STAC的消融实验

为了验证CropBank的有效性,我们在表8中提供了来自Instant Teaching的结果(Zhou et al.2021)和不同的数据扩充。

在这里插入图片描述

在1%COCO-standard的不同数据扩充下的Instant Teaching性能。

具有不同τml和相应SSOD性能的半监督多标签学习(SSMLL)的结果。如表9所示,SSMLL生成准确的图像级伪标签,SSOD性能对τml不敏感。

当使用0.7阈值时,正图像水平的伪标签不太准确,准确度为0.740,召回率为0.325。

在这里插入图片描述

表9:1%COCO-standard上图像级负伪标签的准确性和召回率。

阐明了使用否定伪标签而不是肯定伪标签作为参考的原因。我们提供了三种设置的结果:(1)单阶段:过滤检测置信度低的预测。(2) 两阶段过滤:对检测置信度低或激活图像级伪标签中的负样本预测进行过滤。(3) 两阶段挖掘:保留具有高检测置信度的预测或激活图像级伪标签中的正样本预测。

在这里插入图片描述

表10:1%COCO-standard伪标签的模型性能、准确性和召回率

  • Conclusion

本研究提出了一种简单而有效的ACRST来解决SSOD中的阶级失衡问题。通过CropBank,ACRST显著缓解了FBR和AFFR的前景-背景和前景-前景失衡。为了进一步改进FBR和AFFR,我们设计了一种具有检测置信度和高级语义的两阶段伪标签过滤算法。经过对重新平衡的训练数据的迭代,SSOD检测器变得无偏,并逐渐改善模型性能。大量的实验证明了我们方法的有效性。

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

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

相关文章

快递鸟「物流导盲犬」助力鞋服头部企业客户全链路物流数字化升级

数字化时代&#xff0c;企业全域经营已成为数字商业新浪潮&#xff0c;多店铺多平台多仓库同步发货成为经营常态&#xff0c;消费者对物流服务体验的要求越来越高&#xff0c;企业对物流精细化管理的需求也越来越强烈。快递鸟基于对物流数字化领域的深耕和对行业及客户需求的深…

电流模式的PWM控制电路D3846- -大电流输出 内置欠压锁定电路 软启动电路

D3846是一块电流模式的PWM控制电路。 主要特点&#xff1a; ● 自动前馈补偿 ● 可编程控制的逐个脉冲限流功能 ● 推挽输出结构^ 下自动对称校正 ● 负载响应特性好 ● 可并联运行&#xff0c;适用于模块系统 ● 内置差动电流检测放大器&#xff0c; 共模输入范围宽 ● 双脉…

【有限元仿真】or【流体仿真】

流体和刚体的关系&#xff1f; 刚体仿真关注刚性物体的运动和力学行为。刚体是指在外力作用下保持形状和结构不变的物体&#xff0c;不受弯曲或拉伸的影响。刚体仿真基于刚体力学原理和刚体运动学方程&#xff0c;模拟刚体的运动、转动、碰撞等行为。它可以用于模拟刚体之间的…

Linux主机自动注册NPS客户端(脚本化)

参考官方对API使用方法的定义&#xff1a;https://ehang-io.github.io/nps/#/ 1、首先必须要在配置文件中开启 auth_key 并配置一个合适的密钥 2、修改脚本中的可变量参数&#xff0c;以适配自己的环境 #!/bin/bash # 脚本使用说明&#xff1a;# 脚本名称&#xff1a;npc_cr…

浏览器中的Python:Brython

简介 将 Python 代码转换为 JavaScript&#xff0c;使我们能够在浏览器中编写和运行 Python 代码。可以实现python和js代码相互调用。基于Python 3 实现&#xff0c;支持HTML5环境&#xff08;提供了DOM对象和事件接口&#xff09;。支持turtle绘图库&#xff0c;可以进行图像…

常用的系统存储过程

exec sp_databases ---列出服务器上所有的数据库信息 exec sp_help student ---查看学生表中的所有信息 exec sp_renamedb Myschool,MySchools ---更改数据库的名称 需要两个参数 一个是原来数据库的名称 一个是要改为的数据库名称 消息框显示&#xff1a;数据库 名称 MyS…

QT -CloudViewer工具

QT -CloudViewer工具 一、演示效果二、关键程序三、程序下载 一、演示效果 二、关键程序 void CloudViewer::doOpen(const QStringList& filePathList) {// Open point cloud file one by onefor (int i 0; i ! filePathList.size(); i) {timeStart(); // time startmycl…

年度巅峰对决:实在智能斩获36氪WISE2023未来商业之王!

近日&#xff0c;36氪「WISE2023商业之王大会」在北京盛大举办&#xff0c;「WISE2023商业之王 年度企业系列名册」随之正式重磅发布&#xff0c;实在智能作为中国AI准独角兽和RPA行业头部企业、超自动化解决方案提供商&#xff0c;凭借较强的综合实力登榜并荣获“WISE2023 未来…

Android蓝牙协议栈fluoride(六) - 设备管理(bt application)

在Android蓝牙协议栈fluoride(五) - 设备管理(bt application)中描述了设备管理中的API、状态机以及事件处理&#xff0c;接下来将描述设备管理中的功耗管理和上报到上层的事件。 功耗管理 连接策略 蓝牙设备有很大比例都是带电池的产品&#xff0c;那么功耗的高低直接决定了…

位1的个数

题目链接 位1的个数 题目描述 注意点 输入必须是长度为 32 的 二进制串 解答思路 位运算判断每一位是否为1 代码 public class Solution {// you need to treat n as an unsigned valuepublic int hammingWeight(int n) {int res 0;for (int i 0; i < 32; i) {res …

Java并发编程基础总结

进程和线程概念 什么进程 进程是系统运行的基本单位&#xff0c;通俗的理解我们计算机启动的每一个应用程序都是一个进程。如下图所示&#xff0c;在Windows中这一个个exe文件&#xff0c;都是一个进程。而在JVM下&#xff0c;每一个启动的Main方法都可以看作一个进程。 什么…

.Net Reactor 使用心得

主密钥是干嘛的&#xff1f; 1 若要创建有效的许可证文件&#xff0c;必须使用与用于生成受.NET Reactor保护的输出相同的主密钥来创建许可证。 2 主密钥是在创建项目时生成的&#xff01;必须保存该项目才能保留原始密钥。 dll而不是exe 由于使用的是.net6 生成的代码。 …

极智项目 | 实战烟雾火焰检测

欢迎关注我的公众号 [极智视界]&#xff0c;获取我的更多项目分享 大家好&#xff0c;我是极智视界&#xff0c;本文来介绍 实战烟雾火焰检测。 本文介绍的 实战烟雾火焰检测项目&#xff0c;提供完整的可以一键执行的项目工程源码&#xff0c;获取方式有两个&#xff1a; (1…

【离散数学】——期末刷题题库(欧拉图和哈密顿图)

&#x1f383;个人专栏&#xff1a; &#x1f42c; 算法设计与分析&#xff1a;算法设计与分析_IT闫的博客-CSDN博客 &#x1f433;Java基础&#xff1a;Java基础_IT闫的博客-CSDN博客 &#x1f40b;c语言&#xff1a;c语言_IT闫的博客-CSDN博客 &#x1f41f;MySQL&#xff1a…

Springboot整合阿里云短信服务

目录 1.注册登录用户 2.点击AccessKey管理&#xff0c;开通使用子用户AccessKey 2.1点击进入AccessKey管理 2.2点击用户创建用户 2.3选择控制台创建 2.4权限修改 3.短信服务 4.创建Springboot项目使用SDK 4.1创建一个springboot项目 4.2导入阿里云短信Maven依赖 4.3…

唇彩行业分析:我国彩妆细分品类市场占比63%

唇部彩妆是指在唇部起到化妆修饰作用的产品&#xff0c;包括口红/唇膏、唇蜜/唇彩/唇釉、唇笔/唇线笔、唇泥四大类。总体来看&#xff0c;目前我国唇部彩妆细分品类主要集中在唇膏/口红、唇蜜/唇彩/唇釉。唇笔/唇线笔市场接受程度较低&#xff0c;这是由于唇笔/唇线笔的主要成分…

shell脚本定时自动备份mysql数据库和mysql恢复数据

1、设置一些测试的数据 创建一个database&#xff0c;一些tables和一些数据 create database test_bom default charset utf8 collate utf8_general_ci; use test_bom;create table users( id int not null primary key auto_increment, name varchar(64) not null, password…

通俗易懂:插入排序算法全解析(C++)

插入排序算法是一种简单直观的排序算法&#xff0c;它的原理就像我们玩扑克牌时整理手中的牌一样。下面我将用通俗易懂的方式来解释插入排序算法的工作原理。 假设我们手上有一副无序的扑克牌&#xff0c;我们的目标是将它们从小到大排列起来。插入排序算法的思想是&#xff0…

web实习三_JavaScript编程

编写 JavaScript 程序实现 输出“九九乘法表”&#xff08; 左下三角形形式 &#xff09;。 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, …

qiankun中子系统变化透传到主系统调用主系统方法

1、首先在主系统中qiankun启动前把变动的参数初始化 2、初始化之后就可以通过全局状态通信把参数透传为全局 3、在微应用子系统main.js的qiankun的mount中获取到全局设备参数属性并是设置为子系统全局 4、在微应用子系统中需要去调主系统方法时就在那个地方改变透传过来的参数 …