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

车辆数据集 无人机视角下的车辆数据集。数据集为无人机俯拍的真实场景下的车辆机动车数据集。数据集已经标注好,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. 集成学习

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Redis的主从模式、哨兵模式、集群模式

最近学习了一下这三种架构模式,这里记录一下,仅供参考 目录 一、主从架构 1、搭建方式 2、同步原理 3、优化策略: 4、总结: 二、哨兵架构 1、搭建哨兵集群 2、RedisTemplate如何使用哨兵模式 三、分片集群架构 1&#…

Python用TOPSIS熵权法重构粮食系统及期刊指标权重多属性决策MCDM研究|附数据代码...

原文链接:https://tecdat.cn/?p37724 在当今世界,粮食系统的稳定性至关重要。尽管现有的全球粮食系统在生产和分配方面表现出较高的效率,但仍存在大量人口遭受饥饿以及诸多粮食安全隐患。与此同时,在学术领域,准确评估…

Golang | Leetcode Golang题解之第430题扁平化多级双向链表

题目: 题解: func dfs(node *Node) (last *Node) {cur : nodefor cur ! nil {next : cur.Next// 如果有子节点,那么首先处理子节点if cur.Child ! nil {childLast : dfs(cur.Child)next cur.Next// 将 node 与 child 相连cur.Next cur.Chi…

汉王手写签批控件如何在谷歌、火狐、Edge等浏览器使用

背景 近日,有网友咨询汉王手写签批控件是否可以通过allWebPlugin中间件技术加载到谷歌、火狐、Edge等浏览器?为此,笔者详细了解了一下汉王手写签批控件,它是一个标准的ActiveX控件,曾经主要在IE浏览器使用,…

【计算机基础】用bat命令将Unity导出PC包转成单个exe可执行文件

Unity打包成exe可执行文件 上边连接是很久以前用过的方法,发现操作有些不一样了,并且如果按上述操作比较麻烦,所以写了个bat命令。 图1、导出的pc程序 如图1是导出的pc程序,点击exe文件可运行该程序。 添加pack_project.bat文件 …

大数据Flink(一百二十二):阿里云Flink MySQL连接器介绍

文章目录 阿里云Flink MySQL连接器介绍 一、特色功能 二、​​​​​​​语法结构 三、​​​​​​​​​​​​​​WITH参数 阿里云Flink MySQL连接器介绍 阿里云提供了MySQL连接器,其作为源表时,扮演的就是flink cdc的角色。 一、特色功能 MySQ…

操作系统 | 学习笔记 | | 王道 | 5.3 磁盘和固态硬盘

5.3 磁盘和固态硬盘 5.3.1 磁盘 磁盘结构 磁盘:磁盘的表面由一些磁性物质组成,可以用这些磁性物质来记录二进制数据 磁道:磁盘的盘面被划分成一个个磁道。这样的一个“圈”就是一个磁道 扇区:一个磁道又被划分成一个个扇区&am…

大数据毕业设计选题推荐-网络电视剧收视率分析系统-Hive-Hadoop-Spark

✨作者主页:IT毕设梦工厂✨ 个人简介:曾从事计算机专业培训教学,擅长Java、Python、PHP、.NET、Node.js、GO、微信小程序、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇…

通信工程学习:什么是NFVO网络功能虚拟化编排器

NFVO:网络功能虚拟化编排器 NFVO(Network Functions Virtualization Orchestrator),即网络功能虚拟化编排器,是网络功能虚拟化(NFV)架构中的核心组件之一。NFV是一种将传统电信网络中的网络节点…

从零开始学习Python

目录 从零开始学习Python 引言 环境搭建 安装Python解释器 选择IDE 基础语法 注释 变量和数据类型 变量命名规则 数据类型 运算符 算术运算符 比较运算符 逻辑运算符 输入和输出 控制流 条件语句 循环语句 for循环 while循环 循环控制语句 函数和模块 定…

黑马智数Day3

渲染基础Table列表 封装接口: export function getCardListAPI(params) {return request({url: /parking/card/list,params}) } 具体实现: import { getCardListAPI } from /apis/cardexport default {data() {return {// 请求参数params: {page: 1,pa…

乌克兰因安全风险首次禁用Telegram

据BleepingComputer消息,乌克兰国家网络安全协调中心 (NCCC) 以国家安全为由,已下令限制在政府机构、军事单位和关键基础设施内使用 Telegram 消息应用程序。 这一消息通过NCCC的官方 Facebook 账号对外发布,在公告中乌…

【小程序】uniapp自定义图标组件可动态更换svg颜色

组件描述 通过图标名称加载对应svg,size参数调整图标大小,color参数调整图标颜色 解决思路: 存svg获svg,对象方式正则替换svg的fill值,不改变源文件,通过base64直接加载缓存svg源文件,避免重…

上传富文本插入文件时报错:JSON parse error: Unexpected character解决办法

方式一(加密解密): 1.前端 (1)安装 crypto-js npm install crypto-js(2)util下创建asc.js asc.js import CryptoJS from crypto-js// 需要和后端一致 const KEY CryptoJS.enc.Utf8.parse(…

爬虫逆向学习(七):补环境动态生成某数四代后缀MmEwMD

声明:本篇文章内容是整理并分享在学习网上各位大佬的优秀知识后的实战与踩坑记录 前言 这篇文章主要是研究如何动态生成后缀参数MmEwMD的,它是在文章爬虫逆向学习(六):补环境过某数四代的基础上进行研究的,代码也是在它基础上增…

C++之初识STL(概念)

STL(标准模板库) STL广义分类为:容器,算法,迭代器 * **容器**和**算法**之间通过**迭代器**进行无缝连接 意义:C的**面向对象**和**泛型编程**思想,目的就是**复用性的提升** STL六大组件 1. 容…

论文阅读:Omni-Kernel Network for Image Restoration

论文地址:https://ojs.aaai.org/index.php/AAAI/article/view/27907 项目地址:https://github.com/c-yn/OKNet 发表时间:2024 图像恢复的目的是从一个退化的低质量的观测中重建一个高质量的图像。最近,Transformer模型由于其强大…

JavaScript 安装库npm报错

今天在编写JavaScript代码时,缺少了包express。 const express require(express); const app express();app.get(/, (req, res) > {res.send(Hello, world!); });app.listen(3000, () > {console.log(Server is running on port 3000); });npm install exp…

【Redis技能熟练掌握之十年内功】

Redis技能熟练掌握之十年内功 1.redis是什么?为什么要使用redis?2.redis一般应用于什么场景(四个场景)?3. Redis持久化机制是什么?各自的优缺点?一般咋么用?4. redis五个基础类型支持…

速通汇编(七)BX、SI、DI寄存器,BP寄存器,直接寻址和间接寻址

下文中出现的"idata",指的都是任意常量 一,基于BX、SI、DI等寄存器的寻址形式 在第五篇中曾介绍过DS寄存器的作用,简要复习一下->速通汇编(五)认识段地址与偏移地址,CS、IP寄存器和jmp指令&a…