目录
一、不同YOLOv8版本模型的性能
1、检测版本:
主要用于目标检测任务。这些模型不仅需要预测目标的类别,还需要预测目标的位置(边界框)。因此,检测版本的模型通常会有多个输出层,每个层负责不同尺度的目标检测。
(1)模型性能对比
检测模型 | 尺寸 (像素) | mAPval 50-95 | 速度 CPU ONNX (ms) | 速度 A100 TensorRT (毫秒) | params (M) | FLOPs (B) |
---|---|---|---|---|---|---|
YOLOv8n | 640 | 37.3 | 80.4 | 0.99 | 3.2 | 8.7 |
YOLOv8s | 640 | 44.9 | 128.4 | 1.20 | 11.2 | 28.6 |
YOLOv8m | 640 | 50.2 | 234.7 | 1.83 | 25.9 | 78.9 |
YOLOv8l | 640 | 52.9 | 375.2 | 2.39 | 43.7 | 165.2 |
YOLOv8x | 640 | 53.9 | 479.1 | 3.53 | 68.2 | 257.8 |
(2)性能指标说明
-
mAPval 50-95:平均精度均值(mean Average Precision),在交并比(IoU)阈值从50%到95%范围内的变化,是衡量目标检测模型性能的关键指标,数值越高表示模型性能越好。
-
速度 CPU ONNX (ms):模型在CPU上运行时,使用ONNX(Open Neural Network Exchange)格式的推理速度,单位是毫秒(ms)。
-
速度 A100 TensorRT (毫秒):模型在NVIDIA A100 GPU上运行时,使用TensorRT优化后的推理速度,单位是毫秒(ms)。TensorRT是一个深度学习推理引擎,可以优化模型以加快在NVIDIA GPU上的运行速度。
-
params (M):模型的参数总数,以百万(M)为单位。参数数量越多,通常表示模型结构越复杂,计算需求越高。
-
FLOPs (B):模型运行时所需的浮点运算次数(Floating Point Operations Per Second),通常用来衡量模型的计算复杂度。
(3)表格总结:
模型 | 特点 | 适用场景 |
---|---|---|
YOLOv8n | 参数量和FLOPs少,轻量级,推理速度快,检测准确率相对低 | 资源有限设备(嵌入式、移动端),对实时性要求极高且对准确率要求不苛刻的场景(如简单监控检测物体是否移动) |
YOLOv8s | 模型规模增大,能学习更复杂特征,准确率提升,速度较YOLOv8n有所下降但仍较高 | 需要速度和准确度较好平衡的应用(如普通安防监控检测人和车辆) |
YOLOv8m | 模型更大,准确率显著提升(小目标和复杂场景检测能力增强),速度进一步下降,计算资源需求增加 | 对准确度有更高要求且要考虑速度的场景(如工业检测产品微小缺陷) |
YOLOv8l | 参数较多,准确率较好,能处理复杂检测任务(如重叠目标检测分类),速度慢,需较强计算能力 | 对准确度要求高的应用(如高级安防监控识别目标行为身份) |
YOLOv8x | 参数量和FLOPs最多,检测准确率最高(复杂场景、小目标检测出色),速度最慢,硬件要求高 | 准确度至关重要的高端应用(如高端医学影像分析、高精度自动驾驶) |
2、分类版本(cls):
主要用于图像分类任务。这些模型通常有一个全局平均池化层和一个全连接层作为输出层,用于预测输入图像所属的类别。
(1)模型性能对比
分类模型 | 尺寸 (像素) | 准确率Top1 | 准确率Top5 | 速度CPU ONNX (ms) | 速度A100 TensorRT (ms) | 参数 (M) | FLOPs (B) at 640 |
---|---|---|---|---|---|---|---|
YOLOv8n - cls | 224 | 66.6 | 87.0 | 12.9 | 0.31 | 2.7 | 4.3 |
YOLOv8s - cls | 224 | 72.3 | 91.1 | 23.4 | 0.35 | 6.4 | 13.5 |
YOLOv8m - cls | 224 | 76.4 | 93.2 | 85.4 | 0.62 | 17.0 | 42.7 |
YOLOv8l - cls | 224 | 78.0 | 94.1 | 163.0 | 0.87 | 37.5 | 99.7 |
YOLOv8x - cls | 224 | 78.4 | 94.3 | 232.0 | 1.01 | 57.4 | 154.8 |
(2)性能指标说明:
-
版本: 各个版本的YOLOv8模型,从最小的
YOLOv8n-cls
到最大的YOLOv8x-cls
。 -
top-1准确率 (%): 模型在ImageNet验证集上的top-1准确率,表示模型预测得分最高的类别恰好是正确类别的比例。
-
top-5准确率 (%): 模型在ImageNet验证集上的top-5准确率,表示模型预测得分最高的前五个类别中包含正确类别的比例。
-
CPU ONNX 处理速度 (ms): 在CPU上使用ONNX格式时的处理速度,单位为毫秒每张图片。
-
A100 TensorRT 处理速度 (ms): 在NVIDIA A100 GPU上使用TensorRT加速时的处理速度,单位为毫秒每张图片。
-
参数量 (M): 模型中的参数总数,以百万为单位。
-
FLOPs (B) at 640: 执行一次前向传播所需的浮点运算次数,以十亿次为单位,基于640像素的输入计算。
(3)表格总结:
模型 | 特点 | 适用场景 |
---|---|---|
YOLOv8n - cls | 最轻量,处理速度最快,准确率相对较低 | 资源有限或对速度要求较高的场景 |
YOLOv8s - cls | 在保持较高速度的同时准确率有所提升 | 需要在速度和准确度之间取得平衡的应用 |
YOLOv8m - cls | 准确率显著提升,仍需考虑处理速度 | 对准确度有更高要求,但也要考虑速度的场景 |
YOLOv8l - cls | 更高的准确率,处理速度较慢 | 对准确度要求较高的应用 |
YOLOv8x - cls | 提供最高的准确率,速度最慢,需要较强硬件支持 | 准确度至关重要的高端应用 |
二、常见公开数据集
1、常见公开深度学习数据集
本次介绍21个常见的公开深度学习数据集,涵盖了目标检测、图像分割、图像分类、人脸、自动驾驶、姿态估计、目标跟踪等方向。表格中包括了数据集的类型、功能简述。
序号 | 数据集名称 | 类型 | 功能 |
---|---|---|---|
1 | ImageNet | 图像分类 | 包含1400多万张标注图像,涵盖1000个类别,用于图像分类任务 |
2 | COCO | 目标检测、图像分割 | 包含33万多张图像,覆盖80类物体,用于目标检测、分割和图像标注任务 |
3 | MNIST | 图像分类 | 包含70000张手写数字图像,用于手写数字识别任务 |
4 | CIFAR-10 / CIFAR-100 | 图像分类 | 包含60000张32x32像素的彩色图像,分为10类或100类 |
5 | Pascal VOC | 目标检测、图像分割 | 提供20类对象的标注,用于目标检测和图像分割任务 |
6 | LFW (Labeled Faces in the Wild) | 人脸识别 | 包含13000多张人脸图像,用于人脸识别任务 |
7 | Cityscapes | 自动驾驶、图像分割 | 包含50个城市街道场景的高质量图像,用于自动驾驶和图像分割任务 |
8 | KITTI | 自动驾驶 | 包含德国街道和高速公路场景的多样化图像和激光雷达数据,用于自动驾驶任务 |
9 | Open Images | 目标检测、图像分割 | 包含900多万张图像,用于目标检测和分割任务 |
10 | Medical Image Datasets | 医疗影像 | 包括多种医疗影像数据,用于疾病诊断和医学影像分析任务 |
11 | VQA (Visual Question Answering) | 图像理解 | 包含26万余张图片和相应的问题,用于视觉问答任务 |
12 | MS COCO | 目标检测、图像分割 | 包含33万多张图像,覆盖80类物体,用于目标检测和分割任务 |
13 | PASCAL 3D+ | 姿态估计 | 包含12类物体的3D姿态注解,用于物体姿态估计任务 |
14 | MPII Human Pose | 姿势估计 | 包含4万多张人体图像,标注了关节位置,用于人体姿势估计任务 |
15 | YouTube-BB | 目标跟踪 | 包含5000多个视频片段,标注了50多万个边界框,用于目标跟踪任务 |
16 | ImageNet VID | 目标跟踪 | 扩展了ImageNet数据集,包含多个视频序列,用于视频目标检测和跟踪任务 |
17 | Caltech-101 | 图像分类 | 包含101个类别的图像,用于图像分类任务 |
18 | Caltech-256 | 图像分类 | 包含256个类别的图像,用于图像分类任务 |
19 | SUN RGB-D | 自动驾驶、图像分割 | 包含10335张RGB-D图像,用于室内场景理解任务 |
20 | SIFT Flow | 光流估计 | 包含2800张图像,用于密集对应估计任务 |
21 | ETH-80 | 物体识别 | 包含8类物体的图像,用于物体识别任务 |
2、COCO128数据集
COCO128数据集是COCO数据集的一个子集,包含128张高质量的图像,广泛应用于目标检测、图像分割和实例识别等任务,COCO128数据集虽然规模不大,却具备COCO数据集的基本结构和注释格式。
三、环境配置
前提:Anaconda和pycharm已安装,如果不知道怎么安装请看我下面过往文章链接的安装步骤。(Anaconda和pycharm已安装,可直接略过)
1、新建一个pytorch测试环境
(1)创建虚拟环境
-
(base环境下)创建名字为yolov8new,python版本为3.8的虚拟环境
conda create -n yolov8new python=3.8
-
激活pytorch的环境
conda activate yolov8new
(2)官网下载安装pytorch
Previous PyTorch Versions | PyTorchhttps://pytorch.org/get-started/previous-versions/
-
输入nvidia-smi查看自己电脑的CUDA版本(win+r,输入cmd点击“确定”或回车)
-
如下图我的CUDA是11.7版本的,如果没有显示就选择CPU版本的。
-
在pytorch网页安装对应的PyTorch版本,可选择conda方式或者pip方式下载:
-
如下是CUDA11.7,conda方式的pytorch下载安装命令:
conda install pytorch==2.0.1 torchvision==0.15.2 torchaudio==2.0.2 pytorch-cuda=11.7 -c pytorch -c nvidia
-
验证是否pytorch安装成功,验证命令如下,显示版本号即表示安装成功:
python import torch
# 查看torch版本
print(torch.__version__)
(3)安装常用库:
-
输入安装所需的各种库命令:
# 安装matplotlib
pip install matplotlib==3.7.3 -i https://pypi.doubanio.com/simple/
# 安装sklearn
pip install scikit-learn==0.24.2 -i https://pypi.doubanio.com/simple/
# 安装pytz
pip install pytz -i https://mirrors.aliyun.com/pypi/simple/
# 安装pandas
pip install pandas==1.1.5 -i https://pypi.doubanio.com/simple/
# 安装opencv
pip install opencv_python==4.4.0.40 -i https://pypi.doubanio.com/simple/
# 安装imageio
pip install imageio -i https://pypi.org/simple/
#安装ultralytics (也是ultralytics的pip下载方式)
pip install ultralytics -i https://pypi.org/simple/
-
进入python验证是否下载成功,验证命令如下:
import numpy as np
import pandas as pd
import sklearn
from sklearn.linear_model import LogisticRegression
from sklearn import metrics
import cv2
import matplotlib
import ultralytics
#最后输入exit()退出
2、pycharm配置pytorch
(1)选择python解释器
-
打开【设置】》【项目】》【Python解释器】》【添加解释器】》【添加本地解释器】。
-
或者点击右下角的解释器进行更改:
-
添加刚刚创建的python解释器。
(2)新建一个python环境
- 右键项目》【新建】》【Python文件】》输入名称。
四、YOLOv8 (ultralytics)的安装
1、下载YOLOv8 (ultralytics)
GitHub网址:
教程,预测,训练,验证,coco128,模型,YOLOv8,图像,数据 From: https://blog.csdn.net/qq_62844901/article/details/144106828