当前位置: 首页 > news >正文

无人机视角下的车辆数据集

车辆数据集 无人机视角下的车辆数据集。数据集为无人机俯拍的真实场景下的车辆机动车数据集。数据集已经标注好,yolo格式,txt标签。数据集已经划分好训练集(20970张图片)验证集(5242张图片)测试集(1442张图片)含类别标签文件,数据集大小3.5G左右,共分为5个类别:小汽车、面包车、公共汽车、货车、卡车。图片均为实拍,包含白天,黑夜等多种场景下的实拍图片,不含任何数据增强成分。数据集标注准确,商用级标注精度,可商用,yolo8m实测map50为85.2%。

无人机视角下的车辆数据集 (Drone View Vehicle Dataset, DVVD)

数据集描述

DVVD是一个专为无人机俯拍场景设计的车辆检测数据集,旨在帮助研究人员和开发者训练和评估在高空视角下识别不同类型的机动车(如小汽车、面包车、公共汽车、货车和卡车)的目标检测模型。该数据集包含大量高质量的真实场景图像,涵盖了白天和黑夜等多种光照条件下的实拍图片,并且已经使用YOLO格式进行了准确标注。数据集已预先划分为训练集、验证集和测试集,便于直接使用。

数据规模

  • 总样本数量:27654张图像
    • 训练集:20970张
    • 验证集:5242张
    • 测试集:1442张
  • 类别数量:5个不同类别的车辆
  • 数据集大小:约3.5G
  • 标签格式:YOLO格式 (TXT)

图像特性

  • 多样化场景:数据集中包括城市道路、乡村道路、高速公路等多种环境下的图像。
  • 多变环境:图像拍摄于不同的时间点(白天、黄昏、夜间),保证了算法对光照变化的适应能力。
  • 高质量图像:所有图像均为高分辨率,确保细节清晰,有助于提高模型的识别精度。
  • 真实场景:图像均为实际拍摄,未经过任何数据增强处理,确保了数据的真实性和多样性。
  • 商用级标注精度:数据集的标注质量非常高,适合商业应用。

类别列表

  1. 小汽车 (Car)
  2. 面包车 (Van)
  3. 公共汽车 (Bus)
  4. 货车 (Truck)
  5. 卡车 (Lorry)

应用场景

  • 智能交通系统:监控道路交通流量,辅助交通管理。
  • 自动驾驶:增强自动驾驶车辆在高空视角下的感知能力。
  • 城市规划:支持城市规划和基础设施建设的决策。
  • 安全监控:提高视频监控系统在高空视角下的目标检测性能。
  • 物流管理:优化物流路线规划和车辆调度。

数据集结构

一个典型的文件夹结构可能如下所示:

 
1drone_view_vehicle_dataset/
2├── images/
3│   ├── train/
4│   │   ├── img_00001.jpg
5│   │   ├── img_00002.jpg
6│   │   └── ...
7│   ├── val/
8│   │   ├── img_00001.jpg
9│   │   ├── img_00002.jpg
10│   │   └── ...
11│   ├── test/
12│   │   ├── img_00001.jpg
13│   │   ├── img_00002.jpg
14│   │   └── ...
15├── labels/
16│   ├── train/
17│   │   ├── img_00001.txt
18│   │   ├── img_00002.txt
19│   │   └── ...
20│   ├── val/
21│   │   ├── img_00001.txt
22│   │   ├── img_00002.txt
23│   │   └── ...
24│   ├── test/
25│   │   ├── img_00001.txt
26│   │   ├── img_00002.txt
27│   │   └── ...
28├── class_names.txt  # 类别名称文件
29├── train.txt  # 训练集图像路径列表
30├── val.txt  # 验证集图像路径列表
31└── test.txt  # 测试集图像路径列表

标签格式说明

  • YOLO格式
    • 文件名与对应的图像文件名相同,但扩展名为.txt
    • 每行代表一个目标,格式为class_id x_center y_center width height,其中所有的值都是相对于图像尺寸的比例形式(归一化到[0, 1]之间)。

示例

假设一张图片img_00001.jpg的分辨率为800x600像素,其对应的YOLO格式标签文件img_00001.txt内容如下:

 
10 0.5 0.3 0.2 0.1  # Car
21 0.3 0.4 0.1 0.1  # Van
32 0.7 0.6 0.2 0.2  # Bus
43 0.2 0.8 0.3 0.3  # Truck
54 0.9 0.7 0.1 0.1  # Lorry

