深度学习AIR-PolSAR-Seg图像数据预处理
文章目录
- 深度学习sar图像数据预处理
- 一.图片预处理操作
- 1.log(1+x)处理
- 2.sqrt平方化处理
- 二.原网络训练效果展示
- 原始数据训练效果展示:
- 三.对比实验
- 1.采用原始数据
- 2.采用取log(1+x)后的数据
- 3.采用取平方后归一化处理:
- 四.总结:
- 五.思考
深度学习sar图像数据预处理
一.图片预处理操作
用于sar图像语义分割的图片为512x512x1的图片,有HH,HV,VH,VV四种极化方式
我们拿到的HH极化方式下的原始sar图像数据分布如下:
将该形式下的图像归一化到0~255后展示出的灰度图像是这样的:
肉眼可见这样的sar图像是一片漆黑,对于网络来说也较难识别,更加细节地展示图片0:
1.log(1+x)处理
为了让网络更好区分sar图像进行语义分割,我们可以采用对其取log(1+x)的方式进行处理
img = np.log(1+img)
然后再在log变换后的图像上计算均值和方差将图像normalize到均值为0,方差为1(这一步不是非常重要)
对图像进行log变换再归一化后的数据分布变为:
进一步将处理后的图像值域缩放到0~255展示成灰度图:
可以看出此时的图像明显用肉眼已经可以略微辨别一二了,可区别度比原来有了较大提升,网络训练和区分起来也应当相对容易。展示图片0的更多细节:
图片具体处理细节如下:
img = io.imread(img_path)img = np.asarray(img, dtype=float)img = np.log(1 + img)img = (img - mean) / stdc = np.min(img)d = 0 - cimg += dc = np.max(img)img /= cimg *= 255
从数据集中采样三张图片对比起处理前后的数据分布情况:
处理前:
处理后:
明显可以看出处理后的数据更接近于正态分布。
2.sqrt平方化处理
二.原网络训练效果展示
将未进行处理的图片和经过处理的图片分别放入卷积神经网络进行训练
采用的语义分割网络模型为MPresnet
MPresnet论文地址:https://arxiv.org/abs/2011.05088
训练参数如下:
args = {'lr': 0.01,'gpu': True,'epochs': 400,'momentum': 0.9,'print_freq': 4,'predict_step': 10,'val_batch_size': 2,'train_batch_size': 4,'weight_decay': 5e-4,'lr_decay_power': 0.5,'train_crop_size': False,'pred_dir': os.path.join(working_path, 'results', DATA_NAME),'chkpt_dir': os.path.join(working_path, 'checkpoints', DATA_NAME),'log_dir': os.path.join(working_path, 'logs', DATA_NAME, NET_NAME),'data_process': 'log_normalize', 'weight_loss': 'weight_loss' # 采用加权交叉熵损失函数
}
原始数据训练效果展示:
Total time: 38598.2s Best rec: Train acc 98.30, Val acc 77.37 fwiou 66.94, Val_loss 1.3840
训练最好结果在验证集上的性能表现:
Acc 77.37, fwIoU 66.94
class acc:[80.57 63.75 85.61 1.48 83.76 61.94]#黄色 蓝色 青色 红色 绿色 白色#住宅区 工业区 河流 裸地 植被 其他
Avg F1 63.03
验证集第100张:
决策边界的差异:
三.对比实验
本数据集中作者使用不同网络在多地形分类任务上获得的结果:
1.采用原始数据
最好结果: Best rec: Train acc 95.53, Val acc 79.67 fwiou 69.38, Val_loss 1.3569
验证集具体推理结果:
Acc 79.62, fwIoU 69.32
class acc:[82.88, 67.63, 87.27, 2.49, 85.89, 71.66]
Avg F1 65.23
2.采用取log(1+x)后的数据
最好结果:Best rec: Train acc 95.94, Val acc 79.30 fwiou 68.82, Val_loss 1.2038
验证集具体推理结果:
Acc 79.30, fwIoU 68.82
class acc:[82.40, 66.12, 87.20, 6.94, 85.36, 77.08]
Avg F1 65.61
3.采用取平方后归一化处理:
最好结果:Best rec: Train acc 95.70, Val acc 81.05 fwiou 70.43, Val_loss 1.4677
验证集具体推理结果:
Acc 81.05, fwIoU 70.43 # 采用亮度,对比度,饱和度随机0.25变换
Acc 80.68, fwIoU 70.05 # 未采用上述变换
class acc:[83.99, 67.32, 88.26, 2.28, 86.71, 78.38]
Avg F1 65.71
log变换和平方变换的效果图对比:
四.总结:
数据处理 | 数据增强 | OA | fwiou |
---|---|---|---|
原数据 | 随机水平翻转 | 77.37 | 66.94 |
原数据 | 随机水平,垂直翻转;随机旋转;亮度,饱和度,对比度随机±0.25变换 | 79.62 | 69.32 |
log变换 | 随机水平,垂直翻转;随机旋转;亮度,饱和度,对比度随机±0.25变换 | 79.30 | 68.82 |
平方变换 | 随机水平,垂直翻转;随机旋转;亮度,饱和度,对比度随机±0.25变换 | 81.05 | 70.43 |
平方变换 | 随机水平,垂直翻转;随机旋转; | 80.68 | 70.05 |
数据处理和数据增强使用前后预测效果对比:
五.思考
可能引起网络在该数据集上不足的原因:
1.可能是MPresnet实验中所使用的数据集分辨率与AIR-polar-sar数据集分辨率及场景复杂度不同
- MPresnet中的数据集描述为:分辨率1~3m,所以包含的细粒度特征更多,且场景复杂度较低
- AIR-polar-sar数据集描述为分辨率8m,且AIR-ploar-sar与高分竞赛训练集的数据尺寸相同数量相近,这意味着所训练的场景是其大小的4倍左右,同时包含更大的场景复杂性。
原论文中对AIR-polar-sar数据集场景复杂度的描述如下:
下图可视化地展示了其场景复杂度:
相关文章:

