无人机视角应急救援(人)数据集

news/2024/11/13 15:24:31/

无人机视角应急救援(人),两个数据集
part1,使用DJI Phantom 4A拍摄,分辨率为1920×1080像素。山区场景,图像中人员姿势分为站立、坐着、躺着、行走、奔跑。共1981张图像6500个不同姿势的标记,
part2,无人机视角,高度涵盖20m-120m,同时使用可见光与热传感检测搜救行人,涵盖场景更加丰富,草地,雪地,海岸,森林,山地等多种地形,共55000余图像,40GB数据量,

数据集名称

无人机视角应急救援(人)数据集

数据集描述

数据集是一个专门用于无人机视角应急救援场景中人员检测的数据集,旨在帮助研究人员和开发者训练和评估基于深度学习的目标检测模型。数据集结合了两个部分的数据,涵盖了多种复杂场景下的行人检测,包括不同姿势、不同高度以及多种地形。

数据规模
  • 总样本数量:56981张图像
    • Part 1: 1981张图像,包含6500个不同姿势的标记。
    • Part 2: 55000余张图像,约40GB的数据量。
  • 标注目标:所有图像都带有详细的标注信息,用于训练和验证目标检测模型。
目标类别及数量
  • Part 1:

    • 站立 (Standing)
    • 坐着 (Sitting)
    • 躺着 (Lying)
    • 行走 (Walking)
    • 奔跑 (Running)
    • 总计6500个不同姿势的标记。
  • Part 2:

    • 行人 (Pedestrian): 覆盖了草地、雪地、海岸、森林、山地等多种地形中的行人。
图像分辨率

  • Part 1: 1920×1080像素(DJI Phantom 4A拍摄)
  • Part 2: 多种分辨率,具体取决于无人机的高度和传感器类型(可见光与热传感)
拍摄高度
  • Part 1: 主要为山区场景,未指定具体高度。
  • Part 2: 高度涵盖20m-120m。
场景多样性
  • Part 1: 山区场景,图像中人员姿势分为站立、坐着、躺着、行走、奔跑。
  • Part 2: 涵盖草地、雪地、海岸、森林、山地等多种地形,使用可见光与热传感检测搜救行人。
标注格式

数据集中的标注信息采用了YOLO(You Only Look Once)格式的TXT文件。每个图像都有一个对应的标签文件,记录了每个目标的位置信息(边界框坐标)和类别标签。这种格式可以直接用于YOLO系列模型的训练。

数据集结构

典型的数据集目录结构如下:

 
1drone_emergency_rescue_dataset/
2├── part1/
3│   ├── images/
4│   │   ├── img_00001.jpg
5│   │   ├── img_00002.jpg
6│   │   └── ...
7│   └── labels/
8│       ├── img_00001.txt
9│       ├── img_00002.txt
10│       └── ...
11├── part2/
12│   ├── images/
13│   │   ├── img_00001.jpg
14│   │   ├── img_00002.jpg
15│   │   └── ...
16│   └── labels/
17│       ├── img_00001.txt
18│       ├── img_00002.txt
19│       └── ...
20└── README.md  # 数据集说明文件
应用场景

数据集可以用于以下应用场景:

  • 应急救援:在自然灾害或紧急情况下,通过无人机快速搜索并定位受困人员。
  • 安全监控:辅助安全监控系统,在各种复杂环境中进行人员检测。
  • 智能交通:在交通管理中,通过无人机监测行人行为,提高交通安全。
  • 科研分析:用于研究目标检测算法和技术的发展趋势,特别是在无人机视角下的应用。

示例代码

以下是一个使用Python和相关库(如OpenCV、PIL等)来加载和展示数据集的简单示例代码:

