# 基于机器学习的遥感图像识别算法(kNN/SVM/CNN/LSTM)
随着遥感卫星成像技术的提升和机器学习的蓬勃发展,越来越多的研究人员利用机器学习的方法来进行遥感图像识别,取得了很好的效果。在本次作业中,我将利用四种机器学习算法在 WHU-RS19 数据集上进行遥感图像识别的尝试,这其中既包括传统的 kNN 和 SVM,也包括近年来得到青睐的 CNN 和 LSTM 算法。本文的基本结构如下:
* 数据集
* WHU-RS19 的简单介绍
* 数据集的预处理与索引文档的生成
* kNN
* kNN 的测试效果
* 分析参数 k 对 kNN 的测试效果的影响
* SVM
* SVM 的测试效果
* 分析学习率和正则化参数对 SVM 的测试效果的影响
* SVM 权值矩阵的可视化
* CNN
* CNN 的测试效果
* 不同网络结构对 CNN 的测试结果的影响
* LSTM
* LSTM 的测试效果
* 分析学习率和 dropout 值对 LSTM 的测试效果的影响
* 总结
## 数据集
### WHU-RS19 的简单介绍
本次遥感图像识别算法采用的数据集是武汉大学提供的 WHU-RS19 数据集,该数据集包含了机场,海滩,桥,商业区,沙漠,农田,足球场,森林,工业区,草地,山,公园,停车场, 池塘, 港口, 火车站, 住宅区, 河流和高架桥总共 19 类遥感图像。图像的分辨率大都为 600×600,每一个种类大约有 50 张图像。
<div align=center><img width="260" height="260" src="figure/bridge_17.jpg"/></div>
<div align=center> 图1 bridge_17 </div>
<div align=center><img width="260" height="260" src="figure/footballField_13.jpg"/></div>
<div align=center>图2 footballField_13</div>
### 数据集的预处理与索引文档的生成
在原始的数据集中,有 4 张分辨率不是 600×600 的图像已被去除。
利用 split_dataset.py 将数据集按照 0.8: 0.2 的比例分为训练集和测试集,分别置于 train 文件夹和 test 文件夹中。
利用 generate_txt.py 分别生成训练集和测试集的索引文件,索引文件中包括了图片的路径和图片的标签(0~19)。由于后面的实验在 Google Colab 上进行,因此我手动统一修改了图片的路径。最后得到的索引文件分别为 train.txt 和 test.txt,其内容如下图所示:
<div align=center><img width="320" height="320" src="figure/traintxt.png"/></div>
<div align=center>图3 train.txt</div>
在本次作业中,我采用了 4 种不同的机器学习方法进行遥感图像识别的尝试,分别是 kNN、SVM、CNN 和 LSTM。以上所有的实验均在 Google Colab 平台上进行。
## kNN
kNN(k-邻近算法)是最为简单的机器学习算法。在 kNN 算法中,一个对象的分类是由其邻居的“多数表决”确定的,k 个最近邻居(k 为正整数,通常较小)中最常见的分类决定了赋予该对象的类别。若 k = 1,则该对象的类别直接由最近的一个节点赋予。
### kNN 的测试效果
kNN 作为一种最简单的机器学习算法,我并未对其的测试效果报以太大的期望。在本次测试中,我先将 k 取为 1,测试这种最简单的模式下的效果,最终其测试的准确率为 16%。
### 分析参数 k 对 kNN 的测试效果的影响
采用 kNN 算法需要重点关注的是 k 值的选取。一般情况下,在分类时较大的 K 值能够减小噪声的影响,但会使类别之间的界限变得模糊。因此本实验分别尝试了 k = 1,3,5,10,15 下 kNN 算法的测试精度。实验的结果如下所示:
<div align=center><img width="420" src="figure/knn1.png"/></div>
<div align=center>图4 kNN在不同k参数下的测试效果</div>
<div align=center><img width="420" src="figure/knn2.png"/></div>
<div align=center>图5 kNN在不同k参数下的测试效果</div>
由实验结果可知,和预期的相同,kNN 算法在 WHU-RS19 数据集上的表现效果非常的一般。当 k = 1 时,算法取得了最高的分类精度仅为 16%,随着 k 取值的进一步增大,分类器的效果不断下降,当 k = 10 时,该分类器基本稳定在 10% 左右。本人推测,造成 k 值增大导致分类效果明显下降的现象的原因在于数据集中不同类别之间的界限本来就比较模糊,增大 k 值进一步加剧了这种现象。
## SVM
在机器学习中,SVM 是一种常用的监督学习算法,其目的在于寻找一个超平面,能够以最大间隔将各类数据分开。作为传统的机器学习算法中表现非常优秀的一种算法,SVM 在许多场景中都得到了应用。
### SVM 的测试效果
本实验的目的在于观察 SVM 在 WHU-RS19 数据集上的表现。
首先采用了 1e-7 的学习率和 2.5e4 的正则化因子进行 3500 次训练,最后获得了 21% 的测试精度,训练过程如下所示:
<div align=center><img width="420" src="figure/svm1.png"/></div>
<div align=center>图6 SVM训练过程中的损失值变化与测试精度</div>
<div align=center><img width="420" src="figure/svm2.png"/></div>
<div align=center>图7 SVM训练过程中的损失值变化</div>
### 分析学习率和正则化参数对 SVM 的测试效果的影响
由于不同的学习率和正则化参数的取值会对 SVM 的训练结果造成明显的影响,本实验采用了[1e-08, 1e-07, 1e-06]三种学习率以及[1e04, 2.5e04, 5.0e04]三种正则化参数共 9 种参数组合进行测试,经过训练之后的测试精度分别如下所示:
<div align=center><img width="420" src="figure/svm4.png"/></div>
<div align=center>图8 9组学习率和正则化参数组合下的测试精度</div>
测试结果显示,1e-08 的学习率和 2.5e04 正则化参数组合下的效果最好,SVM 在训练后的测试精度达到了 28%。
但是在后续的测试中,我也发现 1e-08 的学习率似乎有些过于小了,因为在训练过程中其损失值的下降往往非常缓慢,有几次也陷入了局部最小值中。因此我认为在本数据集中,1e-07 的学习率是更为可取的。
### SVM 权值矩阵的可视化
在 SVM 这部分的最后,我将 SVM 训练后学习到的权值矩阵进行了可视化,其效果如下所示:
<div align=center><img width="420" src="figure/svm3.png"/></div>
<div align=center>图9 SVM权值矩阵的可视化效果</div>
可以看出,各个权值矩阵的可视化图像反映出了该类遥感图像的一些特征。例如,森林类(Forest)的权值矩阵的可视化图像呈现出深绿色,而草地类(Meadow)则为草绿色;在足球场(Football Field)这类图像中,我们可以看出足球场的鸟瞰图的基本轮廓。
# CNN
卷积神经网络是目前图像识别中最为流行的机器学习算法,本实验的目的在于了解 CNN 在 WHU-RS19 数据集上的表现效果,并观察网络结构的变化对训练结果的影响。
## CNN 的测试效果
本实验先构建了一个有两层卷积层的神经网络,各层的参数如下所示:
- conv1:卷积层 1,输入通道 3,输出通道 10,卷积核 5*5
- pool1: 池化层
- conv2:卷积层 2,输入通道 10,输出通道 20,卷积核 5*5
- pool2:池化层
- fc1:全连接层 16820->1000
- fc2:全连接层 1000->19
该 CNN 网络的训练过程如下所示:
<div align=center><img width="420" src="figure/cnn1.png"/></div>
<div align=center>图10 CNN网络每次迭代训练后的测试精度</div>
可以看出,经过 10 次迭代训练之后,CNN 已经取得了 55% 的测试精度,这明显优于上文提及的 kNN 和 SVM。
## 不同网络结构对 CNN 的测试结果的影响
考虑到 CNN 的网络结构会对训练结果造成明显的影响,本实验尝试构建了另外两个不同结构的神经网络:CNN_net_2 和 CNN_net_3。前者拥有相同的卷积层数和全连接层数,但是两个卷积层拥有更多的输出通道,即使用了数量更多的卷积核;后�
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
随着遥感卫星成像技术的提升和机器学习的蓬勃发展,越来越多的研究人员利用机器学习的方法来进行遥感图像识别,取得了很好的效果。在本次作业中,我将利用四种机器学习算法在 WHU-RS19 数据集上进行遥感图像识别的尝试,这其中既包括传统的 kNN 和 SVM,也包括近年来得到青睐的 CNN 和 LSTM 算法。本文的基本结构如下: 数据集 WHU-RS19 的简单介绍 数据集的预处理与索引文档的生成 kNN kNN 的测试效果 分析参数 k 对 kNN 的测试效果的影响 SVM SVM 的测试效果 分析学习率和正则化参数对 SVM 的测试效果的影响 SVM 权值矩阵的可视化 CNN CNN 的测试效果 不同网络结构对 CNN 的测试结果的影响 LSTM LSTM 的测试效果 分析学习率和 dropout 值对 LSTM 的测试效果的影响 总结
资源推荐
资源详情
资源评论
收起资源包目录
基于机器学习的遥感图像识别算法(kNNSVMCNNLSTM).zip (34个子文件)
imagerecognition_ml
reflection_problem.png 578KB
LICENSE 1KB
figure
lstm.png 94KB
svm3.png 326KB
svm4.png 12KB
svm1.png 28KB
svm2.png 25KB
temp.cpp 1B
footballField_13.jpg 112KB
knn1.png 7KB
cnn4.png 27KB
cnn3.png 31KB
cnn2.png 31KB
cnn1.png 30KB
knn2.png 34KB
traintxt.png 85KB
cnn5.png 20KB
bridge_17.jpg 90KB
README.md 12KB
code
3_LSTM
LSTM说明文档.md 1019B
lstm.py 6KB
LSTM.ipynb 254KB
temp.cpp 1B
data_preprocessing
split_dataset.py 1KB
generate_txt.py 1KB
0_kNN
kNN说明文档.md 541B
kNN.ipynb 21KB
knn.py 3KB
1_SVM
svm.py 6KB
SVM说明文档.md 557B
SVM.ipynb 173KB
2_CNN
CNN.ipynb 71KB
cnn.py 7KB
CNN说明文档.md 1KB
共 34 条
- 1
甜辣uu
- 粉丝: 8383
- 资源: 1103
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
- 4
前往页