前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【目标检测】YOLOv8:快速上手指南

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

作者头像
zstar
发布2023-09-13 08:19:43
1.4K0
发布2023-09-13 08:19:43
举报
文章被收录于专栏:往期博文往期博文

YOLOv8概述

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

在这里插入图片描述
在这里插入图片描述

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

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

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

安装

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

代码语言:javascript
复制
pip install ultralytics

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

检查方式:

代码语言:javascript
复制
import torch

print(torch.cuda.is_available())

模型训练

加载模型

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

代码语言:javascript
复制
# 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数据集为例开始训练,训练只需一行代码:

代码语言:javascript
复制
results = model.train(data='coco128.yaml', epochs=2, imgsz=640, workers=0, batch=2)

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

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

在这里插入图片描述
在这里插入图片描述

模型验证

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

代码语言:javascript
复制
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目前支持的推理有:目标检测、目标检测+分割、目标检测+姿态检测、目标跟踪。 注:所有的任务都以检测为基础,官方并未单独提出其他任务的训练方式。

目标检测

代码语言:javascript
复制
# 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)

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

示例效果:

在这里插入图片描述
在这里插入图片描述

目标检测+分割

代码语言:javascript
复制
# Load a pretrained YOLOv8n-seg Segment model
model = YOLO('yolov8n-seg.pt')

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

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

效果:

在这里插入图片描述
在这里插入图片描述

目标检测+姿态检测

代码语言:javascript
复制
# 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
在这里插入图片描述
在这里插入图片描述

目标跟踪

代码语言:javascript
复制
# load a pretrained model
model = YOLO('yolov8n.pt')
results = model.track(source="data/malasong.mp4", save=True)

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

在这里插入图片描述
在这里插入图片描述

总结

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • YOLOv8概述
  • 安装
  • 模型训练
    • 加载模型
      • 模型训练
      • 模型验证
      • 模型推理
        • 目标检测
          • 目标检测+分割
            • 目标检测+姿态检测
              • 目标跟踪
              • 总结
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档