遥感滑坡目标检测数据集 2300张 滑坡 带标注 voc yolo 1类

news2024/10/7 12:21:22

 

遥感滑坡目标检测数据集 2300张 滑坡 带标注 voc yolo 1类

分类名: (图片张数, 标注个数)
landsI ide:
(2299,6545)
总数: (2314, 6545)
总类(nc): 1类

遥感滑坡目标检测数据集 (Remote Sensing Landslide Detection Dataset)

数据集概述

该数据集是一个专门用于训练和评估遥感图像中滑坡目标检测模型的数据集。数据集包含2300张图像,每张图像都带有详细的标注信息,标注格式包括VOC(Pascal VOC)和YOLO格式。这些图像涵盖了各种地理环境下的滑坡情况,适用于基于深度学习的目标检测任务。通过这个数据集,可以训练出能够准确检测和定位滑坡区域的模型,从而帮助进行地质灾害监测、风险评估等应用。

数据集特点
  • 高质量图像:数据集中的图像具有高分辨率,能够提供丰富的细节信息,特别适合遥感图像分析。
  • 带标注:每张图像都有详细的标注信息,包括滑坡的位置和大小。
  • 多格式标注:标注信息同时以VOC和YOLO格式提供,方便不同框架的使用。
  • 实际应用场景:适用于需要精确检测滑坡区域的场景,如地质灾害监测、城市规划、应急响应系统等。
数据集结构
remote_sensing_landslide_detection_dataset/
├── images/                            # 图像文件
│   ├── 00001.jpg                      # 示例图像
│   ├── 00002.jpg
│   └── ...
├── annotations/                       # 标注文件
│   ├── VOC/                           # Pascal VOC格式标注
│   │   ├── 00001.xml                  # 示例VOC标注文件
│   │   ├── 00002.xml
│   │   └── ...
│   ├── YOLO/                          # YOLO格式标注
│   │   ├── 00001.txt                  # 示例YOLO标注文件
│   │   ├── 00002.txt
│   │   └── ...
├── data.yaml                          # 类别描述文件
├── README.md                          # 数据集说明
数据集内容
  1. images/

    • 功能:存放图像文件。
    • 内容
      • 00001.jpg:示例图像。
      • 00002.jpg:另一张图像。
      • ...
  2. annotations/

    • 功能:存放标注文件。
    • 内容
      • VOC/:存放Pascal VOC格式的标注文件。
        • 00001.xml:示例VOC标注文件。
        • 00002.xml:另一张图像的VOC标注文件。
        • ...
      • YOLO/:存放YOLO格式的标注文件。
        • 00001.txt:示例YOLO标注文件。
        • 00002.txt:另一张图像的YOLO标注文件。
        • ...
  3. data.yaml

    • 功能:定义数据集的类别和其他相关信息。
    • 内容
       yaml 

      深色版本

      train: remote_sensing_landslide_detection_dataset/images
      val: remote_sensing_landslide_detection_dataset/images
      nc: 1
      names: ['landslide']
  4. README.md

    • 功能:数据集的详细说明文档。
    • 内容
      • 数据集的来源和用途。
      • 数据集的结构和内容。
      • 如何使用数据集进行模型训练和评估。
      • 其他注意事项和建议。
数据集统计
  • 总图像数量:2300张
  • 总标注框数量:6545个
  • 类别:1类(滑坡)
  • 平均每张图像的标注框数量:约2.85个

具体类别及其统计如下:

  • landslide(滑坡):(2299张图像, 6545个标注)
使用说明
  • 环境准备:确保安装了常用的深度学习库,例如torchtorchvisionnumpy等。
  • 数据集路径设置:将数据集解压到项目目录下,并确保路径正确。
  • 训练模型:可以使用预训练的目标检测模型(如Faster R-CNN、YOLOv5等),并对其进行微调以适应当前数据集。
  • 数据增强:可以通过随机翻转、旋转等方法增加数据多样性,提高模型鲁棒性。
  • 超参数调整:根据实际情况调整学习率、批大小等超参数,以获得最佳训练效果。
  • 硬件要求:建议使用GPU进行训练和推理,以加快处理速度。如果没有足够的计算资源,可以考虑使用云服务提供商的GPU实例。
  • 类别平衡:虽然数据集中只有一类目标,但在实际应用中可能需要进一步检查并处理类别不平衡问题,例如通过过采样或欠采样方法。

