遥感影像道路提取算法——SGCN

news2024/11/27 14:36:56

论文介绍

Split Depth-wise Separable Graph Convolution Network for Road Extraction in Complex Environment from High-resolution Remote Sensing Imagery(TGRS)
用于从高分辨率遥感图像(TGRS)中提取复杂环境中道路的分割深度可分离图卷积网络
摘要:
高分辨率遥感图像的道路信息在各个领域得到广泛应用,基于深度学习的方法有效地显示了较高的道路提取性能。然而,在高分辨率遥感图像中,检测柏油路封闭或树木覆盖的道路,仍存在一些挑战,限制了提取的准确性:1)道路之间的阶级内差异较大,城市物体,特别是道路和建筑物之间的阶级间差异不明显;2)被树木、阴影和建筑物遮挡的道路难以提取;3)道路缺乏高精度遥感数据集。为了提高从高分辨率遥感图像中提取道路的精度,我们提出了一种深度分割(DW)可分离图卷积网络(SGCN)。首先,我们将dw可分卷积进行分割,得到信道和空间特征,以提高道路特征的表达能力。然后,我们提出了一个图卷积网络来捕获通道和空间特征中的全局背景道路信息。利用Sobel梯度算子构造了特征图的邻接矩阵。在马萨诸塞州道路数据集上总共使用了13个深度学习网络,在我们自建的山路数据集上使用了9个,以便与我们提出的SGCN进行比较。我们的模型实现了Union(IOU)的81.65%,f1分数为78.99%,我们提出的数据集的平均IOU为62.45%,f1分数为45.06%。可视化结果表明,SGCN在提取覆盖道路和微小道路方面性能较好,能够有效地从高分辨率遥感图像中提取道路。
论文的贡献:
这项研究有两个创新。(1)我们分割dw可分离卷积以获得信道和空间特征。(2)为了获取道路分割的全局上下文信息,我们使用两种不同的图卷积神经网络对这两个特征进行建模。最后,利用一个梯度算子构造了图的邻接矩阵。

跑通代码

code地址: https://github.com/tist0bsc/SGCN

数据准备

首先Download the files mentioned in “dataset/gansu/readme”
数据组织结构
在这里插入图片描述

train

python3 main.py

它将创建一个名为“logs”的文件夹和一个日志文件。此日志文件将记录培训过程。
并且,经过训练的模型(在验证集中具有最大OA)将保存在名为“saved”的文件夹中,并在保存模型时将epochnum记录在“best_epoch.txt”中。
在这里插入图片描述
在这里插入图片描述

eval

