基于YOLOv11训练无人机视角Visdrone2019数据集

【闲鱼服务】

基于YOLOv11训练无人机视角Visdrone2019数据集

  • Visdrone2019数据集介绍
    • 数据集格式
  • 数据预处理
  • yolov11模型训练
    • 数据分布情况可视化
    • 训练结果

Visdrone2019数据集介绍

VisDrone 数据集 是由中国天津大学机器学习和数据挖掘实验室 AISKYEYE 团队创建的大规模基准。它包含用于与无人机图像和视频分析相关的各种计算机视觉任务的,经过仔细标注的真实数据。

VisDrone 由 288 个视频片段(包含 261,908 帧)和 10,209 张静态图像组成,这些数据由各种无人机载摄像头拍摄。该数据集涵盖了广泛的方面,包括地点(中国 14 个不同的城市)、环境(城市和乡村)、物体(行人、车辆、自行车等)和密度(稀疏和拥挤的场景)。该数据集是在不同的场景以及天气和光照条件下,使用各种无人机平台收集的。这些帧通过手动方式进行了标注,包含超过 260 万个目标的边界框,例如行人、汽车、自行车和三轮车。此外,还提供了场景可见性、物体类别和遮挡等属性,以更好地利用数据。
在这里插入图片描述

类别:
  0:Pedestrian(行人)
  1:People(人群)
  2:Bicycle(自行车)
  3:Car(汽车)
  4:Van(厢式货车)
  5:Truck(卡车)
  6:Tricycle(三轮车)
  7:Awning-tricycle(带棚三轮车)
  8:Bus(公交车)
  9:Motor(摩托车)

数据集格式

在这里插入图片描述

  1. 边界框左上角的x坐标
  2. 边界框左上角的y坐标
  3. 边界框的宽度
  4. 边界框的高度
  5. GROUNDTRUTH文件中的分数设置为1或0。1表示在计算中考虑边界框,而0表示将忽略边界框。
  6. 类别:忽略区域(0)、行人(1)、人(2)、自行车(3)、汽车(4)、面包车(5)、卡车(6)、三轮车(7)、雨篷三轮车(8)、公共汽车(9)、摩托车(10),其他(11)。
  7. GROUNDTRUTH文件中的得分表示对象部分出现在帧外的程度(即,无截断=0(截断比率0%),部分截断=1(截断比率1%°´50%))。
  8. GROUNDTRUTH文件中的分数表示被遮挡的对象的分数(即,无遮挡=0(遮挡比率0%),部分遮挡=1(遮挡比率1%°´50%),重度遮挡=2(遮挡率50%~100%))。
    在这里插入图片描述

数据预处理

将数据处理成yolo的格式
yolo格式如下:
在这里插入图片描述
visdrone2yolo.py

import os
from pathlib import Path
import argparsedef visdrone2yolo(dir):from PIL import Imagefrom tqdm import tqdmdef convert_box(size, box):# Convert VisDrone box to YOLO xywh boxdw = 1. / size[0]dh = 1. / size[1]return (box[0] + box[2] / 2) * dw, (box[1] + box[3] / 2) * dh, box[2] * dw, box[3] * dh(dir / 'labels').mkdir(parents=True, exist_ok=True)  # make labels directorypbar = tqdm((dir / 'annotations').glob('*.txt'), desc=f'Converting {dir}')for f in pbar:img_size = Image.open((dir / 'images' / f.name).with_suffix('.jpg')).sizelines = []with open(f, 'r') as file:  # read annotation.txtfor row in [x.split(',') for x in file.read().strip().splitlines()]:if row[4] == '0':  # VisDrone 'ignored regions' class 0continuecls = int(row[5]) - 1  # 类别号-1box = convert_box(img_size, tuple(map(int, row[:4])))lines.append(f"{cls} {' '.join(f'{x:.6f}' for x in box)}\n")with open(str(f).replace(os.sep + 'annotations' + os.sep, os.sep + 'labels' + os.sep), 'w') as fl:fl.writelines(lines)  # write label.txtif __name__ == '__main__':# Create an argument parser to handle command-line argumentsparser = argparse.ArgumentParser()parser.add_argument('--dir_path', type=str, default=r'E:\datasets\visdrone2019', help='visdrone数据集路径')args = parser.parse_args()dir = Path(args.dir_path)# Convertfor d in 'VisDrone2019-DET-train', 'VisDrone2019-DET-val', 'VisDrone2019-DET-test-dev':visdrone2yolo(dir / d)  # convert VisDrone annotations to YOLO labels

yolov11模型训练

VisDrone.yaml