关键训练代码

以下是一个使用PyTorch和torchvision库进行遥感滑坡目标检测的示例代码。我们将使用预训练的Faster R-CNN模型,并对其进行微调以适应我们的数据集。

import torch
import torchvision
from torchvision.models.detection.faster_rcnn import FastRCNNPredictor
from torchvision.transforms import functional as F
from torch.utils.data import DataLoader, Dataset
from PIL import Image
import os
import xml.etree.ElementTree as ET

# 自定义数据集类
class RemoteSensingLandslideDetectionDataset(Dataset):
    def __init__(self, root, transforms=None):
        self.root = root
        self.transforms = transforms
        self.imgs = list(sorted(os.listdir(os.path.join(root, "images"))))
        self.annotations = list(sorted(os.listdir(os.path.join(root, "annotations", "VOC"))))

    def __getitem__(self, idx):
        img_path = os.path.join(self.root, "images", self.imgs[idx])
        annotation_path = os.path.join(self.root, "annotations", "VOC", self.annotations[idx])

        img = Image.open(img_path).convert("RGB")
        annotation_root = ET.parse(annotation_path).getroot()

        boxes = []
        labels = []
        for obj in annotation_root.findall('object'):
            xmin, ymin, xmax, ymax = [int(obj.find('bndbox').find(tag).text) for tag in ('xmin', 'ymin', 'xmax', 'ymax')]
            label = obj.find('name').text
            label_id = 1  # 只有一类目标:滑坡
            boxes.append([xmin, ymin, xmax, ymax])
            labels.append(label_id)

        boxes = torch.as_tensor(boxes, dtype=torch.float32)
        labels = torch.as_tensor(labels, dtype=torch.int64)

        target = {}
        target["boxes"] = boxes
        target["labels"] = labels
        target["image_id"] = torch.tensor([idx])

        if self.transforms is not None:
            img, target = self.transforms(img, target)

        return F.to_tensor(img), target

    def __len__(self):
        return len(self.imgs)

# 数据预处理
def get_transform(train):
    transforms = []
    if train:
        transforms.append(torchvision.transforms.RandomHorizontalFlip(0.5))
    return torchvision.transforms.Compose(transforms)

# 加载数据集
dataset = RemoteSensingLandslideDetectionDataset(root='remote_sensing_landslide_detection_dataset', transforms=get_transform(train=True))
dataset_test = RemoteSensingLandslideDetectionDataset(root='remote_sensing_landslide_detection_dataset', transforms=get_transform(train=False))

indices = torch.randperm(len(dataset)).tolist()
dataset = torch.utils.data.Subset(dataset, indices[:-230])
dataset_test = torch.utils.data.Subset(dataset_test, indices[-230:])

data_loader = DataLoader(dataset, batch_size=2, shuffle=True, num_workers=4, collate_fn=lambda x: tuple(zip(*x)))
data_loader_test = DataLoader(dataset_test, batch_size=1, shuffle=False, num_workers=4, collate_fn=lambda x: tuple(zip(*x)))

# 定义模型
model = torchvision.models.detection.fasterrcnn_resnet50_fpn(pretrained=True)
num_classes = 2  # 1类目标 + 背景
in_features = model.roi_heads.box_predictor.cls_score.in_features
model.roi_heads.box_predictor = FastRCNNPredictor(in_features, num_classes)

# 设置设备
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
model.to(device)

# 定义优化器
params = [p for p in model.parameters() if p.requires_grad]
optimizer = torch.optim.SGD(params, lr=0.005, momentum=0.9, weight_decay=0.0005)

# 训练模型
num_epochs = 10
for epoch in range(num_epochs):
    model.train()
    for images, targets in data_loader:
        images = list(image.to(device) for image in images)
        targets = [{k: v.to(device) for k, v in t.items()} for t in targets]

        loss_dict = model(images, targets)
        losses = sum(loss for loss in loss_dict.values())

        optimizer.zero_grad()
        losses.backward()
        optimizer.step()

    print(f'Epoch {epoch+1}/{num_epochs}, Loss: {losses.item()}')

    # 验证模型
    model.eval()
    with torch.no_grad():
        for images, targets in data_loader_test:
            images = list(image.to(device) for image in images)
            targets = [{k: v.to(device) for k, v in t.items()} for t in targets]
            outputs = model(images)

