遥感图像处理笔记之【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 ...
随机推荐
- 【Git使用】代码拉取及用户名初始化
代码拉取及用户名初始化
- java jar 注册成 windows 服务
1.去github上下载winsw https://github.com/winsw/winsw/releases 2.WinSW.NET4.xml <service> <id> ...
- Linux 网络收包流程
哈喽大家好,我是咸鱼 我们在跟别人网上聊天的时候,有没有想过你发送的信息是怎么传到对方的电脑上的 又或者我们在上网冲浪的时候,有没有想过 HTML 页面是怎么显示在我们的电脑屏幕上的 无论是我们跟别人 ...
- SpringMVC — 数据响应 / 获取请求参数
SpringMVC的数据响应方式 页面跳转 直接返回字符串 通过ModelAndView对象返回 回写数据 直接返回字符串 返回对象或集合 页面跳转 方式一.返回带有前缀的字符串: 转发:forwar ...
- Codeforce:131A. cAPS lOCK
原题链接 ╮(╯▽╰)╭这题题目一开始没看明白,导致wa几次.如果全是大写或者出了首字母是小写其他为大写,则转换为第一个字母大写,其他的小写 ,如果不是以上两种情况则不作处理. ╮(╯▽╰)╭水题还错 ...
- Dubbo 泛化调用在vivo统一配置系统的应用
作者:vivo 互联网服务器团队- Wang Fei.LinYupan Dubbo泛化调用特性可以在不依赖服务接口API包的场景中发起远程调用, 这种特性特别适合框架集成和网关类应用开发. 本文结合在 ...
- 前端科普系列(5):ESLint - 守住优雅的护城河
作者:Morrain [前端科普系列]帮助阅读者了解web前端,主要覆盖web前端的基础知识,但不深入讲解,定位为大而全并非细而精,适合非前端开发的同学对前端有一个系统的认识,能更好的与前端开发协作. ...
- shell脚本(7)-shell运算
文档目录: 一.算数运算符 二.关系运算符 三.布尔运算符 四.逻辑运算符 五.字符串运算符 六.文件测试运算符 算术运算符 下表列出了常用的算术运算符,假定变量 a 为 10,变量 b 为 20: ...
- ACP 知识点总结
记录下学习ACP过程不断遇到的且需要记录的知识点: 在阿里云专有网络VPC创建之后,路由器也是随着VPC一起自动创建,所以不需要手动创建,这个时候需要继续创建交换机才能在交换机种创建其他云产品. 7层 ...
- python环境 anaconda安装
官网: https://www.anaconda.com/distribution/#macos 国内镜像: https://mirrors.tuna.tsinghua.edu.cn/anaconda ...