# Ultralytics YOLO 🚀, AGPL-3.0 license
# Crack-seg dataset by Ultralytics
# Documentation: https://docs.ultralytics.com/datasets/segment/crack-seg/
# Example usage: yolo train data=crack-seg.yaml
# parent
# ├── ultralytics
# └── datasets
#     └── crack-seg  ← downloads here (91.2 MB)
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: D:/Desktop/XLWD/dataset/VisDrone2019/visdrone2019/VisDrone2019-DET-train # dataset root dir
train: images/train # train images (relative to 'path') 3717 images
val: images/val # val images (relative to 'path') 112 images
test: images/test # test images (optional)
# test: test/images # test images (relative to 'path') 200 imagesnc: 10
# Classes
names:0: pedestrian1: people2: bicycle3: car4: van5: truck6: tricycle7: awning-tricycle8: bus9: motor

训练脚本 train.py

from ultralytics import YOLO# import os
# os.environ['CUDA_LAUNCH_BLOCKING'] = '1'
# # 消除异步性,但是会带来性能的损失
if __name__ == '__main__':# Load a COCO-pretrained YOLO11n model# model = YOLO("yolo11n.pt")model = YOLO(r"D:/SSJ/Work/ultralytics-main/yolo11n.pt",task='detect') # yolo11n-seg.pt segment# model = YOLO(r"D:/SSJ/Work/ultralytics-main/yolo11n.pt",task='detect')# model = YOLO(r"D:/SSJ/Work/ultralytics-main/runs/detect/train30/weights/best.pt",task='detect')# # Train the model on the COCO8 example dataset for 100 epochsresults = model.train(data="D:/Desktop/XLWD/dataset/ultralytics-8.3.39/demo/insulatorAndPersonDetect.yaml", epochs=100, batch=64,device=0,workers = 2)# imgsz=320,

数据分布情况可视化

数据特点:数据不同类别的数量不均衡,小目标较多
在这里插入图片描述

训练结果

在这里插入图片描述
可以看出最终的结果只有car的识别准确率比较高,其余的都相对较低,当然这是由于训练不充分导致的。
在这里插入图片描述
训练过程中的loss以及准确率如上,虽然最终准确率停留在0.45左右,但是已经比其他文章里的效果要好得多了,毕竟才训练了100个epoch。

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

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

相关文章

基于Springboot 的智能化社区物业管理平台的设计与实现(代码+数据库+LW)

摘 要随着智慧社区的普及,传统的物业管理方式已经无法满足现代社区的需求。目前,很多社区管理中存在信息不畅通、工作效率低以及居民服务体验不佳等问题。为了解决这些问题,我们基于SpringBoot框架开发了一套智能化社区物业管理平台&#xf…

【深度学习新浪潮】SAM 2实战:Meta新一代视频分割模型的实时应用与Python实现

引言:从图像到视频的分割革命 上周AI领域最引人注目的计算机视觉进展,当属Meta在SAM(Segment Anything Model)基础上推出的SAM 2模型持续引发的技术热潮。尽管SAM 2最初发布于2024年,但最新更新的2.1版本(2024年9月发布)凭借其突破性的实时视频分割能力,在自动驾驶、影…

sqli-labs靶场安装与使用指导教程(3种方法:通用版、php7版、Docker版)

目录 一、SQLI-LABS靶场 1、核心特点 2、关卡难度 二、源码安装法 1、开启Web服务和数据库服务 2、靶场源码下载 (1)通用版本 (2)PHP7版本 3、部署sqli-labs靶场 (1)确认网站根目录位置 &#x…

从零开始配置前端环境及必要软件安装

