最近一直在看半监督在高光谱图像分类上的应用,打算写一个系列,把一些经典的效果好的论文总结梳理一下,当作一个督促。

一. 半监督大体分成五种方法

① Generative model 

缺点:生成模型是基于严格的假设构建的,例如,训练样本应遵循高斯分布或其他分布

②Self-training

Self-Training的做法如下:

  1. 用已标注数据集A训练一个分类模型M
  2. 用该模型对未标记数据集B进行预测
  3. 将预测结果中置信度高的K个样本,连同它们的Label加入训练数据A,并从B中删除
  4. 回到第1步。

缺点:如果一个错误分类的样本被加入了原来的训练集,那么在其后的训练过程中,它所犯的错误只会越来越深,还会诱使其他样本犯错,而这也是自训练模型最大的缺点。

③Co-training
 协同训练的过程如下:
 假设数据有两种特征表达,比如图像特征(X1, Y1)和文本特征(X2, Y2)。对于未标注数据同样有两种特征。算法如下:

  1. 从(X1, Y1),(X2, Y2)分别训练得到两个分类模型F1,F2
  2. 分别使用F1与F2对未标注数据进行预测
  3. 将F1所预测的前K个置信度最高的样本加入F2的训练数据集
  4. 将F2所预测的前K个置信度最高的样本加入F1的训练数据集
  5. 回到第1步

缺点:并不是所有数据集都满足有两个独立的特征子集

④Transductive Support Vector Machine (TSVM) 
(SVM may lead to a local minimum because of the non-convex loss function)

半监督支持矢量机中比较著名的是TSVM, 是针对二分类问题的学习方法。TSVM试图考虑对未标记样本进行可能的类别分配(Label Assignment),即尝试将每个未标记样本分别作为正例或反例,然后在所有这些结果中,寻求一个在所有样本(包括有标记样本和进行了标记指派的未标记样本)上间隔最大化的划分超平面。一旦超平面确定,未标记样本的最终标记指派就是其预测结果。

缺点:容易陷入局部最优解

⑤Graph-based method 


缺点:计算量大,并且无法对给定的个样本生成标签

二. Semi-supervised classification for hyperspectral imagery based on spatial-spectral Label Propagation(SS-LPSVM)

因为图不能完全表示数据的固有空间分布,因此文章加入空间信息与光谱信息结合进行半监督分类以及类标传播。主要思想:先选出一部分标记样本,利用类别转移从未标记样本中找出一部分未标记样本(标记样本的邻域),然后根据转移得到他们的类别。最后将新增的标记样本和最初始的标记样本放在一起训练SVM最后进行分类。

基于图的半监督分类算法的主要思想是通过构建图来使定义的能量函数最小化从而将类标签分配给未标记的样本。对于能量函数,应满足两个条件:
(1)损失函数最小,即标记样本的预测标签应尽可能与现有标签相似;     

(2)平滑函数最小,这意味着两个相邻的样本最有可能属于同一个类。

半监督网络python 半监督分类怎么做_半监督网络python

因此基于图的半监督分类的能量函数为:

                                                  

半监督网络python 半监督分类怎么做_sed_02

方法:

(标记样本l是每类选取25个样本,未标记样本u是l中样本的领域中的未标记样本)

1:利用PCA得到光谱特征 (减少计算量),利用KNN算法构造光谱邻接矩阵 Ww

                                    

半监督网络python 半监督分类怎么做_数据_03

2:利用2D-Gabor滤波在第一主成分上提取空间信息,构造空间邻接矩阵Ws

                 

半监督网络python 半监督分类怎么做_高光谱图像处理_04

3:结合两个矩阵,构造spatial-spectral graph 矩阵

                 

半监督网络python 半监督分类怎么做_sed_05

4:构造概率转移矩阵   

传播过程如图所示,其中浅灰和深灰节点为不同类别的标记样本,空心节点为未标记样本。根据箭头上的概率将标签从标记样本传播到未标签样本。例如,未标记样本“1”分别具有从两个标记样本“2”和“3”传播的两个概率,最终其标记与标记样本“2”相同,因为“2”更大的可能性。直到所有样本都被分配了标签传播过程将停止。P是标签传播概率矩阵,由

半监督网络python 半监督分类怎么做_数据集_06

定义,

半监督网络python 半监督分类怎么做_数据_07

是从节点i到节点j的标签传播概率。                       

半监督网络python 半监督分类怎么做_sed_08

5:进行概率转移 

标签传播概率矩阵分为四个子矩阵

半监督网络python 半监督分类怎么做_sed_09

,使用类标传播得到的未标记样本的预测标签是:

半监督网络python 半监督分类怎么做_数据集_10

6:分类

合并标记样本l和未标记样本u,然后训练SVM以最终预测测试集的标签。

三. 与MugNet: Deeplearning for hyperspectral image classification using limited samples对比

                                 

半监督网络python 半监督分类怎么做_数据_11

                                                   

半监督网络python 半监督分类怎么做_数据_12

在Indian pains数据上MugNet每类采取20个样本,SS-LPSVM每类25个样本效果反而不如MugNe的原因我大致分析如下:

1.MugNet深度方法PCANet提取特征
2.MugNet用了所有的未标记样本
3.SS-LPSVM参数过多
4.SS-LPSVM错分样本对后续的测试影响