Cross-domain hyperspectral image classification(跨域整理)

Cross-domain hyperspectral image classification(跨域)

整理自综述论文Cross-domain hyperspectral image classification(DOI:10.1016/j.patcog.2025.111836)

Label-limited cross-domain classification sub-task(标签受限)

给定一个具有丰富标记样本的源域S和一个具有有限标记样本的目标域T,目标是利用从源域获得的知识来提高目标域的分类性能。标签限制的跨域分类任务允许访问目标域中的样本和标签,但需要克服域间标签空间的不一致性

1. Pre-training with fine-tuning methods(微调预训练)

这些方法利用具有足够标记样本的数据集来预训练深度学习模型,然后在有限样本的目标数据集上进行微调。通过传递参数,它将浅层特征提取能力迁移到特定的模型上,从而降低了目标场景中图像特征表示的学习难度。这些方法有效地利用了大型数据集中的丰富信息,
以满足数据有限的场景的特定需求。

2. Training with adaptation methods(领域自适应)

大多将元学习与领域自适应技术相结合,同时学习可转移的特征,并调整跨领域的特征分布。

关注特征分解来解决领域偏差。从提取的特征中分离出域不变特征和类相关特征,以提高目标域的泛化性能

Label-free cross-domain classification sub-task(无标签)

给定一个标记的源域S和一个未标记的目标域T,目标是学习一个特征提取器,该特征提取器可以有效地利用S的监督信息提取域不变特征。无标签跨域分类任务允许访问目标域中的样本,但不允许访问标签。因此,有必要克服特征分布的差异

旨在假设两个域的标签空间一致,将知识从标记的源域转移到未标记的目标域。其主要思想是将源域和目标域的数据特征映射到相同的特征空间,以减小源域和目标域的不同分布之间的差异,从而可以利用其他域的数据来增强目标域的训练。

1. Discrepancy-based methods(差异度量方法)

这些方法的重点是通过建模和比较源域和目标域的特征分布或表示来减少它们之间的差异。

对比域差异(CDD)、最大分类器差异(MCD)、最大均值差异(MMD)和相关比对(CORAL)是基于差值测量的四种常用域自适应方法。他们分别通过计算在SD上训练的两个分类器之间的分类差异、类内和类间领域差异、均值差异、二阶统计量来评估两个领域之间的差异

  • CDD(Contrastive Domain Discrepancy,对比域差异)

    D^cdd=(1/M)∑D^cc−[1/M(M−1)]∑∑D^cc′(c≠c′) D̂_{cdd} = (1/M)∑D̂_{cc} - [1/M(M-1)]∑∑D̂_{cc'} (c≠c') D^cdd=(1/M)D^cc[1/M(M1)]∑∑D^cc(c=c)

  • MCD
  • MMD(Maximum Mean Discrepancy,最大均值差异)

 MMD⁡[F,p,q]=sup⁡f∈F(1m∑i=1m[f(xi)]−1n∑i=1n[f(yi)]) \ \operatorname{MMD}[\mathcal{F}, p, q]=\sup _{f \in \mathcal{F}}\left(\frac{1}{m} \sum_{i=1}^{m}\left[f\left(x_{i}\right)\right]-\frac{1}{n} \sum_{i=1}^{n}\left[f\left(y_{i}\right)\right]\right)  MMD[F,p,q]=fFsup(m1i=1m[f(xi)]n1i=1n[f(

仅给定的三条引用内容未涉及“基于原型的伪标签细化方法用于半监督高光谱图像分类”以及 “Prototype-based pseudo-label refinement for semi-supervised hyperspectral image classification” 的相关信息,无法依据这些引用准确回答。不过,一般而言,在半监督高光谱图像分类里,基于原型的伪标签细化方法会先利用少量有标签样本构建原型,这些原型代表不同的类别特征。接着,用这些原型为无标签样本生成伪标签。之后,通过一系列细化操作来提升伪标签的质量,例如考虑局部上下文信息、特征相似性等。 伪代码示例(仅为概念示意): ```python # 假设 hyperspectral_data 是高光谱图像数据, labeled_indices 是有标签样本的索引, labels 是对应标签 import numpy as np def prototype_based_pseudo_label_refinement(hyperspectral_data, labeled_indices, labels): # 构建原型 prototypes = [] unique_labels = np.unique(labels) for label in unique_labels: label_indices = np.where(labels == label)[0] prototype = np.mean(hyperspectral_data[labeled_indices[label_indices]], axis=0) prototypes.append(prototype) # 为无标签样本生成伪标签 unlabeled_indices = np.setdiff1d(np.arange(len(hyperspectral_data)), labeled_indices) pseudo_labels = [] for idx in unlabeled_indices: distances = [np.linalg.norm(hyperspectral_data[idx] - proto) for proto in prototypes] pseudo_label = np.argmin(distances) pseudo_labels.append(pseudo_label) # 伪标签细化(简单示例:基于局部上下文) refined_pseudo_labels = [] for i, idx in enumerate(unlabeled_indices): # 这里简单假设周围 3 个样本作为局部上下文 local_indices = get_local_indices(idx, hyperspectral_data.shape) local_pseudo_labels = [pseudo_labels[np.where(unlabeled_indices == local_idx)[0][0]] for local_idx in local_indices if local_idx in unlabeled_indices] if len(local_pseudo_labels) > 0: most_common_label = np.bincount(local_pseudo_labels).argmax() refined_pseudo_labels.append(most_common_label) else: refined_pseudo_labels.append(pseudo_labels[i]) return refined_pseudo_labels def get_local_indices(idx, shape): # 获取周围 3 个样本的索引 rows, cols = shape[:2] row, col = np.unravel_index(idx, (rows, cols)) local_indices = [] if row > 0: local_indices.append(np.ravel_multi_index((row - 1, col), (rows, cols))) if row < rows - 1: local_indices.append(np.ravel_multi_index((row + 1, col), (rows, cols))) if col > 0: local_indices.append(np.ravel_multi_index((row, col - 1), (rows, cols))) if col < cols - 1: local_indices.append(np.ravel_multi_index((row, col + 1), (rows, cols))) return local_indices ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值