【目标检测】YOLOv8:快速上手指南

YOLOv8概述

YOLOv8是YOLOv5团队在今年新推出的一代YOLO版本,与前几代版本相比,其性能和速度差距如下图所示:

在这里插入图片描述
和其它版本不同的是,该仓库并非起名为YOLOv8,而是公司名ultralytics,因为他们想将此版本作为一个通用库,以方便调用和部署。

仓库地址:https://github.com/ultralytics/ultralytics
官方教程:https://docs.ultralytics.com/modes/train/

官方教程中提供了Python和命令行(CLI)两种调用方式,本文只对前者进行试用。

安装

由于YOLOv8是作为一款通用库的形式,因此无需想YOLOv5那样下载整个文件,而只需用pip进行安装。

pip install ultralytics

值得注意的是,该库包含了torch/torchvision两个需要区分GPU/CPU版本的依赖,安装完成之后,需要检查一下torch是否可用GPU。

检查方式:

import torch

print(torch.cuda.is_available())

模型训练

加载模型

加载模型有下面三种方式,通常用第二种即可。

# Load a model
model = YOLO('models/yolov8n.yaml')  # build a new model from YAML
model = YOLO('yolov8n.pt')  # load a pretrained model (recommended for training)
model = YOLO('yolov8n.yaml').load('yolov8n.pt')  # build from YAML and transfer weights

模型训练

下面以coco128数据集为例开始训练,训练只需一行代码:

results = model.train(data='coco128.yaml', epochs=2, imgsz=640, workers=0, batch=2)

运行之后,程序会自动下载数据集和模型,这里的train接口有很多参数选择,大多数与YOLOv5中的参数一致。

具体参数和含义可查阅文档Arguments这一节:

在这里插入图片描述

模型验证

模型验证也相当简单,只需这几行代码:

metrics = model.val(data='coco128.yaml', imgsz=640, workers=0, batch=2)  # no arguments needed, dataset and settings remembered
metrics.box.map    # map50-95
metrics.box.map50  # map50
metrics.box.map75  # map75
metrics.box.maps   # a list contains map50-95 of each category

运行效果和YOLOv5中的val.py一致,会在run/val路径下生成验证结果。

模型推理

YOLOv8目前支持的推理有:目标检测、目标检测+分割、目标检测+姿态检测、目标跟踪。
注:所有的任务都以检测为基础,官方并未单独提出其他任务的训练方式。

目标检测

# Load a model
model = YOLO('yolov8n.pt')  # load a pretrained model
# Run inference on 'bus.jpg' with arguments
model.predict('data/bus.jpg', save=True, imgsz=320, conf=0.5)

这里的图片路径可以自行修改指定。

示例效果:
在这里插入图片描述

目标检测+分割

# Load a pretrained YOLOv8n-seg Segment model
model = YOLO('yolov8n-seg.pt')

# Run inference on an image
results = model('data/bus.jpg', save=True)

接口完全一致,只是所加载的模型不一样。

效果:

在这里插入图片描述

目标检测+姿态检测

# Load a pretrained YOLOv8n-pose Pose model
model = YOLO('yolov8n-pose.pt')

# Run inference on an image
results = model('data/bus.jpg', save=True)  # results list

在这里插入图片描述

目标跟踪

# load a pretrained model
model = YOLO('yolov8n.pt')
results = model.track(source="data/malasong.mp4", save=True)

目标跟踪接口是track,需要导入视频数据,以下是视频中的某一帧。

在这里插入图片描述

总结

YOLOv8在YOLOv5的基础上,加入了Anthor-free等众多tricks,模型性能比前代有所提升。整体上统一了多任务的接口,方便应用和部署。不过对于研究者来说,无疑让网络复杂的黑盒模式进一步加深,不利于二次开发。

猜你喜欢

转载自blog.csdn.net/qq1198768105/article/details/132796822