数据准备

为了使用此数据集来训练YOLO或其他基于YOLO格式的目标检测模型,您需要执行以下步骤:

  1. 确认数据集划分:确保训练集、验证集和测试集已经正确划分。
  2. 加载数据:根据所选的框架(如YOLOv5/v7或YOLOv8)加载数据。
  3. 设置配置文件:根据所选的框架设置相应的配置文件,指定类别数和其他相关参数。
  4. 开始训练过程:启动训练过程并监控模型的性能。

工具和脚本

您可以利用Python库如torchvisionPyTorch来加载和处理数据。以下是一些常用脚本的示例代码,包括数据加载、模型训练和评估。

脚本1: 数据加载
 
1import os
2from torchvision import datasets, transforms
3from torch.utils.data import DataLoader
4
5def load_data(data_dir, batch_size=32):
6    transform = transforms.Compose([
7        transforms.Resize((640, 640)),  # 根据实际情况调整输入尺寸
8        transforms.ToTensor(),
9        transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])
10    ])
11    
12    train_dataset = datasets.ImageFolder(os.path.join(data_dir, 'train'), transform=transform)
13    val_dataset = datasets.ImageFolder(os.path.join(data_dir, 'val'), transform=transform)
14    test_dataset = datasets.ImageFolder(os.path.join(data_dir, 'test'), transform=transform)
15    
16    train_loader = DataLoader(train_dataset, batch_size=batch_size, shuffle=True, num_workers=4)
17    val_loader = DataLoader(val_dataset, batch_size=batch_size, shuffle=False, num_workers=4)
18    test_loader = DataLoader(test_dataset, batch_size=batch_size, shuffle=False, num_workers=4)
19    
20    return train_loader, val_loader, test_loader
21
22# 使用示例
23data_dir = 'path/to/drone_view_vehicle_dataset'
24train_loader, val_loader, test_loader = load_data(data_dir)
脚本2: 模型训练
 

python

深色版本

1import torch
2import torch.nn as nn
3import torch.optim as optim
4from ultralytics import YOLO
5
6def train_model(model, train_loader, val_loader, num_epochs=10, learning_rate=0.001):
7    device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
8    model.to(device)
9    
10    criterion = nn.CrossEntropyLoss()
11    optimizer = optim.Adam(model.parameters(), lr=learning_rate)
12    
13    for epoch in range(num_epochs):
14        model.train()
15        running_loss = 0.0
16        for inputs, labels in train_loader:
17            inputs, labels = inputs.to(device), labels.to(device)
18            
19            optimizer.zero_grad()
20            outputs = model(inputs)
21            loss = criterion(outputs, labels)
22            loss.backward()
23            optimizer.step()
24            
25            running_loss += loss.item()
26        
27        print(f'Epoch {epoch+1}/{num_epochs}, Loss: {running_loss/len(train_loader)}')
28        
29        # 验证
30        model.eval()
31        correct = 0
32        total = 0
33        with torch.no_grad():
34            for inputs, labels in val_loader:
35                inputs, labels = inputs.to(device), labels.to(device)
36                outputs = model(inputs)
37                _, predicted = torch.max(outputs.data, 1)
38                total += labels.size(0)
39                correct += (predicted == labels).sum().item()
40        
41        print(f'Validation Accuracy: {100 * correct / total:.2f}%')
42
43# 使用示例
44model = YOLO('yolov8m.yaml')  # 加载YOLOv8m模型
45train_loader, val_loader, _ = load_data('path/to/drone_view_vehicle_dataset')
46train_model(model, train_loader, val_loader)
脚本3: 模型评估
 

python

深色版本

1import torch
2from torch.utils.data import DataLoader
3
4def evaluate_model(model, test_loader):
5    device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
6    model.to(device)
7    model.eval()
8    
9    correct = 0
10    total = 0
11    with torch.no_grad():
12        for inputs, labels in test_loader:
13            inputs, labels = inputs.to(device), labels.to(device)
14            outputs = model(inputs)
15            _, predicted = torch.max(outputs.data, 1)
16            total += labels.size(0)
17            correct += (predicted == labels).sum().item()
18    
19    print(f'Test Accuracy: {100 * correct / total:.2f}%')
20
21# 使用示例
22test_loader = load_data('path/to/drone_view_vehicle_dataset')[2]
23evaluate_model(model, test_loader)

项目介绍

项目名称