1import os
2import cv2
3import numpy as np
4from PIL import Image
5
6# 数据集路径
7dataset_path = 'path/to/drone_emergency_rescue_dataset/'
8
9# 加载图像和标签
10def load_image_and_label(image_path, label_path):
11    # 读取图像
12    image = Image.open(image_path).convert('RGB')
13    # 解析标签文件
14    with open(label_path, 'r') as infile:
15        lines = infile.readlines()
16        objects = []
17        for line in lines:
18            data = line.strip().split()
19            class_id = int(data[0])
20            x_center, y_center, w, h = map(float, data[1:])
21            objects.append([x_center, y_center, w, h, class_id])
22    return image, objects
23
24# 展示图像
25def show_image_with_boxes(image, boxes):
26    img = np.array(image)
27    class_names = ['Standing', 'Sitting', 'Lying', 'Walking', 'Running', 'Pedestrian']
28    for box in boxes:
29        x_center, y_center, w, h, class_id = box
30        w, h = int(w * img.shape[1]), int(h * img.shape[0])
31        x_center, y_center = int(x_center * img.shape[1]), int(y_center * img.shape[0])
32        xmin, xmax = x_center - w // 2, x_center + w // 2
33        ymin, ymax = y_center - h // 2, y_center + h // 2
34        cv2.rectangle(img, (xmin, ymin), (xmax, ymax), (0, 255, 0), 2)
35        cv2.putText(img, class_names[class_id], (xmin, ymin - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 2)
36    cv2.imshow('Image with Boxes', img)
37    cv2.waitKey(0)
38    cv2.destroyAllWindows()
39
40# 主函数
41if __name__ == "__main__":
42    part = 'part1'  # 可以选择 'part2'
43    subset = 'train'  # 可以选择 'val' 或 'test'
44    images_dir = os.path.join(dataset_path, part, 'images', subset)
45    labels_dir = os.path.join(dataset_path, part, 'labels', subset)
46    
47    # 获取图像列表
48    image_files = [f for f in os.listdir(images_dir) if f.endswith('.jpg')]
49    
50    # 随机选择一张图像
51    selected_image = np.random.choice(image_files)
52    image_path = os.path.join(images_dir, selected_image)
53    label_path = os.path.join(labels_dir, selected_image.replace('.jpg', '.txt'))
54    
55    # 加载图像和标签
56    image, boxes = load_image_and_label(image_path, label_path)
57    
58    # 展示带有标注框的图像
59    show_image_with_boxes(image, boxes)

这段代码展示了如何加载图像和其对应的YOLO TXT标注文件,并在图像上绘制边界框和类别标签。您可以根据实际需求进一步扩展和修改这段代码,以适应您的具体应用场景。

示例代码:使用预训练模型进行推理

以下是使用YOLO预训练模型进行推理的示例代码:

1import torch
2import cv2
3import numpy as np
4from pathlib import Path
5
6# 数据集路径
7dataset_path = 'path/to/drone_emergency_rescue_dataset/'
8part = 'part1'  # 可以选择 'part2'
9subset = 'test'  # 可以选择 'train' 或 'val'
10
11# 加载预训练模型
12weights_path = 'path/to/pretrained/yolov8_weights.pt'  # 替换成实际的预训练模型路径
13model = torch.hub.load('ultralytics/yolov5', 'custom', path=weights_path, force_reload=True)
14
15# 主函数
16if __name__ == "__main__":
17    images_dir = os.path.join(dataset_path, part, 'images', subset)
18    
19    # 获取图像列表
20    image_files = [f for f in os.listdir(images_dir) if f.endswith('.jpg')]
21    
22    # 随机选择一张图像
23    selected_image = np.random.choice(image_files)
24    image_path = os.path.join(images_dir, selected_image)
25    
26    # 使用预训练模型进行推理
27    results = model(image_path)
28    results.show()  # 显示结果
29    results.save()  # 保存结果图像

这段代码展示了如何使用YOLO预训练模型进行推理,并显示和保存推理结果。您可以根据实际需求进一步扩展和修改这段代码,以适应您的具体应用场景。


http://www.ppmy.cn/news/1528272.html

相关文章

Pandas中df常用方法介绍

目录 常用方法df.columnsdf.indexdf.valuesdf.Tdf.sort_index()df.sort_values() 案例 常用方法 df.columns df.columns 是 Pandas 中 DataFrame 对象的一个属性,用于获取 DataFrame 中的列标签(列名)。 基本语法如下: df.col…

卡牌抽卡机小程序:市场发展下的创新

今年以来,卡牌成为了行业中的黑马,在国内迅速流行,成为消费者的心头好。小小的卡牌创下了百亿的市场规模,发展前景巨大! 不过,随着卡牌市场的不断增长,市场发展也需要进行创新。线上抽卡机小程…

线阵相机的参数选型计算

一、要求 如果测量物体的宽度为1800mm,精度1毫米、运动速度25000mm/s。 1. 相机分辨率的确定 幅宽与像素的关系:客户要求的幅宽是1800毫米,精度是1毫米。理论上,如果每个像素对应1毫米,那么相机至少需要1800个像素来覆盖整个幅…

FGT-KVM虚拟机安装步骤

根据FortiOS release note要求,KVM要求的安装条件CentOS 6.4 (qemu 0.12.1) or later。 1.安装CentOS 6.5 CentOS-6.5-x86_64-LiveDVD.iso 下载种子: 2.是否支持虚拟机 egrep ‘(vmx|svm)’ --coloralways /proc/cpuinfo [rootlocalhost ~]# egrep ‘(vmx|svm)’…

rabbitmq容器化部署

目录 需求 容器化部署rabbitmq服务 部署服务 验证及访问服务 rabbitmq配置LTS 服务验证 rabbitmq配置集群 部署集群 1、创建一个存放配置文件的目录 2、创建配置文件 3、部署各个节点 集群验证 需求 容器化部署rabbitmq服务 基础版本 系统ubuntu 24,docke…

2025秋招LLM大模型多模态面试题(六)-KV缓存

目录 为什么Transformer推理需要KV缓存?KV缓存的具体实现 没有缓存的情况下使用缓存的情况下KV缓存在解码中的阶段划分 Prefil阶段Decoding阶段KV缓存的存储类型及显存占用计算KV缓存的局限与优化策略 超长文本与复杂模型场景下的瓶颈量化方案的应用量化方案的副作用与优化方法…

java线程工具-CountDownLatch和CyclicBarrier使用详解

文章目录 CountDownLatch概念主要方法用途示例代码CyclicBarrier概念主要方法用途示例代码比较CountDownLatch 和 CyclicBarrier 都是 Java 并发包 java.util.concurrent 中提供的同步辅助类,用于协调多线程程序中的线程执行顺序。尽管它们有相似之处,但各自的设计目的和使…

搜索引擎onesearch3实现解释和升级到Elasticsearch v8系列(三)-文档

文档 文档服务负责写入,包括批量;id获取文档;nested写入 写入文档 写入文档主要是构建IndexRequest,索引请求 Elasticsearch v8构建文档索引请求简单很多,可以直接接受Map数据 批量写入文档 批量操作可以融合增删改…