python3 eval.py![在这里插入图片描述](https://img-blog.csdnimg.cn/ddb8e6ddc6a64ebe84a8ac125c14ebb8.png)

它将在测试数据集中评估该模型,并打印度量,包括OA、IOU、精度、召回率、F1,然后将混淆矩阵保存在“saved”文件夹中。
在这里插入图片描述在这里插入图片描述

perdict

python3 predict.py
改为python3 predict_roads.py

您可以在“predict/gansu/”中找到视觉结果,“vis”中道路的灰度值为255,而“mask”中为1。
在这里插入图片描述
在这里插入图片描述
原图、标签图、预测的mask、可视图
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

测试自己的数据

首先需要准备数据
修改预测的配置文件predict_config.json,主要修改文件预测结果输出、测试文件路径、图片大小

{   
    "num_classes": 2,
    "pre_dir": "predict/my_roads",
    "img_txt": "dataset/my_roads/test.txt",
	"img_height":1024,
	"img_width":1024,
    "predict_model": { 
        "select" : 0,
        "model": ["SGCNNet"]
    },
    "save_model": {
        "save": true,
        "save_path": "saved/"
    }
}

运行命令行

python predict_roads.py

感觉效果不是特别好,不知道是不是因为原先图片的尺寸是256256,改成了10241024
在这里插入图片描述

代码解读

参考

基于遥感影像的道路提取论文、开源代码和数据集汇总:https://blog.csdn.net/weixin_42990464/article/details/113699960

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/402621.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

java对象的创建与内存分配机制

文章目录对象的创建与内存分配机制对象的创建类加载检查分配内存初始化零值设置对象头指向init方法其他:指针压缩对象内存分配对象在栈上分配对象在Eden区中分配大对象直接分配到老年代长期存活的对象进入老年代对象动态年龄判断老年代空间分配担保机制对象的内存回…

Spring的核心模块:Bean的生命周期(内含依赖循环+业务场景)。

Bean的生命周期前言为什么要学习Bean的生命周期前置知识Spring Post-processor(后置处理器)Aware接口简单介绍Bean的实例化过程为什么会有bean的实例化?过程Bean的初始化阶段为什么会有Bean的初始化?Bean的初始化目的是什么&#…

线性和非线性最小二乘问题的常见解法总结

线性和非线性最小二乘问题的各种解法 先看这篇博客,非常好:线性和非线性最小二乘问题的各种解法 1. 线性最小二乘问题有最优解 但是面对大型稀疏矩阵的时候使用迭代法效率更好。 迭代法 有Jacobi迭代法、 Seidel迭代法及Sor法 【数值分析】Jacobi、Se…

[ubuntu][GCC]gcc源码编译

1.下载gcc安装包 https://ftp.gnu.org/gnu/gcc/ 选择一个需要的gcc版本,下载。 2.下载依赖包 查看下载的gcc安装包中contrib文件夹下的download_prerequisites文件,查看需要的依赖包版本。 根据download_prerequisites中红框位置的信息,在下…

JSON.stringify()的5种使用场景

JSON.stringify() 方法将一个JavaScript对象或值转换为JSON字符串,如果指定了一个replacer函数,则可以选择性地替换值,或者指定的replacer是数组,则可选择性地仅包含数组指定的属性。 语法如下: JSON.stringify(value…

电子技术课程设计基于FPGA的音乐硬件演奏电路的设计与实现

wx供重浩:创享日记 对话框发送:乐曲电路 免费获取完整无水印论文报告(包含电路图) 文章目录一、设计任务要求二、总体框图三、选择器件四、功能模块五、总体设计电路图六、结束语一、设计任务要求 1、课程设计题目 设计一个乐曲演…

【Flutter从入门到入坑之三】Flutter 是如何工作的

【Flutter从入门到入坑之一】Flutter 介绍及安装使用 【Flutter从入门到入坑之二】Dart语言基础概述 【Flutter从入门到入坑之三】Flutter 是如何工作的 本文章主要以界面渲染过程为例,介绍一下 Flutter 是如何工作的。 页面中的各界面元素(Widget&…

使数组和能被P整除[同余定理+同余定理变形]

同余定理同余定理变形前言一、使数组和能被P整除二、同余定理变形总结参考资料前言 同余定理非常经典,采用前缀和 map,当两个余数前缀和为一个值时,则中间一段子数组刚好对P整除。但是能否找到前面是否有一段子数组和可以对P整除呐&#xf…

认识CSS之元素显示模式

🌟所属专栏:前端只因变凤凰之路🐔作者简介:rchjr——五带信管菜只因一枚😮前言:该系列将持续更新前端的相关学习笔记,欢迎和我一样的小白订阅,一起学习共同进步~👉文章简…

深度学习训练营之数据增强

深度学习训练营学习内容原文链接环境介绍前置工作设置GPU加载数据创建测试集数据类型查看以及数据归一化数据增强操作使用嵌入model的方法进行数据增强模型训练结果可视化自定义数据增强查看数据增强后的图片学习内容 在深度学习当中,由于准备数据集本身是一件十分复杂的过程,…

Python 中 KeyError: 0 exception 错误

Python “KeyError: 0” 异常是在我们尝试访问不包含0 这个键的时候去访问该键而引起的。 要解决该错误,请在尝试访问字典之前在字典中设置键,或者如果键不存在,则使用 dict.get() 获取默认值。 下面是一个产生上述错误的示例 my_dict {1…

KDZD互感器二次负载测试仪

一、概述 电能计量综合误差过大是电能计量中普遍存在的一个关键问题。电压互感器二次回路压降引起的计量误差往往是影响电能计量综合误差的因素。所谓电压互感器二次压降引起的误差,就是指电压互感器二次端子和负载端子之间电压的幅值差相对于二次实际电压的百分数…

五分钟了解JumpServer V2.* 与 v3 的区别

一、升级注意项 1、梳理数据。JumpServer V3 去除了系统用户功能,将资产与资产直接绑定。当一个资产名下有多个同名账号,例如两个root用户时,升级后会自动合并最后一个root,不会同步其他root用户。升级前需保证每一个资产只拥有一…

即时通讯系列-N-客户端如何在推拉结合的模式下保证消息的可靠性展示

结论先行 原则: server拉取的消息一定是连续的原则: 端侧记录的消息的连续段有两个作用: 1. 记录消息的连续性, 即起始中间没有断层, 2. 消息连续, 同时意味着消息是最新的,消息不是过期的。同…

Java学习-MySQL-创建数据库表

Java学习-MySQL-创建数据库表 SHOW DATABASESUSE school CREATE TABLE IF NOT EXISTS student( id INT(10) NOT NULL AUTO_INCREMENT COMMENT 学号, name VARCHAR(30) NOT NULL DEFAULT 匿名 COMMENT 姓名, pws VARCHAR(20) NOT NULL DEFAULT 123456 COMMENT 密码, sex VARCHA…

算法题--二叉树(判断是不是平衡二叉树、二叉树的中序遍历、二叉树最大深度、对称二叉树、合并二叉树)

目录 二叉树 题目 判断是不是平衡二叉树 题链接 解析 核心思想 答案 二叉树的中序遍历 原题链接 解析 核心思想 答案 二叉树最大深度、对称二叉树、合并二叉树 二叉树 该类题目的解决一般是通过节点的遍历去实现,一般是分两种。 一是递归(…

【记录】日常|shandianchengzi的三周年创作纪念日

机缘 接触 CSDN 之前,我已经倒腾过 hexo 搭建 github 博客、本地博客、图床;   接触 CSDN 之后,我还倒腾过纸质笔记、gitee 博客、博客园、知乎、b站、Notion、腾讯文档、有道云笔记、XMind、飞书文档、简书等一系列创作平台,但…

SAPUI5开发01_01-Installing Eclipse

1.0 简要要求概述: 本节您将安装SAPUI 5,以及如何在Eclipse Juno中集成SAPUI 5工具。 1.1 安装JDK JDK 是一种用于构建在 Java 平台上发布的应用程序、Applet 和组件的开发环境,即编写 Java 程序必须使用 JDK,它提供了编译和运行 Java 程序的环境。 在安装 JDK 之前,首…

1635_fileno的简单使用

全部学习汇总: GreyZhang/g_unix: some basic learning about unix operating system. (github.com) 在看MIT的OS课程的时候发现自己动不动就因为只是的缺少而卡住,而这个学习占据了我工作之余很多的时间。现在都有一点觉得通关不了的感觉了,…

1. Qt Designer Studio界面介绍

1. 说明: Qt当中的Qt Quick框架使用QML语言来快速搭建优美的界面,但是对于单纯做界面的设计人员并不是很友好,还要让界面设计人员去消耗时间成本学习QML语法。Qt Designer Studio软件就是为了解决这个问题而设计的,工作人员不需要…