Add Chinese Modes and Tasks Docs (#6274)

Signed-off-by: Glenn Jocher <glenn.jocher@ultralytics.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
This commit is contained in:
Glenn Jocher 2023-11-12 02:49:37 +01:00 committed by GitHub
parent 795b95bdcb
commit e3a538bbde
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
293 changed files with 3681 additions and 736 deletions

172
docs/zh/tasks/classify.md Normal file
View file

@ -0,0 +1,172 @@
---
comments: true
description: 学习YOLOv8分类模型进行图像分类。获取关于预训练模型列表及如何训练、验证、预测、导出模型的详细信息。
keywords: Ultralytics, YOLOv8, 图像分类, 预训练模型, YOLOv8n-cls, 训练, 验证, 预测, 模型导出
---
# 图像分类
<img width="1024" src="https://user-images.githubusercontent.com/26833433/243418606-adf35c62-2e11-405d-84c6-b84e7d013804.png" alt="图像分类示例">
图像分类是三项任务中最简单的,它涉及将整个图像分类为一组预定义类别中的一个。
图像分类器的输出是单个类别标签和一个置信度分数。当您只需要知道一幅图像属于哪个类别、而不需要知道该类别对象的位置或它们的确切形状时,图像分类非常有用。
!!! tip "提示"
YOLOv8分类模型使用`-cls`后缀,即`yolov8n-cls.pt`,并预先训练在[ImageNet](https://github.com/ultralytics/ultralytics/blob/main/ultralytics/cfg/datasets/ImageNet.yaml)上。
## [模型](https://github.com/ultralytics/ultralytics/tree/main/ultralytics/cfg/models/v8)
这里展示了预训练的YOLOv8分类模型。Detect、Segment和Pose模型是在[COCO](https://github.com/ultralytics/ultralytics/blob/main/ultralytics/cfg/datasets/coco.yaml)数据集上预训练的,而分类模型则是在[ImageNet](https://github.com/ultralytics/ultralytics/blob/main/ultralytics/cfg/datasets/ImageNet.yaml)数据集上预训练的。
[模型](https://github.com/ultralytics/ultralytics/tree/main/ultralytics/cfg/models)会在首次使用时自动从Ultralytics的最新[发布版本](https://github.com/ultralytics/assets/releases)中下载。
| 模型 | 尺寸<br><sup>(像素) | 准确率<br><sup>top1 | 准确率<br><sup>top5 | 速度<br><sup>CPU ONNX<br>(ms) | 速度<br><sup>A100 TensorRT<br>(ms) | 参数<br><sup>(M) | FLOPs<br><sup>(B) at 640 |
|----------------------------------------------------------------------------------------------|-----------------|------------------|------------------|-----------------------------|----------------------------------|----------------|--------------------------|
| [YOLOv8n-cls](https://github.com/ultralytics/assets/releases/download/v0.0.0/yolov8n-cls.pt) | 224 | 66.6 | 87.0 | 12.9 | 0.31 | 2.7 | 4.3 |
| [YOLOv8s-cls](https://github.com/ultralytics/assets/releases/download/v0.0.0/yolov8s-cls.pt) | 224 | 72.3 | 91.1 | 23.4 | 0.35 | 6.4 | 13.5 |
| [YOLOv8m-cls](https://github.com/ultralytics/assets/releases/download/v0.0.0/yolov8m-cls.pt) | 224 | 76.4 | 93.2 | 85.4 | 0.62 | 17.0 | 42.7 |
| [YOLOv8l-cls](https://github.com/ultralytics/assets/releases/download/v0.0.0/yolov8l-cls.pt) | 224 | 78.0 | 94.1 | 163.0 | 0.87 | 37.5 | 99.7 |
| [YOLOv8x-cls](https://github.com/ultralytics/assets/releases/download/v0.0.0/yolov8x-cls.pt) | 224 | 78.4 | 94.3 | 232.0 | 1.01 | 57.4 | 154.8 |
- **准确率** 是模型在[ImageNet](https://www.image-net.org/)数据集验证集上的准确度。
<br>通过`yolo val classify data=path/to/ImageNet device=0`复现结果。
- **速度** 是在使用[Amazon EC2 P4d](https://aws.amazon.com/ec2/instance-types/p4/)实例时ImageNet验证图像的平均处理速度。
<br>通过`yolo val classify data=path/to/ImageNet batch=1 device=0|cpu`复现结果。
## 训练
在MNIST160数据集上训练YOLOv8n-cls模型100个时期图像尺寸为64。有关可用参数的完整列表请参见[配置](/../usage/cfg.md)页面。
!!! example ""
=== "Python"
```python
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)
```
=== "CLI"
```bash
# 从YAML构建新模型并从头开始训练
yolo classify train data=mnist160 model=yolov8n-cls.yaml epochs=100 imgsz=64
# 从预训练的*.pt模型开始训练
yolo classify train data=mnist160 model=yolov8n-cls.pt epochs=100 imgsz=64
# 从YAML构建新模型转移预训练权重并开始训练
yolo classify train data=mnist160 model=yolov8n-cls.yaml pretrained=yolov8n-cls.pt epochs=100 imgsz=64
```
### 数据集格式
YOLO分类数据集的格式详情请参见[数据集指南](/../datasets/classify/index.md)。
## 验证
在MNIST160数据集上验证训练好的YOLOv8n-cls模型准确性。不需要传递任何参数因为`model`保留了它的训练`data`和参数作为模型属性。
!!! example ""
=== "Python"
```python
from ultralytics import YOLO
# 加载模型
model = YOLO('yolov8n-cls.pt') # 加载官方模型
model = YOLO('path/to/best.pt') # 加载自定义模型
# 验证模型
metrics = model.val() # 无需参数,数据集和设置已记忆
metrics.top1 # top1准确率
metrics.top5 # top5准确率
```
=== "CLI"
```bash
yolo classify val model=yolov8n-cls.pt # 验证官方模型
yolo classify val model=path/to/best.pt # 验证自定义模型
```
## 预测
使用训练过的YOLOv8n-cls模型对图像进行预测。
!!! example ""
=== "Python"
```python
from ultralytics import YOLO
# 加载模型
model = YOLO('yolov8n-cls.pt') # 加载官方模型
model = YOLO('path/to/best.pt') # 加载自定义模型
# 使用模型进行预测
results = model('https://ultralytics.com/images/bus.jpg') # 对图像进行预测
```
=== "CLI"
```bash
yolo classify predict model=yolov8n-cls.pt source='https://ultralytics.com/images/bus.jpg' # 使用官方模型进行预测
yolo classify predict model=path/to/best.pt source='https://ultralytics.com/images/bus.jpg' # 使用自定义模型进行预测
```
有关`predict`模式的完整详细信息,请参见[预测](https://docs.ultralytics.com/modes/predict/)页面。
## 导出
将YOLOv8n-cls模型导出为其他格式如ONNX、CoreML等。
!!! example ""
=== "Python"
```python
from ultralytics import YOLO
# 加载模型
model = YOLO('yolov8n-cls.pt') # 加载官方模型
model = YOLO('path/to/best.pt') # 加载自定义训练模型
# 导出模型
model.export(format='onnx')
```
=== "CLI"
```bash
yolo export model=yolov8n-cls.pt format=onnx # 导出官方模型
yolo export model=path/to/best.pt format=onnx # 导出自定义训练模型
```
下表中提供了YOLOv8-cls模型可导出的格式。您可以直接在导出的模型上进行预测或验证`yolo predict model=yolov8n-cls.onnx`。导出完成后,示例用法会显示您的模型。
| 格式 | `format` 参数 | 模型 | 元数据 | 参数 |
|--------------------------------------------------------------------|---------------|-------------------------------|-----|-----------------------------------------------------|
| [PyTorch](https://pytorch.org/) | - | `yolov8n-cls.pt` | ✅ | - |
| [TorchScript](https://pytorch.org/docs/stable/jit.html) | `torchscript` | `yolov8n-cls.torchscript` | ✅ | `imgsz`, `optimize` |
| [ONNX](https://onnx.ai/) | `onnx` | `yolov8n-cls.onnx` | ✅ | `imgsz`, `half`, `dynamic`, `simplify`, `opset` |
| [OpenVINO](https://docs.openvino.ai/latest/index.html) | `openvino` | `yolov8n-cls_openvino_model/` | ✅ | `imgsz`, `half` |
| [TensorRT](https://developer.nvidia.com/tensorrt) | `engine` | `yolov8n-cls.engine` | ✅ | `imgsz`, `half`, `dynamic`, `simplify`, `workspace` |
| [CoreML](https://github.com/apple/coremltools) | `coreml` | `yolov8n-cls.mlpackage` | ✅ | `imgsz`, `half`, `int8`, `nms` |
| [TF SavedModel](https://www.tensorflow.org/guide/saved_model) | `saved_model` | `yolov8n-cls_saved_model/` | ✅ | `imgsz`, `keras` |
| [TF GraphDef](https://www.tensorflow.org/api_docs/python/tf/Graph) | `pb` | `yolov8n-cls.pb` | ❌ | `imgsz` |
| [TF Lite](https://www.tensorflow.org/lite) | `tflite` | `yolov8n-cls.tflite` | ✅ | `imgsz`, `half`, `int8` |
| [TF Edge TPU](https://coral.ai/docs/edgetpu/models-intro/) | `edgetpu` | `yolov8n-cls_edgetpu.tflite` | ✅ | `imgsz` |
| [TF.js](https://www.tensorflow.org/js) | `tfjs` | `yolov8n-cls_web_model/` | ✅ | `imgsz` |
| [PaddlePaddle](https://github.com/PaddlePaddle) | `paddle` | `yolov8n-cls_paddle_model/` | ✅ | `imgsz` |
| [ncnn](https://github.com/Tencent/ncnn) | `ncnn` | `yolov8n-cls_ncnn_model/` | ✅ | `imgsz`, `half` |
有关`export`的完整详细信息,请参见[导出](https://docs.ultralytics.com/modes/export/)页面。

184
docs/zh/tasks/detect.md Normal file
View file

@ -0,0 +1,184 @@
---
comments: true
description: Ultralytics 官方YOLOv8文档。学习如何训练、验证、预测并以各种格式导出模型。包括详尽的性能统计。
keywords: YOLOv8, Ultralytics, 目标检测, 预训练模型, 训练, 验证, 预测, 导出模型, COCO, ImageNet, PyTorch, ONNX, CoreML
---
# 目标检测
<img width="1024" src="https://user-images.githubusercontent.com/26833433/243418624-5785cb93-74c9-4541-9179-d5c6782d491a.png" alt="目标检测示例">
目标检测是一项任务,涉及辨识图像或视频流中物体的位置和类别。
目标检测器的输出是一组围绕图像中物体的边界框,以及每个框的类别标签和置信度得分。当您需要识别场景中的感兴趣对象,但不需要准确了解物体的位置或其确切形状时,目标检测是一个很好的选择。
<p align="center">
<br>
<iframe width="720" height="405" src="https://www.youtube.com/embed/5ku7npMrW40?si=6HQO1dDXunV8gekh"
title="YouTube视频播放器" frameborder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
allowfullscreen>
</iframe>
<br>
<strong>观看:</strong>使用预训练的Ultralytics YOLOv8模型进行目标检测。
</p>
!!! tip "提示"
YOLOv8 Detect 模型是默认的 YOLOv8 模型,即 `yolov8n.pt` ,并在 [COCO](https://github.com/ultralytics/ultralytics/blob/main/ultralytics/cfg/datasets/coco.yaml) 数据集上进行了预训练。
## [模型](https://github.com/ultralytics/ultralytics/tree/main/ultralytics/cfg/models/v8)
此处展示了预训练的YOLOv8 Detect模型。Detect、Segment和Pose模型在 [COCO](https://github.com/ultralytics/ultralytics/blob/main/ultralytics/cfg/datasets/coco.yaml) 数据集上预训练而Classify模型在 [ImageNet](https://github.com/ultralytics/ultralytics/blob/main/ultralytics/cfg/datasets/ImageNet.yaml) 数据集上预训练。
[模型](https://github.com/ultralytics/ultralytics/tree/main/ultralytics/cfg/models) 会在首次使用时自动从Ultralytics的最新 [发布](https://github.com/ultralytics/assets/releases) 中下载。
| 模型 | 尺寸<br><sup>(像素) | mAP<sup>val<br>50-95 | 速度<br><sup>CPU ONNX<br>(毫秒) | 速度<br><sup>A100 TensorRT<br>(毫秒) | 参数<br><sup>(M) | FLOPs<br><sup>(B) |
|--------------------------------------------------------------------------------------|-----------------|----------------------|-----------------------------|----------------------------------|----------------|-------------------|
| [YOLOv8n](https://github.com/ultralytics/assets/releases/download/v0.0.0/yolov8n.pt) | 640 | 37.3 | 80.4 | 0.99 | 3.2 | 8.7 |
| [YOLOv8s](https://github.com/ultralytics/assets/releases/download/v0.0.0/yolov8s.pt) | 640 | 44.9 | 128.4 | 1.20 | 11.2 | 28.6 |
| [YOLOv8m](https://github.com/ultralytics/assets/releases/download/v0.0.0/yolov8m.pt) | 640 | 50.2 | 234.7 | 1.83 | 25.9 | 78.9 |
| [YOLOv8l](https://github.com/ultralytics/assets/releases/download/v0.0.0/yolov8l.pt) | 640 | 52.9 | 375.2 | 2.39 | 43.7 | 165.2 |
| [YOLOv8x](https://github.com/ultralytics/assets/releases/download/v0.0.0/yolov8x.pt) | 640 | 53.9 | 479.1 | 3.53 | 68.2 | 257.8 |
- **mAP<sup>val</sup>** 值适用于 [COCO val2017](http://cocodataset.org) 数据集上的单模型单尺度。
<br>通过 `yolo val detect data=coco.yaml device=0` 复现。
- **速度** 是在使用 [Amazon EC2 P4d](https://aws.amazon.com/ec2/instance-types/p4/) 云实例对COCO val图像的平均值。
<br>通过 `yolo val detect data=coco128.yaml batch=1 device=0|cpu` 复现。
## 训练
在COCO128数据集上使用图像尺寸640将YOLOv8n训练100个epochs。要查看可用参数的完整列表请参阅 [配置](/../usage/cfg.md) 页面。
!!! example ""
=== "Python"
```python
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)
```
=== "CLI"
```bash
# 从YAML构建新模型并从头开始训练
yolo detect train data=coco128.yaml model=yolov8n.yaml epochs=100 imgsz=640
# 从预训练的*.pt模型开始训练
yolo detect train data=coco128.yaml model=yolov8n.pt epochs=100 imgsz=640
# 从YAML构建新模型传递预训练权重并开始训练
yolo detect train data=coco128.yaml model=yolov8n.yaml pretrained=yolov8n.pt epochs=100 imgsz=640
```
### 数据集格式
YOLO检测数据集格式可以在 [数据集指南](/../datasets/detect/index.md) 中详细找到。要将您现有的数据集从其他格式如COCO等转换为YOLO格式请使用Ultralytics的 [JSON2YOLO](https://github.com/ultralytics/JSON2YOLO) 工具。
## 验证
在COCO128数据集上验证训练好的YOLOv8n模型准确性。无需传递参数`model` 作为模型属性保留其训练的 `data` 和参数。
!!! example ""
=== "Python"
```python
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的列表
```
=== "CLI"
```bash
yolo detect val model=yolov8n.pt # 验证官方模型
yolo detect val model=path/to/best.pt # 验证自定义模型
```
## 预测
使用训练好的YOLOv8n模型在图像上进行预测。
!!! example ""
=== "Python"
```python
from ultralytics import YOLO
# 加载模型
model = YOLO('yolov8n.pt') # 加载官方模型
model = YOLO('path/to/best.pt') # 加载自定义模型
# 使用模型进行预测
results = model('https://ultralytics.com/images/bus.jpg') # 对图像进行预测
```
=== "CLI"
```bash
yolo detect predict model=yolov8n.pt source='https://ultralytics.com/images/bus.jpg' # 使用官方模型进行预测
yolo detect predict model=path/to/best.pt source='https://ultralytics.com/images/bus.jpg' # 使用自定义模型进行预测
```
完整的 `predict` 模式细节请见 [预测](https://docs.ultralytics.com/modes/predict/) 页面。
## 导出
将YOLOv8n模型导出为ONNX、CoreML等不同格式。
!!! example ""
=== "Python"
```python
from ultralytics import YOLO
# 加载模型
model = YOLO('yolov8n.pt') # 加载官方模型
model = YOLO('path/to/best.pt') # 加载自定义训练模型
# 导出模型
model.export(format='onnx')
```
=== "CLI"
```bash
yolo export model=yolov8n.pt format=onnx # 导出官方模型
yolo export model=path/to/best.pt format=onnx # 导出自定义训练模型
```
下表中提供了可用的YOLOv8导出格式。您可以直接在导出的模型上进行预测或验证`yolo predict model=yolov8n.onnx`。导出完成后,会为您的模型显示使用示例。
| 格式 | `format` 参数 | 模型 | 元数据 | 参数 |
|--------------------------------------------------------------------|---------------|---------------------------|-----|-------------------------------------------------|
| [PyTorch](https://pytorch.org/) | - | `yolov8n.pt` | ✅ | - |
| [TorchScript](https://pytorch.org/docs/stable/jit.html) | `torchscript` | `yolov8n.torchscript` | ✅ | `imgsz``optimize` |
| [ONNX](https://onnx.ai/) | `onnx` | `yolov8n.onnx` | ✅ | `imgsz``half``dynamic``simplify``opset` |
| [OpenVINO](https://docs.openvino.ai/latest/index.html) | `openvino` | `yolov8n_openvino_model/` | ✅ | `imgsz``half` |
| [TensorRT](https://developer.nvidia.com/tensorrt) | `engine` | `yolov8n.engine` | ✅ | `imgsz``half``dynamic``simplify``workspace` |
| [CoreML](https://github.com/apple/coremltools) | `coreml` | `yolov8n.mlpackage` | ✅ | `imgsz``half``int8``nms` |
| [TF SavedModel](https://www.tensorflow.org/guide/saved_model) | `saved_model` | `yolov8n_saved_model/` | ✅ | `imgsz``keras` |
| [TF GraphDef](https://www.tensorflow.org/api_docs/python/tf/Graph) | `pb` | `yolov8n.pb` | ❌ | `imgsz` |
| [TF Lite](https://www.tensorflow.org/lite) | `tflite` | `yolov8n.tflite` | ✅ | `imgsz``half``int8` |
| [TF Edge TPU](https://coral.ai/docs/edgetpu/models-intro/) | `edgetpu` | `yolov8n_edgetpu.tflite` | ✅ | `imgsz` |
| [TF.js](https://www.tensorflow.org/js) | `tfjs` | `yolov8n_web_model/` | ✅ | `imgsz` |
| [PaddlePaddle](https://github.com/PaddlePaddle) | `paddle` | `yolov8n_paddle_model/` | ✅ | `imgsz` |
| [ncnn](https://github.com/Tencent/ncnn) | `ncnn` | `yolov8n_ncnn_model/` | ✅ | `imgsz``half` |
完整的 `export` 详情请见 [导出](https://docs.ultralytics.com/modes/export/) 页面。

51
docs/zh/tasks/index.md Normal file
View file

@ -0,0 +1,51 @@
---
comments: true
description: 了解 YOLOv8 能够执行的基础计算机视觉任务,包括检测、分割、分类和姿态估计。理解它们在你的 AI 项目中的应用。
keywords: Ultralytics, YOLOv8, 检测, 分割, 分类, 姿态估计, AI 框架, 计算机视觉任务
---
# Ultralytics YOLOv8 任务
<br>
<img width="1024" src="https://raw.githubusercontent.com/ultralytics/assets/main/im/banner-tasks.png" alt="Ultralytics YOLO 支持的任务">
YOLOv8 是一个支持多种计算机视觉**任务**的 AI 框架。该框架可用于执行[检测](detect.md)、[分割](segment.md)、[分类](classify.md)和[姿态](pose.md)估计。每项任务都有不同的目标和用例。
<p align="center">
<br>
<iframe width="720" height="405" src="https://www.youtube.com/embed/NAs-cfq9BDw"
title="YouTube 视频播放器" frameborder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
allowfullscreen>
</iframe>
<br>
<strong>观看:</strong>探索 Ultralytics YOLO 任务:对象检测、分割、追踪和姿态估计。
</p>
## [检测](detect.md)
检测是 YOLOv8 支持的主要任务。它涉及在图像或视频帧中检测对象并围绕它们绘制边界框。侦测到的对象根据其特征被归类到不同的类别。YOLOv8 能够在单个图像或视频帧中检测多个对象,具有高准确性和速度。
[检测示例](detect.md){ .md-button .md-button--primary}
## [分割](segment.md)
分割是一项涉及将图像分割成基于图像内容的不同区域的任务。每个区域根据其内容被分配一个标签。该任务在应用程序中非常有用如图像分割和医学成像。YOLOv8 使用 U-Net 架构的变体来执行分割。
[分割示例](segment.md){ .md-button .md-button--primary}
## [分类](classify.md)
分类是一项涉及将图像归类为不同类别的任务。YOLOv8 可用于根据图像内容对图像进行分类。它使用 EfficientNet 架构的变体来执行分类。
[分类示例](classify.md){ .md-button .md-button--primary}
## [姿态](pose.md)
姿态/关键点检测是一项涉及在图像或视频帧中检测特定点的任务。这些点被称为关键点用于跟踪移动或姿态估计。YOLOv8 能够在图像或视频帧中准确迅速地检测关键点。
[姿态示例](pose.md){ .md-button .md-button--primary}
## 结论
YOLOv8 支持多个任务,包括检测、分割、分类和关键点检测。这些任务都具有不同的目标和用例。通过理解这些任务之间的差异,您可以为您的计算机视觉应用选择合适的任务。

185
docs/zh/tasks/pose.md Normal file
View file

@ -0,0 +1,185 @@
---
评论:真
描述学习如何使用Ultralytics YOLOv8进行姿态估计任务。找到预训练模型学习如何训练、验证、预测以及导出你自己的模型。
关键词Ultralytics, YOLO, YOLOv8, 姿态估计, 关键点检测, 物体检测, 预训练模型, 机器学习, 人工智能
---
# 姿态估计
<img width="1024" src="https://user-images.githubusercontent.com/26833433/243418616-9811ac0b-a4a7-452a-8aba-484ba32bb4a8.png" alt="姿态估计示例">
姿态估计是一项任务其涉及识别图像中特定点的位置通常被称为关键点。这些关键点可以代表物体的各种部位如关节、地标或其他显著特征。关键点的位置通常表示为一组2D `[x, y]` 或3D `[x, y, visible]` 坐标。
姿态估计模型的输出是一组点集,这些点代表图像中物体上的关键点,通常还包括每个点的置信度得分。当你需要在场景中识别物体的特定部位及其相互之间的位置时,姿态估计是一个不错的选择。
<p align="center">
<br>
<iframe width="720" height="405" src="https://www.youtube.com/embed/Y28xXQmju64?si=pCY4ZwejZFu6Z4kZ"
title="YouTube视频播放器" frameborder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
允许全屏>
</iframe>
<br>
<strong>观看:</strong>使用Ultralytics YOLOv8进行姿态估计。
</p>
!!! tip "提示"
YOLOv8 _姿态_ 模型使用 `-pose` 后缀,例如 `yolov8n-pose.pt`。这些模型在 [COCO关键点](https://github.com/ultralytics/ultralytics/blob/main/ultralytics/cfg/datasets/coco-pose.yaml) 数据集上进行了训练,并且适用于各种姿态估计任务。
## [模型](https://github.com/ultralytics/ultralytics/tree/main/ultralytics/cfg/models/v8)
这里展示了YOLOv8预训练的姿态模型。检测、分割和姿态模型在 [COCO](https://github.com/ultralytics/ultralytics/blob/main/ultralytics/cfg/datasets/coco.yaml) 数据集上进行预训练,而分类模型则在 [ImageNet](https://github.com/ultralytics/ultralytics/blob/main/ultralytics/cfg/datasets/ImageNet.yaml) 数据集上进行预训练。
[模型](https://github.com/ultralytics/ultralytics/tree/main/ultralytics/cfg/models) 在首次使用时将自动从最新的Ultralytics [发布版本](https://github.com/ultralytics/assets/releases)中下载。
| 模型 | 尺寸<br><sup>(像素) | mAP<sup>姿态<br>50-95 | mAP<sup>姿态<br>50 | 速度<br><sup>CPU ONNX<br>(毫秒) | 速度<br><sup>A100 TensorRT<br>(毫秒) | 参数<br><sup>(M) | 浮点数运算<br><sup>(B) |
|----------------------------------------------------------------------------------------------------|-----------------|---------------------|------------------|-----------------------------|----------------------------------|----------------|-------------------|
| [YOLOv8n-姿态](https://github.com/ultralytics/assets/releases/download/v0.0.0/yolov8n-pose.pt) | 640 | 50.4 | 80.1 | 131.8 | 1.18 | 3.3 | 9.2 |
| [YOLOv8s-姿态](https://github.com/ultralytics/assets/releases/download/v0.0.0/yolov8s-pose.pt) | 640 | 60.0 | 86.2 | 233.2 | 1.42 | 11.6 | 30.2 |
| [YOLOv8m-姿态](https://github.com/ultralytics/assets/releases/download/v0.0.0/yolov8m-pose.pt) | 640 | 65.0 | 88.8 | 456.3 | 2.00 | 26.4 | 81.0 |
| [YOLOv8l-姿态](https://github.com/ultralytics/assets/releases/download/v0.0.0/yolov8l-pose.pt) | 640 | 67.6 | 90.0 | 784.5 | 2.59 | 44.4 | 168.6 |
| [YOLOv8x-姿态](https://github.com/ultralytics/assets/releases/download/v0.0.0/yolov8x-pose.pt) | 640 | 69.2 | 90.2 | 1607.1 | 3.73 | 69.4 | 263.2 |
| [YOLOv8x-姿态-p6](https://github.com/ultralytics/assets/releases/download/v0.0.0/yolov8x-pose-p6.pt) | 1280 | 71.6 | 91.2 | 4088.7 | 10.04 | 99.1 | 1066.4 |
- **mAP<sup>val</sup>** 值适用于[COCO 关键点 val2017](http://cocodataset.org)数据集上的单模型单尺度。
<br>通过执行 `yolo val pose data=coco-pose.yaml device=0` 来复现。
- **速度** 是在 [亚马逊EC2 P4d](https://aws.amazon.com/ec2/instance-types/p4/)实例上使用COCO val图像的平均值。
<br>通过执行 `yolo val pose data=coco8-pose.yaml batch=1 device=0|cpu` 来复现。
## 训练
在COCO128姿态数据集上训练一个YOLOv8姿态模型。
!!! example ""
=== "Python"
```python
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)
```
=== "CLI"
```bash
# 从YAML构建一个新模型并从头开始训练
yolo pose train data=coco8-pose.yaml model=yolov8n-pose.yaml epochs=100 imgsz=640
# 从一个预训练的*.pt模型开始训练
yolo pose train data=coco8-pose.yaml model=yolov8n-pose.pt epochs=100 imgsz=640
# 从YAML构建一个新模型传输预训练权重并开始训练
yolo pose train data=coco8-pose.yaml model=yolov8n-pose.yaml pretrained=yolov8n-pose.pt epochs=100 imgsz=640
```
### 数据集格式
YOLO姿态数据集格式可详细找到在[数据集指南](/../datasets/pose/index.md)中。若要将您现有的数据集从其他格式如COCO等转换为YOLO格式请使用Ultralytics的 [JSON2YOLO](https://github.com/ultralytics/JSON2YOLO) 工具。
## 验证
在COCO128姿态数据集上验证训练好的YOLOv8n姿态模型的准确性。没有参数需要传递因为`模型`保存了其训练`数据`和参数作为模型属性。
!!! example ""
=== "Python"
```python
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的列表
```
=== "CLI"
```bash
yolo pose val model=yolov8n-pose.pt # 验证官方模型
yolo pose val model=path/to/best.pt # 验证自定义模型
```
## 预测
使用训练好的YOLOv8n姿态模型在图片上运行预测。
!!! example ""
=== "Python"
```python
from ultralytics import YOLO
# 加载模型
model = YOLO('yolov8n-pose.pt') # 加载官方模型
model = YOLO('path/to/best.pt') # 加载自定义模型
# 用模型进行预测
results = model('https://ultralytics.com/images/bus.jpg') # 在一张图片上预测
```
=== "CLI"
```bash
yolo pose predict model=yolov8n-pose.pt source='https://ultralytics.com/images/bus.jpg' # 用官方模型预测
yolo pose predict model=path/to/best.pt source='https://ultralytics.com/images/bus.jpg' # 用自定义模型预测
```
在[预测](https://docs.ultralytics.com/modes/predict/)页面中查看完整的`预测`模式细节。
## 导出
将YOLOv8n姿态模型导出为ONNX、CoreML等不同格式。
!!! example ""
=== "Python"
```python
from ultralytics import YOLO
# 加载模型
model = YOLO('yolov8n-pose.pt') # 加载官方模型
model = YOLO('path/to/best.pt') # 加载自定义训练好的模型
# 导出模型
model.export(format='onnx')
```
=== "CLI"
```bash
yolo export model=yolov8n-pose.pt format=onnx # 导出官方模型
yolo export model=path/to/best.pt format=onnx # 导出自定义训练好的模型
```
以下表格中有可用的YOLOv8姿态导出格式。您可以直接在导出的模型上进行预测或验证例如 `yolo predict model=yolov8n-pose.onnx`。导出完成后,为您的模型显示用法示例。
| 格式 | `format` 参数 | 模型 | 元数据 | 参数 |
|--------------------------------------------------------------------|---------------|--------------------------------|-----|-----------------------------------------------------|
| [PyTorch](https://pytorch.org/) | - | `yolov8n-pose.pt` | ✅ | - |
| [TorchScript](https://pytorch.org/docs/stable/jit.html) | `torchscript` | `yolov8n-pose.torchscript` | ✅ | `imgsz`, `optimize` |
| [ONNX](https://onnx.ai/) | `onnx` | `yolov8n-pose.onnx` | ✅ | `imgsz`, `half`, `dynamic`, `simplify`, `opset` |
| [OpenVINO](https://docs.openvino.ai/latest/index.html) | `openvino` | `yolov8n-pose_openvino_model/` | ✅ | `imgsz`, `half` |
| [TensorRT](https://developer.nvidia.com/tensorrt) | `engine` | `yolov8n-pose.engine` | ✅ | `imgsz`, `half`, `dynamic`, `simplify`, `workspace` |
| [CoreML](https://github.com/apple/coremltools) | `coreml` | `yolov8n-pose.mlpackage` | ✅ | `imgsz`, `half`, `int8`, `nms` |
| [TF SavedModel](https://www.tensorflow.org/guide/saved_model) | `saved_model` | `yolov8n-pose_saved_model/` | ✅ | `imgsz`, `keras` |
| [TF GraphDef](https://www.tensorflow.org/api_docs/python/tf/Graph) | `pb` | `yolov8n-pose.pb` | ❌ | `imgsz` |
| [TF Lite](https://www.tensorflow.org/lite) | `tflite` | `yolov8n-pose.tflite` | ✅ | `imgsz`, `half`, `int8` |
| [TF Edge TPU](https://coral.ai/docs/edgetpu/models-intro/) | `edgetpu` | `yolov8n-pose_edgetpu.tflite` | ✅ | `imgsz` |
| [TF.js](https://www.tensorflow.org/js) | `tfjs` | `yolov8n-pose_web_model/` | ✅ | `imgsz` |
| [PaddlePaddle](https://github.com/PaddlePaddle) | `paddle` | `yolov8n-pose_paddle_model/` | ✅ | `imgsz` |
| [ncnn](https://github.com/Tencent/ncnn) | `ncnn` | `yolov8n-pose_ncnn_model/` | ✅ | `imgsz`, `half` |
在[导出](https://docs.ultralytics.com/modes/export/) 页面中查看完整的`导出`细节。

188
docs/zh/tasks/segment.md Normal file
View file

@ -0,0 +1,188 @@
---
comments: true
description: 学习如何使用Ultralytics YOLO进行实例分割模型。包括训练、验证、图像预测和模型导出的说明。
keywords: yolov8, 实例分割, Ultralytics, COCO数据集, 图像分割, 物体检测, 模型训练, 模型验证, 图像预测, 模型导出
---
# 实例分割
<img width="1024" src="https://user-images.githubusercontent.com/26833433/243418644-7df320b8-098d-47f1-85c5-26604d761286.png" alt="实例分割示例">
实例分割比物体检测有所深入,它涉及到识别图像中的个别物体并将它们从图像的其余部分中分割出来。
实例分割模型的输出是一组蒙版或轮廓,用于勾画图像中每个物体,以及每个物体的类别标签和置信度分数。实例分割在您需要不仅知道图像中的物体位置,还需要知道它们确切形状时非常有用。
<p align="center">
<br>
<iframe width="720" height="405" src="https://www.youtube.com/embed/o4Zd-IeMlSY?si=37nusCzDTd74Obsp"
title="YouTube视频播放器" frameborder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
allowfullscreen>
</iframe>
<br>
<strong>观看:</strong> 在Python中使用预训练的Ultralytics YOLOv8模型运行分割。
</p>
!!! tip "提示"
YOLOv8分割模型使用`-seg`后缀,即`yolov8n-seg.pt`,并在[COCO](https://github.com/ultralytics/ultralytics/blob/main/ultralytics/cfg/datasets/coco.yaml)上进行预训练。
## [模型](https://github.com/ultralytics/ultralytics/tree/main/ultralytics/cfg/models/v8)
这里展示了预训练的YOLOv8分割模型。Detect、Segment和Pose模型都是在[COCO](https://github.com/ultralytics/ultralytics/blob/main/ultralytics/cfg/datasets/coco.yaml)数据集上进行预训练的而Classify模型则是在[ImageNet](https://github.com/ultralytics/ultralytics/blob/main/ultralytics/cfg/datasets/ImageNet.yaml)数据集上进行预训练的。
[模型](https://github.com/ultralytics/ultralytics/tree/main/ultralytics/cfg/models)会在首次使用时自动从Ultralytics的最新[版本](https://github.com/ultralytics/assets/releases)下载。
| 模型 | 尺寸<br><sup>(像素) | mAP<sup>box<br>50-95 | mAP<sup>mask<br>50-95 | 速度<br><sup>CPU ONNX<br>(ms) | 速度<br><sup>A100 TensorRT<br>(ms) | 参数<br><sup>(M) | FLOPs<br><sup>(B) |
|----------------------------------------------------------------------------------------------|-----------------|----------------------|-----------------------|-----------------------------|----------------------------------|----------------|-------------------|
| [YOLOv8n-seg](https://github.com/ultralytics/assets/releases/download/v0.0.0/yolov8n-seg.pt) | 640 | 36.7 | 30.5 | 96.1 | 1.21 | 3.4 | 12.6 |
| [YOLOv8s-seg](https://github.com/ultralytics/assets/releases/download/v0.0.0/yolov8s-seg.pt) | 640 | 44.6 | 36.8 | 155.7 | 1.47 | 11.8 | 42.6 |
| [YOLOv8m-seg](https://github.com/ultralytics/assets/releases/download/v0.0.0/yolov8m-seg.pt) | 640 | 49.9 | 40.8 | 317.0 | 2.18 | 27.3 | 110.2 |
| [YOLOv8l-seg](https://github.com/ultralytics/assets/releases/download/v0.0.0/yolov8l-seg.pt) | 640 | 52.3 | 42.6 | 572.4 | 2.79 | 46.0 | 220.5 |
| [YOLOv8x-seg](https://github.com/ultralytics/assets/releases/download/v0.0.0/yolov8x-seg.pt) | 640 | 53.4 | 43.4 | 712.1 | 4.02 | 71.8 | 344.1 |
- **mAP<sup>val</sup>** 值针对[COCO val2017](http://cocodataset.org)数据集的单模型单尺度。
<br>通过`yolo val segment data=coco.yaml device=0`复现。
- **速度** 基于在[Amazon EC2 P4d](https://aws.amazon.com/ec2/instance-types/p4/)实例上运行的COCO val图像的平均值。
<br>通过`yolo val segment data=coco128-seg.yaml batch=1 device=0|cpu`复现。
## 训练
在COCO128-seg数据集上以640的图像尺寸训练YOLOv8n-seg模型共100个周期。想了解更多可用的参数请查阅[配置](/../usage/cfg.md)页面。
!!! example ""
=== "Python"
```python
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)
```
=== "CLI"
```bash
# 从YAML构建新模型并从头开始训练
yolo segment train data=coco128-seg.yaml model=yolov8n-seg.yaml epochs=100 imgsz=640
# 从预训练*.pt模型开始训练
yolo segment train data=coco128-seg.yaml model=yolov8n-seg.pt epochs=100 imgsz=640
# 从YAML构建新模型传递预训练权重开始训练
yolo segment train data=coco128-seg.yaml model=yolov8n-seg.yaml pretrained=yolov8n-seg.pt epochs=100 imgsz=640
```
### 数据集格式
可以在[数据集指南](/../datasets/segment/index.md)中详细了解YOLO分割数据集格式。要将现有数据集从其他格式如COCO等转换为YOLO格式请使用Ultralytics的[JSON2YOLO](https://github.com/ultralytics/JSON2YOLO)工具。
## 验证
在COCO128-seg数据集上验证已训练的YOLOv8n-seg模型的准确性。不需要传递任何参数因为`model`保留了其训练的`data`和作为模型属性的设置。
!!! example ""
=== "Python"
```python
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)列表
```
=== "CLI"
```bash
yolo segment val model=yolov8n-seg.pt # 验证官方模型
yolo segment val model=path/to/best.pt # 验证自定义模型
```
## 预测
使用已训练的YOLOv8n-seg模型在图像上进行预测。
!!! example ""
=== "Python"
```python
from ultralytics import YOLO
# 载入一个模型
model = YOLO('yolov8n-seg.pt') # 载入官方模型
model = YOLO('path/to/best.pt') # 载入自定义模型
# 使用模型进行预测
results = model('https://ultralytics.com/images/bus.jpg') # 对一张图像进行预测
```
=== "CLI"
```bash
yolo segment predict model=yolov8n-seg.pt source='https://ultralytics.com/images/bus.jpg' # 使用官方模型进行预测
yolo segment predict model=path/to/best.pt source='https://ultralytics.com/images/bus.jpg' # 使用自定义模型进行预测
```
预测模式的完整详情请参见[Predict](https://docs.ultralytics.com/modes/predict/)页面。
## 导出
将YOLOv8n-seg模型导出为ONNX、CoreML等不同格式。
!!! example ""
=== "Python"
```python
from ultralytics import YOLO
# 载入一个模型
model = YOLO('yolov8n-seg.pt') # 载入官方模型
model = YOLO('path/to/best.pt') # 载入自定义训练模型
# 导出模型
model.export(format='onnx')
```
=== "CLI"
```bash
yolo export model=yolov8n-seg.pt format=onnx # 导出官方模型
yolo export model=path/to/best.pt format=onnx # 导出自定义训练模型
```
YOLOv8-seg导出格式的可用表格如下所示。您可以直接在导出的模型上进行预测或验证例如`yolo predict model=yolov8n-seg.onnx`。导出完成后,示例用法将显示您的模型。
| 格式 | `format` 参数 | 模型 | 元数据 | 参数 |
|--------------------------------------------------------------------|---------------|-------------------------------|-----|-----------------------------------------------------|
| [PyTorch](https://pytorch.org/) | - | `yolov8n-seg.pt` | ✅ | - |
| [TorchScript](https://pytorch.org/docs/stable/jit.html) | `torchscript` | `yolov8n-seg.torchscript` | ✅ | `imgsz`, `optimize` |
| [ONNX](https://onnx.ai/) | `onnx` | `yolov8n-seg.onnx` | ✅ | `imgsz`, `half`, `dynamic`, `simplify`, `opset` |
| [OpenVINO](https://docs.openvino.ai/latest/index.html) | `openvino` | `yolov8n-seg_openvino_model/` | ✅ | `imgsz`, `half` |
| [TensorRT](https://developer.nvidia.com/tensorrt) | `engine` | `yolov8n-seg.engine` | ✅ | `imgsz`, `half`, `dynamic`, `simplify`, `workspace` |
| [CoreML](https://github.com/apple/coremltools) | `coreml` | `yolov8n-seg.mlpackage` | ✅ | `imgsz`, `half`, `int8`, `nms` |
| [TF SavedModel](https://www.tensorflow.org/guide/saved_model) | `saved_model` | `yolov8n-seg_saved_model/` | ✅ | `imgsz`, `keras` |
| [TF GraphDef](https://www.tensorflow.org/api_docs/python/tf/Graph) | `pb` | `yolov8n-seg.pb` | ❌ | `imgsz` |
| [TF Lite](https://www.tensorflow.org/lite) | `tflite` | `yolov8n-seg.tflite` | ✅ | `imgsz`, `half`, `int8` |
| [TF Edge TPU](https://coral.ai/docs/edgetpu/models-intro/) | `edgetpu` | `yolov8n-seg_edgetpu.tflite` | ✅ | `imgsz` |
| [TF.js](https://www.tensorflow.org/js) | `tfjs` | `yolov8n-seg_web_model/` | ✅ | `imgsz` |
| [PaddlePaddle](https://github.com/PaddlePaddle) | `paddle` | `yolov8n-seg_paddle_model/` | ✅ | `imgsz` |
| [ncnn](https://github.com/Tencent/ncnn) | `ncnn` | `yolov8n-seg_ncnn_model/` | ✅ | `imgsz`, `half` |
导出模式的完整详情请参见[Export](https://docs.ultralytics.com/modes/export/)页面。