基于YOLOv8的无人机视角车辆检测系统

项目描述

该项目旨在开发一个基于YOLOv8的无人机视角车辆检测系统,能够准确地识别和分类不同类型的车辆。通过使用上述DVVD数据集,我们将训练一个高效的卷积神经网络(CNN)模型,实现对五种不同类型车辆的检测任务。项目的主要目标是提高车辆检测的准确性和鲁棒性,同时提供易于部署和使用的接口,方便集成到现有的智能交通系统和自动驾驶平台中。

项目目标

  • 高准确性:在测试集上达到较高的平均精度均值 (mAP)。
  • 鲁棒性:在不同光照条件和环境背景下保持良好的检测效果。
  • 易用性:提供易于部署和使用的接口,方便集成到现有的系统中。
  • 可扩展性:支持未来添加新的车辆类别。

项目结构

 

深色版本

1drone_view_vehicle_detection_project/
2├── data/
3│   ├── drone_view_vehicle_dataset/
4│   │   ├── images/
5│   │   │   ├── train/
6│   │   │   ├── val/
7│   │   │   ├── test/
8│   │   ├── labels/
9│   │   │   ├── train/
10│   │   │   ├── val/
11│   │   │   ├── test/
12│   │   ├── class_names.txt
13│   │   ├── train.txt
14│   │   ├── val.txt
15│   │   └── test.txt
16├── models/
17│   ├── yolov8m.py  # YOLOv8m模型定义
18├── trainers/
19│   ├── trainer.py  # 训练器
20├── utils/
21│   ├── utils.py  # 工具函数
22├── scripts/
23│   ├── load_data.py
24│   ├── train_model.py
25│   ├── evaluate_model.py
26├── notebooks/
27│   ├── data_exploration.ipynb  # 数据探索笔记本
28│   ├── model_training.ipynb  # 模型训练笔记本
29│   ├── model_evaluation.ipynb  # 模型评估笔记本
30├── requirements.txt  # 依赖库
31└── README.md  # 项目说明文件

项目流程

  1. 数据准备

    • 确认数据集已划分为训练集、验证集和测试集。
    • 使用load_data.py脚本加载数据。
  2. 数据探索

    • 使用data_exploration.ipynb笔记本探索数据集,了解数据分布和质量。
  3. 模型训练

    • 使用train_model.py脚本训练模型。
    • 根据需要调整超参数和模型配置。
  4. 模型评估

    • 使用evaluate_model.py脚本评估模型性能。
    • 生成可视化结果,比较不同模型的表现。
  5. 推理和应用

    • 将模型集成到实际应用中,实现车辆检测功能。
  6. 结果可视化

    • 使用可视化工具展示模型的检测结果。

改进方向

如果您已经使用上述方法对该数据集进行了训练,并且认为还有改进空间,以下是一些可能的改进方向:

  1. 数据增强

    • 引入数据增强策略,例如旋转、翻转、缩放、颜色抖动等,以提高模型的泛化能力。
    • 使用混合增强技术,如MixUp、CutMix等,以增加数据多样性。
  2. 模型优化

    • 调整模型超参数,例如学习率、批量大小、优化器等,以找到最佳配置。
    • 尝试使用不同的网络架构,例如YOLOv8的不同版本(s, m, l, x),以提高检测精度。
    • 引入注意力机制,如SENet、CBAM等,以增强模型对关键区域的关注。
  3. 损失函数

    • 尝试使用不同的损失函数,例如Focal Loss、Label Smoothing等,以改善检测效果。
    • 结合多种损失函数,例如交叉熵损失和正则化损失的组合,以平衡不同类型的任务。
  4. 后处理

    • 使用非极大值抑制(NMS)等后处理技术,以减少误检和漏检。
    • 优化边界框回归,提高定位精度。
  5. 迁移学习

    • 使用预训练模型进行微调,利用大规模数据集(如COCO)上的预训练权重,加快收敛速度并提高性能。
  6. 集成学习

    • 使用多个模型进行集成学习,通过投票或加权平均的方式提高最终的检测效果。

相关文章:

无人机视角下的车辆数据集

车辆数据集 无人机视角下的车辆数据集。数据集为无人机俯拍的真实场景下的车辆机动车数据集。数据集已经标注好,yolo格式,txt标签。数据集已经划分好训练集(20970张图片)验证集(5242张图片)测试集&#xff…...

【MYSQL】聚合查询、分组查询、联合查询

