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

news2024/12/26 14:57:28

在这里插入图片描述

目录

  • 简介
  • 工作重点
  • 方法
    • 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检测器变得无偏,并逐渐改善模型性能。大量的实验证明了我们方法的有效性。

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

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

相关文章

光栅化渲染:可见性问题和深度缓冲区算法

在前面第二章中&#xff0c;我们了解到&#xff0c;在投影点&#xff08;屏幕空间中的点&#xff09;的第三个坐标中&#xff0c;我们存储原始顶点 z 坐标&#xff08;相机空间中点的 z 坐标&#xff09;&#xff1a; 当一个像素与多个三角形重叠时&#xff0c;查找三角形表面上…

几本学习中整理和面试的PDF,以及精选面试资料

今天和大家分享我在学习过程中整理的笔记&#xff0c;以及我在准备面试中&#xff0c;阅读的PDF&#xff0c;包括Spring Cloud学习手册、Docker学习手册、RabbitMQ学习手册、Spring 6手册、Maven手册、22w字面试手册等等&#xff0c;包括了大部分后端技术以及大部分高频面试题&…

【Maven】加载 Maven 项目报错 status code: 501, reason phrase: HTTPS Required (501)

问题描述 加载 Maven 项目报错&#xff0c;错误信息如下&#xff1a; status code: 501, reason phrase: HTTPS Required (501)尝试使用 -U 标记(强制更新快照)运行 Maven 导入原因分析 这个错误通常表示 Maven 在尝试从远程仓库下载依赖时遇到了 HTTPS 必需的错误。 解决方…

苹果电脑双开

1.第一步&#xff1a;在应用程序中找到微信 复制一个副本出来 2.第二步:打开复制的《微信副本》 右键打开 – 显示包内容 3.第三步:Contents - info.plist 后右键 打开方式 选择 文本编辑 4.第四步&#xff1a;找到查找和替换 这一段com.tencent.xinWeChat 后面是修改 com.tenc…

极新AIGC行业峰会 | 圆桌对话:探索中国AGI迭代之路

“AGI正处在一个巨大的研发范式革命的起点。” 整理 | 周梦婕 编辑 | 小白 出品&#xff5c;极新 2023年11月28日&#xff0c;极新AIGC行业峰会在北京东升国际科学院拉开帷幕&#xff0c;峰会上午的圆桌环节由凡卓资本合伙人王梦菲主持&#xff0c;深势科技战略副总裁何雯…

R语言对医学中的自然语言(NLP)进行机器学习处理(1)

什么是自然语言(NLP)&#xff0c;就是网络中的一些书面文本。对于医疗方面&#xff0c;例如医疗记录、病人反馈、医生业绩评估和社交媒体评论,可以成为帮助临床决策和提高质量的丰富数据来源。如互联网上有基于文本的数据(例如,对医疗保健提供者的社交媒体评论),这些数据我们可…

Reactor线程模型详解

文章目录 传统的阻塞式 I/OReactor 模式单 Reactor 单线程单Reactor多线程主从Reactor多线程 在目前的线程模型中一种是传统阻塞的I/O模型&#xff0c;一种是Reactor线程模型。 传统的阻塞式 I/O 为了同时处理多个客户端的请求&#xff0c;服务端为每一个连接都会分配一个新的…

Freemarker基本语法与案例讲解

&#x1f389;&#x1f389;欢迎来到我的CSDN主页&#xff01;&#x1f389;&#x1f389; &#x1f3c5;我是Java方文山&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; &#x1f31f;推荐给大家我的专栏《SpringBoot》。&#x1f3af;&#x1f3af; &…

搭建消息时光机:深入探究RabbitMQ_recent_history_exchange在Spring Boot中的应用【RabbitMQ实战 二】

&#x1f38f;&#xff1a;你只管努力&#xff0c;剩下的交给时间 &#x1f3e0; &#xff1a;小破站 搭建消息时光机&#xff1a;深入探究RabbitMQ_recent_history_exchange在Spring Boot中的应用 引言前言第一&#xff1a;开启插件支持第二&#xff1a;springboot整合第三&am…

分类预测 | Matlab实现DBO-SVM蜣螂算法优化支持向量机的数据分类预测【23年新算法】

