深度学习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的具体使用对当前业务的影响;主要是自负,还有就是真没有碰到过这样的数据加载情况。暴露了经验还是不太足够 有兴趣的…...
UABEA:解锁Unity资源编辑新维度的跨平台工具箱
UABEA:解锁Unity资源编辑新维度的跨平台工具箱 【免费下载链接】UABEA c# uabe for newer versions of unity 项目地址: https://gitcode.com/gh_mirrors/ua/UABEA 你是否曾想过深入Unity游戏内部,查看、编辑甚至重构其中的纹理、音频、字体等各类…...
MelonLoader终极指南:Unity游戏模组加载神器快速上手教程
MelonLoader终极指南:Unity游戏模组加载神器快速上手教程 【免费下载链接】MelonLoader The Worlds First Universal Mod Loader for Unity Games compatible with both Il2Cpp and Mono 项目地址: https://gitcode.com/gh_mirrors/me/MelonLoader 你是否厌倦…...
Python 官方网站(python.org)上 Python 3.13.0 版本的 Windows 下载选项说明
Python 官方网站(python.org)上 Python 3.13.0 版本的 Windows 下载选项说明。以下是各选项的简要解释,帮助你选择合适的安装包: ✅ Windows installer (64-bit):标准 .exe 安装程序,适用于大多数现代 64 位…...
FPGA实战:手把手教你用Verilog状态机实现一个可配置的I2C主机模块
FPGA实战:构建高可配置I2C主机控制器的九大设计要点 在嵌入式系统设计中,I2C总线因其简洁的两线制结构和灵活的多主从架构,成为连接各类传感器的首选方案。本文将深入探讨如何用Verilog状态机实现一个工业级可配置I2C主机控制器,…...
终极指南:如何用Applite免费实现Mac软件高效管理
终极指南:如何用Applite免费实现Mac软件高效管理 【免费下载链接】Applite User-friendly GUI macOS application for Homebrew Casks 项目地址: https://gitcode.com/gh_mirrors/ap/Applite 对于大多数Mac用户来说,软件管理一直是个令人头疼的问…...
OpenClaw浏览器自动化:千问3.5-9B实现智能爬虫
OpenClaw浏览器自动化:千问3.5-9B实现智能爬虫 1. 为什么需要智能爬虫? 去年我接手了一个市场调研项目,需要从200多个电商页面提取商品信息和用户评价。传统爬虫遇到三个致命问题:动态加载内容抓取不全、验证码频繁拦截、非结构…...
目录:AI 多智能体框架开发:从架构设计到生产落地
🚀 AI 多智能体框架开发:从架构设计到生产落地 🛠 专栏引言 当大模型的潜力不再受限于“对话框”,AI 的真正价值开始在自主任务完成(Task Autonomy)中爆发。然而,从单体 Agent 到生产级多智能…...
春节前必看:春联生成模型-中文-base部署教程,轻松制作专属对联
春节前必看:春联生成模型-中文-base部署教程,轻松制作专属对联 春节将至,家家户户都开始准备贴春联。但每年想一副既传统又有新意的对联可不容易,要么是市场上买的千篇一律,要么自己创作又缺乏灵感。今天,…...
栈(C语言)
目录 1. 栈的定义 2. 代码实现 1. 栈的定义 栈属于线性表,具有后进先出的特点,存储结构类似羽毛球桶,可以依次取出最后放入栈中的数据。实现:栈一般采用数组 / 链表实现,但是推荐程度:数组 > 单链表 …...
关于初次学习的c语言心得
我是一名大一下的学生,双非二本,因为一些原因休学了两年,现在正在努力学习c语言目标成为公司里面所谓的精通编程,学习c语言的过程每天坚持三小时以上,希望能进入像京东,华为等公司,我也想挣钱买…...
