《Invariant Feature Learning for Generalized Long-Tailed Classification》阅读笔记

论文标题

《Invariant Feature Learning for Generalized Long-Tailed Classification》

广义长尾分类的不变特征学习

作者

Kaihua Tang、Mingyuan Tao、Jiaxin Qi、Zhenguang Liu 和 Hanwang Zhang

来自南洋理工大学、阿里达摩院和浙江大学

初读

摘要

  • 属性不平衡(attribute-wise imbalance)

    现有的长尾分类(Long-Tailed classification,LT)方法只关注解决头部类别比尾部类别拥有更多样本的类不平衡问题(class-wise imbalance),但忽视了属性不平衡(attribute-wise imbalance)

    • 实际上,即使类别平衡,由于属性的多样性,每个类别内的样本仍可能呈现长尾分布。
    • 注意,后者在本质上比前者更为普遍和具有挑战性,因为对于大多数数据集来说,属性不仅不是隐式的,而且具有组合复杂性,因此平衡它们将耗费巨大。
  • 广义长尾分类(Generalized Long-Tailed classification,GLT)

    因此,我们引入了一个新颖的研究问题:广义长尾分类(Generalized Long-Tailed classification,GLT),以同时考虑这两种不平衡。

    • 所谓“广义”,我们指的是 GLT 方法应自然解决传统的 LT 问题,但反之则不然。
      • 不出所料,我们发现大多数类不平衡的 LT 方法在我们提出的两个基准测试:ImageNetGLT 和 MSCOCO-GLT 中表现退化。
    • 我们认为这是因为它们过分强调调整类别分布,而忽视了学习属性不变特征
  • 不变特征学习(Invariant Feature Learning,IFL)

    为此,我们提出了一个**不变特征学习(Invariant Feature Learning,IFL)**方法,作为 GLT 的第一个强基线。

    • IFL 首先从不完美的预测中发现具有不同类内分布的环境,然后学习它们之间的不变特征。
    • 令人鼓舞的是,作为一个改进的特征主干,IFL 提升了所有的 LT 阵容:一阶/二阶重新平衡(one/two-stage re-balance)、增强(augmentation)和集成(ensemble)。
  • 代码和基准测试可在GitHub上找到:https://github.com/KaihuaTang/Generalized-Long-Tailed-Benchmarks.pytorch。

结论

  • 我们引入了一个新颖的广义长尾(GLT)分类问题,通过在真实世界数据集中大规模引入属性不平衡的特性,完成了之前基于类别的长尾分类,这深入解释了每个类别内长尾性能的原因以及分类过程中存在的伪相关性的存在
  • 在提出的两个基准测试 ImageNet-GLT 和 MSCOCO-GLT 上的实验表明,仅使用类别调整的先前 LT 算法的限制,以及 GLT 中表征学习的重要性。
  • 为此,我们提出了不变特征学习(IFL)作为 GLT 的第一个强基线。
    • IFL 采用度量损失来鼓励在具有多样化属性分布的环境中学习不变特征。
    • 作为一个改进的特征主干,IFL 与大多数先前的 LT 算法正交。在将 IFL 应用到传统的 LT 阵容中:一阶段/二阶段重新平衡、增强和集成之后,IFL 在提出的 GLT 基准测试的所有协议下提升了它们的性能。

再读

Section 1 Introduction

  • 主流方法:调整类别不平衡比率

    • 长尾分类(Long-Tailed classification,LT)在现实世界的训练中是不可避免的,因为长尾分布在大规模数据中普遍存在,并且通常来说,对抗这种自然分布进行平衡是非常昂贵的。

      • 例如,在图 1(a)中,一个常见类别如“狗”的样本数量显著多于一个稀少类别如“熊猫”。

        在这里插入图片描述

        • 图片注解:图 1:(a) 真实世界的长尾分布在类别和属性上都不平衡;
    • 主流的 LT 方法本质上是基于调整类别不平衡比率:

      • 给定一个倾向于将尾部类别误分为头部类别的偏置分类器,我们抑制头部类别的置信度同时提升尾部类别的置信度,这样得到的分类器对头部和尾部类别都是公平的。
  • 类别内属性的长尾分布

    • 然而,我们想要指出的是,LT 挑战不能仅仅通过类别不平衡来简单刻画。
    • 如果我们仔细观察图 1(a)中每个类别内的样本,我们可以发现每个类别内的属性也是长尾分布的。这种属性不平衡(attribute-wise)以两种方式削弱了分类器的鲁棒性
      • 一是它损害了具有尾部属性图像的准确性,例如,人类类别中的少数群体成员比多数群体更容易被误分类,尽管事实上他们来自同一个头部类别;
      • 二是它导致某些属性被错误地与特定类别相关联,例如,头部类别“拖拉机”的图像通常在“田野”上捕获,所以当一个尾部对象如“收割机”也在“田野”上捕获时,它被误分类为“拖拉机”的风险要高得多,这一点在我们的公式(1)和图2(b)的可视化中得到了支持。
      • 因此,属性不平衡进一步解释了同一类别内性能不一致的原因以及伪相关性的存在。
  • 广义长尾分类(Generalized LongTailed classification,GLT)

    • 类别不平衡难以完全消除:

      • 实际上,即使类别不平衡完全消除,如图 1(b)所示,其属性不平衡仍然存在并损害了泛化能力。

        在这里插入图片描述

        • 图片注解:图 1:(b) 即使我们平衡了 MSCOCO-Attribute 的类别分布,属性仍然是长尾分布。
      • 此外,严格平衡属性不仅是不切实际的,而且由于属性的无穷多种多标签组合,这几乎是不可能的,这使得属性不平衡与类别不平衡有着根本的不同。

    • 为此,我们提出了一个新任务:广义长尾分类(Generalized LongTailed classification,GLT),以统一来自类别不平衡和属性不平衡的挑战。

    • 为了社区中进行严格和可复现的评价,我们在第 3 节中详细介绍,我们引入了两个基准测试,ImageNet-GLT 和 MSCOCO-GLT,以及三种协议,以评估模型对类别长尾、属性长尾及其联合效应的鲁棒性。

  • LT 方法都无法解决 GLT

    • 不出所料,我们发现几乎所有现有的 LT 方法都无法解决 GLT 中的属性不平衡问题(参见第5节)。原因有两方面:

      • 一是它们依赖于类别调整,这需要访问类别统计特征以重新平衡。不幸的是,在 GLT 中属性特征是隐藏的,其发现本身就是一个具有挑战性的开放问题。

      • 二是如图 2 所示,交叉熵基线(偏置分类器)倾向于将尾部样本预测为具有相似属性的头部类别,导致头部类别的精确度低(low precision)和尾部类别的准确度低(low accuracy)。

        在这里插入图片描述

        • 图片注解:图 2:在 ImageNet-GLT 中,典型的 LT 方法 (b) LWS 与 (a) 有偏差的交叉熵基线在精度和准确度之间进行权衡,而提议的 © IFL 则同时改善了这两个指标。我们按照 [34, 22] 的方法,根据类别频率将类别分为 “多”(Many)、“中”(Medium)和 “少”(Few)。图像特征的 t-SNE 进一步说明,IFL 特征减少了 "拖拉机 "和 "收割机 "之间因共享属性 "田地 "而产生的混淆区域。
    • LT 方法的成功主要基于提升尾部类别边界以增加样本数量,从而提高尾部准确度。然而,这种调整只是在精确度-准确度权衡上操作,在特征空间中留下了相似属性的混淆区域未改变,而提出的 GLT 要求算法忽略那些混淆属性。

  • 不变特征学习(Invariant Feature Learning,IFL)

    • 为此,在第4节中,我们引入了一个名为不变特征学习(Invariant Feature Learning,IFL)的框架,以解决属性不平衡问题,并作为 GLT 的第一个强基线。

    • 我们的动机基于一个合理的假设:

      • 由于类别特征对其属性是不变的,例如,“狗”始终是狗,无论其属性如何变化,属性的变化是导致每个类别内预测置信度降低的主要原因。
      • 请注意,损坏的图像超出了本文的范围,因为它们没有任何有效的标签。
    • 具体操作:

      • 因此,我们使用每个训练样本的当前分类置信度作为类别内属性不平衡的指标:置信度越低,属性越稀有。
      • 然后,我们根据反转的置信度采样一个新的环境。与原始环境一起,我们获得了每个类别具有多样化属性分布的两个环境。
      • 最后,为了消除属性不平衡的影响,我们设计了一个度量学习损失,将中心损失扩展到其不变风险最小化(Invariant Risk Minimization,IRM)版本,这使得模型具有学习对属性不变类别特征的能力。
    • 效果:

      • 如图2(c)所示,IFL 通过减少特征空间中属性的混淆区域,在 GLT 下提高了精确度和准确度。
      • 此外,IFL 作为一个改进的特征主干,可以无缝地整合到其他 LT 方法中。特别是,我们发现仅通过使用样本增强,如 MixUp 或 RandAug,IFL 就可以超越大多数 LT 方法。
      • 我们还注意到,LT 方法最近的进展,它们声称能同时提高头部和尾部的性能,实际上归功于解决属性不平衡问题——它们应该通过 GLT 得到更公平的评价。
  • 本文贡献

    我们的贡献可以总结如下:

    • 我们提出了一个新的挑战性任务:广义长尾分类(GLT),以及两个基准:ImageNet-GLT 和 MSCOCO-GLT。要解决 GLT,需要同时解决传统的类别不平衡和长期被忽视的属性不平衡。
    • 我们开发了不变特征学习(IFL)作为第一个强大的 GLT 基线。其有效性表明,学习属性不变特征是一个有前景的方向。
    • 通过广泛的实验,我们展示了 IFL 在 GLT 基准上改进了所有流行的 LT 阵容:一阶段/两阶段重新平衡(one/two-stage re-balance)、增强(augmentation)和集成(ensemble)。

