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

embedded/2024/10/18 9:52:17/

数据集>大规模多传感器滑坡检测数据集,利用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.ppmy.cn/embedded/128424.html

相关文章

【项目经验分享】Stable Diffusion生成式扩散模型毕业设计项目案例定制

关于Stable Diffusion生成式扩散模型的毕业设计题目,这些题目涵盖了该模型的应用、优化、创新以及与其他领域的结合: 基础应用与优化 Stable Diffusion生成效果与风格控制技术研究Stable Diffusion模型在图片去噪中的应用基于Stable Diffusion的高分辨…

SpringColoud GateWay 核心组件

优质博文:IT-BLOG-CN 【1】Route路由: Gateway的基本构建模块,它由ID、目标URL、断言集合和过滤器集合组成。如果聚合断言结果为真,则匹配到该路由。 Route路由-动态路由实现原理: 配置变化Apollo 服务地址实例变化…

如何在node.js中做快速傅立叶变换-(频谱)

在Node.js中进行快速傅立叶变换(FFT),您可以使用现有的库来实现。以下是使用fft-js库进行FFT的示例: 安装依赖库:在您的Node.js项目中,使用npm安装fft-js库。 npm install fft-js const fft require(ff…

Python酷库之旅-第三方库Pandas(157)

目录 一、用法精讲 716、pandas.Timedelta.view方法 716-1、语法 716-2、参数 716-3、功能 716-4、返回值 716-5、说明 716-6、用法 716-6-1、数据准备 716-6-2、代码示例 716-6-3、结果输出 717、pandas.Timedelta.as_unit方法 717-1、语法 717-2、参数 717-3、…

新手爬虫DAY1

这个错误信息表明在你的Python程序中,re.search() 函数没有找到预期的匹配项,因此返回了 None。当你尝试在 None 对象上调用 group(1) 方法时,Python 抛出了一个 AttributeError。 具体来说,错误发生在 pc.py 文件的第6行&#x…

健康生活的重要性

在这个快节奏的时代,健康养生保健已成为我们不可忽视的生活课题。它不仅仅关乎日常饮食的均衡,更是心灵与身体的和谐共生。让我们深入探讨几个关键点,激发您对健康生活的思考与行动。 - 首先,均衡饮食是基础。 提到养生&#xff0…

每天五分钟深度学习pytorch:L1和L2范数、L1和L2归一化

本文重点 我们在另外一个专栏《机器学习和深度学习数学基础》中介绍了常用的范数,这里我们就不进行详细介绍了。这里我们只介绍,如何使用pytorch来计算L1、L2范数,以及如何计算L1和L2归一化。 L1和L2范数 torch.norm(input, p=fro, dim=None, keepdim=False, out=None, d…

【云岚到家】-day07-4-实战项目-优惠券活动-项目准备

【云岚到家-即刻体检】-day07-4-实战项目-优惠券活动-活动管理 1 模块需求分析1.1 业务流程1.2 界面原型1.3 业务模块 2 模块设计2.1 数据流2.2 表结构设计2.2.1 优惠券活动表设计2.2.2 优惠券表设计2.2.3 优惠券核销表2.2.4 优惠券退回表 2.3 创建数据库2.4 创建工程 1 模块需…