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

零基础教程:使用yolov8训练无人机VisDrone数据集

1.准备数据集

1.先给出VisDrone2019数据集的下载地址:

链接:https://pan.baidu.com/s/1e2Q0NgNT-H-Acb2H0Cx8sg 
提取码:31dl

2.将数据集VisDrone放在datasets目录下面

2.数据集转换程序

1.在根目录下面新建一个.py文件,取名叫做visdrone2yolov

2.复制以下代码到这个visdrone2yolov.py文件里面

import os
from pathlib import Pathdef 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.txt
dir = Path('datasets/VisDrone')  # datasets文件夹下Visdrone2019文件夹目录
# Convert
for d in 'VisDrone2019-DET-train', 'VisDrone2019-DET-val', 'VisDrone2019-DET-test-dev':visdrone2yolo(dir / d)  # convert VisDrone annotations to YOLO labels

3.代码中可能需要修改的地方

将dir的值换成VisDrone数据集的相对路径

然后运行这个程序。

4.数据集转换完毕

转换之后的数据集结构如下:

3.准备配置(yaml)文件

1.复制VisDrone到同级文件夹,取名叫myVisDrone.yaml

2.配置文件的具体信息如下:

# Ultralytics YOLO 🚀, AGPL-3.0 license
# VisDrone2019-DET dataset https://github.com/VisDrone/VisDrone-Dataset by Tianjin University
# Example usage: yolo train data=VisDrone.yaml
# parent
# ├── ultralytics
# └── datasets
#     └── VisDrone  ← downloads here (2.3 GB)# 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: ../datasets/VisDrone  # dataset root dir
train: VisDrone2019-DET-train/images  # train images (relative to 'path')  6471 images
val: VisDrone2019-DET-val/images  # val images (relative to 'path')  548 images
test: VisDrone2019-DET-test-dev/images  # test images (optional)  1610 images# Classes
names:0: pedestrian1: people2: bicycle3: car4: van5: truck6: tricycle7: awning-tricycle8: bus9: motor

4.开始训练

1.使用yolov8s.pt进行训练

1.复制如下代码打开Terminal粘贴之后开始训练

yolo train model=yolov8s.pt data=ultralytics/cfg/datasets/myVisDrone.yaml batch=4 epochs=100 lr0=0.01

2.训练过程中遇到如下报错:OMP: Error #15: Initializing libiomp5md.dll, but found libiomp5md.dll already initialized.

可能是因为进程占用的原因,重启电脑之后解决,顺利训练。

开始训练

3.网络未改进之前使用yolov8s.pt训练的效果

尝试了一下,不使用预训练权重开始训练,发现还是会默认使用yolov8n.pt

yolov8s训练最好的效果(所有标签) :map 0.412

2.使用yolov8l.pt进行训练

yolo train model=yolov8l.pt data=ultralytics/cfg/datasets/myVisDrone.yaml batch=4 epochs=100 lr0=0.01

训练效果

http://www.lryc.cn/news/163539.html

相关文章:

  • 【Mysql专题】使用Mysql做排行榜,线上实例
  • matlab数据处理: cell table array+datetime
  • 如何应用运营商大数据精准营销?
  • AJAX学习笔记5同步与异步理解
  • 911面试
  • 【Java基础篇 | 面向对象】—— 继承
  • DELL precision上安装nvidia A4000驱动 cuda cudnn
  • 数据结构算法刷题(29)动态规划
  • W11下CMake MinGW配置OpenCV和Qt
  • 反转字符串 反转字符串 || 反转字符串 |||
  • XML解析 不允许有匹配 _[xX][mM][lL]_ 的处理指令目标
  • 【C++进阶(五)】STL大法--list模拟实现以及list和vector的对比
  • Docker安装RabbitMQ集群_亲测成功
  • 50道基础数据结构面试题
  • 【Linux基础】权限管理
  • C++初阶--类和对象(中)
  • 【MySQL系列】视图特性
  • 管理类联考——数学——汇总篇——知识点突破——应用题——最值问题
  • 学习SpringMvc第二战之【SpringMVC之综合案例】
  • 【算法日志】单调栈: 单调栈简介及其应用
  • VSCode自动分析代码的插件
  • 设计模式之外观模式
  • Web端测试和 App端测试有何不同?
  • 12.(Python数模)(相关性分析一)相关系数矩阵
  • 系统架构设计师(第二版)学习笔记----嵌入式系统及软件
  • Python列表操作指南:索引、切片、遍历与综合应用
  • 第15章_锁: MySQL并发访问相同记录以及从数据操作的类型划分锁(读锁、写锁)
  • PHP 排序函数使用方法,按照字母排序等操作
  • windows本地验证码识别工具
  • 修改图片尺寸的几个简单方法