Section 2 Related Work

  • 长尾分类(Long-Tailed Classification)
    • 长尾分类旨在在类别平衡评估下,提高给定类别长尾训练数据的性能。
    • 先前的方法可以分为三类:
      1. 一阶段/两阶段重新平衡算法(one/two-stage re-balancing algorithms)基于显式类别分布应用统计调整来纠正尾部类别偏差;
      2. 数据增强(data augmentation)要么独立增强所有样本,要么将头部信息传递到尾部;
      3. 集成(ensemble)是最近被探索作为同时改善头部和尾部类别的策略。
    • 传统的 LT 分类本质上是所提出 GLT 的一个特例,因为解决 GLT 自然会改善 LT,但反之则不然。
  • 领域适应(Domain Adaptation,DA)和分布外泛化(Out-of-distribution Generalization,O-ODG)
    • 领域适应和分布外泛化是两个相关的任务。
    • DA 旨在将模型从源领域转移到目标领域。DA 与 GLT 的区别在于我们不需要目标领域的样本子集。最近的研究也注意到 LT 与 DA 之间的内在联系。
    • 在 OODG 中,我们希望在一个领域训练的机器在任何领域都能工作良好。
      • 最近的研究表明,如果不做任何假设,这个问题无法解决。
      • 因此,根据假设的类型,OODG 可以分为 DA,领域泛化,长尾分类,零样本/少样本学习,甚至对抗性鲁棒性。
      • 我们的 GLT 也可以被视为比 LT 更一般的 OODG 的一个特例。
  • 属性不平衡(Attribute-wise Imbalance)
    • 属性不平衡本身也是一个长期的研究领域,被称为困难样本挖掘,子群体偏移,伪相关性等。
    • 同时,这些领域中的相应方法也可能启发 GLT 的未来研究,例如,EIIL,GEORGE 和 SDB 可以用来构建更好的环境或基线。
    • 与这些领域相比,提出的 GLT 基准为类别不平衡和属性不平衡提供了统一的公式和基准。

Section 3 Generalized Long-Tailed Classification

广义长尾分类

  • 先前的 LT 方法将分类模型公式化为 p ( Y ∣ X ) p(Y |X) p(YX),从输入图像 X X X 预测标签 Y Y Y,这可以进一步分解为 p ( Y ∣ X ) ∝ p ( X ∣ Y ) ⋅ p ( Y ) p(Y|X)\propto p(X|Y)\cdot p(Y) p(YX)p(XY)p(Y)。这种公式化将类别偏差的原因识别为 p ( Y ) p(Y) p(Y),因此可以通过 Logit Adjustment 优雅地解决。
  • 然而,这种公式化基于一个强烈的假设,即 p ( X ∣ Y ) p(X|Y) p(XY) 的分布在不同的领域中不会改变,即 p train ( X ∣ Y ) = p test ( X ∣ Y ) p_\text{train}(X|Y)=p_\text{test}(X|Y) ptrain(XY)=ptest(XY),这在现实世界的应用中无法保证。
  • 接下来,我们将深入分析为什么这种过于简化的观点无法解释所有偏差。

3.1 Problem Formulation

问题表述

  • 为分类模型中引入偏差

    • 最近的研究表明,对象 X X X 的图像可以通过其类别和一系列属性来完全描述或生成。也就是说,每个 X X X 都是由一组潜在的 ( z c , z a ) (z_c, z_a) (zc,za) 生成的,其中类特定的组件 z c z_c zc 是使鲁棒分类存在的不变因素,而与属性相关的变量 z a z_a za 是具有不一致分布的领域特定知识。

      • 在这篇论文中, z c z_c zc z a z_a za 分别代表所有类特定组件和变异属性,但在接下来的示例中,为了简化,我们使用一个变量来表示它们,例如, z c = 羽毛 z_c=羽毛 zc=羽毛 z a = 棕色 z_a=棕色 za=棕色
    • 这种公式化只假设了特征子集 z c z_c zc 的不变性,而不是整个 X X X,即 p train ( z c ∣ Y ) = p test ( z c ∣ Y ) p_\text{train}(z_c|Y)=p_\text{test}(z_c|Y) ptrain(zcY)=ptest(zcY)。因此,我们可以遵循贝叶斯定理将分类模型 p ( Y ∣ X ) = p ( Y ∣ z c , z a ) p(Y|X)=p(Y|z_c,z_a) p(YX)=p(Yzc,za) 转换为以下公式:
      p ( Y = k ∣ z c , z a ) = p ( z c ∣ Y = k ) p ( z c ) ⋅ p ( z a ∣ Y = k , z c ) p ( z a ∣ z c ) ⏟ 属性偏差 ⋅ p ( Y = k ) ⏞ 类偏差 , ( 1 ) p(Y=k|z_c,z_a)=\frac{p(z_c|Y = k)}{p(z_c)}\cdot\underbrace{\frac{p(z_a|Y=k,z_c)}{p(z_a|z_c)}}_{属性偏差}\cdot\overbrace{p(Y=k)}^{类偏差},\qquad\qquad(1) p(Y=kzc,za)=p(zc)p(zcY=k)属性偏差 p(zazc)p(zaY=k,zc)p(Y=k) 类偏差,(1)

      • 其中,不变组件 z c z_c zc 仅取决于 Y Y Y
      • 描述性属性 z a z_a za 在实例间变化可能取决于 Y Y Y z c z_c zc
      • 我们通常考虑 p ( z c , z a ) = p ( z a ∣ z c ) ⋅ p ( z c ) p(z_c, z_a)=p(z_a|z_c)\cdot p(z_c) p(zc,za)=p(zazc)p(zc),而不引入任何独立性假设。
      • 请注意,我们也不强加完美的特征向量 z = [ z c ; z a ] \boldsymbol{z}=[z_c;z_a] z=[zc;za] 可以获得的解耦假设,因为解耦本身就是一个具有挑战性的任务。否则,我们只需要进行简单的特征选择来获得理想的分类模型。
    • 我们需要用方程式(1)来替代简单的 p ( Y ∣ X ) p(Y |X) p(YX) 的原因是:

      • 与那些确实需要 z c z_c zc z a z_a za 的任务(例如,图像字幕生成或分割任务)不同,分类任务仅仅依赖于图像 X X X 的类特定组件 z c z_c zc,而与其变化的属性 z a z_a za 无关。
      • 因此,前一个公式 p ( Y ∣ X ) p(Y|X) p(YX) 通过忽略 z c z_c zc z a z_a za 在分类过程中的不同角色,过于简化了问题。
  • 类别偏差(Class Bias)

    • 在类别级别的长尾(LT)中, p ( Y ) p(Y) p(Y) 的分布被认为是性能下降的主要原因。由于 p ( Y ) p(Y) p(Y) 可以从训练数据中明确计算出来,大多数先前的 LT 方法直接通过类别调整或重新平衡来减轻其影响。
    • 然而,它们未能回答以下问题:
      • 为什么每个类别内的性能也是长尾的,以及
      • 为什么尾部图像倾向于被错误地分类为具有相似属性的某些头部类别。
  • 属性偏差(Attribute Bias)

    上述方程式(1)通过引入由长尾 z a z_a za 引起的属性偏差,扩展了先前的 LT 公式化,这不仅解释了每个类别内性能不一致的原因,还展示了伪相关性如何损害预测。直观来说,

    • 对于类别内变异,如果一个属性“白色”/“棕色”的类特定组件“羽毛”在“鸽子”类别中比其他类别更常见/罕见,例如, p ( z a = b r o w n ∣ Y = d o v e , z c = f e a t h e r ) p ( z a = b r o w n ∣ z c = f e a t h e r ) < p ( z a = w h i t e ∣ Y = d o v e , z c = f e a t h e r ) p ( z a = w h i t e ∣ z c = f e a t h e r ) \frac{p(z_a=brown|Y=dove,z_c=feather)}{p(z_a=brown|z_c=feather)}<\frac{p(z_a=white|Y=dove,z_c=feather)}{p(z_a=white|z_c=feather)} p(za=brownzc=feather)p(za=brownY=dove,zc=feather)<p(za=whitezc=feather)p(za=whiteY=dove,zc=feather),那么具有棕色羽毛的鸽子的置信度将低于具有白色羽毛的鸽子,根据方程式(1),即, p ( Y = d o v e ∣ z c = f e a t h e r , z a = b r o w n ) < p ( Y = d o v e ∣ z c = f e a t h e r , z a = w h i t e ) p(Y=dove|z_c=feather, z_a=brown)<p(Y=dove|_zc=feather, z_a=white) p(Y=dovezc=feather,za=brown)<p(Y=dovezc=feather,za=white)
    • 类似地,对于伪相关性,如果一个“田野”背景在“拖拉机”类别中比其他具有相同类特定组件“轮子”的车辆更常见,它将创建“田野”和“拖拉机”类别之间的错误相关性感知,即, p ( z a = f i e l d ∣ Y = t r a c t o r , z c = w h e e l ) p ( z a = f i e l d ∣ z c = w h e e l ) ≫ 1 \frac{p(z_a=field|Y=tractor,z_c=wheel)}{p(z_a=field|z_c=wheel)}\gg1 p(za=fieldzc=wheel)p(za=fieldY=tractor,zc=wheel)1,导致其他具有“轮子”的车辆在“田野”背景下的图像盲目地具有更大的 p ( Y = t r a c t o r ∣ z c = w h e e l , z a = f i e l d ) p(Y=tractor|z_c=wheel,z_a=field) p(Y=tractorzc=wheel,za=field),例如,将“田野中的收割机”预测为“拖拉机”。
  • 广义长尾分布(Generalized Long-Tailed Distribution)

    • 提出的 GLT 断言,在实际世界的大规模数据集中,传统的类别分布和长期被忽视的属性分布都是长尾的。然而,大多数先前的 LT 基准测试,如 ImageNet-LT、长尾 CIFAR-10/-100 或 iNaturalist,只能评估类别偏差,低估了属性偏差在长尾挑战中的作用。
    • 为了更好地研究同时解决这两个偏差的无偏见模型,我们引入了以下两个 GLT 基准测试和三种评估协议。

