论文题目:《Generative Adversarial Networks for Hyperspectral Image Classification》

论文作者:Lin Zhu, Yushi Chen, Member, IEEE, Pedram Ghamisi, Member, IEEE, and Jó n Atli Benediktsson, Fellow, IEEE

论文发表时间:2018

网络简称:3D-GAN

发表期刊:IEEE Transactions on Geoscience and Remote Sensing

Contributions

  1)本文首次探索了GAN在高光谱数据处理中的应用。通过精心设计的GAN生成了包含1D spectra 和 3D spectral-spatial patches的对抗样本。

  2)提出了光谱分类器和光谱-空间分类器两种GANs框架用于HSIs分类。该框架使用精心设计的cnn对人机交互进行分类,并采用正则化技术进行对抗性训练。

  3)首次采用对抗性样本进行HSIs分类,对上述GANs进行微调以提高分类性能。

  4)在训练样本有限的情况下,在三个知名的高光谱数据集上对所提出的方法进行了测试。

  Note:这种对抗性训练提高了判别CNN的泛化能力,这在训练样本有限的情况下非常重要。

GAN

  GAN是一种新的模型,通常包含生成模型G和判别模型D。模型G和D以对抗性的方式进行训练,其中G试图生成尽可能真实的假输入,D试图对真实输入和假输入进行分类。在这个对抗性博弈中,双方都希望得到最优的结果(即D可以得到最好的分类结果,G可以生成与真实数据分布最相似的伪数据)。通过两个网络的对抗和竞争,在使用有限的训练样本时,鉴别器的训练过程将持续而有效地进行,而不会立即陷入过拟合的困境。此外,GAN生成的样本可以用作虚拟样本。合理使用虚拟样本可以提高分类性能。本文利用生成的样本来提高分类精度,实验结果证明了使用这些样本的有效性。下图为GAN的总体结构。

  在训练过程中,给训练样本标号,来自真实数据的样本为1,来自生成数据的样本为0。鉴别器D被训练为最大化log(D(x)),这是将正确标签分配给正确源的概率。而生成器G被训练为最小化log(1-D(G(z)))。因此,优化的最终目的是解决极大极小问题:

  但是通过计算和评估发现,当鉴别器D具有真实样本的高概率分布时,D中的梯度可能会消失,导致训练过程停止。因此,修改后的损失函数可以写成如下优化形式:

Related Work

  为了解决GAN的稳定性问题,在G和D中使用深度卷积网络的深度卷积生成对抗网络(DCGAN)架构被提出。由于原始GAN不适合用于多类图像的分类,Semi-GAN被提出,将真实训练数据的标签导入判别器D。GAN的概念被扩展为一种带有半监督方法的条件模型。此外,Odena提出了可用于图像分类的辅助分类器GAN (AC-GAN),将其鉴别器D修改为可输出多类标签概率的softmax分类器。我们的网络是基于AC-GAN理论而形成的,而目标函数是经过修改的。根据多分类损失对参数进行优化,使其比传统的GANs更合适地优化损失函数。

Proposed Method  

  提出该方法的总体结构:

  为了可以做多分类任务,给输入噪声z和真实数据x加入真实数据分类标签。加入标签或其他条件,通过与原始GAN的输入进行共同作用,可以指导生成自己期望的数据。目标函数包含两个部分:正确输入数据SL的对数似然和CL的正确类标签的对数似然:

  因此D被优化以最大化Ls + Lc,而G被优化以最大化Lc - Ls。 当G能够生成与真实数据最相似的假数据,而D无法区分假数据和真实数据时,理论上G和D都会获得最优化的结果。这样,我们可以证明整个网络达到了纳什均衡条件。

  我们设计了光谱矢量和光谱空间信息结合的两种框架,前者称为1D-GAN,后者称为3D-GAN。上述两个框架中的G和D都是卷积网络的形式。G采用分步卷积神经网络(转置卷积)的形式(因为是生成模型->需要上采样),D采用卷积神经网络。在鉴别器D之后,并行应用sigmoid分类器和softmax分类器,分别对真实/虚假样本和hsi进行分类。

1D-GAN:

  由于原始HSI可获得数百个波段,这意味着输入具有高维,很难训练生成器G(即训练阶段不稳定)。也就是说,由于冗余度高,生成器无法有效地模拟真实数据。主成分分析(PCA)可以通过将光谱维数降至合适的尺度来压缩整个图像,因此,我们基于PCA提取HSIs的光谱特征,保留了10个主成分。在卷积网络中,任何池化层都被stride convolutions(鉴别器)和fractional-strided convolutions(生成器)取代。

  噪音z发送到生成器中的大小是(1*1*1),通过生成器的卷积转换后,大小为(10*1*1)。在网络训练期间,假设原始数据集有N个类。首先,每个生成的样本通过网络向前传递,并通过取概率预测向量的最大值为其分配一个标签。因此,这些假样本可以用这些标签在网络中训练。此外,生成的样本不属于任何类别的真实样本。由于真实样本和生成样本的差异,因此创建一个新的类标签(即N+1),每个假样本都被赋予这个新标签。1D-GAN中的生成器和判别器结构如下:

3D-GAN:

  用PCA把数据将为3个主成分,并保留空间信息。对生成器和鉴别器都进行了批处理归一化处理,去除了全连通的隐含层。其余步骤与1D-GAN类似。输入噪声的大小为100*1*1,生成器将输入转换为大小为64*64*3的假样本。3D-GAN中的生成器和判别器结构如下:

  实验结果(KSC):