目录 聚合查询聚合函数count()sum()avg()max()和min()总结 分组查询group by 子句having 子句 联合查询笛卡尔积内连接外连接自连接子查询单行子查询多行子查询from子句使用子查询 合并查询 聚合查询 聚合查询就是针对表中行与行之间的查询。 聚合函数 count() count(列名)&a…...

使用IDA Pro动态调试Android APP

版权归作者所有,如有转发,请注明文章出处:https://cyrus-studio.github.io/blog/ 关于 android_server android_server 是 IDA Pro 在 Android 设备上运行的一个调试服务器。 通过在 Android 设备上运行android_server,IDA Pro …...

JS中的for...in和for...of有什么区别?

你好,我是沐爸,欢迎点赞、收藏、评论和关注。 在 JavaScript 中,for...in 和 for...of 是两种用于遍历数组(或其他可迭代对象)的循环语句,但它们之间存在显著的差异。 一、遍历数组 for…in const arr …...

【C++篇】引领C++模板初体验:泛型编程的力量与妙用

文章目录 C模板编程前言第一章: 初始模板与函数模版1.1 什么是泛型编程?1.1.1 为什么要有泛型编程?1.1.1 泛型编程的优势 1.2 函数模板的基础1.2.1 什么是函数模板?1.2.2 函数模板的定义格式1.2.3 示例:通用的交换函数输出示例&am…...

在react中 使用redux