3.2 GLT Benchmarks and Evaluation Protocols

GLT 基准和评估规程

  • 在本节中,我们为提出的 GLT 挑战设计了两个基准测试,ImageNet-GLT 和 MSCOCO-GLT,

    • 其中 ImageNet-GLT 是 ImageNet 的长尾版本,而 MSCOCO-GLT 则是由 MSCOCO-Attribute 构建的。
    • 尽管 MSCOCO-Attribute 中包含显式的属性注释,但在训练过程中我们禁止访问它们,以使算法更具通用性。毕竟,属性并不总是被详尽注释。
    • 同时,ImageNet 和其他大多数数据集一样,没有任何属性注释,因此我们使用一个预训练模型在每个类别内将图像特征聚类成多个“预训练属性”。这些聚类可以因此作为隐性属性的注释。
  • 为了系统地诊断方程式(1)中的两种偏差,每个基准测试进一步组织成以下三种评估协议:

    • 类别长尾(Class-wise Long Tail,CLT)协议:

      • 与传统的 LT 相同,我们首先采用一个类别和属性长尾的训练集,称为 Train-GLT,可以从 ImageNet 和 MSCOCOAttribute 中使用类别长尾分布轻松采样。
        • 我们不需要故意确保属性长尾,因为它是任何现实世界数据集中的普遍和不可避免的现象,例如,MSCOCO-Attribute 中的分布如图 1 (b) 所示。
      • 相应的 Test-CBL,在每个类别内独立采样,是一个类别平衡和属性长尾的测试集。具有相同属性分布和不同类别分布的 (TrainGLT, Test-CBL) 组合可以评估对类别长尾的鲁棒性。
    • 属性长尾(Attribute-wise Long Tail,ALT)协议:

      • 这个协议的训练集 Train-CBL 每个类别的图像数量相同,通过在每个类别内独立采样图像来保持原始的长尾属性分布,因此其偏差仅来自属性。

      • 同时,Test-GBL 作为 GLT 任务最重要的评估环境,必须平衡类别和属性分布。如图 3 所示,Test-GBL 对于 ImageNet-GLT 从每个“预训练属性”(即特征聚类)和每个类别中随机采样相同数量的图像。

        在这里插入图片描述

        • 图片注解:图 3:如何在拟议的两个基准中平衡 Test-GBL 评估环境的属性分布示例
      • 对于 MSCOCO-GLT,Test-GBL 稍微复杂一些,因为每个对象都有多个属性,这使得严格平衡属性分布变得不可能。因此,我们选择每个类别中具有最小属性标准差的固定大小的子集作为 Test-GBL。只要 Test-GBL 在属性上相对于 Train-CBL 更加平衡,它就可以作为 ALT 协议的有效测试集。

      • 总的来说,(Train-CBL, Test-GBL) 具有相同的类别分布和不同的属性分布。

    • 广义长尾(Generalized Long Tail,GLT)协议:

      • 这个协议结合了上述的 (Train-GLT, Test-GBL),因此从训练到测试,类别和属性分布都发生了变化。
      • 作为长尾挑战的广义评估协议,只有当最终模型同时很好地解决了类别偏差和属性偏差时,算法才能获得令人满意的结果。

Section 4 Invariant Feature Learning

不变特征学习

  • 流行的 LT 研究主要关注设计平衡的分类器,因为方程式(1)中的 p ( Y = k ) p(Y=k) p(Y=k) 不依赖于输入特征。然而,正如我们在第 3 节中讨论的,我们提出的新属性偏差是由于提取了不受欢迎的 z a z_a za,所以被忽视的特征学习是关键。因此,所提出的方法旨在学习一个改进的特征主干,这对于之前的平衡分类器是互补的。

  • 正如我们在第 3 节中讨论的,方程式(1)中的属性偏差项提出了两个问题:

    • 每个类别内 p ( Y ∣ z c , z a ) p(Y|z_c,z_a) p(Yzc,za) 的不一致性能,以及
    • 非稳健属性与类别之间的伪相关性。

    为了应对这些问题,我们提出了不变特征学习(IFL),该方法将中心损失从原始的经验风险最小化(ERM)扩展到不变风险最小化(IRM)版本,迫使主干专注于学习一组环境之间不变的特征。

  • IFL 的推理是,所有环境中的 p ( z c ∣ Y = k ) p ( z c ) \frac{p(z_c|Y=k)}{p(z_c)} p(zc)p(zcY=k) 是一致的,而 p ( z a ∣ Y = k , z c ) p ( z a ∣ z c ) \frac{p(z_a|Y=k,z_c)}{p(z_a|z_c)} p(zazc)p(zaY=k,zc) 不是。如果 Y = k Y=k Y=k 的图像在所有环境中具有相同的特征中心,这意味着提取的特征与不变的 z c z_c zc 更为相关,而不是 z a z_a za。该框架在图 4 中总结。

    在这里插入图片描述

    • 图片注解:图4:所提出的 IFL 方法,首先根据每个类别的预测置信度应用不同的采样策略,然后将它们结合起来构建具有多样化属性分布的环境,最后通过 IFL 度量损失学习对环境变化不变的特征。

4.1 Environment Construction

环境构建

  • 环境构建指示器:

    • 在用普通交叉熵损失进行几个周期的预热后,我们得到了一个具有不完美预测的初始模型。
    • 由于在给定的类别 Y = k Y=k Y=k 内, p ( z c ∣ Y = k ) p ( z c ) \frac{p(z_c|Y=k)}{p(z_c)} p(zc)p(zcY=k) p ( Y = k ) p(Y = k) p(Y=k) 是常数,因此 p ( Y = k ∣ z c , z a ) p(Y=k|z_c,z_a) p(Y=kzc,za) 的变化直接与 p ( z a ∣ Y = k , z c ) p ( z a ∣ z c ) \frac{p(z_a|Y=k,z_c)}{p(z_a|z_c)} p(zazc)p(zaY=k,zc) 成正比。这允许我们使用在真实类别 p ( Y = k ∣ X in  k ) p(Y=k|X\ \text{in}\ k) p(Y=kX in k) 上的预测置信度作为训练集中采样多样化属性分布的指示器(更多讨论见附录)。
    • 如图4所示,使用相同的采样策略从每个类别收集的样本将被组合在一起,形成训练集中的不同环境 E \mathcal{E} E。每个采样策略都有独特的 p ( z a ∣ Y = k , z c ) p ( z a ∣ z c ) \frac{p(z_a|Y=k,z_c)}{p(z_a|z_c)} p(zazc)p(zaY=k,zc) 分布。在训练阶段,这些环境会定期更新。
  • 双环境:

    一般来说,两个环境被认为足以学习对环境变化的稳健性,这也得到了我们在表 4 上的实验支持。

    • 具体来说,一个环境直接在每个类别内部均匀采样每个实例,即简单的独立同分布(i.i.d.)采样。
    • 另一个环境是基于 ( 1 − p ( Y = k ∣ z c , z a ) ) β (1−p(Y=k|z_c,z_a))^\beta (1p(Y=kzc,za))β 进行采样,其中 β \beta β 通过过采样 20 % 20\% 20% p ( Y = k ∣ z c , z a ) p(Y=k|z_c,z_a) p(Y=kzc,za) 最小的类别 Y = k Y=k Y=k 的图像,以达到新环境中类别 Y = k Y=k Y=k 80 % 80\% 80% 数量,遵循帕累托原则。

算法的伪代码在附录中提供。

4.2 IFL Metric Loss

