遥感图像处理学习(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】的更多相关文章

  1. 【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 ...

  2. 【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 ...

  3. 【图像处理笔记】SIFT算法原理与源码分析

    [图像处理笔记]总目录 0 引言 特征提取就是从图像中提取显著并且具有可区分性和可匹配性的点结构.常见的点结构一般为图像内容中的角点.交叉点.闭合区域中心点等具有一定物理结构的点,而提取点结构的一般思 ...

  4. Deep learning with Python 学习笔记(8)

    Keras 函数式编程 利用 Keras 函数式 API,你可以构建类图(graph-like)模型.在不同的输入之间共享某一层,并且还可以像使用 Python 函数一样使用 Keras 模型.Ker ...

  5. Deep Learning(深度学习)学习笔记整理

    申明:本文非笔者原创,原文转载自:http://www.sigvc.org/bbs/thread-2187-1-3.html 4.2.初级(浅层)特征表示 既然像素级的特征表示方法没有作用,那怎样的表 ...

  6. Deep Learning论文笔记之(四)CNN卷积神经网络推导和实现(转)

    Deep Learning论文笔记之(四)CNN卷积神经网络推导和实现 zouxy09@qq.com http://blog.csdn.net/zouxy09          自己平时看了一些论文, ...

  7. 【转载】Deep Learning(深度学习)学习笔记整理

    http://blog.csdn.net/zouxy09/article/details/8775360 一.概述 Artificial Intelligence,也就是人工智能,就像长生不老和星际漫 ...

  8. Deep Learning(深度学习)学习笔记整理系列之(七)

    Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04 ...

  9. Deep Learning(深度学习)学习笔记整理系列之(六)

    Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04 ...

  10. Deep Learning(深度学习)学习笔记整理系列之(四)

    Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04 ...

随机推荐

  1. Leaflet 地图偏移 地图纠偏

    (地图瓦片纠偏最好的方法在这:https://www.cnblogs.com/s0611163/p/15606460.html) 地图区域是一个市,偏移量可以近似认为是固定不变的,通过修改Leafle ...

  2. 师爷,翻译翻译什么叫AOP

    张麻子:汤师爷,翻译翻译,什么叫AOP? 汤师爷:这还用翻译. 张麻子:我让你翻译给我听,什么叫AOP? 汤师爷:不用翻译,切面编程就是AOP啊. 黄四郎:难道你听不懂什么叫AOP? 张麻子:我就想让 ...

  3. Skywalking 搭建 nacos 注册中心及mysql 存储的集群架构

    本文为博主原创,未经允许不得转载 Skywalking 集群是将skywalking oap作为一个服务注册到nacos上,只要skywalking oap服务没有全部宕机,保证有一个skywalki ...

  4. spring IoC 源码

    spring IoC 容器的加载过程 1.实例化容器: AnnotationConfigApplicationContext 实例化工厂: DefauiltListableBeanFactory 实例 ...

  5. 【收集】embed

    序 链接 备注 1 适用于嵌入式单片机的差分升级通用库+详细教程_风吹花中花吹风的博客-CSDN博客 差分升级包制作与还原 2 前言 · 给新手的两轮自平衡小车开发实战指南 (miaowlabs.co ...

  6. CSS - 滤镜的妙用 - 制作炫彩圆环(外加动画)

    效果图如下: 话不多说,上代码: <!DOCTYPE html> <html lang="en"> <head> <meta charse ...

  7. MySQL为什么不推荐使用in

    有的时候博客内容会有变动,首发博客是最新的,其他博客地址可能会未同步,认准https://blog.zysicyj.top 首发博客地址 系列文章地址 当使用IN语句时,MySQL可能会遇到以下问题: ...

  8. IBM java的分析工具(ga和ha)学习和整理

    IBM java的分析工具(ga和ha)学习和整理 背景 前几天学习了整理了 jca 工具 今天继续学习一下 ga工具 ga 工具主要是分析gclog相关. 可以很直观的进行gclog的分析和展示. ...

  9. [转帖]java乱码 java使用的编码是utf-8还是utf-16还是unicode

    简单介绍编码 Unicode:是容纳世界所有文字符号的国标标准编码,使用四个字节为每个字符编码 UTF:是英文 Unicode Transformation Format 的缩写,意为把 Unicod ...

  10. 凡是有但是-varchar和nvarchar的初步学习之一

    凡是有但是-varchar和nvarchar的初步学习之一 背景 高应用开发, 在涉及到国内国外的问题时,重要的事情有两个: 时区转换, 字符集转换. 时区转换虽然是很难理清楚, 各种规范不统一的事情 ...