大规模多传感器滑坡检测数据集,利用landsat,哨兵2,planet,无人机图像等多种传感器采集数据共2w余副图像,mask准确标注滑坡位置

大规模多传感器滑坡检测数据集,利用landsat,哨兵2,planet,无人机图像等多种传感器采集数据共2w余副图像,mask准确标注滑坡位置

大规模多传感器滑坡检测数据集介绍

数据集概述

名称:大规模多传感器滑坡检测数据集
图像数量:20,000余幅
数据来源

  • Landsat 卫星图像
  • 哨兵2 (Sentinel-2) 卫星图像
  • Planet 卫星图像
  • 无人机图像
  • 其他可能的高分辨率卫星或航空图像

标注类型:像素级分割掩码,准确标注滑坡位置

用途:用于滑坡检测和监测任务,适用于地质灾害预警、城市规划、环境监测等领域。该数据集特别适合基于深度学习的语义分割模型(如U-Net、DeepLab)和其他遥感图像处理技术。

数据集特点
  • 规模:包含20,000余张高分辨率图像,每张图像都带有详细的像素级分割掩码。
  • 多样性:图像来自多种传感器,包括卫星和无人机,涵盖了不同的时空分辨率、光照条件和天气状况,确保模型能够适应多样的实际场景。
  • 标注质量:每张已标注的图像都有精确的手动分割掩码,确保了高质量的训练数据。
  • 多源数据:结合了Landsat、哨兵2、Planet和无人机等多种传感器的数据,提供了丰富的信息层次和视角。
  • 时间序列:部分数据集可能包含时间序列图像,有助于分析滑坡的发展过程和动态变化。
应用领域
  • 地质灾害预警:自动识别和监测滑坡区域,提供早期预警。
  • 城市规划:通过滑坡风险评估,优化城市规划和土地利用。
  • 环境监测:持续监测滑坡对环境的影响,支持生态保护和恢复工作。
  • 数据分析:通过数据分析,提供关于滑坡分布和演变的统计报告,辅助决策制定。
获取方式

通常情况下,研究人员可以通过官方提供的链接或相关机构网站下载该数据集。请注意,使用时应遵循相应的许可协议和引用要求。

关键代码示例

1. 下载数据集

假设我们已经有了数据集的下载链接,可以使用 Python 的 requests 库来下载数据集:

import requests
import os# 定义下载链接和保存路径
url = 'http://example.com/path/to/landslide_detection_dataset.zip'  # 替换为实际的下载链接
save_path = './landslide_detection_dataset.zip'# 检查是否已经下载过
if not os.path.exists(save_path):print("Downloading dataset...")response = requests.get(url, stream=True)with open(save_path, 'wb') as f:for chunk in response.iter_content(chunk_size=8192):if chunk:f.write(chunk)print("Download complete.")
else:print("Dataset already exists.")# 解压数据集
import zipfile
with zipfile.ZipFile(save_path, 'r') as zip_ref:zip_ref.extractall('./landslide_detection_dataset')
2. 加载和显示图像及其分割掩码

以下是一个加载和显示图像及其分割掩码的示例:

import matplotlib.pyplot as plt
import numpy as np
from PIL import Imagedef load_image_and_mask(image_path, mask_path):image = Image.open(image_path).convert("RGB")mask = Image.open(mask_path).convert("L")  # 转换为灰度图return image, maskdef display_image_and_mask(image, mask):fig, axes = plt.subplots(1, 2, figsize=(12, 6))axes[0].imshow(image)axes[0].set_title('Image')axes[0].axis('off')axes[1].imshow(mask, cmap='gray')axes[1].set_title('Segmentation Mask')axes[1].axis('off')plt.show()# 示例路径
image_path = './landslide_detection_dataset/images/image_0001.jpg'
mask_path = './landslide_detection_dataset/masks/mask_0001.png'image, mask = load_image_and_mask(image_path, mask_path)
display_image_and_mask(image, mask)
3. 创建 PyTorch Dataset 和 DataLoader

以下是一个简单的 PyTorch Dataset 和 DataLoader 示例:

import torch
from torch.utils.data import Dataset, DataLoader
from torchvision import transforms
from PIL import Image
import numpy as npclass LandslideDetectionDataset(Dataset):def __init__(self, image_dir, mask_dir, transform=None):self.image_dir = image_dirself.mask_dir = mask_dirself.transform = transformself.images = os.listdir(image_dir)def __len__(self):return len(self.images)def __getitem__(self, idx):img_name = self.images[idx]image_path = os.path.join(self.image_dir, img_name)mask_path = os.path.join(self.mask_dir, img_name.replace('.jpg', '.png'))image = Image.open(image_path).convert("RGB")mask = Image.open(mask_path).convert("L")  # 转换为灰度图if self.transform:image = self.transform(image)mask = self.transform(mask)return image, mask# 数据增强和预处理
transform = transforms.Compose([transforms.Resize((256, 256)),transforms.ToTensor(),
])# 创建 Dataset 和 DataLoader
dataset = LandslideDetectionDataset(image_dir='./landslide_detection_dataset/images',mask_dir='./landslide_detection_dataset/masks',transform=transform
)
dataloader = DataLoader(dataset, batch_size=4, shuffle=True, num_workers=2)# 遍历数据
for images, masks in dataloader:# 在这里进行模型训练pass
4. 使用 U-Net 进行语义分割