IFL 评估损失

  • 在获得一组多样化的训练环境 E \mathcal{E} E 后,所提出的 IFL 的目标可以被表述为以下优化问题:
    min ⁡ θ , w ∑ e ∈ E ∑ i ∈ e L c l s ( f ( x i e ; θ ) , y i e ; w ) , subject to  θ ∈ arg ⁡ min ⁡ θ ∑ e ∈ E ∑ i ∈ e ∣ ∣ f ( x i e ; θ ) − C y i e ∣ ∣ 2 , ( 2 ) \begin{align} \min_{\theta,w}\sum_{e\in\mathcal{E}}\sum_{i\in e}L_{cls}(f(x^e_i;\theta),y^e_i;w),\\ \text{subject to}\ \theta\in\arg\min_\theta\sum_{e\in\mathcal{E}}\sum_{i\in e}||f(x^e_i;\theta)−C_{y^e_i}||_2, \end{align}\qquad\qquad(2) θ,wmineEieLcls(f(xie;θ),yie;w),subject to θargθmineEie∣∣f(xie;θ)Cyie2,(2)

    • 其中 θ \theta θ w w w 分别是主干和分类器的可学习参数; ( x i e , y i e ) (x^e_i,y^e_i) (xie,yie) 是训练环境 e ∈ E e\in\mathcal{E} eE 中的第 i i i 个(图像,标签)对;
    • f ( x i e ; θ ) f(x^e_i;\theta) f(xie;θ) 是从 x i e x^e_i xie 提取特征的主干; L c l s ( f ( x i e ; θ ) , y i e ; w ) L_{cls}(f(x^e_i;\theta),y^e_i;w) Lcls(f(xie;θ),yie;w) 是交叉熵损失;
    • C y i e C_{y^e_i} Cyie E \mathcal{E} E 中所有环境中相应类别 y i e y^e_i yie 的平均特征。
      • 为了提高效率,我们采用中心损失法将 C y i e C_{y^e_i} Cyie 作为移动平均线。
  • 上述方程式(2)旨在通过分类损失 L c l s L_{cls} Lcls 优化模型,同时约束所有环境内类别内特征的变异也最小化,以抑制导致非稳健 p ( z a ∣ Y = k , z c ) p ( z a ∣ z c ) \frac{p(z_a|Y=k,z_c)}{p(z_a|z_c)} p(zazc)p(zaY=k,zc) z a z_a za 的学习。因此,整体的训练目标被定义为 L = L c l s + α ⋅ L I F L L=L_{cls}+\alpha\cdot L_{IFL} L=Lcls+αLIFL

    • 其中 L I F L = ∣ ∣ f ( x i e ; θ ) − C y i e ∣ ∣ 2 L_{IFL} =||f(x^e_i;\theta)−C_{y^e_i}||_2 LIFL=∣∣f(xie;θ)Cyie2 是一个度量损失,确保上述约束,
    • α \alpha α 是折衷参数。
  • 作为中心损失的广义 IRM 版本,所提出的 IFL 显著提高了从单个环境使用的 ERM 对应物的 GLT 性能。这是因为类别中心在长尾属性下也存在偏差,因此原始的中心损失不可避免地会低估具有稀有属性的图像。更多的实验分析在 Section 5.4 中给出。

Section 5 Experiments

5.1 Datasets and Metrics

数据集和衡量标准

  • ImageNet-GLT

    • ImageNet-GLT 是 ImageNet 的长尾版本,其中 CLT 和 GLT 协议共享相同的长尾训练集 Train-GLT,包含 113k 个样本和 1k 个类别。
      • ALT 协议采用类别平衡的 Train-CBL,包含 114k 张图像。
      • 评估划分 {Val, Test-CBL, Test-GBL} 分别包含 {30k, 60k, 60k} 个样本。
      • 在 Train-GLT 中,每个类别的图像数量从 570 到 4 不等,而所有类别在 Train-CBL 中都有 114 个样本。
    • 为了收集属性平衡的 Test-GBL,我们使用预训练的 ResNet50 模型将每个类别的图像聚类成 6 组,并从每组中采样 10 张图像。
      • 根据 [34, 22],所有测试集也按照类别频率分为 3 个子集:ManyC(样本数 > 100),MediumC(100 ≥ 样本数 ≥ 20),和 FewC(样本数 < 20)。
      • 我们进一步将它们按属性组分为 3 个子集:ManyA,MediumA,和 FewA,分别包含来自所有类别中最/中/少频繁 2 簇的图像。
  • MSCOCO-GLT

    • MSCOCO-GLT 是 MSCOCO-Attribute 的一个长尾子集,包含 196 种不同的属性。
      • 我们将每个具有多标签属性的对象裁剪为独立的图像。
      • 在 CLT 和 GLT 协议下,我们拥有 {Train-GLT, Val, Test-CBL, Test-GBL},其中包含 {144k, 2.9k, 5.8k, 5.8k} 张图像,覆盖 29 个类别,其中每个类别的样本数量从 61k 到 0.3k 不等。
      • ALT 协议拥有 {32k, 1.4k, 2.9k} 张图像用于 {Train-CBL, Val, Test-GBL}。
    • 由于属性通常与一个对象中的其他属性同时出现,我们无法像 ImageNet-GLT 那样构建 ManyA、MediumA 和 FewA 子集,所以我们直接报告 MSCOCO-GLT 的整体性能。
      • 需要注意的是,属性注释仅用于构建 Test-GBL,并且它们不包括在训练数据中。
  • 评估指标(Evaluation Metrics)

    • 在传统的 LT 研究中,通常采用 top-1 准确率作为唯一的指标,但它无法揭示精度-准确度权衡的限制。
    • 因此,在 GLT 分类中,我们报告了两个指标:
      • 准确度(Accuracy): # C o r r e c t P r e d i c t i o n s # A l l S a m p l e s \frac{\#CorrectPredictions}{\#AllSamples} #AllSamples#CorrectPredictions,这在类别平衡的测试集中等于 Top-1 召回率,以及
      • 精确度(Precision): 1 # c l a s s ∣ ⋅ ∑ c l a s s # C o r r e c t P r e d i c t i o n s # S a m p l e s P r e d i c t e d A s T h i s C l a s s \frac{1}{\#class}|\cdot\sum_{class}\frac{\#CorrectPredictions}{\#SamplesPredictedAsThisClass} #class1class#SamplesPredictedAsThisClass#CorrectPredictions,以更好地评估算法的有效性。

5.2 Investigated LT Algorithms

已研究的 LT 算法

  • 作为处理属性偏差的一般特征学习方法,所提出的 IFL 可以集成到大多数流行的 LT 方法中。我们遵循 Zhang 等人的分类,将研究的 LT 算法总结为三类:

    1. 一阶/二阶重新平衡(one/two-stage re-balance),
    2. 增强(augmentation),
    3. 集成(ensemble)。
  • 对于重新平衡方法,

    • 我们研究了两种两阶段重新采样方法 cRT 和 LWS,
    • 后验分布调整的 Deconfound-TDE 和 Logit Adjustment (Logit-Adj),
    • 具有多样化采样策略的多分支模型如 BBN,
    • 以及重新加权的损失函数如 Balanced Softmax (BLSoftmax) 和 LDAM。
  • 对于增强方法,

    • 我们通过实证观察发现,一些常见的数据增强方法比其他长尾迁移学习方法更通用和有效,因此我们在实验中采用了 Mixup 和随机增强 (RandAug)。
  • 对于模块改进,

    • 我们遵循了最近流行的集成学习趋势,如 RIDE 和 TADE,这些方法被证明是 LT 分类中的最先进模型,能够同时改善头部和尾部类别。
    • 两者都使用了 RIDE 开发的 ResNext-50 的三叉版本,在表 4 中表示为 RIDE-50。
  • 所提出的 IFL 及其基线方法的实现细节在附录中给出。

5.3 Comparisons with LT Line-up

与 LT 阵容的比较

  • 我们在表 1 中评估了 ImageNet-GLT 的 CLT 和 GLT 协议。

    表 1:在 ImageNet-GLT 上评估 CLT 和 GLT 协议:每个单元格左侧报告了准确率(Accuracy),右侧报告了精确度(Precision)。所有方法都在相同代码库下重新实现,使用 ResNext-50 作为主干。

    在这里插入图片描述

  • 相应的 ALT 协议在表 2 中报告。

    表 2:在 ImageNet-GLT 上评估 ALT 协议

    在这里插入图片描述

  • MSCOCO-GLT 的所有三个协议在表 3 中显示。

    表 3:对 MSCOCO-GLT 的评估:报告总体性能

    在这里插入图片描述

  • CLT 协议(传统长尾分类):

    尽管所提出的 IFL 主要是为了处理类内的长尾属性,但它也提高了所有流行的 LT 方法在传统的 CLT 协议中的性能。这是因为 IFL 还防止尾部图像被错误地分类为头部类别,通过消除属性产生的伪相关性。

  • GLT 协议:

    • 不出所料,我们观察到所有方法从 CLT 协议到 GLT 协议的性能显著下降,因为解决额外的属性偏差比解决类别偏差更具挑战性。
    • 同时,IFL 仍然可以成功地提高各种基线。在提出的 GLT 上的下降揭示了广义长尾确实不仅仅是纯粹的类别不平衡。
  • ALT 协议:

    • 正如我们所预期的,大多数使用重新平衡策略的前 LT 算法在这个协议中未能提高对属性偏差稳健性的改善。因此,他们在 GLT 协议上的改进仅来自类别的恒定性。
    • 然而,我们注意到增强和集成方法可以提高所有三个协议,使它们也成为 GLT 的良好基线。主要原因是增强和模型集成都旨在提高表征学习。

5.4 Ablation Studies and Further Analyses

