近年来高光谱深度学习语义分割方法分类及代表性网络

目录

一、卷积神经网络——光谱、空间、光谱-空间CNN

1. SSRN(Spectral-Spatial Residual Network)

2. HybridSN

3. A2S2K-ResNet

二、图卷积神经网络GCN

GCN(Graph Convolutional Networks for Hyperspectral Image Classification)

三、深度置信网络DBN

四、循环神经网络RNN

SRNN(Scalable Recurrent Neural Network)

五、生成对抗网络GAN(Generative Adversarial Network)

3D GAN

六、自注意力机制Transformer

1. SST(Spatial-Spectral Transformer)

2. SSFTT(Spectral-Spatial Feature Tokenization Transformer)


文中的所有引用量源自谷歌学术

文章代码均开源,可在github进行搜索

一、卷积神经网络——光谱、空间、光谱-空间CNN

       为充分利用高光谱图像在光谱维度上的信息,3D-CNN能够同时在空间和光谱维度上进行卷积操作,从而更好地捕捉高光谱图像中的光谱-空间特征。(这里的举例均为3D-CNN)

1. SSRN(Spectral-Spatial Residual Network)

高被引1000+

Zhong Z, Li J, Luo Z, et al. Spectral–spatial residual network for hyperspectral image classification: A 3-D deep learning framework[J]. IEEE Transactions on Geoscience and Remote Sensing, 2018, 56(2): 847-858.

2. HybridSN

高被引1000+

Roy S K, Krishna G, Dubey S R, et al. HybridSN: Exploring 3-D–2-D CNN feature hierarchy for hyperspectral image classification[J]. IEEE Geoscience and Remote Sensing Letters, 2019, 17(2): 277-281.

3. A2S2K-ResNet

引用283

Roy S K, Manna S, Song T, et al. Attention-based adaptive spectral–spatial kernel ResNet for hyperspectral image classification[J]. IEEE Transactions on Geoscience and Remote Sensing, 2020, 59(9): 7831-7843.

二、图卷积神经网络GCN

GCN(Graph Convolutional Networks for Hyperspectral Image Classification)

高被引1000+

Hong D, Gao L, Yao J, et al. Graph convolutional networks for hyperspectral image classification[J]. IEEE Transactions on Geoscience and Remote Sensing, 2020, 59(7): 5966-5978.

三、深度置信网络DBN

网络较老,暂不考虑。

四、循环神经网络RNN

       RNN及其变种(如LSTM和GRU)擅长处理序列数据,适用于捕捉高光谱图像光谱维度上的依赖关系。

SRNN(Scalable Recurrent Neural Network)

引用60

Paoletti M E, Haut J M, Plaza J, et al. Scalable recurrent neural network for hyperspectral image classification[J]. The Journal of Supercomputing, 2020, 76(11): 8866-8882.

五、生成对抗网络GAN(Generative Adversarial Network)

3D GAN

高被引2000+

Wu J, Zhang C, Xue T, et al. Learning a probabilistic latent space of object shapes via 3d generative-adversarial modeling[J]. Advances in neural information processing systems, 2016, 29.

六、自注意力机制Transformer

       近年来,Transformer模型在自然语言处理和计算机视觉领域表现出了强大的性能。高光谱图像语义分割也开始引入Transformer模型,如ViT(Vision Transformer),以捕捉全局光谱-空间特征。

1. SST(Spatial-Spectral Transformer)

引用250

He X, Chen Y, Lin Z. Spatial-spectral transformer for hyperspectral image classification[J]. Remote Sensing, 2021, 13(3): 498.

2. SSFTT(Spectral-Spatial Feature Tokenization Transformer)

引用396

Sun L, Zhao G, Zheng Y, et al. Spectral–spatial feature tokenization transformer for hyperspectral image classification[J]. IEEE Transactions on Geoscience and Remote Sensing, 2022, 60: 1-14.

### 多光谱遥感影像语义分割算法实现 针对多光谱遥感图像的语义分割,UHRSNet 是一种专门为超高分辨率图像设计的语义分割网络[^1]。该模型能够有效处理高分辨率下的细节特征提取问题。 对于少类别样本不平衡的情况,在训练过程中可以通过上采样的方式来增强稀有类别的表示能力[^2]: ```python import os from PIL import Image import numpy as np def upsample_labels(label, image_path, output_dir): # 定义需要上采样的类别ID列表 rare_classes = [5, 6, 7] # 判断当前标签图是否含有指定的稀有类别 contains_rare_class = any(cls_id in np.unique(label) for cls_id in rare_classes) if contains_rare_class: upsample_num = 2 base_name = os.path.basename(image_path).split('.')[0] for i in range(upsample_num): new_img_path = f"{output_dir}/{base_name}_up{i}.png" new_lbl_path = f"{output_dir}/{base_name}_label_up{i}.npy" img = Image.open(image_path) img.save(new_img_path) np.save(new_lbl_path, label.astype(np.uint8)) ``` 为了更好地适应多光谱数据的特点,通常会调整输入层以接收更多波段的信息。下面是一个简单的 PyTorch 版本的 U-Net 架构修改实例,用于支持四通道(RGB+NIR)的多光谱遥感影像作为输入: ```python import torch.nn as nn import torchvision.transforms.functional as TF class MultiSpectralUNet(nn.Module): def __init__(self, num_bands=4, out_channels=9): super(MultiSpectralUNet, self).__init__() # 修改初始卷积核数量以匹配输入波段数 self.inc = DoubleConv(num_bands, 64) ... # 后续编码器解码器结构保持不变 def forward(self, x): size = x.size()[2:] x1 = self.inc(x) ... # 使用自定义转换函数读取并预处理多光谱图片 def load_multispectral_image(file_path): bands_data = [] with rasterio.open(file_path) as src: for band_idx in range(1, src.count + 1): band = src.read(band_idx) bands_data.append(TF.to_tensor(band)) multispec_tensor = torch.cat(bands_data, dim=0) return multispec_tensor.unsqueeze(dim=0) if __name__ == "__main__": model = MultiSpectralUNet() test_input = load_multispectral_image('path_to_your_ms_image.tif') pred_mask = model(test_input) ``` 上述代码展示了如何构建一个多光谱版本的 UNet 来执行语义分割任务,并提供了加载多光谱 TIFF 文件的方法。通过这种方式可以有效地利用额外的光谱信息提高分类精度。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值