以下是一个使用 U-Net 进行语义分割的简单示例:

  1. 定义 U-Net 模型:深色版本

  2. import torch.optim as optimdevice = torch.device("cuda" if torch.cuda.is_available() else "cpu")
    model.to(device)criterion = nn.BCEWithLogitsLoss()  # 二分类损失函数
    optimizer = optim.Adam(model.parameters(), lr=0.001)num_epochs = 50for epoch in range(num_epochs):model.train()running_loss = 0.0for images, masks in dataloader:images, masks = images.to(device), masks.to(device).unsqueeze(1)  # 添加通道维度optimizer.zero_grad()outputs = model(images)loss = criterion(outputs, masks)loss.backward()optimizer.step()running_loss += loss.item()print(f'Epoch [{epoch+1}/{num_epochs}], Loss: {running_loss/len(dataloader)}')
  3. 评估模型

     
    model.eval()
    with torch.no_grad():for images, masks in dataloader:images, masks = images.to(device), masks.to(device).unsqueeze(1)  # 添加通道维度outputs = model(images)predicted_masks = torch.sigmoid(outputs) > 0.5  # 二值化预测结果# 可视化预测结果for i in range(images.size(0)):fig, axes = plt.subplots(1, 3, figsize=(15, 5))axes[0].imshow(images[i].permute(1, 2, 0).cpu().numpy())axes[0].set_title('Image')axes[0].axis('off')axes[1].imshow(masks[i].squeeze().cpu().numpy(), cmap='gray')axes[1].set_title('Ground Truth')axes[1].axis('off')axes[2].imshow(predicted_masks[i].squeeze().cpu().numpy(), cmap='gray')axes[2].set_title('Predicted Mask')axes[2].axis('off')plt.show()

时间序列分析(可选)

如果数据集中包含时间序列图像,您可以进一步进行时间序列分析,例如:

  1. 时间序列数据准备: 将同一地区的不同时间点的图像组织在一起,形成时间序列数据。

  2. 时间序列模型: 使用循环神经网络(RNN)、长短期记忆网络(LSTM)或其他时间序列模型,结合卷积神经网络(CNN),构建端到端的时间序列滑坡检测模型。

  3. 训练和评估: 训练模型并评估其在时间序列数据上的性能。

通过上述步骤,您将拥有一个完整的多传感器滑坡检测系统,包括数据集、预训练模型和相关的训练流程。希望这些代码能帮助您更好地利用该数据集!

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

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

相关文章

Python | Leetcode Python题解之第491题非递减子序列

题目: 题解: class Solution:def findSubsequences(self, nums: List[int]) -> List[List[int]]:def dfs(i, tmp):if i len(nums):if len(tmp) > 2:res.append(tmp[:]) # 拷贝,tmp[:]而非tmpreturn# 选 nums[i]if not tmp or nu…

2d 数字人实时语音聊天对话使用案例;支持asr、llm、tts实时语音交互

参考: https://github.com/lyz1810/live2dSpeek 下载live2dSpeek项目 ## 下载live2dSpeek git clone https://github.com/lyz1810/live2dSpeek cd live2dSpeek-main ## 运行live2dSpeek npm install -g http-server http-server .更改新的index.html页面 index.html

Vue.js 组件化开发:从入门到进阶

Vue.js 组件化开发:从入门到进阶 👋 大家好,今天我们来聊一聊 Vue.js 的 “组件化开发”。目前 Vue 开发已经相对成熟了,相信很多朋友对组件化开发并不陌生。 如果你对组件化开发已经非常熟悉,看到我的文章&#xff…

【SQL Server】数据库在新建查询后闪退——解决方案:以管理员的身份运行

我的SQLServer2022之前都是可以用的,隔了好久没有使用,今天要用到去写一些SQL 语句 结果在点击新建查询后闪退了, 经过查询后,解决方案: 以管理员的身份运行后点击新建查询,发现正常了 总结:以…

H5对接海康硬盘录像机视频简单说明

开发过程中使用HTML5(通常是通过Web技术栈,如HTML、CSS、JavaScript)与海康威视(Hikvision)的硬盘录像机(DVR)进行视频对接,通常涉及以下步骤: 获取DVR的RTSP流地址:海康威视DVR支持RTSP协议,你可以通过DVR的管理界面获取每个摄像头的RTSP流地址。 使用视频播放器库…

记一次库版本升级引起程序自动停止

记一次库版本升级引起程序自动停止 最近我们的应用升级了jedis 版本,版本从 2.10.2 升级 到3.8.0。发现我们的任务应用启动后立马自动关闭了。 这就奇怪了,为什么升级个版本,会导致程序启动后自动关闭呢。带着这个疑问我们看下代码。 表现如下&#x…

