GGCN:基于GPU的高光谱图像分类算法 下载: 1039次
1 引言
高光谱遥感是对地观测的重要手段,在获取地表图像信息的同时得到地物的光谱信息[1]。通过对图像进行精细化分类,可以在农业、环境管理和城市规划等众多关键领域提供重要的决策参考[2]。
传统的机器学习方法如基于支持向量机(SVM)的分类方法[3]、随机森林[4]等,缺乏遥感专业背景知识,对这类算法分类精度的提升已经遇到瓶颈。与传统机器学习方法相比,深度学习方法能自动从图像中提取特征,并且在处理高维度的数据时能避免休斯现象[5],因此成为研究热点[6-7]。Leng等[8]提出了Cube-卷积神经网络(CNN)-SVM模型用于高光谱图像分类,具有很好的分类效果。由于CNN的特性,该模型在传统处理器CPU上进行训练时耗时严重,无法满足实时性的需求。
近些年,随着GPU通用计算技术的迅速发展,人们开始在GPU上进行CNN网络的训练以寻求更快的训练速度[9-10]。沈恬等[11]在使用GPU实现CNN的加速优化时,使用更多的寄存器取代共享内存实现数据共享。由于寄存器的读写响应时间远小于共享内存,因此相较于CPU的实现,取得了不错的加速效果。但是,这种方式对输入数据的形状极为敏感,灵活性较低。Dong等[12]提出基于GPU的GCN (GPU based Cube-CNN)算法实现Cube-CNN-SVM模型的并行。使用PNPE(Parallel Neighbor Pixels Extraction)并行近邻像素提取算法进行数据的预处理,以并行的方式从原始图像中提取Cube数据,然后载入到GPU中进行CNN的训练,有效地提高了模型训练效率。
卷积层是CNN模型中比较重要的一部分。通过对GCN模型的进一步分析发现,卷积过程在整个模型耗时中占比接近40%。在GCN模型中使用滑窗的方式实现卷积计算,这种实现方式最简单直接,但是对内存的访问比较混乱,难以实现并行,而且对GPU的资源利用率较低。因此,如果能够减少卷积的执行时间就能进一步提升模型效率。Nakasato[13]提出CNN卷积实现的另一个方式:使用通用矩阵乘法(GEMM)算法,将卷积计算过程转化为矩阵相乘的方式。矩阵的乘法运算不仅方便数据在内存中的读写,同时还适合利用GPU实现并行计算。但是在卷积运算中使用GEMM算法需要对高光谱数据进行重新组织。由于高光谱图像具有维度高、波段多、数据量大等特点,在对高光谱数据进行低维重新排列的时候会导致两个问题:1)增加额外操作;2)算法效率较低。因此,本文提出基于GEMM的通用并行近邻像素提取算法(G-PNPE),以并行的方式将Cube数据的提取和数据的重新组织结合在一起,处理后的数据输入到GGCN(GPU based Cube-CNN improved by GEMM)模型进行训练。最终整个模型能在GPU中实现Cube数据的并行卷积,模型训练过程中卷积消耗的时间大大缩短,进而整个算法的效率得到明显地提升。
2 Cube-CNN-SVM分类模型
CNN是人工神经网络中的一种,其特点是通过图像卷积进行特征提取,可以很好地应用于图像分类,在图形处理器芯片上拥有很大的应用场景和加速空间。
在Cube-CNN-SVM分类模型中,为了提高分类精度,将高光谱图像的光谱信息和空间信息进行融合,输入到分类器进行训练。为了达到空-谱融合的目的,采用PNPE算法进行图像预处理。该预处理算法在提取带标签的像素的同时会提取该像素相邻位置的像素。将标签像素与其相邻像素一起作为训练数据输入到模型进行训练。这种提取像素的近邻像素提取策略主要有三种方式:1)单像素策略(1P),只提取带标签的单一像素作为样本;2)4近邻策略(4N),提取带标签的像素及其上下左右四个相邻位置的像素作为样本;3)8近邻像素策略(8N),提取以带标签像素为中心的3×3个像素作为样本。通过这些方式提取到的数据称为Cube样本。
首先对高光谱图像进行预处理,产生Cube样本,然后将样本输入到模型进行训练。训练后的数据作为高级特征使用SVM作为分类器进行分类。
Cube-CNN-SVM模型使用Cube立方体作为输入进行训练,每个立方体在训练过程中相互独立,因此很适合并行加速。
3 GGCN并行计算模型
3.1 GEMM算法
按照定义实现多个嵌套的卷积运算通常包括多层循环,其中,外部循环遍历输入的图像,内部循环遍历卷积核。
按照卷积的定义进行卷积的计算存在执行效率较低、不适合使用并行计算等问题。可以通过对输入数据以及卷积核的重组和复制,将卷积的运算转换为矩阵相乘的形式来进行优化。
GEMM的核心思想就是对输入数据进行展开、复制,对卷积核进行重新排列。使用这种方法在正向传播过程中,每个卷积运算都将转换为矩阵乘积的形式,相应地,可以将反向传播简单地看作另一个矩阵乘积的运算。这种方式不仅使得算法在训练过程中对内存的访问更加规则,而且方便使用并行的方式进行加速。
卷积层是CNN模型中最重要的一部分,同时也是整个模型耗时最严重的部分。因此,如果能有效提高卷积层的计算效率就能提高算法整体的运行效率。使用GEMM算法的思想将卷积运算变为矩阵乘的形式,为并行化做好准备。
3.2 G-PNPE预处理算法
引言中提到,要将GEMM应用在模型中需要重新组织高光谱数据,而这会增加额外的工作导致算法复杂度增加。因此,结合GCN模型的特点,本文提出G-PNPE并行数据预处理算法。该预处理算法有两个特点:1)结合Cube数据提取的过程将数据转换为GEMM算法适用的结构,避免了额外的操作;2)该算法在GPU中运行,使用并行的方式将高光谱图像提取为Cube形式并存储在全局内存中,用于后续模型的训练,对算法效率的影响较小。
Cube数据提取的过程如下。
1)将高光谱图像看作一个维度为H×W×C的三维矩阵,在CPU中扫描每个有效元素(像素值非空的像素)的索引位置为(x,y,c),通过该索引可以得知索引近邻像素的位置信息。对每个Cube中3×3×C个元素进行索引可以得到第i个元素在数据矩阵中的位置。
2)按照上述方式对卷积核矩阵进行扫描,计算得到卷积核中第j个元素在转变之后的矩阵中的位置
式中:H为高光谱图像的高;W为高光谱图像的宽;C为高光谱图像的波段数。
综上所述,首先使用G-PNPE算法从高光谱数据中提取Cube数据,提取到的Cube数据被组织成数据矩阵,然后输入模型中进行卷积运算。
3.3 模型训练
在GGCN框架中,训练样本在经过预处理之后被存放在全局内存,在模型训练中可以被GPU直接访问。在使用CNN训练模型时,可以选择不同的激活函数和损失函数。
以本文采用的输出层softmax 激活函数与交叉熵损失函数为例,损失值的计算式表示为
式中:n为样本类别;yi为模型期待的输出值;ai为模型实际输出。
为了提高模型精准度,使用MBGD(Mini-batch Gradient Descent)算法调整算法的参数。以第i个
神经元为例,通过(3)式定义的损失函数可以计算出对输出值的偏导为
输出层的函数被定义为ai=f(zi) ,其中zi是权重与输入数据之间的点积。根据链式法则,可以得到:
通过计算损失函数
模型的训练阶段被分成两个部分:前向传播和反向传播。在前向传播阶段计算每个Cube的分类结果,后向传播阶段更新网络的权重以便于获得更好的分类结果。具体实现的伪代码如
表 1. 算法伪代码
Table 1. Algorithm pseudocode
|
4 实验与结果分析
为了验证改进模型的精度和效率,本文在非并行、原模型、改进模型上进行了对比实验。高光谱图像在获取的过程中由于拍摄区域、分辨率不同而导致的两个主要差异:数据量大小差异和地物信息差异。本文使用KSC(Kennedy Space Center)、PU(Pavia University Scene)和Indian Pines三个高光谱图像作为实验数据,
将数据集按照4∶1的比例被分为训练集和测试集,
从
表 2. 遥感数据集信息
Table 2. Information of the remote sensing datasets
|
表 6. 改进模型与原模型各层级时间占比
Table 6. Ratio of time between the improved model and the original model
|
表 3. 不同数据预处理方式时间消耗对比
Table 3. Comparison of time consumption of different data preprocessing methods
|
表 4. 不同分类模型平均训练时间和加速比
Table 4. Comparison of running time and speedup of different classification models
|
表 5. 不同分类模型准确率
Table 5. Accuracy of different classification models
|
然后在Cube-CNN-SVM(非并行)、GCN、GGCN三种模型下,使用MBGD算法(Batchsize为10和Batchsize为100两种情况)分别对3组数据进行了5次训练,统计模型的平均训练时间以及训练结果的平均精度。每次实验中均使用20个3×3×19的卷积核,学习率设置为0.01,迭代次数为100,像素提取的策略均为8N。
使用nvprof工具对GGCN模型训练过程进行监督和统计分析,可以得到模型的每一层的时间占比,
为了验证本文模型对卷积实现并行化的通用性、稳定性,本文逐层增加卷积层的次数,并计算在不同层数下的模型的加速比。
图 5. 模型训练损失和精度变化曲线。(a)损失;(b)精度
Fig. 5. Model training loss and accuracy variation. (a) Loss; (b) accuracy
图 6. 不同数量卷积层加速比的变化
Fig. 6. Changes in the speedup ratio of different numbers of convolution layers
5 结论
本文在高光谱图像并行分类模型GCN的基础上进行改进,利用GEMM的思想实现卷积运算并行化,针对GEMM在模型中应用的相关问题提出了G-PNPE数据预处理算法,通过该算法对数据进行处理并保存到全局内存,由GPU读取直接进行模型训练。实验结果表明,改进后的模型在保持精度不变的情况下比原模型速度提升25%~30%,并且在多个数据集进行的实验表明,模型对高光谱数据集具有鲁棒性。同时验证了在多个卷积层的情况下,本文模型具有更好的加速表现和泛化能力。因此,所提GGCN模型不仅在效率上有进一步的提升,而且具有较好的扩展能力。
[1] 张兵. 高光谱图像处理与信息提取前沿[J]. 遥感学报, 2016, 20(5): 1062-1090.
[2] Bioucas-Dias J M, Plaza A, Camps-Valls G, et al. Hyperspectral remote sensing data analysis and future challenges[J]. IEEE Geoscience and Remote Sensing Magazine, 2013, 1(2): 6-36.
[3] Camps-Valls G, Bruzzone L. Kernel-based methods for hyperspectral image classification[J]. IEEE Transactions on Geoscience and Remote Sensing, 2005, 43(6): 1351-1362.
[4] Belgiu M, Draguţ L. Random forest in remote sensing: a review of applications and future directions[J]. ISPRS Journal of Photogrammetry and Remote Sensing, 2016, 114: 24-31.
[5] LeCun Y, Bengio Y, Hinton G. Deep learning[J]. Nature, 2015, 521(7553): 436-444.
[6] 闫苗, 赵红东, 李宇海, 等. 基于卷积神经网络的高光谱遥感地物多分类识别[J]. 激光与光电子学进展, 2019, 56(2): 021702.
[7] 刘玉珍, 蒋政权, 马飞, 等. 基于超图和卷积神经网络的高光谱图像分类[J]. 激光与光电子学进展, 2019, 56(11): 111007.
[8] Leng JB, LiT, BaiG, et al.Cube-CNN-SVM: a novel hyperspectral image classification method[C]//2016 IEEE 28th International Conference on Tools with Artificial Intelligence (ICTAI). 6-8 Nov. 2016, San Jose, CA, USA. New York: IEEE Press, 2016: 1027- 1034.
[9] 李萍, 关桂霞, 吴太夏, 等. 基于Cholesky分解的高光谱实时异常探测的GPU优化[J]. 传感器与微系统, 2019, 38(3): 7-10.
Li P, Guan G X, Wu T X, et al. GPU optimization of hyperspectral real-time anomaly detection based on Cholesky decomposition[J]. Transducer and Microsystem Technology, 2019, 38(3): 7-10.
[10] 姜雪茸, 魏威. CUDA技术在数字图像匹配中的应用[J]. 现代信息科技, 2019( 18): 61- 63.
Jiang XR, WeiW. Application of CUDA technology in digital image matching[J]. Modern Information Technology, 2019( 18): 61- 63.
[11] 沈恬, 胡飞. 卷积神经网络在图形处理GPU芯片上的优化[J]. 集成电路应用, 2017( 6): 18- 22.
ShenT, HuF. Acceleration of CNN on GPU[J]. Applications of IC, 2017( 6): 18- 22.
[12] DongH, LiT, Leng JB, et al.GCN: GPU-based cube CNN framework for hyperspectral image classification[C]//2017 46th International Conference on Parallel Processing (ICPP). 14-17 Aug. 2017, Bristol, UK. New York: IEEE Press, 2017: 41- 49.
[13] Nakasato N. A fast GEMM implementation on the cypress GPU[J]. ACM SIGMETRICS Performance Evaluation Review, 2011, 38(4): 50-55.
张明华, 邹亚晴, 宋巍, 黄冬梅, 刘智翔. GGCN:基于GPU的高光谱图像分类算法[J]. 激光与光电子学进展, 2020, 57(20): 201101. Minghua Zhang, Yaqing Zou, Wei Song, Dongmei Huang, Zhixiang Liu. GGCN: GPU-Based Hyperspectral Image Classification Algorithm[J]. Laser & Optoelectronics Progress, 2020, 57(20): 201101.