消融研究和进一步分析

  • 我们还在 ImageNet-GLT 上进行了一系列的消融研究,以解决一些常见问题,这些研究结果在表 4 中报告。我们还提供了一些进一步的分析,以阐明所提出的 GLT 挑战。

    在这里插入图片描述

    • 图片注解:表 4:在 ImageNet-GLT 上的消融研究,其中总体结果被报告;BLS、Focal 和 IFF 分别代表平衡 softmax 损失、焦点损失和从失败中学习。
  • Q1: 属性方面(attribute-wise)的基线如何?A1:

    • 我们也报告了一些流行的方法,如用于困难示例挖掘的焦点损失和用于域泛化的 LFF (Learning-from-failure) ,作为解决属性偏差的方法。然而,他们使用默认设置时表现不佳,证明了在实际数据集中解决提出的 GLT 的难度。
  • Q2: 改进是否来自中心损失?A2:

    • 原始的经验风险最小化(ERM)版本中心损失可以被视为所提出的 IFL 的一种特殊情况,仅在一个单一环境中。
    • 根据表 4,使用原始中心损失,即 # Env = 1 \#\text{Env}=1 #Env=1 加上 IFL 作为额外的约束实际上损害了所有三个协议。这是因为在一个有偏的环境中的中心也是有偏的,例如,“香蕉”的中心可能具有 90 % 90\% 90% 的“黄色”属性,这只会使模型更加依赖伪相关性。
  • Q3: 需要多少个环境?A3:

    • 尽管拥有多个环境是至关重要的,但 IRM 断言两个环境就足够捕捉不变性。
    • 我们也发现,额外的环境只带来了微小的改进。
  • Q4: 为什么不直接应用 IRM 损失?A4:

    • 从理论上讲,原始的 IRM 损失和所提出的 IFL 应该有类似的结果,因为它们都体现了在环境中学习不变性的相同精神。
    • 然而,我们通过实证发现原始 IRM 损失在实际数据集中存在收敛问题。在训练过程中,有 2/5 的随机种子在某个时候出现了 NaN 损失。
  • Q5: 为什么所有模型在 MSCOCO-GLT 的 ALT 协议下的表现比 GLT 协议差?A5:

    • 请注意,GLT 协议始终比 ALT 或 CLT 更难。
    • MSCOCO-GLT 中这种奇怪的现象是由于 MSCOCO-Attributes 中严重的类别不平衡引起的:一个单一类别“person”占据了超过 40% 的训练集,所以 Train-CBL 比 Train-GLT 拥有更少的训练样本。
    • 这进一步证明了长尾分类在实际应用中的重要性,因为大规模的长尾数据集比小规模的平衡数据集更优。
  • Q6: 精度-准确度权衡问题是什么?A6:

    • 如图 5 (a-b) 所示,类别重新平衡方法如 cRT、LWS 和 Logit-Adj 在 GLT 协议下玩弄精度-准确度权衡,并且在 ALT 协议下几乎不起作用。

      在这里插入图片描述

      • 图片注解:图5:应用 IFL 后的精度与准确度趋势;GLT 基线会自动改善类别的 LT,而传统的 LT 重新平衡算法无法改善 GLT 中的属性不平衡。
    • 这是因为属性偏差通过形成类别之间的伪相关性,既损害了准确度也损害了精度。解决它应该同时提高这两个指标。

  • Q7: 是否有其他方法可以作为 GLT 的基线?A7:

    • 我们还发现,最近趋势是改善头部和尾部类别,尽管他们在方法中缺乏正式的定义,但本质上是在尝试解决 GLT 挑战。
    • 得益于特征学习,这些集成学习和数据增强方法也可以作为我们提出的 GLT 的良好基线。
    • 同时,所提出的 IFL 与它们正交,并且可以在所有三个协议下进一步提高它们的表现。
  • Q8: 为什么提出的 GLT 是 LT 的“广义”版本?A8:

    • 这是因为 GLT 方法自然会解决传统的 LT,但反之则不然。
    • 如图 5 (c-d) 所示,GLT 基线,如增强、集成和所提出的 IFL 自动解决了类别的 LT。
    • 然而,大多数类别的重新平衡 LT 算法无法很好地解决 GLT 的属性不平衡。

附录

A Appendix

补充材料包括:

  1. 所提出的 IFL 和基线方法的实现细节;
  2. 我们问题公式化的详细分析;
  3. 更详细的证据,说明在提出的环境构建中重新采样策略的有效性;
  4. 所提出的 ImageNet-GLT 和 MSCOCO-GLT 基准构建的更多数据集细节;
  5. 所提出的 Invariant Feature Learning 框架的更多实验结果。

在这里插入图片描述

B Implementation Details

实施细节

  • 对于所提出的 IFL,
    • 我们首先使用交叉熵损失训练模型 60 个 epoch,然后我们开始每 20 个 epoch 构建和更新一次环境。这是因为早期的 epoch 在学习泛化特征,所以在早期 epoch 构建环境对模型的稳健性帮助不大。
    • 分类损失和 IFL 度量损失之间的折衷参数 α 初始化为 0.0,随着环境构建,它被调整为 0.001 和 0.005。
    • 此外,遵循中心损失,我们使用具有固定学习率 0.5 的 SGD 优化器累积平均特征。整个 IFL 算法的伪代码在 Algorithm 1 中给出。
  • 为了公平比较,我们将所有调查过的算法重新实现到一个公开可用的 GLT 代码库中:https://github.com/KaihuaTang/Generalized-Long-Tailed-Benchmarks.pytorch。
    • 默认情况下,所有图像在训练时被调整为 112 × 112 的尺寸,并使用随机缩放裁剪和随机水平翻转。
    • 我们使用 ResNeXt-50 作为所有方法(除了 BBN、RIDE 和 TADE)的主干。
    • 所有模型都使用 SGD 优化器以 256 的批处理大小进行训练。初始学习率为 0.1,默认的学习率衰减策略是余弦退火调度器,除了 BBN、LDAM 和 RIDE,它们采用了基于对应论文原始设置的多步调度器。
    • 对于所有一阶段方法,结果报告为模型在 epoch 100 时的性能。对于两阶段的 cRT 和 LWS,需要额外训练 10 个 epoch 来微调一个平衡的分类器。

C Problem Formulation

问题的提出

  • 在原始论文的第 3 节中,我们基于一个常见的假设,将分类模型 p ( Y ∣ X ) p(Y|X) p(YX) 公式化为 p ( Y ∣ z c , z a ) p(Y|z_c,z_a) p(Yzc,za),即任何对象图像 X X X 等于一组潜在的类特定组件 z c z_c zc 和变化的属性 z a z_a za,即 X = ( z c , z a ) X=(z_c,z_a) X=(zc,za),其中 ( z c , z a ) (z_c,z_a) (zc,za) 可以完全描述整个图像 X X X

  • 对于分类任务,一个稳健的特征应该只从 z c z_c zc 中提取,将非稳健的 z a z_a za 排除在视觉特征之外。

    • 也就是说,一个理想的特征主干 f ( ⋅ ) f(\cdot) f() 应该只对类特定的 z c z_c zc 做出响应: z = f ( X ) = h ( z c ) z=f(X)=h(z_c) z=f(X)=h(zc),其中存在一个映射函数 h ( ⋅ ) h(\cdot) h() 在提取的特征 z z z 和潜在的稳健类特定组件 z c z_c zc 之间。
  • 因此,我们可以使用贝叶斯定理将 p ( Y ∣ X ) p(Y|X) p(YX) 进一步转换为以下公式:
    p ( Y = k ∣ X = x ) = p ( Y = k ∣ z c , z a ) = p ( z c , z a ∣ Y = k ) p ( z c , z a ) ⋅ p ( Y = k ) = p ( z c ∣ Y = k ) p ( z c ) ⋅ p ( z a ∣ Y = k , z c ) p ( z a ∣ z c ) ⏟ 属性偏差 ⋅ p ( Y = k ) ⏟ 类偏差 , ( 3 ) \begin{align} p(Y=k|X=x)&=p(Y=k|z_c,z_a)\\ &=\frac{p(z_c,z_a|Y=k)}{p(z_c,z_a)}\cdot p(Y=k)\\ &=\frac{p(z_c|Y=k)}{p(z_c)}\cdot\underbrace{\frac{p(z_a|Y=k,z_c)}{p(z_a|z_c)}}_{属性偏差}\cdot\underbrace{p(Y=k)}_{类偏差}, \end{align}\qquad\qquad(3) p(Y=kX=x)=p(Y=kzc,za)=p(zc,za)p(zc,zaY=k)p(Y=k)=p(zc)p(zcY=k)属性偏差 p(zazc)p(zaY=k,zc)类偏差 p(Y=k),(3)

    • 其中 p ( z c ∣ Y = k ) p ( z c ) \frac{p(z_c|Y=k)}{p(z_c)} p(zc)p(zcY=k) 是一个类稳健的指标;
    • p ( z a ∣ Y = k , z c ) p ( z a ∣ z c ) \frac{p(z_a|Y=k,z_c)}{p(z_a|z_c)} p(zazc)p(zaY=k,zc) 是由于不平衡属性存在而引入的偏差项;
    • p ( Y = k ) p(Y=k) p(Y=k) 反映了训练数据中的类别分布的类偏差。
  • 为了更好地理解这个公式,在接下来的子节中,我们将提供更深入的分析,并从方程式(3)中推导出一些有趣的发现。

C.1 Details about class-specific Components

