【Novel Category Discovery】Parametric Classification for Generalized Category Discovery 个人理解

文章介绍了一种用于广义类发现的方法,SimGCD,它基于visiontransformer(ViT)特征提取和联合优化策略。通过分析参数分类失效的原因,SimGCD提出在backbone后构建分类器,并结合有监督对比损失、自监督对比损失、自蒸馏损失和标准交叉熵损失进行优化。该方法解决了直接分类未知类的问题,同时避免了对已知类的过度预测。在特征提取阶段,使用对比学习提升表示能力,而在无标签数据上,通过self-distillation生成伪标签优化分类器。

一、简介

题目: Parametric Classification for Generalized Category Discovery: A Baseline Study
来源: arXiv
任务: 给定一个数据集,其中部分样本有标签(这里称其为已知类),其余样本无标签(可能属于已知类也可能属于未知类),要求将无标签样本中属于已知类的样本正确分类,对属于未知类的样本进行聚类。
方法:
(1)使用vision transformer(ViT)作为backbone进行特征提取。backbone由自监督权重(self-supervised ImageNet weights)赋初值;
(2)之后结合有监督对比损失、自监督对比损失、自蒸馏损失(self-distillation)、标准交叉熵损失对ViT的最后一个宏块(block)和分类头进行联合微调。
Note: 之前讲的Generalized Category Discovery(GCD)Open World Semi-Supervised Learning也是解决该问题的,该工作所用的方法(1)与前者基本一致,(2)中自蒸馏损失与后者最大熵部分基本一致。另外,该方法假设新类数量已知,其实这是不现实的,AutoNovel: Automatically Discovering and Learning Novel Visual CategoriesGCD都提出了解决方案。

SinGCD
如图,该工作(SimGCD)采用监督对比损失+自监督对比损失+参数分类(自蒸馏损失、标准交叉熵损失)的优化策略。

二、详情

1. 参数分类失效原因分析

作者从以下三个方面对分类器直接用于广义类发现问题失效的原因进行了分析:
(1)应该在哪一层特征的基础上构建分类器;
(2)是否应该联合优化特征提取器和分类器;
(3)对于旧类的预测偏向问题。

通过在不同的标签质量(仅有已知类的标签 → \rightarrow self-label伪标签 → \rightarrow self-distillation伪标签 → \rightarrow 已知类未知类均有标签)设置下,对比UNO+(联合优化的策略,该方法使用self-label的伪标签生成策略)和GCD(独立/解耦的优化策略),作者得出的结论如下:
(1)相比projector(相当于backbone后的又一个特征提取器),在backbone后直接构建分类器更合适。并且,伪标签的质量越高,则广义类发现性能越好;
(2)在有高质量伪标签的情况下,相比独立优化,联合优化特征提取器和分类器更合适;
(3)UNO+和GCD都存在倾向于将未知类分到已知类的问题。

于是,作者采取了综合最优的方案:在backbone后直接构建分类器、构造损失联合优化特征提取器和分类器、增加正则化项限制对已知类的倾向。

2. 特征提取

该部分与GCD相应部分基本一致,GCD认为直接对图像数据进行分类或聚类效果必然不理想,需要先提取出空间性质较好的特征。GCD作者表示ViT作为backbone对近邻分类器十分友好,因此将ViT选作backbone。
特征提取可视化
从上图可以看出,与ResNet50(DINO)提取的特征相比,使用self-supervised ImageNet weights初始化的ViT(DINO)的类内距离更小、类间距离更大。

然后,为了增强ViT的表示学习(特征提取)能力,作者使用目标数据集中的数据对特征提取器进行了微调。主要采取的是对比学习的损失优化策略,将全部样本(包括有标签和无标签的全部数据)视为无标签样本使用如下自监督对比损失:

其中, z i \pmb{z}_i zi z i ′ \pmb{z}^\prime_i zi分别是同一图片随机增强后的两个视图的特征表达, z i = g ( f ( x i ) ) \pmb{z}_i=g(f(\pmb x_i)) zi=g(f(xi)) f ( ∗ ) f(*) f()为backbone(ViT), g ( ∗ ) g(*) g()为projection head(projector, 如MLP)。有标签样本使用如下有监督对比损失:

其中, N ( i ) \mathcal{N}(i) N(i)表示与 z i \pmb{z}_i zi有相同类标签的样本索引。

直白来说,这两个对比损失就是希望来自同样本(如随机增强的两个样本)或同类(有相同真实标签的两个样本)的特征尽量接近。于是,形成如下用于优化特征提取器的损失函数:

其中,前一项用于优化全部图像(不使用标签),后一项用于优化有标签图像。

通过该损失函数仅优化特征提取器(不与分类器联合优化)的结果如ViT(Ours)所示,显然,它具有更好的特征空间表达。不过,之前1. 参数分类失效原因分析中说过,在有高质量伪标签的情况下,联合优化更合适,即对ViT的最后一个宏块和分类器一起优化会有更好的结果。所以这里先不优化,而是先生成高质量的伪标签,使用 L r e p \mathcal L_{rep} Lrep

转子系统的参数化建模与分析系统(Rotor systems parametric modelling and analysing system)旨在对转子系统进行高效、准确的建模和深入分析。 在参数化建模方面,该系统允许用户通过输入关键参数来快速构建转子系统的模型。这些参数可能包括转子的几何尺寸(如长度、直径等)、材料属性(弹性模量、密度等)、支撑特性(轴承刚度、阻尼等)。通过参数化的方式,能够方便地对不同设计方案进行快速建模,无需每次都重新构建整个模型。例如,在设计不同规格的电机转子时,可以仅修改相关的尺寸参数,就能迅速得到新的模型。 在分析功能上,它可以对转子系统进行多种类型的分析。动力学分析是其中重要的一部分,可计算转子的临界转速,了解转子在不同转速下的振动特性,判断是否会出现共振现象,以避免因共振导致的设备损坏和性能下降。还能进行不平衡响应分析,评估转子由于质量不平衡引起的振动情况,为动平衡校正提供依据。此外,还可以进行稳定性分析,确定转子系统在各种工况下是否能够稳定运行。 从应用场景来看,广泛应用于航空航天、能源动力、机械制造等领域。在航空发动机中,该系统可用于设计和优化发动机转子,提高其可靠性和性能;在风力发电机组中,能对发电机转子进行建模和分析,确保其在复杂的风况下稳定运行。 以下是一个简单的伪代码示例,用于模拟参数化建模过程: ```python class RotorSystem: def __init__(self, length, diameter, material_elasticity, bearing_stiffness): self.length = length self.diameter = diameter self.material_elasticity = material_elasticity self.bearing_stiffness = bearing_stiffness def generate_model(self): # 这里可以添加实际的建模代码,例如生成有限元模型 print(f"生成转子系统模型,长度: {self.length}, 直径: {self.diameter}, 材料弹性模量: {self.material_elasticity}, 轴承刚度: {self.bearing_stiffness}") # 创建一个转子系统实例 rotor = RotorSystem(1000, 200, 2e11, 1e6) rotor.generate_model() ```
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Fulin_Gao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值