高光谱图像分类:Fermat距离与主动学习的半监督方案
做高光谱图像分类的人,大概率都经历过这种尴尬:数据维度几百个波段,可用标注像素却少得可怜。模型在训练集上表现尚可,一到测试集就露馅——维度太高、样本太少,过拟合几乎是必然的。想多标注一些像素,又需要领域专家对着地表真值逐点判读,成本高得离谱。
半监督学习看起来是解药。图谱方法只需要少量标注,就能通过图上的标签传播把信息扩散到整个数据流形。但真正上手跑一遍你会发现,问题往往不在传播算法本身,而在给传播算法喂数据的那张图上。用欧氏距离加高斯核构造亲和矩阵,在高维高光谱特征空间里极易产生跨界连接:两个不同类别的像素因为特征向量接近而被连上一条强边,标签就会像病毒一样扩散到错误区域。
所以,当看到“Fermat Active Laplace Learning for Semi-Supervised Hyperspectral Image Classification”这篇论文题目时,我的第一个判断是:这类方法值得关注的真正原因,不是它发明了一个多惊艳的分类器,而是它换掉了整条流水线里最容易出错、也最容易被忽视的那个环节——距离度量。它用 Fermat 距离构造密度感知的图,用 Laplace Learning 做标签传播,再用主动学习把有限的人工标注预算花在最值得标注的像素上,三者拼成了一套完整的半监督分类闭环。
本文从三个层面展开。第一,把 Fermat 距离、Laplace Learning、主动学习三个概念讲透,并说明它们为什么能组合到一起;第二,给出一个不依赖论文复现细节的最小 Python 实现,覆盖构图、传播、样本查询的完整迭代流程;第三,梳理新手最容易踩的坑和工程化建议。读完你可以直接在自己的高光谱数据上做对照实验。需要提前说明的是,下面这套代码是参考方法设计思路整理的通用流程,并非论文官方代码,具体实验结论请以论文原文为准。
1. 这篇文章真正要解决的问题
1.1 高光谱分类的标注困境
高光谱图像分类是遥感领域的经典任务,也是典型的“高维小样本”问题。成像光谱仪在可见光到红外区间连续采样,一张图通常包含上百个波段,像素特征维度动辄几百。与此同时,像素级地物真值标注本身就是一项重体力活:需要专家结合实地勘察、历史测绘数据逐像素判读,成本高、周期长、主观性强。因此,很多高光谱评测任务会刻意控制标注预算,让模型在每类只有 5 个、10 个或 15 个标注样本的前提下进行训练。
在这种条件下,传统监督分类器面临三个问题:一是维度灾难,样本数量不足以支撑高维特征的统计估计;二是标注噪声,不同专家对同一区域的判读可能不完全一致;三是类别不平衡,占比较小的地物类别往往只有极少量标注样本,容易在训练中被忽略。
1.2 半监督方法的瓶颈在“图”
半监督学习天然的出发点就是解决标注稀缺:既然人工标注贵,那就把大量无标注样本也用起来。图方法是最经典的一类半监督算法,思想非常直观:把所有像素看作图上的节点,用相似度构造边,假设标签在图上平滑变化,然后让已标注节点的标签沿边扩散到未标注节点。
这个思路在低维数据上很有效,但在高光谱特征空间里会遇到一个本质性问题:图的构造质量直接决定传播效果。如果图里存在跨越类别边界的强边,标签就会沿着这条错误边扩散到其他类别;如果图过于稀疏,传播则被困在局部区域,无法覆盖整个地物分布。而最主流的
