遥感图像处理笔记之【Multi-label Land Cover Classification with Deep Learning】
遥感图像处理学习(3)
前言
遥感图像处理方向的学习者可以参考或者复刻
本文初编辑于2023年12月14日
2024年1月24日搬运至本人博客园平台
文章标题:Multi-label Land Cover Classification with Deep Learning
文章地址:https://readmedium.com/multi-label-land-cover-classification-with-deep-learning-d39ce2944a3d
文章所涉及的代码:https://github.com/shakasom/multilabel-landcover-deeplearning
这篇文章将CNN(Resnet34)应用于UCMerced Data数据集中,演示了遥感图像多分类模型的训练和遥感图像识别。
下图表示UCMerced Data中的数据其实是不平衡的

作者通过Fastai library来使用UCMerced Data,使开发者更容易用Pytorch来实现代码。
下图可以看见模型训练效果不错

对文章所涉及的代码的说明(建议分屏结合原文观看)
class_count汇总了UCMerced Data,是一个两列的DataFrame,一列是种类名称class,一列是相应的种类数量count。
data_src = (ImageList.from_df(df=df, path=path,
folder=’images’,suffix=”.tif”)
.split_by_rand_pct(0.2)
.label_from_df(cols=list(class_count[‘class’]),
label_cls=MultiCategoryList, one_hot=True))
#df=df: 表示使用名为df的数据框作为数据源。
#path=path: 表示数据存储的路径。
#folder=’images’: 表示数据存储在名为'images'的文件夹中。
#suffix=”.tif”: 表示数据文件的后缀为.tif。
#split_by_rand_pct(0.2): 表示将数据随机分为训练集和验证集,
#其中验证集占总数据的20%。
#label_from_df(cols=list(class_count[‘class’]):
#表示从数据框中提取标签信息,其中标签的列名为class。
#label_cls=MultiCategoryList:
#表示使用MultiCategoryList类来处理多标签分类问题。
#one_hot=True: 表示使用one-hot编码来表示多标签分类的标签。
tfms = get_transforms(flip_vert=True, max_lighting=0.1,
max_zoom=1.05, max_warp=0.)
#get_transforms函数创建了一组用于图像数据增强的变换。
#每个在函数参数中指定的变换将会在训练过程中随机应用在图像上
#flip_vert=True:表示允许在数据增强过程中对图像进行垂直翻转。
#max_lighting=0.1:表示允许对图像进行的最大光照变化。
#0.1的数值表示进行轻微的光照变化。
#max_zoom=1.05:表示允许对图像进行的最大缩放变化。
#1.05的数值表示进行轻微的放大效果。
#max_warp=0.:表示允许对图像进行的最大扭曲变化。
#0.的数值表示不进行扭曲变化。
f_score = partial(fbeta, thresh=0.45)
#partial 函数来自于 Python 的 functools 模块,
#它的作用是创建一个新的可调用对象,其中的某些参数已经预先设置好了。
#在这个特定的例子中,partial 函数用于创建一个新的函数 f_score,
#这个函数是 fbeta 函数的一个特定版本,其中 thresh 参数被设置为 0.45。
learn = cnn_learner(data, models.resnet34,
metrics=[accuracy_thresh, f_score],
callback_fns=[CSVLogger,ShowGraph, SaveModelCallback])
#callback_fns 参数指定了三个回调函数:
#CSVLogger:用于记录训练过程中的指标,并将其保存到CSV文件中,以便后续分析和可视化。
#ShowGraph:用于在训练过程中实时显示训练指标的可视化图表,例如损失函数和准确率随时间的变化。
#SaveModelCallback:用于在训练过程中保存模型的回调函数。
#它可以根据特定的条件(例如验证集准确率的提升)来保存模型的参数,以便在训练过程中得到最佳的模型。
learn.fit_one_cycle(5, 1e-2)
#括号中的参数5表示进行微调的阶段数,
#即在解冻整个模型之前,先训练最后几层的参数5个周期。
#fit_one_cycle 方法使用了One Cycle Policy 训练策略.
#One Cycle Policy 会在训练的前期使用较小的学习率,然后逐渐增加学习率到一个较大的值,再逐渐减小学习率。
#这种策略有助于加快模型的收敛速度,同时减少过拟合的风险。
#fit_one_cycle 方法通常用于模型的初始训练阶段,以快速训练模型并找到一个合适的学习率。
#fine_tune 方法用于微调预训练模型。
#在微调过程中,预训练模型的参数会在新的数据集上进行进一步的训练,以适应新数据集的特征和标签。
#具体来说,fine_tune 方法会先冻结预训练模型的一部分层(通常是除了最后几层之外的层),然后在新数据集上进行训练。
#接着会解冻整个模型,继续在新数据集上进行训练,以微调模型的参数。
#fine_tune 方法通常用于迁移学习的场景,
#其中我们希望利用预训练模型的知识来加速并提升模型在新任务上的表现。
遥感图像处理笔记之【Multi-label Land Cover Classification with Deep Learning】的更多相关文章
- 【DeepLearning学习笔记】Coursera课程《Neural Networks and Deep Learning》——Week2 Neural Networks Basics课堂笔记
Coursera课程<Neural Networks and Deep Learning> deeplearning.ai Week2 Neural Networks Basics 2.1 ...
- 【DeepLearning学习笔记】Coursera课程《Neural Networks and Deep Learning》——Week1 Introduction to deep learning课堂笔记
Coursera课程<Neural Networks and Deep Learning> deeplearning.ai Week1 Introduction to deep learn ...
- 【图像处理笔记】SIFT算法原理与源码分析
[图像处理笔记]总目录 0 引言 特征提取就是从图像中提取显著并且具有可区分性和可匹配性的点结构.常见的点结构一般为图像内容中的角点.交叉点.闭合区域中心点等具有一定物理结构的点,而提取点结构的一般思 ...
- Deep learning with Python 学习笔记(8)
Keras 函数式编程 利用 Keras 函数式 API,你可以构建类图(graph-like)模型.在不同的输入之间共享某一层,并且还可以像使用 Python 函数一样使用 Keras 模型.Ker ...
- Deep Learning(深度学习)学习笔记整理
申明:本文非笔者原创,原文转载自:http://www.sigvc.org/bbs/thread-2187-1-3.html 4.2.初级(浅层)特征表示 既然像素级的特征表示方法没有作用,那怎样的表 ...
- Deep Learning论文笔记之(四)CNN卷积神经网络推导和实现(转)
Deep Learning论文笔记之(四)CNN卷积神经网络推导和实现 zouxy09@qq.com http://blog.csdn.net/zouxy09 自己平时看了一些论文, ...
- 【转载】Deep Learning(深度学习)学习笔记整理
http://blog.csdn.net/zouxy09/article/details/8775360 一.概述 Artificial Intelligence,也就是人工智能,就像长生不老和星际漫 ...
- Deep Learning(深度学习)学习笔记整理系列之(七)
Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04 ...
- Deep Learning(深度学习)学习笔记整理系列之(六)
Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04 ...
- Deep Learning(深度学习)学习笔记整理系列之(四)
Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04 ...
随机推荐
- CO02生产订单新增组件
"-----------------------------------------@斌将军-------------------------------------------- LOOP ...
- iOS安全加固探讨:代码混淆、类名方法名混淆等方法
摘要:本文探讨了iOS平台下的安全保护,以及几种常见的加固方法,包括字符串加密.类名方法名混淆.程序代码混淆和加入安全SDK等.通过这些方法,我们可以有效地提高iOS应用的安全性. 引言: 随着智能手 ...
- linux下jdk1.7、1.8版本的安装
-----1.7------ (1)解压安装包 tar -zxvf jdk-7u80-linux-x64.tar.gz (2)移动到安装目录 ...
- vue路由模块化
https://www.bilibili.com/video/BV1Tg411u7oy?from=search&seid=5098139115981575542&spm_id_from ...
- Linux 文件目录配置及命令总结
前言 在Linux中,一切皆文件,而每一个文件和目录都是从根目录开始的 Linux文件目录的作用 /bin目录:用来存放二进制可执行命令的目录,用户常用的命令都存在该目录下. /sbin目录:用来存放 ...
- java项目实战-spring-基本用法01-day24
目录 1. spring 简单介绍 2. IOC/DI --控制反转--是啥 3. 实现 3. 如果 对象的 属性为引用数据类型 如何 实例化对象 4 如何用注解的方式 以少量的代码实现对象的创建于获 ...
- linux 命令使用总结:vim,nohup,find,df,du,sudo,netstat,ll,curl,lastlog
1.Vim命令使用 vim 为编辑文本命令: vim 文件 回车即可查看文件 按 字母 i 键,即可进入 insert 编辑模式. 按 ESC 键即可退出编辑模式 输入冒号:wq 即可保存修改 输入 ...
- 【开源分享】基于Html开发的房贷计算器,模仿新浪财经
房贷计算器是一种房贷计算的在线计算Web应用,按用户选择的贷款类型.贷款金额.期限.利率可计算得出每月月供参考.支付利息.还款总额这些信息.本文模仿新浪财经开发的房贷计算器. 作品预览 https:/ ...
- spring启动流程 (1) 流程概览
本文将通过阅读AnnotationConfigApplicationContext源码,分析Spring启动流程. 创建AnnotationConfigApplicationContext Annot ...
- Linux-分区-fdisk-mkfs-mount