测试模型1

我要开发同款
匿名用户2024年07月31日
40阅读
所属分类ai
开源地址https://modelscope.cn/models/LZA123/CESHI1

作品详情

Ultralytics YOLOv8

模型介绍

Ultralytics YOLOv8,是实时物体检测和图像分割模型的最新版本。YOLOv8 建立在深度学习和计算机视觉的前沿进步之上,在速度和准确性方面提供无与伦比的性能。其流线型设计使其适用于各种应用,并可轻松适应不同的硬件平台,从边缘设备到云 API。

YOLO(You Only Look Once)是一种流行的物体检测和图像分割模型,由华盛顿大学的Joseph Redmon和Ali Farhadi开发。YOLO于2015年推出,因其高速和高精度而迅速流行起来。

2016 年发布的 YOLOv2 通过合并批量归一化、锚框和维度聚类来改进原始模型。

2018 年推出的 YOLOv3 使用更高效的骨干网络、多个锚点和空间金字塔池进一步增强了模型的性能。

YOLOv4 于 2020 年发布,引入了 Mosaic 数据增强、新的无锚检测头和新的损失函数等创新。

YOLOv5 进一步提高了模型的性能,并添加了超参数优化、集成实验跟踪和自动导出为流行导出格式等新功能。

YOLOv6 于 2022 年由美团开源,并被用于该公司的许多自动送货机器人。

YOLOv7 在 COCO 关键点数据集上添加了额外的任务,例如姿态估计。

YOLOv8 是 Ultralytics 的 YOLO 的最新版本。作为最先进的 (SOTA,state-of-the-art) 模型,YOLOv8 建立在以前版本的成功基础上,引入了新功能和改进,以增强性能、灵活性和效率。YOLOv8 支持全方位的视觉 AI 任务,包括检测、分割、姿态估计、跟踪和分类。这种多功能性使用户能够在不同的应用程序和领域中利用 YOLOv8 的功能。

环境

镜像选择:jupyterlab:3.2.9-pytorch1.10.0-centos7.6-dtk22.04.2-py37

步骤

安装

使用Pip在一个Python>=3.8环境中安装ultralytics包,此环境还需包含PyTorch>=1.8。这也会安装所有必要的依赖项。
实验用py3.7的环境同样也可以成功

pip install -t requirement.txt 检查依赖

pip install ultralytics 安装包


由于模型都在github的原因,在训练,预测的时候需要手动下载模型地址:https://github.com/ultralytics/assets/releases/,部分模型已经下载在文档中可以直接使用

实验

from ultralytics import YOLO

# 从头开始创建一个新的YOLO模型
model = YOLO('yolov8n.yaml')

# 加载预训练的YOLO模型(推荐用于训练)
model = YOLO('yolov8n.pt')

# 使用“coco128.yaml”数据集训练模型3个周期
results = model.train(data='coco128.yaml', epochs=3)

# 评估模型在验证集上的性能
results = model.val()

# 使用模型对图片进行目标检测
results = model('https://ultralytics.com/images/bus.jpg')

# 将模型导出为ONNX格式
success = model.export(format='onnx')

训练

from ultralytics import YOLO

# 加载一个模型
model = YOLO('yolov8n.yaml')  # 从YAML建立一个新模型
model = YOLO('yolov8n.pt')  # 加载预训练模型(推荐用于训练)
model = YOLO('yolov8n.yaml').load('yolov8n.pt')  # 从YAML建立并转移权重

# 训练模型
results = model.train(data='coco128.yaml', epochs=100, imgsz=640)

验证

from ultralytics import YOLO

# 加载模型
model = YOLO('yolov8n.pt')  # 加载官方模型
model = YOLO('path/to/best.pt')  # 加载自定义模型

# 验证模型
metrics = model.val()  # 无需参数,数据集和设置记忆
metrics.box.map    # map50-95
metrics.box.map50  # map50
metrics.box.map75  # map75
metrics.box.maps   # 包含每个类别的map50-95列表

预测

from ultralytics import YOLO