Conclusion

  本文首次探讨了GAN在HSIs分类中的有效性和实用性。在GANs的帮助下,深度CNN在分类精度方面比传统CNN有更好的表现。

  该算法缓解了CNN引起的过拟合问题。具体设计了两个框架:(1)基于光谱向量的一维GAN框架和(2)结合光谱和空间特征的三维GAN框架。与其他最先进的方法相比,这两种体系结构在特征提取和图像分类方面表现出了出色的能力。在提出的GANs中,使用PCA来降低输入的高维数,这对稳定训练过程非常重要。由于深度模型中存在大量的可学习参数(如权值),深度CNN存在过拟合的问题,而GAN可以看作是一种正则化技术,可以缓解训练过程中的过拟合现象。此外,本文首次展示了GAN生成的HSI样本,这可能为高光谱数据生成打开了一个新的窗口。更重要的是,本文首次将生成的对抗样本作为HSIs分类的训练样本。这些样本显著提高了分类性能。上述技术显示了GANs在HSI分类方面的巨大潜力。

 
 

《Generative Adversarial Networks for Hyperspectral Image Classification 》论文笔记的更多相关文章

  1. 《Vision Permutator: A Permutable MLP-Like ArchItecture For Visual Recognition》论文笔记

    论文题目:<Vision Permutator: A Permutable MLP-Like ArchItecture For Visual Recognition> 论文作者:Qibin ...

  2. [place recognition]NetVLAD: CNN architecture for weakly supervised place recognition 论文翻译及解析(转)

    https://blog.csdn.net/qq_32417287/article/details/80102466 abstract introduction method overview Dee ...

  3. 论文笔记系列-Auto-DeepLab:Hierarchical Neural Architecture Search for Semantic Image Segmentation

    Pytorch实现代码:https://github.com/MenghaoGuo/AutoDeeplab 创新点 cell-level and network-level search 以往的NAS ...

  4. 论文笔记——Rethinking the Inception Architecture for Computer Vision

    1. 论文思想 factorized convolutions and aggressive regularization. 本文给出了一些网络设计的技巧. 2. 结果 用5G的计算量和25M的参数. ...

  5. 论文笔记:Fast Neural Architecture Search of Compact Semantic Segmentation Models via Auxiliary Cells

    Fast Neural Architecture Search of Compact Semantic Segmentation Models via Auxiliary Cells 2019-04- ...

  6. 论文笔记:ProxylessNAS: Direct Neural Architecture Search on Target Task and Hardware

    ProxylessNAS: Direct Neural Architecture Search on Target Task and Hardware 2019-03-19 16:13:18 Pape ...

  7. 论文笔记:DARTS: Differentiable Architecture Search

    DARTS: Differentiable Architecture Search 2019-03-19 10:04:26accepted by ICLR 2019 Paper:https://arx ...

  8. 论文笔记:Progressive Neural Architecture Search

    Progressive Neural Architecture Search 2019-03-18 20:28:13 Paper:http://openaccess.thecvf.com/conten ...

  9. 论文笔记:Auto-DeepLab: Hierarchical Neural Architecture Search for Semantic Image Segmentation

    Auto-DeepLab: Hierarchical Neural Architecture Search for Semantic Image Segmentation2019-03-18 14:4 ...

  10. 论文笔记系列-DARTS: Differentiable Architecture Search

    Summary 我的理解就是原本节点和节点之间操作是离散的,因为就是从若干个操作中选择某一个,而作者试图使用softmax和relaxation(松弛化)将操作连续化,所以模型结构搜索的任务就转变成了 ...

随机推荐

  1. CF1656D K-good

    题意: 给定一个整数 \(n\),请找出一个大于等于 \(2\) 的整数 \(k\),使得 \(n\) 可以表示成 \(k\) 个除以 \(k\) 的余数互不相同的数之和. 注意\(k\)个除以 \( ...

  2. Vue 配置代理

    说明:这里的vue代理是指用vue静态服务器做代理.使用的是 http-proxy-middleware 这个模块(这个模块相当于是node.js的一个插件). 版本: vue-cli 3.0以上 修 ...

  3. 说起分布式自增ID只知道UUID?SnowFlake(雪花)算法了解一下(Python3.0实现)

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_155 但凡说起分布式系统,我们肯定会对一些海量级的业务进行分拆,比如:用户表,订单表.因为数据量巨大一张表完全无法支撑,就会对其进 ...

  4. 那些舍不得删除的 MP3--批量修改mp3的ID3tag

    整理电脑时发现很多mp3.那是大约2001年至2009年之间.那个时候大家听歌,还是习惯从网上下载mp3.虽然现在听歌比从前方便多了,简单到只需在APP中输入歌名,但用播放器听mp3的感觉是完全不同的 ...

  5. POJ2201 Cartesian Tree (cartesian tree)

    #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> ...

  6. Ceph 块存储 创建的image 映射成块设备

    将创建的volume1映射成块设备 [root@mysql-server ceph]# rbd map rbd_pool/volume1 rbd: sysfs write failed RBD ima ...

  7. Python自动化之常用模块学习

    自动化常用模块 urllib和request模块学习笔记 '获取页面,UI自动化校验页面展示作用': #-*- coding : utf-8 -*-import urllib.requestimpor ...

  8. HCNP Routing&Switching之MAC安全

    前文我们了解了GRE over IPSec 相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/16601491.html:今天我们来聊一聊mac安全相关话 ...

  9. 【JDBC】学习路径1-JDBC背景知识

    学习完本系列JDBC课程后,你就可以愉快使用Java操作我们的MySQL数据库了. 各种数据分析都不在话下了. 第一章:废话 JDBC编程,就是写Java的时候,调用了数据库. Java Databa ...

  10. python 中matplotlib 绘图

    python 中matplotlib 绘图 数学建模需要,对于绘图进行简单学习 matpoltlib之类的包安装建议之间用anaconda 绘制一条y=x^2的曲线 #比如我们要绘制一条y=x^2的曲 ...