有关特定类别组件的详细信息

  • 由于潜在的类特定 z c z_c zc 等于多个独立组件的存在,方程式(3)中 p ( z c ∣ Y = k ) p ( z c ) \frac{p(z_c|Y=k)}{p(z_c)} p(zc)p(zcY=k) 的正式定义如下:
    p ( z c ∣ Y = k ) p ( z c ) = ∏ c i ∈ e x i s t p ( z c i = 1 ∣ Y = k ) p ( z c i = 1 ) ⋅ ∏ c j ∈ n o n − e x i s t p ( z c j = 0 ∣ Y = k ) p ( z c j = 0 ) , ( 4 ) \frac{p(z_c|Y=k)}{p(z_c)}=\prod_{c_i\in exist}\frac{p(z_{c_i}=1|Y=k)}{p(z_{c_i}=1)}\cdot\prod_{c_j\in non−exist}\frac{p(z_{c_j}=0|Y=k)}{p(z_{c_j}=0)},\qquad\qquad(4) p(zc)p(zcY=k)=ciexistp(zci=1)p(zci=1∣Y=k)cjnonexistp(zcj=0)p(zcj=0∣Y=k),(4)

    • 其中潜在的类特定组件 z c z_c zc 可以被视为一个 0/1 向量;
    • { c i } \{c_i\} {ci} 是对象上存在的组件;
    • { c j } \{c_j\} {cj} 是对象上不存在的组件。
    • 对象 X X X 属于类别 Y = k Y=k Y=k,当且仅当
      1. 所有类别 Y = k Y=k Y=k 的关键组件存在,例如,一个人必须包含 p ( z h e a d o n o b j e c t = 1 ∣ Y = h u m a n ) = 1 p(z_{head\ on\ object}=1|Y=human)=1 p(zhead on object=1∣Y=human)=1 p ( z b o d y o n o b j e c t = 1 ∣ Y = h u m a n ) = 1 p(z_{body\ on\ object}=1|Y=human)=1 p(zbody on object=1∣Y=human)=1 的存在;
      2. 以及其他无关组件不存在,例如, p ( z t a i l o n o b j e c t = 0 ∣ Y = h u m a n ) = 1 p(z_{tail\ on\ object}=0|Y=human)=1 p(ztail on object=0∣Y=human)=1 p ( z h o r n o n o b j e c t = 0 ∣ Y = h u m a n ) = 1 p(z_{horn\ on\ object}=0|Y=human)=1 p(zhorn on object=0∣Y=human)=1
  • 请注意,上述公式可能引发两个关于类特定 z c z_c zc 的问题:1) 分类的层次结构(The Hierarchy of Classification);2) 部分遮挡(The Partial Occlusion)。

    • 分类的层次结构:

      • 关于上述方程式(4)的一个常见问题是,如果一个具有一个类别所有关键组件的对象还包含其他无关组件,例如,一个具有人类头部和人类身体的对象还有四条马腿。
        • 这个问题源于分类的层次结构。如果一个类别 Y = k Y=k Y=k 的对象包含一个或多个不必要的组件,这通常意味着该对象实际上属于类别 Y = k Y=k Y=k 的一个亚种,它属于 Y = k Y=k Y=k 但具有更细粒度的描述。
        • 在一个有效的多类分类数据集中,一个物种及其亚种不会同时存在于预测词汇中。否则,它就变成了一个多标签分类任务。
      • 然而,一个共同隐藏的超物种的多个亚种可以在一个数据集中共存,例如,ImageNet 中的“shetland sheepdog”和“pug-dog”都是来自“dog”的超物种。
        • 在这种情况下,尽管这些亚种可能有相似的模板,类特定的组件 z c z_c zc 仍然满足类内不变性的属性。
        • 实际上,从先前的研究的可视化中发现,交叉熵损失会自动学习区分性组件而不是在这种情况下的一些共同组件,例如,“疣猪”的牙齿将被学习为类特定的特征,而不是整个身体,以增加数据集中的区分能力。
    • 部分遮挡:

      • 另一个问题是关于图像上的部分遮挡。这会破坏类特定组件 z c z_c zc 的类内不变性吗?

        答案仍然是 NO。最近的研究 Masked Auto-Encoders 证明了深度学习模型可以从仅 25 % 25\% 25% 的补丁中重建整个图像,因为存在冗余的视觉信息。

      • 但是,如果强遮挡通过移除整个组件来伤害类特定组件 z c z_c zc 呢?

        在训练过程中,这些图像根本不应该存在于训练数据中,因为它们无法被标记。在预测过程中,相应的图像不再可预测,应该被视为异常值,这超出了本论文的范围。因此,如果只是有一些轻微的部分遮挡,模型仍然能够获得原始的 z c z_c zc,因为我们自然可以从冗余的视觉信息中想象出整个对象。

C.2 Details about the attributes components

  • 当我们看方程式(3)时,我们可能会想知道是否存在某些属性 z a j z_{a_j} zaj 是不依赖于类的,即 p ( z a j ∣ Y = k , z c ) = p ( z a j ∣ z c ) p(z_{a_j}|Y=k, z_c)=p(z_{a_j}|z_c) p(zajY=k,zc)=p(zajzc)。答案是肯定的。因此,我们可以对方程式(3)中的 p ( z a ∣ Y = k , z c ) p ( z a ∣ z c ) \frac{p(z_a|Y=k,z_c)}{p(z_a|z_c)} p(zazc)p(zaY=k,zc) 给出一个正式的定义:
    p ( z a ∣ Y = k , z c ) p ( z a ∣ z c ) = ∏ a i ∈ d − Y p ( z a i ∣ Y = k , z c ) p ( z a i ∣ z c ) ⏟ 有偏属性 ⋅ ∏ a j ∈ i n d − Y p ( z a j ∣ Y = k , z c ) p ( z a j ∣ z c ) ⏟ 无害属性 , 5 ) \frac{p(z_a|Y=k,z_c)}{p(z_a|z_c)}=\prod_{a_i\in d−Y}\underbrace{\frac{p(z_{a_i}|Y=k,z_c)}{p(z_{a_i}|z_c)}}_{有偏属性}\cdot\prod_{a_j\in ind−Y}\underbrace{\frac{p(z_{a_j}|Y=k,z_c)}{p(z_{a_j}|z_c)}}_{无害属性},\qquad\qquad5) p(zazc)p(zaY=k,zc)=aidY有偏属性 p(zaizc)p(zaiY=k,zc)ajindY无害属性 p(zajzc)p(zajY=k,zc),5)

    • 其中 d − Y d−Y dY i n d − Y ind−Y indY 分别表示类相关的和类无关的;
    • { a i } \{a_i\} {ai} 是类相关的属性;
    • { a j } \{a_j\} {aj} 是类无关的属性。
  • 很容易注意到,所有无害属性都有 p ( z a j ∣ Y = k , z c ) = p ( z a j ∣ z c ) p(z_{a_j}|Y=k,z_c)=p(z_{a_j}|z_c) p(zajY=k,zc)=p(zajzc),所以 ∏ a j ∈ i n d − Y p ( z a j ∣ Y = k , z c ) p ( z a j ∣ z c ) \prod_{a_j\in ind−Y}\frac{p(z_{a_j}|Y=k,z_c)}{p(z_{a_j}|z_c)} ajindYp(zajzc)p(zajY=k,zc) 总是等于 1 并且不会引入任何偏差。

  • 在原始论文中,我们将所有属性视为一个整体,即向量 z a z_a za,所以我们没有区分有偏属性和无害属性。它们的区别在下文解释。

    • 有偏属性(Biased Attributes):

      • 几乎所有的语义属性都是有偏的。例如,考虑一个类特定的组件 zcfur 作为“fur”和 zacolor 是描述其“颜色”的属性,不同的动物(类别 Y)可能有不同的毛皮颜色分布。
      • 总的来说,有偏属性 { a i ∈ d − Y } \{a_i\in d−Y\} {aidY} 要么依赖于一个类特定的组件,例如,“颜色”或“纹理”对于特定的 z c i z_{c_i} zci,要么同时依赖于多个组件,例如,人类的“姿势”依赖于头部、身体和四肢。
      • 这些有偏属性不仅导致了每个类别内的长尾预测置信度,还创造了一个有偏属性 z a i z_{a_i} zai 和特定类别 Y = k Y=k Y=k 之间的伪相关性。
    • 无害属性(Benign Attributes):

      • 由于我们在原始论文中将所有属性视为一个整体,即一个潜在向量 z a z_a za,所以我们没有区分无害属性和整个 z a z_a za
      • 然而,如果我们看方程式(5),一个属性 a j ∈ i n d − Y a_j\in ind − Y ajindY 完全是无害的,因为它的分布与 Y = k Y=k Y=k 无关,即 p ( z a j ∣ Y = k , z c ) = p ( z a j ∣ z c ) p(z_{a_j}|Y=k,z_c)=p(z_{a_j}|z_c) p(zajY=k,zc)=p(zajzc),使得 p ( z a j ∣ Y = k , z c ) p ( z a j ∣ z c ) = 1 \frac{p(z_{a_j}|Y=k,z_c)} {p(z_{a_j}|z_c)}=1 p(zajzc)p(zajY=k,zc)=1 成为无偏项。
      • 实际上,这从根本上解释了直观的数据增强方法的有效性,因为数据增强引入了额外的图像(无需成本)具有与它们类别无关的无害属性。
      • 根据不同的数据增强类型,有两种类型的无害属性:
        1. 图像级别的属性,
          • 它们与 z c z_c zc Y Y Y 都无关,通常用作数据加载器中的预处理增强,因为它们可以从任何给定的图像轻松生成,例如,图像的旋转(Rotation)、位置(Crop)、大小(Resize)和颜色(ColorJitter);
        2. 与组件相关的属性,
          • 它们仅与 Y Y Y 无关,但仍依赖于 z c z_c zc,是在数据收集阶段的数据增强,例如,视角,因为它们是由相机与特定组件之间的相对位置引起的变体而不是对象类别的变体。
          • 这些无害属性可以增加分类数据集的体积和多样性,而无需任何成本,这解释了为什么像 RandAug 这样的数据增强方法在我们的实验中如此有效。

D Environment Construction

环境构建

D.1 Motivation

动机

  • 由于我们没有强加解耦假设,即可以学习完美的特征向量 z = [ z c ; z a ] z=[z_c;z_a] z=[zc;za],其中 z c z_c zc z a z_a za 是分离的,我们无法通过特征选择轻松消除 z a z_a za。因此,我们在主干优化过程中只能隐式地防止特征与 z a z_a za 关联。
  • 为了实现这一点,我们使用图像的预测对数来根据公式 Eq. (3) 采样 p ( z a ∣ Y = k , z c ) p ( z a ∣ z c ) \frac{p(z_a|Y=k,z_c)}{p(z_a|z_c)} p(zazc)p(zaY=k,zc) 的多样化分布,因为 p ( Y = k ∣ X ) ∝ p ( z a ∣ Y = k , z c ) p ( z a ∣ z c ) p(Y=k|X)\propto \frac{p(z_a|Y=k,z_c)}{p(z_a|z_c)} p(Y=kX)p(zazc)p(zaY=k,zc) 在给定的类别 Y = k Y=k Y=k 内。
  • 如果特征主干依赖于非稳健的 z a z_a za p ( z a ∣ Y = k , z c ) p ( z a ∣ z c ) \frac{p(z_a|Y=k,z_c)}{p(z_a|z_c)} p(zazc)p(zaY=k,zc) 的多样化分布将使模型在不同环境中的类中心不稳定。相反,如果特征主干更多地依赖于稳健和不变的组件 z c z_c zc,类中心应该更能抵抗环境变化,这启发了所提出的 IFL 的设计。