# 加载模型
model = YOLO('yolov8n.pt')  # 预训练的 YOLOv8n 模型

# 在图片列表上运行批量推理
results = model(['im1.jpg', 'im2.jpg'])  # 返回 Results 对象列表

# 处理结果列表
for result in results:
    boxes = result.boxes  # 边界框输出的 Boxes 对象
    masks = result.masks  # 分割掩码输出的 Masks 对象
    keypoints = result.keypoints  # 姿态输出的 Keypoints 对象
    probs = result.probs  # 分类输出的 Probs 对象

导出

from ultralytics import YOLO

# 加载模型
model = YOLO('yolov8n.pt')  # 加载官方模型
model = YOLO('path/to/best.pt')  # 加载自定义训练的模型

# 导出模型
model.export(format='onnx')

跟踪

from ultralytics import YOLO

# 加载官方或自定义模型
model = YOLO('yolov8n.pt')  # 加载一个官方的检测模型
model = YOLO('yolov8n-seg.pt')  # 加载一个官方的分割模型
model = YOLO('yolov8n-pose.pt')  # 加载一个官方的姿态模型
model = YOLO('path/to/best.pt')  # 加载一个自定义训练的模型

# 使用模型进行追踪
results = model.track(source="https://youtu.be/LNwODJXcvt4", show=True)  # 使用默认追踪器进行追踪
results = model.track(source="https://youtu.be/LNwODJXcvt4", show=True, tracker="bytetrack.yaml")  # 使用ByteTrack追踪器进行追踪

基准测试

from ultralytics.utils.benchmarks import benchmark

# 在GPU上进行基准测试
benchmark(model='yolov8n.pt', data='coco8.yaml', imgsz=640, half=False, device=0)

任务

检测

训练:在COCO128数据集上使用图像尺寸640将YOLOv8n训练100个epochs。
from ultralytics import YOLO

# 加载模型
model = YOLO('yolov8n.yaml')  # 从YAML构建新模型
model = YOLO('yolov8n.pt')    # 加载预训练模型(推荐用于训练)
model = YOLO('yolov8n.yaml').load('yolov8n.pt')  # 从YAML构建并转移权重

# 训练模型
results = model.train(data='coco128.yaml', epochs=100, imgsz=640)

验证:在COCO128数据集上验证训练好的YOLOv8n模型准确性。无需传递参数,model 作为模型属性保留其训练的 data 和参数。
from ultralytics import YOLO

# 加载模型
model = YOLO('yolov8n.pt')  # 加载官方模型
model = YOLO('path/to/best.pt')  # 加载自定义模型

# 验证模型
metrics = model.val()  # 无需参数,数据集和设置通过模型属性记住
metrics.box.map    # map50-95
metrics.box.map50  # map50
metrics.box.map75  # map75
metrics.box.maps   # 包含每个类别map50-95的列表

预测:使用训练好的YOLOv8n模型在图像上进行预测。
from ultralytics import YOLO

# 加载模型
model = YOLO('yolov8n.pt')  # 加载官方模型
model = YOLO('path/to/best.pt')  # 加载自定义模型

# 使用模型进行预测
results = model('https://ultralytics.com/images/bus.jpg')  # 对图像进行预测

导出:将YOLOv8n模型导出为ONNX、CoreML等不同格式。
from ultralytics import YOLO

# 加载模型
model = YOLO('yolov8n.pt')  # 加载官方模型
model = YOLO('path/to/best.pt')  # 加载自定义训练模型

# 导出模型
model.export(format='onnx')

分割

训练:在COCO128-seg数据集上以640的图像尺寸训练YOLOv8n-seg模型共100个周期。
from ultralytics import YOLO

# 载入一个模型
model = YOLO('yolov8n-seg.yaml')  # 从YAML构建一个新模型
model = YOLO('yolov8n-seg.pt')    # 载入预训练模型(推荐用于训练)
model = YOLO('yolov8n-seg.yaml').load('yolov8n.pt')  # 从YAML构建并传递权重