数据结构编程实践20讲(Python版)—18哈希表

本文目录 18 哈希表(Hash Table)S1 说明特征解决问题S2 示例示例 1示例 2S3 应用应用1: LRU 缓存机制应用2:高级拼写检查器应用3:DNA 序列的 K-mer 计数往期链接 01 数组02 链表03 栈04 队列05 二叉树06 二叉搜索树07 AVL树08 红黑树09 B树10 B+树11 线段树12 树状数组13 …

C语言_指针_进阶

引言:在前面的c语言_指针初阶上,我们了解了简单的指针类型以及使用,下面我们将进入更深层次的指针学习,对指针的理解会有一个极大的提升。从此以后,指针将不再是难点,而是学习底层语言的一把利器。 本章重点…

vr体验馆计时收银软件试用版下载 佳易王VR游戏厅计时计费管理系统使用操作教程

一、前言 【软件试用版资源文件下载可以点击文章最后卡片了解】 vr体验馆计时收银软件试用版下载 佳易王VR游戏厅计时计费管理系统使用操作教程 VR体验馆计时计费软件是专门为VR体验馆设计的管理工具,旨在提高服务效率和客户的满意度。软件能够记录客户使用设备的…

Java线程说明

在 Java 中,synchronized关键字可以用来实现同步,它可以接收不同的参数,主要有以下两种常见用法:以对象作为参数和以类作为参数。 一、synchronized关键字的作用 synchronized关键字用于确保在同一时刻只有一个线程可以访问被它…

vue组件调用生命周期

《vue基础学习-组件》提到组件传递数据方式: 1. props/$emit 父传子:子组件通过 props 显式声明 自定义 属性,接收父组件的传值。子传父:子组件通过 $emit() 显式声明 自定义 事件,父组件调用自定义事件接收子组件返…

【如何获取股票数据10】Python、Java等多种主流语言实例演示获取股票行情api接口之沪深A股历史分时KDJ数据获取实例演示及接口API说明文档

最近一两年内,股票量化分析逐渐成为热门话题。而从事这一领域工作的第一步,就是获取全面且准确的股票数据。因为无论是实时交易数据、历史交易记录、财务数据还是基本面信息,这些数据都是我们进行量化分析时不可或缺的宝贵资源。我们的主要任…

C++ ----Qt

1.什么是QT Qt是一个跨平台的C应用程序开发框架。 用于开发图形用户界面、嵌入式系统、以及其他应用程序(嵌入式,桌面,汽车中控),支持Windows、macOS、Linux、Android和iOS等多个操作系统。 Qt框架提供了丰富的功能…

【ChatGPT】如何让 ChatGPT 理解多步骤指令

如何让 ChatGPT 理解多步骤指令 在与 ChatGPT 交互时,多步骤指令能够帮助模型更准确地理解复杂任务并逐步执行每个步骤。然而,如果多步骤指令没有清晰组织,可能会导致输出混乱或不完整。本文将介绍如何有效编写多步骤指令,使 Cha…

Docker-compose提示specified IP address..configured subnets问题以及Docker容器相关操作记录保存

一、Docker-compose提示user specified IP address is supported only when connecting to networks with user configured subnets 在网上下载的一些docker-compose.yml在执行的时碰到过多次如下报错: ERROR: for 5307e2acb....user specified IP address is supp…

【Flutter】Dart:环境搭建

Flutter 是一个基于 Dart 的跨平台开发框架,可以帮助我们快速构建移动应用程序。在开始 Flutter 开发之前,我们需要先搭建 Dart 的开发环境,并配置合适的编辑器,比如 VSCode。本教程将引导你一步步完成 Dart 和 Flutter 的环境搭建…

2024.10.17 软考学习笔记

刷题网站: 软考中级软件设计师在线试题、软考解析及答案-51CTO题库-软考在线做题备考工具

vue2项目 实现上边两个下拉框,下边一个输入框 输入框内显示的值为[“第一个下拉框选中值“ -- “第二个下拉框选中的值“]

效果: 思路: 采用vue中 [computed:] 派生属性的方式实现联动效果,上边两个切换时,下边的跟随变动 demo代码: <template><div><!-- 第一个下拉框 --><select v-model"firstValue"><option v-for"option in options" :key&q…

Github优质项目推荐 - 第六期

文章目录 Github优质项目推荐 - 第六期一、【WiFiAnalyzer】&#xff0c;3.4k stars - WiFi 网络分析工具二、【penpot】&#xff0c;33k stars - UI 设计与原型制作平台三、【Inpaint-Anything】&#xff0c;6.4k stars - 修复图像、视频和3D 场景中的任何内容四、【Malware-P…

适用于 Windows 的 4 个最佳免费数据恢复软件

计算机最重要的是用户数据。除了您的数据之外&#xff0c;关于计算机的其他一切都是可替换的。这三个是数据丢失的最常见原因&#xff1a; 文件/文件夹删除 丢失分区 损坏的分区 文件/文件夹删除是最常见的数据丢失类型。大多数时候&#xff0c;由于不小心删除文件/文件夹而…