D.2 Re-sampling Strategy

重采样策略

  • 整体环境构建流程可以解释如下:

    • 由于 p ( z a ∣ Y = k , z c ) p ( z a ∣ z c ) \frac{p(z_a|Y=k,z_c)}{p(z_a|z_c)} p(zazc)p(zaY=k,zc) 仅在给定的类别 Y = k Y=k Y=k 内与 p ( Y = k ∣ X ) p(Y=k|X) p(Y=kX) 成正比,因此重新采样策略在每个类别中独立进行。
    • 然后,对于每个环境,我们将使用相同重新采样策略的每个类别的结果子集合并,因此,不同的环境对应于不同的重新采样策略,即不同的 p ( z a ∣ Y = k , z c ) p ( z a ∣ z c ) \frac{p(z_a|Y=k,z_c)}{p(z_a|z_c)} p(zazc)p(zaY=k,zc)
  • 在本节中,我们将提供额外的证据来支持我们在环境构建方法中使用的重新采样策略。

    为了证明 p ( Y = k ∣ X ) p(Y=k|X) p(Y=kX) p ( z a ∣ Y = k , z c ) p ( z a ∣ z c ) \frac{p(z_a|Y=k,z_c)}{p(z_a|z_c)} p(zazc)p(zaY=k,zc) 之间的直接相关性,我们在图 6 中可视化了预测对数和图像特征与其类别中心之间的余弦相似性之间的关系。

    • 首先, p ( z a ∣ z c ) p(z_a|z_c) p(zazc) 可以被视为给定数据集中固定的布局,而 p ( z c ∣ Y = k ) p ( z c ) \frac{p(z_c|Y=k)}{p(z_c)} p(zc)p(zcY=k) 在一个类别内是恒定的,因此,类内的变异主要由给定类和数据集中的 p ( z a ∣ Y = k , z c ) p(z_a|Y=k,z_c) p(zaY=k,zc) 引起。
    • 由于属性 z a z_a za 是长尾的,预测对数也应表现出长尾分布,即,具有较少头部属性的大多数样本具有较大的对数,而具有大多数罕见属性的少数样本具有较低的对数。可视化的图 6 证明了这一假设。
    • 由于类别中心主要由头部属性主导,因为它们的数量较大,图像特征与其类别中心之间的余弦相似性实际上指示了该图像的属性向量 z a z_a za 的稀有性。属性越稀有,预测置信度越低。
  • 总之,图 6 展示了我们如何使用 p ( Y = k ∣ X ) p(Y=k|X) p(Y=kX) 来探索 p ( z a ∣ Y = k , z c ) p ( z a ∣ z c ) \frac{p(z_a|Y=k,z_c)}{p(z_a|z_c)} p(zazc)p(zaY=k,zc) 并构建多样化环境,以及类内分布的偏见程度(由长尾属性引起)。

    在这里插入图片描述

    • 图片注解:图6:ImageNet-GLT中图像特征与其类别中心之间的预测对数与余弦相似性之间的关系。它们之间的直接比例关系展示了为什么预测置信度(即 p ( Y = k ∣ X ) p(Y=k|X) p(Y=kX))可以用来探究类内变异,即 p ( z a ∣ Y = k , z c ) p ( z a ∣ z c ) \frac{p(z_a|Y=k,z_c)}{p(z_a|z_c)} p(zazc)p(zaY=k,zc)

E Dataset Construction2

数据集构建 2

E.1 ImageNet-GLT

  • 提出的 ImageNet-GLT 基准测试是一个从原始的 ImageNet 数据集中生成的长尾子集。

    • 对于 Train-GLT、Train-CBL 和 Test-CBL 划分,我们可以直接遵循之前的 ImageNet-LT 基准测试来构建这些划分。
    • 棘手的部分是用于评估 Attribute-wise Long Tail (ALT) 协议和 Generalized Long Tail (GLT) 协议的 Test-GBL。为了创建属性平衡和类别平衡的评估环境(Test-GBL),我们使用每个类别的几个特征簇的索引作为预训练属性标签。
  • 构建过程:

    • 首先,我们使用 PyTorch 提供的预训练 ResNet-50 主干从 ImageNet 数据集中的所有图像提取了一个 2048 维的特征向量。然后,我们运行 KMeans 算法为每个类别生成 6 个簇。如图 7 所示,相应的可视化图像表明,每个类别内的特征簇自然地将图像按照不同类型的属性分开,例如材料、背景等。

      在这里插入图片描述

      • 图片注解:图 7:使用 KMeans(通过 t-SNE)进行特征聚类的示例,以及原始 ImageNet 中每个聚类对应的可视化图像。
    • 之后,我们通过确保每个类别的 Top-2、Medium-2 和 Bottom-2 簇的频率分别为 70%、20% 和 10% 来平滑每个类别的属性分布。请注意,底层的属性分布是自然的长尾分布。然而,由于我们只使用了一定数量的簇,即 6 个簇,来近似众多现实属性,这些簇可能对某些类别来说相对过于平衡,所以我们强制所有类别的预训练属性分布相同。

    • 我们还列出了 ImageNet-GLT 基准测试的四个划分(Train-GLT、Train-CBL、Test-CBL、Test-GBL)的所有类分布和簇分布,如图 8 所示。请注意,簇分布中的每个列代表所有 1000 个类别的 1000 个预训练属性,因为簇可能代表每个类别中不同的属性布局。

      在这里插入图片描述

      • 图片注解:图8: ImageNet-GLT 基准的每个分割的类别分布和集群分布。请注意,集群可能代表每个类别中不同的属性布局,因此 ImageNet-GLT 实际上有 6×1000 个前提属性(pretext attributes),而不是6个,即集群分布中的每一列代表具有相同频率的 1000 个前提属性。

E.2 MSCOCO-GLT

  • 提出的 MSCOCO-GLT 基准测试是从 MSCOCOAttribute 生成的长尾子集,

    • 其中我们裁剪每个对象作为单独的图像。图 9 显示了 MSCOCO-Attribute 数据集中的几个对象示例。请注意,MSCOCO-GLT 中的对象属性不会被释放。

      在这里插入图片描述

      • 图片注解:图9 展示了 MSCOCO-Attribute 数据集中的对象示例。请注意,在提出的 MSCOCO-GLT 中不会发布对象属性。
    • 与 ImageNet-GLT 不同,我们在构建 MSCOCO-GLT 时采用了真实的属性注释。

      • 然而,正如图 9 所示,单个对象可以被标记为多个属性,导致尾部属性与头部属性在同一图像中共存。因此,在 Test-GBL 中严格平衡属性分布是不可能的,所以我们提出了算法 2 来为 MSCOCO-GLT 生成 Test-GBL。
      • 具体来说,我们需要迭代地寻找样本,以最小化每个类别中整体属性分布的标准差,因此输出的子集在数据集中属性分布方面是最平衡的。
  • 至于 Train-GLT、Train-CBL 和 Test-CBL,我们可以使用与上一节相同的方法直接从每个类别中采样。

    • 请注意,MSCOCO-GLT 中的长尾分布比 ImageNet-GLT 更严重,因为它只有 29 个类别,但单个类别“person”占训练数据的 40% 以上。因此,类别的平衡 Train-CBL 数据量要小得多。
  • 我们还在图 10 中列出了 MSCOCO-GLT 基准测试的四个划分(Train-GLT、TrainCBL、Test-CBL、Test-GBL)的所有类分布和属性分布。

    • 在这里,我们只展示了 CLT 和 GLT 协议的 Test-GBL。由于 Train-CBL 的类数据重新平衡成本,ALT 协议的 Test-GBL 数据量较小,但类和属性分布与图 10 (d) 相同。
    • 此外,值得注意的是,尽管图 10 (d) 中的属性分布并没有严格平衡,但它具有最低的属性标准差,使得 Test-GBL 在属性方面比其他划分更平衡。

    在这里插入图片描述

    • 图片注解:图 10:MSCOCO-GLT 基准中各拆分的类别分布和属性分布,其中出现频率最高的类别是 “人”。虽然由于头部属性和尾部属性可能同时出现在一个对象中,我们无法严格平衡 Test-GBL 分割的属性分布,但所选 Test-GBL 的属性标准偏差低于其他分割。