# 保存模型
torch.save(model.state_dict(), 'remote_sensing_landslide_detection_model.pth')

注意事项

  • 数据格式:确保输入的数据格式正确,特别是图像文件和标注文件的格式。
  • 超参数调整:根据实际情况调整学习率、批大小等超参数,以获得最佳训练效果。
  • 硬件要求:建议使用GPU进行训练和推理,以加快处理速度。如果没有足够的计算资源,可以考虑使用云服务提供商的GPU实例。
  • 数据增强:可以通过数据增强技术(如随机翻转、旋转等)来增加模型的鲁棒性。
  • 模型选择:除了Faster R-CNN,还可以尝试其他目标检测模型,如YOLOv5、SSD等,以找到最适合当前任务的模型。
  • 类别平衡:虽然数据集中只有一类目标,但在实际应用中可能需要进一步检查并处理类别不平衡问题,例如通过过采样或欠采样方法。

通过上述步骤,你可以成功地使用这个高质量的遥感滑坡目标检测数据集进行模型训练和评估。该数据集不仅适用于学术研究,还可以应用于实际的地质灾害监测、城市规划、应急响应系统等领域,帮助提升对滑坡区域的检测准确性和效率。希望这个数据集能帮助你更好地理解和应用最新的深度学习技术。

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

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

相关文章

【PS2020】Adobe Photoshop 2020 中文免费版

photoshop 2020是全球最大的图像处理软件,为用户提供了广泛的专业级润饰工具套件,集成了专为激发灵感而设计的强大编辑功能,帮助用户制作出满意的图片效果,是很多摄影师、广告师等专业人员必备的一款图像及照片后期处理大型专业软…

【机器学习】网络安全——异常检测与入侵防御系统

我的主页:2的n次方_ 随着全球互联网和数字基础设施的不断扩展,网络攻击的数量和复杂性都在显著增加。从传统的病毒和蠕虫攻击到现代复杂的高级持续性威胁(APT),网络攻击呈现出更加智能化和隐蔽化的趋势。面对这样的…

Spring Boot 进阶-浅析SpringBoot中如何完成数据校验

在实际开发中,我们经常会遇到接口数据校验的问题。例如在用户输入手机号、或者是身份证号的时候,我们就需要校验手机号或者身份证号是否输入正确。当然这样的校验在前端页面输入的时候就可以完成。 但是对于直接调用接口的情况则不能通过调用方来进行判断,这就需要我们在Spr…

c++继承(下)

