前述

根据语义特征对遥感图像场景进行分类是一项具有挑战性的任务。因为遥感图像场景的类内变化较大,而类间变化有时却较小。不同的物体会以不同的尺度和方向出现在同一类场景中,而同样的物体也可能出现在不同的场景里。

理论上,深度学习能够通过提取遥感图像的高层次特征,表征出遥感场景间的细微差别。然而,目前遥感领域并不具备足够的带标签的遥感图像用于训练深度学习中网络模型中巨量的结构参数。当采用现有遥感数据集训练深度网络模型时会出现严重的过拟合。将在 Image Net 上训练得到的深度网络模型迁移至遥感图像场景分类也成为深度学习理论应用于遥感领域的重要发展方向。经 Image Net 数据集预训练的模型能够成功迁移至遥感场景分类任务的原因在于,遥感图像和日常可见光图像的基本视觉模块(例如:边、角)是相同的。

迁移学习(Transfer Learning)的目标是将从一个环境中学到的知识用来帮助新环境中的学习任务。目前大多数机器学习算法均是假设训练数据以及测试数据的特征分布相同。然而这在现实世界中却时常不可行。例如我们我们要对一个任务进行分类,但是此任务中数据不充足(在迁移学习中也被称为目标域),然而却又需要大量的相关的训练数据(在迁移学习中也被称为源域),但是此训练数据与所需进行的分类任务中的测试数据特征分布不同(例如语音情感识别中,一种语言的语音数据充足,然而所需进行分类任务的情感数据却极度缺乏),在这种情况下如果可以采用合适的迁移学习方法则可以大大提高样本不充足任务的分类识别结果。也即是大家通常所说的将知识迁移到新环境中的能力,这通常被称为迁移学习。当两者的相似度并不大的时候,会出现负迁移的情况,这个时候就不适合做迁移。

预训练模型

简单来说,预训练模型(pre-trained model)是前人为了解决类似问题所创造出来的模型。你在解决问题的时候,不用从零开始训练一个新模型,可以从在类似问题中训练过的模型入手。比如说,如果你想做一辆自动驾驶汽车,可以花数年时间从零开始构建一个性能优良的图像识别算法,也可以从Google在ImageNet数据集上训练得到的inception model(一个预训练模型)起步,来识别图像。一个预训练模型可能对于你的应用中并不是100%的准确对口,但是它可以为你节省大量功夫。

通过使用之前在大数据集上经过训练的预训练模型,我们可以直接使用相应的结构和权重,将它们应用到我们正在面对的问题上。这被称作是“迁移学习”,即将预训练的模型“迁移”到我们正在应对的特定问题中。在选择预训练模型的时候你需要非常仔细,如果你的问题与预训练模型训练情景下有很大的出入,那么模型所得到的预测结果将会非常不准确。 
预训练模型已经训练得很好,我们就不会在短时间内去修改过多的权重,在迁移学习中用到它的时候,往往只是进行微调(fine tune)。在修改模型的过程中,我们通过会采用比一般训练模型更低的学习速率


如何使用预训练模型:

场景一:数据集小,数据相似度高(与pre-trained model的训练数据相比而言) 
在这种情况下,因为数据与预训练模型的训练数据相似度很高,因此我们不需要重新训练模型。我们只需要将输出层改制成符合问题情境下的结构就好。我们使用预处理模型作为模式提取器。比如说我们使用在ImageNet上训练的模型来辨认一组新照片中的小猫小狗。在这里,需要被辨认的图片与ImageNet库中的图片类似,但是我们的输出结果中只需要两项——猫或者狗。在这个例子中,我们需要做的就是把dense layer和最终softmax layer的输出从1000个类别改为2个类别。

场景二:数据集小,数据相似度不高 
在这种情况下,我们可以冻结预训练模型中的前k个层中的权重,然后重新训练后面的n-k个层,当然最后一层也需要根据相应的输出格式来进行修改。因为数据的相似度不高,重新训练的过程就变得非常关键。而新数据集大小的不足,则是通过冻结预训练模型的前k层进行弥补。

场景三:数据集大,数据相似度不高 
在这种情况下,因为我们有一个很大的数据集,所以神经网络的训练过程将会比较有效率。然而,因为实际数据与预训练模型的训练数据之间存在很大差异,采用预训练模型将不会是一种高效的方式。因此最好的方法还是将预处理模型中的权重全都初始化后在新数据集的基础上重头开始训练。

场景四:数据集大,数据相似度高 
这就是最理想的情况,采用预训练模型会变得非常高效。最好的运用方式是保持模型原有的结构和初始权重不变,随后在新数据集的基础上重新训练。


微调模型的方法 :

如何使用与训练模型,是由数据集大小和新旧数据集(预训练的数据集和我们要解决的数据集)之间数据的相似度来决定的。 
特征提取 
我们可以将预训练模型当做特征提取装置来使用。具体的做法是,将输出层去掉,然后将剩下的整个网络当做一个固定的特征提取机,从而应用到新的数据集中。

采用预训练模型的结构 
我们还可以采用预训练模型的结构,但先将所有的权重随机化,然后依据自己的数据集进行训练。