F Experimental Results

  • 由于篇幅限制,我们在原始论文中简化了表 1 和表 3,跳过了某些详细划分的结果,例如 GLT 协议表 1 中的 ManyA、MediumA、FewA 和表 3 中的 ManyC、MediumC、FewC。因此,我们在本补充材料中完成了相应的部分。

  • 如表 5 所示,

    在这里插入图片描述

    • 图片注解:表 5:GLT 协议在 ImageNet-GLT 上的评估:这是原论文表 1 的补充表格。ManyA、MediumA、FewA 表示头部(Top-2 Clusters)、中部(Medium-2 Clusters)和尾部(Bottom-2 Clusters)属性。报告了以前的 LT 算法及其 IFL 变体的(Top-1)准确率和精度

    • GLT 协议的详细 ManyA、MediumA、FewA 与 ALT 协议中的相似,因此原始论文表 2 中的结论在这里仍然成立。

    • 我们可以注意到,由属性不平衡引起的效果与由类别不平衡引起的效果不同,因为在 ManyA、MediumA、FewA 中没有精度-准确度权衡。

    • 这进一步证明了为什么之前改善头部和尾部类别的趋势实际上是在解决具有属性不平衡的 GLT,因为提取更多的属性不变特征可以同时受益于头部和尾部类别。

  • 在表 6 中,

    在这里插入图片描述

    • 图片注解:表 6:MSCOCO-GLT 上的 CLT 和 GLT 协议评估:这是原论文表 3 的补充表格。(表 6:CLT 和 GLT 协议在 MSCOCO-GLT 上的评估:这是原论文表 3 的补充表格。为确保公平比较,所有方法都在相同的代码库下以 ResNext-50 为骨干重新实现。

    • 我们在 MSCOCO-GLT 中完成了 CLT 和 GLT 协议的 ManyC、MediumC、FewC,其中 ManyC 包含 Top-1 到 Top-11 的频繁类别,MediumC 有 Top-12 到 Top23 的类别,其余属于 FewC。

    • 所提出的 IFL 变体在大多数情况下仍然优于相应的 LT 方法。但我们注意到,之前的强 GLT 基线 RandAug + IFL 现在不如另一个 GLT 基线 Mixup + IFL。

    • 我们认为这可能是由图 10 (a) 中的奇怪分布引起的,其中一个单一的超头部类别“person”包含了整个数据的 40% 以上,因此如何学习“person”类与其他类别之间的更好边界成为最大的问题,使得随机增强不如 Mixup 有效,因为后者可以确保类别之间的线性过渡。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

行车记录打不开?别慌,数据恢复有高招!

行车记录打不开&#xff0c;这恐怕是许多车主都曾经遭遇过的烦恼。在驾驶途中&#xff0c;行车记录仪本应是记录美好瞬间、保障行车安全的重要工具&#xff0c;但一旦它出现打不开的情况&#xff0c;所有的期待与信赖便瞬间化为乌有。面对这种情况&#xff0c;我们该如何应对&a…

Oracle Solaris 11.3开工失败问题处理记录

1、故障现像 起初是我这有套RAC有点问题&#xff0c;我想重启1个节点&#xff0c;结果发现重启后该节点的IP能PING通&#xff0c;但SSH连不上去&#xff0c;对应的RAC服务也没有自动启动。 操作系统是solaris 11.3。由于该IP对应的主机是LDOM&#xff0c;于是我去主域上telnet…

【linux】基础IO(一)

文件只有站在系统层面才能彻底理解 简单回顾一下文件&#xff1a; 首先我们要明确一点&#xff0c;我们说的打开文件不是写下fopen就打开文件&#xff0c;而是当我们的进程运行起来&#xff0c;进程打开的文件。 我们在C语言一般都会使用过如下的代码进行向文件中写入 但是除…

LLM应用:Prompt flow vs LangChain

背景 Prompt flow和LangChain都是LLM时代&#xff0c;为高效地构建LLM应用而生。 Prompt flow是Microsoft开源的&#xff0c;其诞生时&#xff0c;LangChain已经很有名气了。 所以作为后生的Prompt flow会为我们带来哪些新的东西呢&#xff1f; ​​​​​​​ Prompt flo…

互联网、因特网、万维网的区别

互联网 internet&#xff1a;凡是能彼此通信的设备组成的网络就叫互联网&#xff0c;即使只有两台计算机&#xff0c;无论以何种技术使其彼此通信&#xff0c;都叫互联网。所以&#xff0c;根据互联网的覆盖规模可以分为&#xff1a; 局域网&#xff08;Local Area Network&am…

如何使用potplayer在公网环境访问内网群晖NAS中储存在webdav中的影视资源

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​&#x1f4ab;个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-D7WJh3JaNVrLcj2b {font-family:"trebuchet ms",verdana,arial,sans-serif;font-siz…

黑马鸿蒙笔记 3

目录 11.ArkUI组件-Column和Row 12.ArkUI组件-循环控制 13.ArkUI组件-List 14.ArkUI组件-自定义组件 15.ArkUI组件-状态管理State装饰器 16.ArkUI组件-状态管理-任务统计案例 17.ArkUI组件-状态管理-PropLinkProvideConsume 11.ArkUI组件-Column和Row Colum和Row的交叉…

第三天开始写了

现在的情况 写俩个接口信息 1. 一个修改 2. 一个 删除 发现了一个问题 只有这些参数无法完成修改的 因为这些关联到一个商品表和一个用户表&#xff0c;我们应该查询他们id信息&#xff0c;修改其中的内容&#xff0c;单独根据字符串查看效果可能不好 这里我们提交应该是用…

2024年抖音小店的保证金是多少?真的可以做0元保证金的店铺吗?

大家好&#xff0c;我是电商糖果 2024年想要入驻抖音小店的商家依旧很多&#xff0c;关于小店的保证金问题也有不少人前来咨询。 大家问的最多的是可以开通0元保证金的店铺吗&#xff1f;以及2024年抖音小店保证金是多少&#xff1f; 这里糖果给大家一个个解答。 可以开通0…

基于YOLOv8的绝缘子检测系统

&#x1f4a1;&#x1f4a1;&#x1f4a1;本文摘要&#xff1a;基于YOLOv8的绝缘子小目标检测&#xff0c;阐述了整个数据制作和训练可视化过程 1.YOLOv8介绍 Ultralytics YOLOv8是Ultralytics公司开发的YOLO目标检测和图像分割模型的最新版本。YOLOv8是一种尖端的、最先进的&a…

k8s入门到实战(七)—— 回顾:使用yaml文件配置pv、pvc、configmap部署mysql服务

实战&#xff1a;部署 mysql 服务 回顾加深 pv、pvc、configmap 删除所有 deployment、pv、pvc、configmap、StorageClass创建一个 nsf 挂载目录给 mysql mkdir -p /nfs/data/mysql创建 yaml 文件mysql-server.yaml # 创建pv apiVersion: v1 kind: PersistentVolume metadat…

针对 qt的sqlite加密数据库sqlitecipher插件QtCipherSqlitePlugin

&#x1f482; 个人主页:pp不会算法^ v ^ &#x1f91f; 版权: 本文由【pp不会算法v】原创、在CSDN首发、需要转载请联系博主 &#x1f4ac; 如果文章对你有帮助、欢迎关注、点赞、收藏(一键三连)和订阅专栏哦 文章目录 简介编译安装使用可视化工具查看完结 简介 在客户端存储…

字符指针、字符串、字符数组、字符串数组等

参考&#xff1a;https://xiefor100.blog.csdn.net/article/details/52667734 #include <stdio.h> #include <stdlib.h> #include <string.h> int main() {char s1[] "12345"; // "12345"在栈区&#xff0c;可以指针偏移读取和修改c…

stable diffusion如何下载预处理器?

如何下载预处理器&#xff1f; 具体位置:SD文件>extensions>sd-webui-controlnet>annotator” 把整个文件夹复制到SD的文件夹里面 里面有一个“downloads”文件夹 把这些模型复制到“downloads”文件夹里

【MATLAB第103期】#源码分享 | 基于MATLAB的LIME可解释性线性分类预测模型,2020b以上版本

【MATLAB第103期】#源码分享 | 基于MATLAB的LIME可解释性线性分类预测模型&#xff0c;2020b以上版本 一、模型介绍 LIME&#xff08;Local Interpretable Model-agnostic Explanations&#xff09;是一种用于解释复杂机器学习模型预测结果的算法。它由Marco Ribeiro、Sameer…

并发-开启新线程

目录 实现多线程的官方正确方法&#xff1a;2种 实现Runnable接口方式的实现原理 两种方法的对比 匿名内部类实现线程的两种方式 思考&#xff1a;同时用两种方法会怎么样 总结&#xff1a;最精准的描述 实现多线程的官方正确方法&#xff1a;2种 方法一&#xff1a;实现…

Git、TortoiseGit、SVN、TortoiseSVN 的关系和区别

Git、TortoiseGit、SVN、TortoiseSVN 的关系和区别 &#xff08;二&#xff09;Git&#xff08;分布式版本控制系统&#xff09;:&#xff08;二&#xff09;SVN&#xff08;集中式版本控制系统&#xff09;&#xff08;三&#xff09;TortoiseGit一、下载安装 git二、安装过程…

[Java基础揉碎]接口

目录 为什么有接口 基本介绍 接口的应用场景 注意事项和细节 接口和继承类的比较 总结 >接口和继承解决的问题不同 >接口比继承更加灵活 >接口在一定程度上实现代码解耦 接口的多态特性 多态参数 ​编辑 多态数组 多态传递 ​编辑 为什么有接口 usb插槽就是…

Educational Codeforces Round 163 (Rated for Div. 2) E. Clique Partition

题目 思路&#xff1a; #include <bits/stdc.h> using namespace std; #define int long long #define pb push_back #define fi first #define se second #define lson p << 1 #define rson p << 1 | 1 const int maxn 1e6 5, inf 1e9, maxm 4e4 5; co…

halcon图像腐蚀

1、原理 使用结构元素在图像上移动&#xff0c;只有结构元素上的所有像素点都属于图像中时&#xff0c;才保留结构元素中心点所在的像素&#xff0c;常用于分离连接的两个物体、消除噪声。 2、halcon代码 dev_open_file_dialog (read_image, default, default, Selection) r…