c继承(下) (1)继承与友元(2)继承与静态成员(3)多继承及其菱形继承问题3.1 继承模型3.2 虚继承3.3 多继承中指针偏移问题 (4)继承和组合(9&#xf…

知识图谱构建方法汇总!

知识图谱构建过程是一个人机结合的不断迭代过程,以机器自动学习为主、专家定义与修正结合。需要人工介入的工作包括Schema定义、部分结构化知识准备、机器学习结果校验,依据用户的反馈、语料的增加与更新,不断进行模型的更新与迭代。 专业领域…

最新网课搜题答案查询小程序源码/题库多接口微信小程序源码+自带流量主

源码简介: 最新网课搜题神器小程序源码,它是仿了小猿题库,功能多,能很快速找网课答案,还自带流量主功能。 这个小程序类似小助手,一键搜题就有答案。而且支持激励视频流量主,能轻松变现。 源…

三点估算法-系统架构师(七十五)

1关于网络存储的叙述,正确的是()。 A DAS支持完全跨平台的文件共享,支持所有操作系统 B NAS通过SCSI连接至服务器,通过服务器网卡在网络上传输数据 C FC SAN的网络介质为光纤通道,而IP SAN使用标准的以太…

C语言复习概要(四)

本文 1. 操作符的分类算术操作符关系操作符逻辑操作符 2. 二进制制和进制转换二进制与十六进制的表示进制转换算法 3. 原码、反码和补码原码反码补码 1. 操作符的分类 C语言中的操作符种类繁多,常用的主要操作符可以按照其功能进行如下分类: 算术操作符…

【机器学习-无监督学习】概率图模型

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈Python机器学习 ⌋ ⌋ ⌋ 机器学习是一门人工智能的分支学科,通过算法和模型让计算机从数据中学习,进行模型训练和优化,做出预测、分类和决策支持。Python成为机器学习的首选语言,…

【Java】String 类详解:字符串操作的必备知识

📃个人主页:island1314 ⛺️ 欢迎关注:👍点赞 👂🏽留言 😍收藏 💞 💞 💞 1 基本概念 java.lang.String 类用于描述字符串,Java程序中所有的字…

LeetCode讲解篇之79. 单词搜索

文章目录 题目描述题解思路题解代码题目链接 题目描述 题解思路 我们遍历对矩阵中的每个点,对每个点采用深度优先搜索,检查是否能以当前点做为开头来匹配word 我们使用一个与矩阵相同规格的二维数组表示矩阵中对应的点是否被访问过,防止重复…

html+css+js实现Switch开关

实现效果&#xff1a; 代码实现&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Switch…

优化阶乘求和

题目&#xff1a;求 的值。 思路&#xff1a;循环n次&#xff0c;每次求每一项的值&#xff0c;并加起来&#xff0c;求每一项的值需要求阶乘&#xff0c;而阶乘的时间复杂度为O(n)&#xff0c;所有总的时间复杂度为O(n^2)。所以这个方法不好。 优化&#xff1a;求每一项的值不…

华为OD机试 - 九宫格游戏(Python/JS/C/C++ 2024 E卷 100分)

华为OD机试 2024E卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试真题&#xff08;Python/JS/C/C&#xff09;》。 刷的越多&#xff0c;抽中的概率越大&#xff0c;私信哪吒&#xff0c;备注华为OD&#xff0c;加入华为OD刷题交流群&#xff0c;…

麒麟 操作系统介绍| 银河麒麟和中标麒麟操作系统| Kylin 麒麟iso 镜像下载地址 银河麒麟操作系统v10 |

目录 #申请试用小技巧&#xff0c; 所有麒麟系列的版本如下 详细介绍如下&#xff1a; 银河麒麟高级服务器操作系统 V10 1. 龙芯-MIPS64el 版 2. 申威版 3. 兆芯版 4. 海光版 5. 飞腾版 6. 鲲鹏版 7. AMD64版 8. 龙芯-LoongArch64 版 9. ARM64版 银河麒麟桌面操作…

BGP路由原理详解

&#x1f423;个人主页 可惜已不在 &#x1f424;这篇在这个专栏 华为_可惜已不在的博客-CSDN博客 &#x1f425;有用的话就留下一个三连吧&#x1f63c; 目录 一. BGP简介: 二. BGP报文中的角色 BGP的报文 BGP处理过程 BGP有限状态机 BGP属性 三. BGP作用 四. BGP选路 ​…

120页PPT企业对标管理指导:对标具有全球竞争力的世界一流企业

国有企业管理提升与对标管理是提升企业竞争力、实现可持续发展的重要途径。以下是对国有企业管理提升路线与对标管理的详细分析&#xff1a; 一、国有企业管理提升路线 明确战略定位&#xff1a; 根据市场需求和资源状况&#xff0c;确定企业的核心业务和发展方向。制定科学…

使用 docker-compose 启动 es 集群 + kibana

编写 docker-compose yaml version: v3 services:elasticsearch-node1:image: elasticsearch:7.17.24container_name: elasticsearch-node1ports:- "9200:9200"- "9300:9300"environment:- node.nameelasticsearch-node1- cluster.namemy-es-cluster- dis…

【Linux 】文件描述符fd、重定向、缓冲区(超详解)

目录 ​编辑 系统接口进行文件访问 open 接口介绍 文件描述符fd 重定向 缓冲区 1、缓冲区是什么&#xff1f; 2、为什么要有缓冲区&#xff1f; 3、怎么办&#xff1f; 我们先来复习一下&#xff0c;c语言对文件的操作&#xff1a; C默认会打开三个输入输出流&#xf…

SpringBoot 集成 Ehcache 实现本地缓存

目录 1、Ehcache 简介2、Ehcache 集群方式3、工作原理3.1、缓存写入3.2、缓存查找3.3、缓存过期和驱逐3.4、缓存持久化 4、入门案例 —— Ehcache 2.x 版本4.1、单独使用 Ehcache4.1.1、引入依赖4.1.2、配置 Ehcache4.1.2.1、XML 配置方式4.1.2.1.1、新建 ehcache.xml4.1.2.1.2…