# 训练模型
results = model.train(data='coco128-seg.yaml', epochs=100, imgsz=640)

验证:在COCO128-seg数据集上验证已训练的YOLOv8n-seg模型的准确性。不需要传递任何参数,因为model保留了其训练的data和作为模型属性的设置。
from ultralytics import YOLO

# 载入一个模型
model = YOLO('yolov8n-seg.pt')    # 载入官方模型
model = YOLO('path/to/best.pt')  # 载入自定义模型

# 验证模型
metrics = model.val()  # 不需要参数,数据集和设置被记住了
metrics.box.map    # map50-95(B)
metrics.box.map50  # map50(B)
metrics.box.map75  # map75(B)
metrics.box.maps   # 各类别map50-95(B)列表
metrics.seg.map    # map50-95(M)
metrics.seg.map50  # map50(M)
metrics.seg.map75  # map75(M)
metrics.seg.maps   # 各类别map50-95(M)列表

预测:使用已训练的YOLOv8n-seg模型在图像上进行预测。
from ultralytics import YOLO

# 载入一个模型
model = YOLO('yolov8n-seg.pt')    # 载入官方模型
model = YOLO('path/to/best.pt')  # 载入自定义模型

# 使用模型进行预测
results = model('https://ultralytics.com/images/bus.jpg')  # 对一张图像进行预测

导出:将YOLOv8n-seg模型导出为ONNX、CoreML等不同格式。
from ultralytics import YOLO

# 载入一个模型
model = YOLO('yolov8n-seg.pt')    # 载入官方模型
model = YOLO('path/to/best.pt')  # 载入自定义训练模型

# 导出模型
model.export(format='onnx')

分类

训练:在MNIST160数据集上训练YOLOv8n-cls模型100个时期,图像尺寸为64。
from ultralytics import YOLO

# 加载模型
model = YOLO('yolov8n-cls.yaml')  # 从YAML构建新模型
model = YOLO('yolov8n-cls.pt')  # 加载预训练模型(推荐用于训练)
model = YOLO('yolov8n-cls.yaml').load('yolov8n-cls.pt')  # 从YAML构建并转移权重

# 训练模型
results = model.train(data='mnist160', epochs=100, imgsz=64)

验证:在MNIST160数据集上验证训练好的YOLOv8n-cls模型准确性。不需要传递任何参数,因为model保留了它的训练data和参数作为模型属性。
from ultralytics import YOLO

# 加载模型
model = YOLO('yolov8n-cls.pt')  # 加载官方模型
model = YOLO('path/to/best.pt')  # 加载自定义模型

# 验证模型
metrics = model.val()  # 无需参数,数据集和设置已记忆
metrics.top1   # top1准确率
metrics.top5   # top5准确率

预测:使用训练过的YOLOv8n-cls模型对图像进行预测。
from ultralytics import YOLO

# 加载模型
model = YOLO('yolov8n-cls.pt')  # 加载官方模型
model = YOLO('path/to/best.pt')  # 加载自定义模型

# 使用模型进行预测
results = model('https://ultralytics.com/images/bus.jpg')  # 对图像进行预测

导出:将YOLOv8n-cls模型导出为其他格式,如ONNX、CoreML等。
from ultralytics import YOLO

# 加载模型
model = YOLO('yolov8n-cls.pt')  # 加载官方模型
model = YOLO('path/to/best.pt')  # 加载自定义训练模型

# 导出模型
model.export(format='onnx')

姿态

训练:在COCO128姿态数据集上训练一个YOLOv8姿态模型。
from ultralytics import YOLO

# 加载模型
model = YOLO('yolov8n-pose.yaml')  # 从YAML构建一个新模型
model = YOLO('yolov8n-pose.pt')  # 加载一个预训练模型(推荐用于训练)
model = YOLO('yolov8n-pose.yaml').load('yolov8n-pose.pt')  # 从YAML构建并传输权重

# 训练模型
results = model.train(data='coco8-pose.yaml', epochs=100, imgsz=640)

