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

news/2024/7/10 1:55:45 标签: 目标检测, YOLO, 人工智能

YOLOv8_0">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,模型性能比前代有所提升。整体上统一了多任务的接口,方便应用和部署。不过对于研究者来说,无疑让网络复杂的黑盒模式进一步加深,不利于二次开发。


http://www.niftyadmin.cn/n/5025237.html

相关文章

嵌入式学习笔记(29)轮询方式处理按键

X210开发板的按键接法 (1)查原理图,找到按键对应的GPIO:SW5:GPH0_2 SW6:GPH0_3 SW78910:GPH2_0123 (2)原理图上可看出:按下时是低电平,弹起时是高电平。 按键对应的GPIO模式设置 …

清华智能体宇宙火了;主流大语言模型的技术原理细节

🦉 AI新闻 🚀 清华智能体宇宙火了 摘要:清华大学联合北邮、微信团队推出了AgentVerse,这是一个可以轻松模拟多智能体宇宙的环境。它专为大语言模型开发,智能体可以利用LLM能力完成任务。AgentVerse提供了几个示例环境…

@ConditionalOnProperty注解和@ConfigurationProperties注解

ConditionalOnProperty注解 ConditionalOnProperty注解的作用是根据配置文件中的属性值来决定是否启用某个组件或功能。可以用于根据配置文件中的属性值来决定是否启用某个Bean或配置。 示例代码 Configuration ConditionalOnProperty(prefix "myconfig", value …

Dokcer搭建Apache Guacamole堡垒机

一、什么是堡垒机 “堡垒机” 这个词通常指的是 “堡垒机器”(Bastion Host)的简称。堡垒机是一种计算机系统或网络设备,用于增强计算机网络的安全性。它在网络中充当一个重要的安全关口,通过限制对内部网络的访问,帮…

vue的由来、vue教程和M-V-VM架构思想、vue的使用、nodejs

vue vue的由来 vue教程和M-V-VM架构思想 vue的使用 nodejs vue的由来 # 1 HTML(5)、CSS(3)、JavaScript(ES5、ES6、ES11):编写一个个的页面 -> 给后端(PHP、Python、Go、Java) -> 后端嵌入模板语法 -> 后端渲染完数据 -> 返回数据给前端 -> 在浏览…

LeetCode-746-使用最小花费爬楼梯-动态规划

题目描述: 给你一个整数数组 cost ,其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用。一旦你支付此费用,即可选择向上爬一个或者两个台阶。 你可以选择从下标为 0 或下标为 1 的台阶开始爬楼梯。 请你计算并返回达到楼梯顶部的最低花费…

【算法与数据结构】701、LeetCode二叉搜索树中的插入操作

文章目录 一、题目二、解法三、完整代码 所有的LeetCode题解索引,可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、解法 思路分析:这道题关键在于分析插入值的位置,不论插入的值是什么(插入值和原有树中的键值都…

postman连接websocket, 建立连接、聊天测试(v8.5.1)

1. postman v8.5版本 以上支持 websocket。 2. 选择websocket请求模块File - New... 3. WebSocketServer.java import org.springframework.stereotype.Component; import javax.websocket.*; import javax.websocket.server.PathParam; import javax.websocket.server.Server…