训练特定层,冻结其他层 
另一种使用预训练模型的方法是对它进行部分的训练。具体的做法是,将模型起始的一些层的权重保持不变,重新训练后面的层,得到新的权重。在这个过程中,我们可以多次进行尝试,从而能够依据结果找到frozen layers和retrain layers之间的最佳搭配。

基于迁移深度学习的遥感图像场景分类相关推荐

  1. 基于深度学习的遥感图像场景识别方法研究

    文章目录 概述 方法原理 代码实现 结果分析 SVM Resnet LSTM 概述 从2012年深度卷积神经网络(AlexNet)成功应用于图像识别以来,发展出多个改进的卷积神经网络构架,包括2014 ...

  2. 深度学习在遥感图像目标检测中的应用综述

    深度学习在遥感图像目标检测中的应用综述 1 人工智能发展 1.1 发展历程 1.2 深度学习的应用 2 深度学习 2.1 机器学习概述 2.2 神经网络模型 2.3 深度学习 2.4 深度学习主要模型 ...

  3. 基于迁移深度学习的雷达信号分选识别

    基于迁移深度学习的雷达信号分选识别 人工智能技术与咨询 来源:<软件学报> ,作者王功明等 摘要: 针对当前雷达信号分选识别算法普遍存在的低信噪比下识别能力差.特征参数提取困难.分类器模型 ...

  4. 基于InceptionV3深度学习实现岩石图像智能识别与分类

    基于InceptionV3深度学习实现岩石图像智能识别与分类 文章目录 基于InceptionV3深度学习实现岩石图像智能识别与分类 总体流程 数据预处理 构建InceptionV3模型 训练.保存模 ...

  5. 遥感图像场景分类方法总结

    遥感图像场景分类一般假定相同类别的场景应该共享相似的特征信息,基于此,遥感图像场景分类方法可以分为三大类:基于底层视觉特征,基于中层视觉表达,基于高层视觉信息. 底层视觉特征:直接提取遥感图像的光谱, ...

  6. 遥感图像场景分类常用数据集

    1. UC Merced Land-Use Data Set contains 21 scene classes and 100 samples of size 256x256 in each cla ...

  7. 基于PyTorch深度学习无人机遥感影像目标检测、地物分类及语义分割

    随着无人机自动化能力的逐步升级,它被广泛的应用于多种领域,如航拍.农业.植保.灾难评估.救援.测绘.电力巡检等.但同时由于无人机飞行高度低.获取目标类型多.以及环境复杂等因素使得对无人机获取的数据处理 ...

  8. 谷雨钜献 | 用深度学习理解遥感图像,识别效率提升90倍,PaddlePaddle中科院遥感地球所...

    乾明 发自 凹非寺  量子位 报道 | 公众号 QbitAI 高尔夫球场,长期以来的高端社交地,但其存在的背后,却是对资源环境的侵袭. 不仅大量占用土地资源.耗费水资源,而且在维护草坪的时候大量使用化 ...

  9. 深度学习之遥感图像标注(二)

    一.利用labelme脚本将json文件批量生成png图片,需要修改labelme脚本json_to_dataset.py具体位置如图 具体代码参考:https://blog.csdn.net/gao ...

最新文章

  1. ThickBox 3.1参数详解(转)
  2. matlab 打开txt文件窗口,Matlab读取txt文件、xlsx文件
  3. 某快手程序员吐槽:月薪四万很惶恐!和老婆亲热时都在想工作,薪资越高,做人越怂!...
  4. 代码的印象派:写点好代码吧
  5. (08) 需求征集 -- 消息管理
  6. Python最热,PyTorch增速是TF的13倍:2019数据分析/机器学习工具调查发布
  7. Unbalanced calls to begin/end appearance transitions for XXXX
  8. python3爬虫实例代码-Python3爬虫带上cookie的实例代码
  9. 设置Golang的GOPATH
  10. CentOS 7环境安装Docker
  11. android 调试技巧
  12. 引发类型为“System.Windows.Forms.AxHost+InvalidActiveXStateException”的异常 解决
  13. idea 用鼠标滚轮调整代码文字大小
  14. Simple allow copy使用Chrome插件复制网站文字
  15. Java迷你英雄联盟_Java策略模式:一个关于英雄联盟的例子
  16. mysql help_深入理解mysql帮助命令(help)
  17. 基于CCS工程MSP430串口升级(三)
  18. 狂神学习系列04:MySQL+JDBC
  19. assignin与evalin用法理解
  20. 中国科学院的研究所很难进吗?

热门文章

  1. Information Retrieval(信息检索)笔记01:Boolean Retrieval(布尔检索)
  2. 巧用别名和 sh 脚本,adb 快速截图和录屏,提高你的效率
  3. Qt编写自定义控件35-GIF录屏控件
  4. Git:移除文件----git rm命令的使用
  5. 【iOS_Swift_Alamofire实现网络请求】
  6. gazebo地图构建
  7. 2018 “Z世代”未成年人游戏玩家洞察 | MobData
  8. “生成式技术”正在颠覆人类创作!
  9. 使用 GROW 模型
  10. Linux系统编程-vim-gcc-动态库静态库