验证:在COCO128姿态数据集上验证训练好的YOLOv8n姿态模型的准确性。没有参数需要传递,因为模型保存了其训练数据和参数作为模型属性。
from ultralytics import YOLO

# 加载模型
model = YOLO('yolov8n-pose.pt')  # 加载官方模型
model = YOLO('path/to/best.pt')  # 加载自定义模型

# 验证模型
metrics = model.val()  # 无需参数,数据集和设置都记住了
metrics.box.map    # map50-95
metrics.box.map50  # map50
metrics.box.map75  # map75
metrics.box.maps   # 包含每个类别map50-95的列表

预测:使用训练好的YOLOv8n姿态模型在图片上运行预测。
from ultralytics import YOLO

# 加载模型
model = YOLO('yolov8n-pose.pt')  # 加载官方模型
model = YOLO('path/to/best.pt')  # 加载自定义模型

# 用模型进行预测
results = model('https://ultralytics.com/images/bus.jpg')  # 在一张图片上预测

导出:将YOLOv8n姿态模型导出为ONNX、CoreML等不同格式。
from ultralytics import YOLO

# 加载模型
model = YOLO('yolov8n-pose.pt')  # 加载官方模型
model = YOLO('path/to/best.pt')  # 加载自定义训练好的模型

# 导出模型
model.export(format='onnx')

模型

不同的模型文件:

名称 模型文件 家族
检测 yolov8n.pt 8n、8s、8m、8l、8x
分割 yolov8n-seg.pt 8n、8s、8m、8l、8x
分类 yolov8n-cls.pt 8n、8s、8m、8l、8x
姿态 yolov8n-pose.pt 8n、8s、8m、8l、8x

不同类型的文件数值:

类型 准确度 耗时长 运算次数/秒
YOLOv8n 37.3 80.4 8.7
YOLOv8s 44.9 128.4 28.6
YOLOv8m 50.2 234.7 78.9
YOLOv8l 52.9 375.2 165.2
YOLOv8x 53.9 479.1 257.8

使用jupyter文件结构

​ ├── ultralytics

​ └── runs 模型训练会自动创建的文件

​ └── detect

​ └── train 训练数据存放处

​ └── weights 文件夹里有best.pt 和 last.pt ,best.pt 是效果最好的权重,last.pt 是最后一个权重

​ └── val 验证数据存放处

​ └── val 验证数据存放处

​ └── yolov8n.pt 模型文件,根据需要存放模型文件,用来验证,训练则不需要

​ └── xxx.ipynb jupyter文件

​ └── requirement.txt 依赖包

​ └── 操作文件 选择需要检测、分割、姿态估计、跟踪和分类的文件放置在此处,YOLO 可以处理多种类型的文件

​ └── dataset COCO 数据集,模型文件夹中的所有.pt模型文件,都是针对 COCO 数据集训练生成的,coco128是示例文件 ​ ├── train/ 参考 coco128.zip 内文件格式 ​ ├── images/ ​ └── labels/ ​ └── val/ ​ ├── images/ ​ └── labels/

​ └── coco128.yaml 创建一个 data.yaml 文件:在数据集的根目录中,创建一个描述数据集的 data.yaml 文件,包括类别信息等必要内容

​ └── coco128.zip 压缩数据集

许可证

Ultralytics提供两种许可选项以适应不同的使用场景:

  • AGPL-3.0许可证:这种OSI-approved开源许可证非常适合学生和爱好者,促进了开放的合作和知识共享。更多详细信息请参阅LICENSE文件。
  • 企业许可证:这种许可证设计用于商业用途,允许将Ultralytics软件和AI模型无缝集成到商业商品和服务中,绕过AGPL-3.0的开源要求。如果您的场景涉及将我们的解决方案嵌入到商业产品中,请通过Ultralytics Licensing联系我们。

参考

https://github.com/ultralytics/ultralytics/tree/main

https://zhuanlan.zhihu.com/p/655889189

https://docs.ultralytics.com/zh/

中国共产党

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论