分类预测 | Matlab实现DBO-SVM蜣螂算法优化支持向量机的数据分类预测【23年新算法】 目录 分类预测 | Matlab实现DBO-SVM蜣螂算法优化支持向量机的数据分类预测【23年新算法】分类效果基本描述程序设计参考资料 分类效果 基本描述 1.Matlab实现DBO-SVM蜣螂算法优化支持向量机的…

基于FPGA的HDMI编码模块设计(包含工程源文件)

前文已经通过FPGA实现了TMDS视频编码的算法&#xff0c;也对单沿数据采样转双沿数据采样的ODDR原语做了详细讲解和仿真验证&#xff0c;本文将这些模块结合&#xff0c;设计出HDMI编码模块&#xff0c;在HDMI接口的显示器上显示一张图片。 1、整体思路 如图1所示&#xff0c;是…

大数据机器学习与深度学习——过拟合、欠拟合及机器学习算法分类

大数据机器学习与深度学习——过拟合、欠拟合及机器学习算法分类 过拟合&#xff0c;欠拟合 针对模型的拟合&#xff0c;这里引入两个概念&#xff1a;过拟合&#xff0c;欠拟合。 过拟合&#xff1a;在机器学习任务中&#xff0c;我们通常将数据集分为两部分&#xff1a;训…

Mybatis代理对象是如何生成的

Mybatis源码解析 - mapper代理对象的生成&#xff0c;你有想过吗&#xff0c;我们讲到了mybatis操作数据库的流程&#xff1a;先创建SqlSessionFactory&#xff0c;然后创建SqlSession&#xff0c;然后再创建获取mapper代理对象&#xff0c;最后利用mapper代理对象完成数据库的…

jmeter配置使用(mac)

前言 这篇文件就是一个笔记&#xff0c;非mac用户不用看了&#xff0c;我这是换了mac&#xff0c;要用jmeter的倒腾。 一、下载 二、使用步骤 1.解压 tgz格式的直接用tar命令就行 tar -zxvf 包名2.启动 一种是进入解压包的bin目录启动 这种方式启动的就是命令框不能关闭&am…

Python实现多种图像锐化方法:拉普拉斯算子和Sobel算子

Python实现多种图像锐化方法&#xff1a;拉普拉斯算子和Sobel算子 图像和视频逐渐成为人们生活中信息获取的重要来源&#xff0c;而图像和视频在传输过程中有很多因素可能造成图像模糊&#xff0c;比如不正确的聚焦会产生离焦模糊&#xff0c;景物和照相机的相对运动会造成运动…

(开源)2023工训大赛智能垃圾分类项目(可循环播放视频,显示垃圾分类信息,拍照识别,垃圾分类,满载报警,压缩)

省赛:由于这个比赛是两年一届&#xff0c;并未做足充分的准备&#xff0c;但是通过一定的单片机基础&#xff0c;加上速成能力&#xff0c;也就是熬夜学&#xff0c;通过疯狂的网络搜索&#xff0c;在省赛第5 入选国赛 下面来简单介绍一下我们作品&#xff1a; 主控&#xff1…

代码随想录算法训练营第二十四天(回溯算法篇)|理论基础

结束了二叉树的篇章&#xff0c;我们进入到回溯啦&#xff01; 学习资料&#xff1a;代码随想录 (programmercarl.com) 理论基础 回溯算法又称回溯搜算算法&#xff0c;是一种搜索方法。 作为递归的“副产品”&#xff0c;只要右递归的地方就会有对应的回溯的过程。 回溯算…

Git命令大全:从基础到高级应用

目录 一、增加/删除文件 1.1 添加文件到暂存区 1.2 添加所有文件到暂存区 1.3 从暂存区移除文件 1.4 从版本库和工作区删除文件 二、代码提交 2.1 提交暂存区文件到本地仓库 2.2 修改最后一次提交信息 三、本地分支 3.1 创建新分支 3.2 切换分支 3.3 创建并切换到新分支 3.4 删…

微信小程序:布局样式

效果 wxml <view class"layout"><view class"left"><view>1</view><view>1</view><view>1</view><view>1</view><view>1</view></view><view class"right"&…

计算机毕业设计 基于Web的城市旅游网站的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…