1.安装redux npm install reduxjs/toolkit react-redux 2.创建切片模块化数据 在Src目录下创建store目录,创建moude目录 创建tab.js import { createSlice } from reduxjs/toolkit; const tabSlice createSlice({name: tab,initialState: {Collapse: false,},re…...

计算机毕业设计python+spark知识图谱房价预测系统 房源推荐系统 房源数据分析 房源可视化 房源大数据大屏 大数据毕业设计 机器学习

《PythonSpark知识图谱房价预测系统》开题报告 一、研究背景与意义 随着城市化进程的加速和房地产市场的不断发展,房价成为影响人们生活质量的重要因素之一。准确预测房价不仅有助于政府制定科学的房地产政策,还能为开发商提供市场参考,同时…...

Spring-bean的生命周期-终篇

阶段8:Bean属性设置阶段 属性设置阶段分为3个小的阶段 实例化后阶段Bean属性赋值前处理Bean属性赋值 实例化后阶段 这里也有spring给我们预留了扩展,就是实现InstantiationAwareBeanPostProcessor的postProcessAfterInstantiation方法,开发…...

Kotlin 枚举和 when 表达式(六)

导读大纲 1.1 表示和处理选择: Enums和when1.1.1 声明枚举类和枚举常量1.1.2 使用 when 表达式处理枚举类 1.1 表示和处理选择: Enums和when 在本节中,我们将以在 Kotlin 中声明枚举为例,介绍 when 结构 when可以被视为比 Java 中 switch 结构更强大、更常用的替代品 1.1.1 …...

数字范围按位与

优质博文:IT-BLOG-CN 题目 给你两个整数left和right,表示区间[left, right],返回此区间内所有数字 按位与 的结果(包含left、right端点)。 示例 1: 输入:left 5, right 7 输出:…...

WebRTC编译后替换libwebrtc.aar时提示找不到libjingle_peerconnection_so.so库

Loading native library: jingle_peerconnection_so 问题原因:编译的时候只编译了armeabi-v7a的版本,但是应用程序是arm64-v8a,所以无法运行 解决方法:更新编译脚本,加上arm64-v8a进行编译 ./tools_webrtc/android/bu…...

Nature Electronics |无感佩戴的纤维基电子皮肤(柔性半导体器件/柔性健康监测/电子皮肤/柔性传感/纤维器件)

英国剑桥大学Yan Yan Shery Huang课题组,在《Nature Electronics 》上发布了一篇题为“Imperceptible augmentation of living systems with organic bioelectronic fibres”的论文,第一作者为王文宇博士(Wenyu Wang),论文内容如下: 一、 摘要 利用电子技术对人类皮肤和…...

深入剖析Docker容器安全:挑战与应对策略

随着容器技术的广泛应用,Docker已成为现代应用开发和部署的核心工具。它通过轻量级虚拟化技术实现应用的隔离与封装,提高了资源利用率。然而,随着Docker的流行,其安全问题也成为关注焦点。容器化技术虽然提供了良好的资源隔离&…...

后端技术打怪升级之路

记录后端技术打怪升级之路,如下是个人总记的主要技术栈,仅供参考! 备注: 同名文章一同步发表于个人网站及微信公众号 个人网站 工藤新一的技术小窝...

Leetcode 3296. Minimum Number of Seconds to Make Mountain Height Zero

Leetcode 3296. Minimum Number of Seconds to Make Mountain Height Zero 1. 解题思路2. 代码实现 题目链接:3296. Minimum Number of Seconds to Make Mountain Height Zero 1. 解题思路 这一题的思路的话我们采用的是一个二分法的思路,找到一个最大…...

计算机毕业设计之:基于深度学习的路面检测系统(源码+部署文档+讲解)

博主介绍: ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台…...

测试面试题:接口自动化测试流程?

1、测试用例编写:根据接口的需求和功能,编写相应的测试用例。测试用例应包括正常、边界和异常等各种情况下的测试。 2、准备测试数据:根据测试用例的要求,准备相应的测试数据。数据可以通过手动输入、数据库查询、文件导入等方式进…...

Golang面试题

在Golang(也称为Go语言)工程师的面试中,可能会遇到各种技术性和概念性的问题。 一、基础部分 Golang 中 make 和 new 的区别? 共同点:两者都用于分配内存。不同点: make 专为 slice、map 和 channel 设计,返回初始化后的(非零)值。new 分配内存并返回指向该内存的指针…...

《飞机大战游戏》实训项目(Java GUI实现)(设计模式)(简易)

目录 一、最终实现后,效果如下。 (1)简单介绍本游戏项目(待完善) (2)运行效果图(具体大家自己可以试) 初始运行情况。 手动更换背景图。 通过子弹攻击敌机,累…...

计算机毕业设计 基于 Hadoop平台的岗位推荐系统 SpringBoot+Vue 前后端分离 附源码 讲解 文档

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点…...

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道(多模态 OCR → 语义检索 → 答案渲染)、两级检索(倒排 BM25 向量 HNSW)并以大语言模型兜底”的整体框架: 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后,分别用…...

内存分配函数malloc kmalloc vmalloc

内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...

跨链模式:多链互操作架构与性能扩展方案

跨链模式:多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈:模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展(H2Cross架构): 适配层&#xf…...

WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成

厌倦手动写WordPress文章?AI自动生成,效率提升10倍! 支持多语言、自动配图、定时发布,让内容创作更轻松! AI内容生成 → 不想每天写文章?AI一键生成高质量内容!多语言支持 → 跨境电商必备&am…...

三体问题详解

从物理学角度,三体问题之所以不稳定,是因为三个天体在万有引力作用下相互作用,形成一个非线性耦合系统。我们可以从牛顿经典力学出发,列出具体的运动方程,并说明为何这个系统本质上是混沌的,无法得到一般解…...

关键领域软件测试的突围之路:如何破解安全与效率的平衡难题

在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件,这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下,实现高效测试与快速迭代?这一命题正考验着…...

c++第七天 继承与派生2

这一篇文章主要内容是 派生类构造函数与析构函数 在派生类中重写基类成员 以及多继承 第一部分:派生类构造函数与析构函数 当创建一个派生类对象时,基类成员是如何初始化的? 1.当派生类对象创建的时候,基类成员的初始化顺序 …...

嵌入式常见 CPU 架构

架构类型架构厂商芯片厂商典型芯片特点与应用场景PICRISC (8/16 位)MicrochipMicrochipPIC16F877A、PIC18F4550简化指令集,单周期执行;低功耗、CIP 独立外设;用于家电、小电机控制、安防面板等嵌入式场景8051CISC (8 位)Intel(原始…...

Python网页自动化Selenium中文文档

1. 安装 1.1. 安装 Selenium Python bindings 提供了一个简单的API,让你使用Selenium WebDriver来编写功能/校验测试。 通过Selenium Python的API,你可以非常直观的使用Selenium WebDriver的所有功能。 Selenium Python bindings 使用非常简洁方便的A…...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现指南针功能

指南针功能是许多位置服务应用的基础功能之一。下面我将详细介绍如何在HarmonyOS 5中使用DevEco Studio实现指南针功能。 1. 开发环境准备 确保已安装DevEco Studio 3.1或更高版本确保项目使用的是HarmonyOS 5.0 SDK在项目的module.json5中配置必要的权限 2. 权限配置 在mo…...