从零开始配置前端环境及必要软件安装一、安装编辑器二、安装浏览器三、安装Git版本控制工具四、Node.js 和 npm 环境变量配置1. 安装 Node.js 和 npm2. 配置全局模块和缓存目录3. 设置环境变量4. 更换 npm 镜像源5. 测试配置五、hosts文件六、辅助应用markdown(笔记…

神经网络模型搭建及手写数字识别案例

代码实现:import torch print(torch.__version__) from torch import nn from torch.utils.data import DataLoader from torchvision import datasets from torchvision.transforms import ToTensor training_data datasets.MNIST(rootdata,trainTrue,downloadTru…

CRMEB标准版PC扫码登录配置教程(PHP版)

需要在开放平台创建网站应用 微信开放平台地址:https://open.weixin.qq.com/ 1、注册网站应用 2、填写信息,网站地址填写前台访问的域名就行 3、复制开放平台AppId和开放平台AppSecret 4、粘贴到后台应用配置的PC站点配置里

AmazeVault 核心功能分析,认证、安全和关键的功能

系列文章目录 Amazevault 是一款专注于本地安全的桌面密码管理器 AmazeVault 核心功能分析,认证、安全和关键的功能 AmazeVault 快速开始,打造个人专属桌面密码管理器 文章目录系列文章目录前言一、认证系统核心组件图形解锁实现图形锁控件 (PatternLoc…

Coze用户账号设置修改用户昵称-后端源码

前言 本文将深入分析Coze Studio项目的用户昵称修改功能后端实现,通过源码解读来理解整个昵称更新流程的架构设计和技术实现。用户昵称修改作为用户个人信息管理系统的重要组成部分,主要负责处理用户显示名称的更新和管理。 昵称修改功能相对简单但不失重…

基于WebTransport(底层QUIC)实现视频传输(HTML+JavaScript)

工作目录和基本操作见博客《基于HTTP3的WebTransport实践》,在此仅展示服务器端和客户端代码。 服务器端 import { readFile } from "node:fs/promises"; import { createServer } from "node:https"; import {Server} from "socket.io&qu…

Git 怎么仓库迁移?error: remote origin already exists.怎么解决

1. 确认本地已经有完整的 旧 仓库你本地应该有旧的项目,并且能看到 .git 文件夹。如果没有,可以先从旧仓库克隆下来:git clone 旧仓库git地址 cd 旧代码目录比如:git clone https://gitee.com/star-information/esflow-pro-api.gi…

【语法】【C+V】本身常用图表类型用法快查【CSDN不支持,VSCODE可用】

文章目录Mermaid 简介Mermaid 由三部分组成Mermaid 的使用方法复杂图表结构的技巧饼图简介饼图语法饼图示例雷达图简介雷达图语法雷达图语法细节标题轴曲线选项雷达图示例时间线简介时间线语法时间线示例树形图简介树形图语法树形图示例数据包图简介数据包图语法1:数…

Anaconda下载安装教程(附Anaconda安装包)

Anaconda下载安装教程(附Anaconda安装包)获取:python开发工具包丨夸克网盘-资源免费下载 有位小粉丝刚刚入门python,问我怎么安装Anaconda,于是我帮他找了一个详细的Anaconda安装教程和安装包。 Anaconda其实是一个p…

那我现在有3个输入 9层神经元 每层神经元数为 3 9 3 5 6 2 3 9 8 请给出我所有的权重矩阵

问题1 那我现在有3个输入 9层神经元 每层神经元数为 3 9 3 5 6 2 3 9 8 请给出我所有的权重矩阵 明白,我们来系统地列出你的 9层全连接网络 的权重矩阵。1️⃣ 网络结构 输入层:3 个神经元隐藏层/输出层:9 层神经元数分别为 [3,9,3,5,6,2,3,9…

广东省省考备考(第八十七天8.26)——判断推理(听课后强化训练)

判断推理:定义判断 错题解析 第一步:找出定义关键词。 “农村中各项经济活动及由此产生的经济关系”、“同农业有直接或间接的关系”。 第二步:逐一分析选项。 A项:该项指出具体的夏粮产量和增量,其中生产粮食属于种植…

读取 STM32H5 Data Flash 触发 NMI 的问题解析 LAT1544

关键字:STM32H5, data flash, high-cycle data, NMI问题描述客户反馈,使用 STM32H563 的 data flash(high-cycle data flash),在还没有写入任何数据之前去读取 data flash, 会触发 hardfault 异常。1. 问题分析我们尝试在 NUCLEO-…

学云计算还是网络,选哪个好?

云计算工程师和网络工程师,都是IT界香饽饽,但方向差很大!选错路后悔3年!今天极限二选一,帮你彻底搞懂工作职责 网络工程师:网络世界的交警工程师!主要管物理网络和逻辑连接。负责设计、搭建、维…

Matlab使用——开发上位机APP,通过串口显示来自单片机的电压电流曲线,实现光伏I-V特性监测的设计

预览此处的测试数据的采集频率和曲线变化是通过更换电阻来测试的,所以电压电流曲线显示并不是很平滑,图中可以看到每一个采集点的数值。这个设计是福州大学第三十期SRTP的一个校级的项目,打算通过分布式的在线扫描电路低成本的单片机&#xf…

云原生 JVM 必杀技:3 招让容器性能飞跃 90%

最近佳作推荐: Java 大厂面试题 – JVM 与分布式系统的深度融合:实现技术突破(34)(New) Java 大厂面试题 – JVM 新特性深度解读:紧跟技术前沿(33)(New&#…

你真的了解操作系统吗?

文章目录操作系统是什么?操作系统核心功能为什么需要操作系统(目的)?操作系统的下层是什么?上层又是什么?如何理解“管理”?——“先描述,再组织”操作系统是什么? 任何…

从0到1详解requests接口自动化测试

前言 接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。 1、理解什么是接口 接口一般来说有两种…