深度学习AIR-PolSAR-Seg图像数据预处理
文章目录 深度学习sar图像数据预处理一.图片预处理操作1.log(1x)处理2.sqrt平方化处理 二.原网络训练效果展示原始数据训练效果展示: 三.对比实验1.采用原始数据2.采用取log(1x)后的数据3.采用取平方后归一化处理: 四.总结:五.思考 深度学习s…...

求最大公约数math.gcd()
【小白从小学Python、C、Java】 【计算机等级考试500强双证书】 【Python-数据分析】 求最大公约数 math.gcd() [太阳]选择题 下列代码执行输出的结果是? import math print("【执行】print(math.gcd(6, 8))") print(math.gcd(6, 8)) print(&quo…...

数据结构之队列
目录 引言 队列的概念与结构 队列的实现 定义 初始化 销毁 入队 判断队列是否为空 出队 获取队头元素 获取队尾元素 检测队列中有效元素个数 元素访问 源代码 queue.h queue.c test.c 引言 数据结构之路经过栈后,就来到了与栈联系紧密的兄弟—…...
MySQL数据库——存储过程-循环(while、repeat、loop)
目录 while 介绍 案例 repeat 介绍 案例 loop 介绍 案例一 案例二 while 介绍 while 循环是有条件的循环控制语句。满足条件后,再执行循环体中的SQL语句。具体语法为: -- 先判定条件,如果条件为true,则执行逻辑&#…...
Django路由
路由系统 1.Django1中的路由1.1 普通形式1.2 分组1.2.1 无名分组1.2.2 有名分组 2. Django2版本2.1 传统的路由2.2 正则表达式路由 3. 路由分发3.1 include(一般使用此方式做路由分发)3.2 手动分发 4. name别名及使用name的反向URL生成4.1 一般情况下的别名使用及反向生成4.2 分…...
头歌实践平台-数据结构-二叉树及其应用
第1关:实现二叉树的创建 #include "binary_tree.h"BiTreeNode* CreatBiTree(char* s, int &i, int len) // 利用先序遍历创建二叉树 // 参数:先序遍历字符串s,字符串初始下标i0,字符串长度len。 // 返回࿱…...

2023.11.11通过html内置“required-star“添加一个红色的星号来表示必填项
2023.11.11通过html内置"required-star"添加一个红色的星号来表示必填项 在HTML中,可以使用标签来为元素添加说明。同时可以通过添加一个红色的星号来表示必填项。 <!DOCTYPE html> <html lang"en"> <head><meta charse…...
pcie【C#】
根据提供的引用内容,使用C#编写PCIE的Demo需要遵循以下步骤:1.连接好硬件后,烧录bit文件,安装PCIe内核驱动,然后重启计算机。2.打开VS工程,创建一个新的C#控制台应用程序项目。3.在项目中添加对C DLL的引用…...

西门子精智屏数据记录U盘插拔问题总结
西门子精智屏数据记录U盘插拔问题总结 注意: 数据记录过程中不允许带电插拔 U 盘! 数据记录的相关功能可参考以下链接中的内容: TIA博途wincc V16 如何进行变量周期归档?...
(论文阅读27/100)Deep Filter Banks for Texture Recognition and Segmentation
27.文献阅读笔记 简介 题目 Deep Filter Banks for Texture Recognition and Segmentation 作者 Mircea Cimpoi, Subhransu Maji, Andrea Vedaldi, 原文链接 http://www.cv-foundation.org/openaccess/content_cvpr_2015/papers/Cimpoi_Deep_Filter_Banks_2015_CVPR_pap…...
ARMday06(串口)
代码: #include "gpio.h" #include "stm32mp1xx_gpio.h" #include "stm32mp1xx_rcc.h" #include "stm32mp1xx_uart.h" void init(); char getc(); void putc(const char data); int main() {init();//初始化putc(j);char …...
Rust字符串详解
文章目录 字符串切片String迭代方法基础字符串方法容量操作增删改查 字符串切片 我们所熟知的由双引号括起来的字符串,在Rust中只是个字符串切片,又叫字符串字面值。这种类型一旦创建,则不可更改。但支持索引,从切片中索引出来的…...

(四)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
一、七种算法(DBO、LO、SWO、COA、LSO、KOA、GRO)简介 1、蜣螂优化算法DBO 蜣螂优化算法(Dung beetle optimizer,DBO)由Jiankai Xue和Bo Shen于2022年提出,该算法主要受蜣螂的滚球、跳舞、觅食、偷窃和繁殖…...

Window安装MongoDB
三种NOSQL的一种,Redis MongoDB ES 应用场景: 1.社交场景:使用Mongodb存储用户信息,以及用户发表的朋友圈信息,通过地理位置索引实现附近的人,地点等功能 2.游戏场景:使用Mongodb存储游戏用户信息,用户的装备,积分等直接以内嵌文档的形式存储,方便查询,高效率存储和访问…...

20.有效的括号(LeetCode)
思路:用栈的后进先出的特性,来完成题目的要求 因为C有库,可以直接用,而C语言没有,所以我们直接把写好的栈拷贝上来用。 首先,完成框架的搭建 其次,再实现循环内的部分。1.左括号入栈 2.右括…...
Vue3组件传参之Mitt插件方式
在vue3中$on,$off 和 $once 实例方法已被移除,组件实例不再实现事件触发接口,因此大家熟悉的EventBus便无法使用了。然而我们习惯了使用EventBus,对于这种情况我们可以使用Mitt库(其实就是我们视频中讲的发布订阅模式的…...

【数据仓库】数仓分层方法
文章目录 一. 数仓分层的意义1. 清晰数据结构。2. 减少重复开发3. 方便数据血缘追踪4. 把复杂问题简单化5. 屏蔽原始数据的异常6. 数据仓库的可维护性 二. 如何进行数仓分层?1. ODS层2. DW层2.1. DW层分类2.2. DWD层2.3. DWS 3. ADS层 4、层次调用规范 一. 数仓分层…...

Linux网络——自定义协议
目录 一.什么是协议 二.协议与报文 三.自定义协议 1.封装套接字 2.构建请求与响应 3.序列化和反序列化 4.报头添加和去除 5.报文读取 四.服务器端程序 五.客户端程序 一.什么是协议 协议在生活中泛指:双方或多方为了完成某项任务或达成某种目的而制定的共…...

【OpenCV实现图像:用OpenCV图像处理技巧之巧用直方图】
文章目录 概要前置条件统计数据分析直方图均衡化原理小结 概要 图像处理是计算机视觉领域中的重要组成部分,而直方图在图像处理中扮演着关键的角色。如何巧妙地运用OpenCV库中的图像处理技巧,特别是直方图相关的方法,来提高图像质量、改善细…...

【Android】画面卡顿优化列表流畅度四之Glide几个常用参数设置
好像是一年前快两年了,笔者解析过glide的源码,也是因为觉得自己熟悉一些,也就没太关注过项目里glide的具体使用对当前业务的影响;主要是自负,还有就是真没有碰到过这样的数据加载情况。暴露了经验还是不太足够 有兴趣的…...
FFmpeg 低延迟同屏方案
引言 在实时互动需求激增的当下,无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作,还是游戏直播的画面实时传输,低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架,凭借其灵活的编解码、数据…...

c#开发AI模型对话
AI模型 前面已经介绍了一般AI模型本地部署,直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型,但是目前国内可能使用不多,至少实践例子很少看见。开发训练模型就不介绍了&am…...

佰力博科技与您探讨热释电测量的几种方法
热释电的测量主要涉及热释电系数的测定,这是表征热释电材料性能的重要参数。热释电系数的测量方法主要包括静态法、动态法和积分电荷法。其中,积分电荷法最为常用,其原理是通过测量在电容器上积累的热释电电荷,从而确定热释电系数…...
音视频——I2S 协议详解
I2S 协议详解 I2S (Inter-IC Sound) 协议是一种串行总线协议,专门用于在数字音频设备之间传输数字音频数据。它由飞利浦(Philips)公司开发,以其简单、高效和广泛的兼容性而闻名。 1. 信号线 I2S 协议通常使用三根或四根信号线&a…...

MFC 抛体运动模拟:常见问题解决与界面美化
在 MFC 中开发抛体运动模拟程序时,我们常遇到 轨迹残留、无效刷新、视觉单调、物理逻辑瑕疵 等问题。本文将针对这些痛点,详细解析原因并提供解决方案,同时兼顾界面美化,让模拟效果更专业、更高效。 问题一:历史轨迹与小球残影残留 现象 小球运动后,历史位置的 “残影”…...

TSN交换机正在重构工业网络,PROFINET和EtherCAT会被取代吗?
在工业自动化持续演进的今天,通信网络的角色正变得愈发关键。 2025年6月6日,为期三天的华南国际工业博览会在深圳国际会展中心(宝安)圆满落幕。作为国内工业通信领域的技术型企业,光路科技(Fiberroad&…...
uniapp 实现腾讯云IM群文件上传下载功能
UniApp 集成腾讯云IM实现群文件上传下载功能全攻略 一、功能背景与技术选型 在团队协作场景中,群文件共享是核心需求之一。本文将介绍如何基于腾讯云IMCOS,在uniapp中实现: 群内文件上传/下载文件元数据管理下载进度追踪跨平台文件预览 二…...

自然语言处理——文本分类
文本分类 传统机器学习方法文本表示向量空间模型 特征选择文档频率互信息信息增益(IG) 分类器设计贝叶斯理论:线性判别函数 文本分类性能评估P-R曲线ROC曲线 将文本文档或句子分类为预定义的类或类别, 有单标签多类别文本分类和多…...

Kubernetes 节点自动伸缩(Cluster Autoscaler)原理与实践
在 Kubernetes 集群中,如何在保障应用高可用的同时有效地管理资源,一直是运维人员和开发者关注的重点。随着微服务架构的普及,集群内各个服务的负载波动日趋明显,传统的手动扩缩容方式已无法满足实时性和弹性需求。 Cluster Auto…...
JavaScript 标签加载
目录 JavaScript 标签加载script 标签的 async 和 defer 属性,分别代表什么,有什么区别1. 普通 script 标签2. async 属性3. defer 属性4. type"module"5. 各种加载方式的对比6. 使用建议 JavaScript 标签加载 script 标签的 async 和 defer …...