欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 社会 > YOLOv8_ ByteTrack目标跟踪、模型部署

YOLOv8_ ByteTrack目标跟踪、模型部署

2024/10/26 18:13:23 来源:https://blog.csdn.net/mhl1107/article/details/143138870  浏览:    关键词:YOLOv8_ ByteTrack目标跟踪、模型部署
  • YOLOv8目前支持BoT-SORT和ByteTrack两种多目标跟踪算法,默认的目标跟踪算法为BoT-SORT
    如果要使用ByteTrack跟踪算法,可以添加命令行参数tracker=bytetrack.yaml

一、 VisDrone2019数据集

VisDrone:无人机目标检测和追踪基准数据集。(Detection and Tracking Meet Drones Challenge, IEEE Transactions on Pattern Analysis and Machine Intelligence, 2021)
链接: 数据代码

  • 下载yolov8代码
git clone https://github.com/ultralytics/ultralytics.git
pip install ultralytics

二、VisDrone2019数据集处理

需要将VisDrone2019数据集转换为yolo格式数据,labels的生成
在服务器上进入到zip文件所在的文件夹中使用unzip命令解压zip文件。
如:unzip VisDrone2019-DET-train.zip
在这里插入图片描述

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')  # 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

在这里插入图片描述
正确执行代码后,会在’VisDrone2019-DET-train’, ‘VisDrone2019-DET-val’, 'VisDrone2019-DET-test-dev三个文件夹内新生成labels文件夹,用以存放将VisDrone数据集处理成YoloV8格式后的数据。

三、修改数据配置文件ultralytics/cfg/datasets/VisDrone.yaml

在这里插入图片描述
修改path参数

四、yolov8训练

yolo task=detect mode=train model=yolov8s.pt data=cfg/datasets/VisDrone.yaml batch=16 epochs=100 imgsz=640 workers=0 device=0

验证:

yolo task=detect mode=val model=runs/detect/train/weights/best.pt data=cfg/datasets/VisDrone.yaml device=0

五、模型部署

yolo export model=yolov8s.pt format=onnx  # export official model
yolo export model=path/to/best.pt format=onnx  # export custom trained model

预测:

yolo predict task=detect model=yolov8s.onnx source=0  show=True

跟踪:

yolo mode=track model=yolov8s.onnx source=0  show=True

在这里插入图片描述
如果要用TensorRT部署YOLOv8
导出tensorrt

yolo export model=yolov8s.pt format=engine

推理:

yolo task=detect mode=predict model=yolov8s.engineyolo track model=yolov8s.engine source=test_traffic.avi show=True save=True tracker=bytetrack.yaml

需要修改检测类别数量:在 yaml文件里yolo detect train data=coco128.yaml model=yolov8n.yaml pretrained=yolov8n.pt epochs=100 imgsz=640

学习交流访:
在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com