【YOLOv8系列】(三)YOLOv8应用实践:从识别到分类再到分割的全方位视觉解决方案

随着深度学习技术的不断演进,目标检测领域的明星模型——YOLO系列,已经发展到了第八代,即YOLOv8。这一版本不仅继承了前辈们快速与准确的特点,还实现了功能上的巨大飞跃,成为了一个全能型的视觉AI工具箱,支持检测、分割、姿态估计、跟踪以及分类等多种任务。本文将深入探讨YOLOv8在实际应用中的多样化表现,从基本的目标识别出发,延伸至细致的图像分类与语义分割,展现其在复杂场景下的强大能力。 

本系列其他文章 

【YOLOv8系列】(一)YOLOv8介绍:实时目标检测的最新突破-优快云博客

【YOLO8系列】(二)YOLOv8环境配置,手把手嘴对嘴保姆教学-优快云博客

一.物体检测 

物体检测是 YOLOv8 的基础功能,也是最常见的应用场景。通过 YOLOv8,我们可以在图像中快速、准确地识别出不同的目标物体,并标记其位置。图像分类器的输出是单一类别标签和置信度分数。

Modelsize
(pixels)
mAPval
50-95
Speed
CPU ONNX
(ms)
Speed
A100 TensorRT
(ms)
params
(M)
FLOPs
(B)
YOLOv8n64037.380.40.993.28.7
YOLOv8s64044.9128.41.2011.228.6
YOLOv8m64050.2234.71.8325.978.9
YOLOv8l64052.9375.22.3943.7165.2
YOLOv8x64053.9479.13.5368.2257.8
  • 数据准备:收集并标注包含目标物体的图像数据集。确保数据集有足够的多样性和数量以提高模型的泛化能力。

  • 模型训练:使用 YOLOv8 预训练模型,在目标数据集上进行微调。调整训练参数以达到最佳效果。

from ultralytics import YOLO

# Load a model
model = YOLO("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

# Train the model
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
  • 结果评估:使用验证集评估模型的识别精度和速度。
from ultralytics import YOLO

# Load a model
model = YOLO("yolov8n.pt")  # load an official model
model = YOLO("path/to/best.pt")  # load a custom model

# Validate the model
metrics = model.val()  # 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

二.图像分类

在目标识别的基础上,YOLOv8 还能够对识别出的目标进行分类。通过结合分类标签,模型可以在检测出目标的同时,给出每个目标所属的类别信息。

Modelsize
(pixels)
acc
top1
acc
top5
Speed
CPU ONNX
(ms)
Speed
A100 TensorRT
(ms)
params
(M)
FLOPs
(B) at 640
YOLOv8n-cls22469.088.312.90.312.74.3
YOLOv8s-cls22473.891.723.40.356.413.5
YOLOv8m-cls22476.893.585.40.6217.042.7
YOLOv8l-cls22478.394.2163.00.8737.599.7
YOLOv8x-cls22479.094.6232.01.0157.4154.8
  • 数据准备:除了目标位置标注外,还需要给每个目标物体加上类别标签。

  • 模型训练:在包含分类标签的数据集上训练 YOLOv8 模型。
from ultralytics import YOLO

# Load a model
model = YOLO("yolov8n-cls.yaml")  # build a new model from YAML
model = YOLO("yolov8n-cls.pt")  # load a pretrained model (recommended for training)
model = YOLO("yolov8n-cls.yaml").load("yolov8n-cls.pt")  # build from YAML and transfer weights

# Train the model
results = model.train(data="mnist160", epochs=100, imgsz=64)
  • 结果评估:使用包含分类标签的验证集评估模型的分类精度。
from ultralytics import YOLO

# Load a model
model = YOLO("yolov8n-cls.pt")  # load an official model
model = YOLO("path/to/best.pt")  # load a custom model

# Validate the model
metrics = model.val()  # no arguments needed, dataset and settings remembered
metrics.top1  # top1 accuracy
metrics.top5  # top5 accuracy

 三.实例分割

实例分割是计算机视觉中的高级任务,YOLOv8 在这一领域同样表现出色。通过分割任务,模型不仅能识别目标的位置,还能精确地勾勒出目标的边界。

Modelsize
(pixels)
mAPbox
50-95
mAPmask
50-95
Speed
CPU ONNX
(ms)
Speed
A100 TensorRT
(ms)
params
(M)
FLOPs
(B)
YOLOv8n-seg64036.730.596.11.213.412.6
YOLOv8s-seg64044.636.8155.71.4711.842.6
YOLOv8m-seg64049.940.8317.02.1827.3110.2
YOLOv8l-seg64052.342.6572.42.7946.0220.5
YOLOv8x-seg64053.443.4712.14.0271.8344.1
  • 数据准备:需要准备包含目标分割掩码的数据集。

  • 模型训练:在分割数据集上训练 YOLOv8 模型。

from ultralytics import YOLO

# Load a model
model = YOLO("yolov8n-seg.yaml")  # build a new model from YAML
model = YOLO("yolov8n-seg.pt")  # load a pretrained model (recommended for training)
model = YOLO("yolov8n-seg.yaml").load("yolov8n.pt")  # build from YAML and transfer weights

# Train the model
results = model.train(data="coco8-seg.yaml", epochs=100, imgsz=640)
  • 结果评估:使用包含分割掩码的验证集评估模型的分割精度。 
from ultralytics import YOLO

# Load a model
model = YOLO("yolov8n-seg.pt")  # load an official model
model = YOLO("path/to/best.pt")  # load a custom model

# Validate the model
metrics = model.val()  # no arguments needed, dataset and settings remembered
metrics.box.map  # map50-95(B)
metrics.box.map50  # map50(B)
metrics.box.map75  # map75(B)
metrics.box.maps  # a list contains map50-95(B) of each category
metrics.seg.map  # map50-95(M)
metrics.seg.map50  # map50(M)
metrics.seg.map75  # map75(M)
metrics.seg.maps  # a list contains map50-95(M) of each category

 四.姿势估计

姿态估计是计算机视觉中的另一重要任务,用于预测图像中人体或物体的关节点位置。YOLOv8 在这一领域也具备强大的表现力,通过姿态估计模型,可以精确地预测和标记关节点位置,适用于人体动作识别、运动分析等场景。

Modelsize
(pixels)
mAPpose
50-95
mAPpose
50
Speed
CPU ONNX
(ms)
Speed
A100 TensorRT
(ms)
params
(M)
FLOPs
(B)
YOLOv8n-pose64050.480.1131.81.183.39.2
YOLOv8s-pose64060.086.2233.21.4211.630.2
YOLOv8m-pose64065.088.8456.32.0026.481.0
YOLOv8l-pose64067.690.0784.52.5944.4168.6
YOLOv8x-pose64069.290.21607.13.7369.4263.2
YOLOv8x-pose-p6128071.691.24088.710.0499.11066.4
  • 数据准备:准备包含关节点标注的数据集,通常是标记人体关键点的位置。

  • 模型训练:在姿态估计数据集上训练 YOLOv8 模型。
from ultralytics import YOLO

# Load a model
model = YOLO("yolov8n-pose.yaml")  # build a new model from YAML
model = YOLO("yolov8n-pose.pt")  # load a pretrained model (recommended for training)
model = YOLO("yolov8n-pose.yaml").load("yolov8n-pose.pt")  # build from YAML and transfer weights

# Train the model
results = model.train(data="coco8-pose.yaml", epochs=100, imgsz=640)
  • 结果评估:使用包含关节点标注的验证集评估模型的姿态估计精度。
from ultralytics import YOLO

# Load a model
model = YOLO("yolov8n-pose.pt")  # load an official model
model = YOLO("path/to/best.pt")  # load a custom model

# Validate the model
metrics = model.val()  # 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

五、旋转包围框(OBB)

旋转包围框(Oriented Bounding Box, OBB)在目标检测中尤为重要,特别是在处理目标旋转角度较大的应用场景时。YOLOv8 支持 OBB 检测,能够更加精确地捕捉目标的形状和方向。

Modelsize
(pixels)
mAPtest
50
Speed
CPU ONNX
(ms)
Speed
A100 TensorRT
(ms)
params
(M)
FLOPs
(B)
YOLOv8n-obb102478.0204.773.573.123.3
YOLOv8s-obb102479.5424.884.0711.476.3
YOLOv8m-obb102480.5763.487.6126.4208.6
YOLOv8l-obb102480.71278.4211.8344.5433.8
YOLOv8x-obb102481.361759.1013.2369.5676.7
  • 数据准备:准备包含旋转包围框标注的数据集,标注每个目标的中心点、宽度、高度和旋转角度。

  • 模型训练:在包含 OBB 标注的数据集上训练 YOLOv8 模型。

from ultralytics import YOLO

# Load a model
model = YOLO("yolov8n-obb.yaml")  # build a new model from YAML
model = YOLO("yolov8n-obb.pt")  # load a pretrained model (recommended for training)
model = YOLO("yolov8n-obb.yaml").load("yolov8n.pt")  # build from YAML and transfer weights

# Train the model
results = model.train(data="dota8.yaml", epochs=100, imgsz=640)
  • 结果评估:使用包含 OBB 标注的验证集评估模型的 OBB 检测精度。
from ultralytics import YOLO

# Load a model
model = YOLO("yolov8n-obb.pt")  # load an official model
model = YOLO("path/to/best.pt")  # load a custom model

# Validate the model
metrics = model.val(data="dota8.yaml")  # no arguments needed, dataset and settings remembered
metrics.box.map  # map50-95(B)
metrics.box.map50  # map50(B)
metrics.box.map75  # map75(B)
metrics.box.maps  # a list contains map50-95(B) of each category

六、总结

YOLOv8 通过其高效、灵活的设计,在目标识别、分类、分割、姿态估计和 OBB 检测任务中表现出色,提供了全方位的视觉解决方案。在实际应用中,合理利用 YOLOv8 的各项功能,可以大大提升计算机视觉任务的效率和效果。

如果以上内容对您有帮助,可以三连打赏订阅本专栏哦, 谢谢~

### YOLOv8系列模型介绍 YOLOv8 是一种先进的目标检测框架,其全系列模型由多个版本组成,从小到大分别为 YOLOv8n、YOLOv8s、YOLOv8m、YOLOv8l 和 YOLOv8x。这些模型的设计旨在满足不同的性能需求和硬件条件。 #### 模型特性对比 以下是各型号的主要特性和技术指标: | **Model** | **Size (Pixels)** | **mAP val (50-95)** | **Speed CPU ONNX (ms)** | **Speed A100 TensorRT (ms)** | **Params (M)** | **FLOPs (B)** | |-----------|-------------------|----------------------|--------------------------|-------------------------------|----------------|---------------| | YOLOv8n | 640 | 37.3 | 80.4 | 0.9 | 3.2 | 8.7 | | YOLOv8s | 640 | 44.9 | 128.4 | 1.2 | 11.2 | 28.6 | | YOLOv8m | 640 | 50.2 | 234.7 | 1.8 | 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 | 上述表格展示了每种模型的关键属性,包括输入图像大小、平均精度(mAP)、CPU 推理时间以及 GPU 上的加速表现[^4]。 #### 各模型特点概述 - **YOLOv8n**: 参数最少的小型模型,适合资源受限环境下的实时应用。尽管 mAP 较低,但在嵌入式设备上表现出色。 - **YOLOv8s**: 提供了良好的平衡,在保持较高精度的同时仍能快速运行于主流消费级硬件。 - **YOLOv8m**: 中等规模模型,适用于需要更高准确性而不介意稍慢处理速度的应用场合。 - **YOLOv8l**: 大型模型,具有更高的检测能力,但对计算能力和内存有较大要求。 - **YOLOv8x**: 超大型模型,拥有最佳的目标识别效果,然而也伴随着最长的推理时间和最高的存储消耗。 通过实验验证发现,虽然五款不同参数量级的模型之间并未拉开显著差距,但从实际部署角度出发,通常会选择轻量化版本如 n 系列作为最终线上推理方案以优化效率与成本比率[^3]。 #### 官方预训练权重下载地址 官方提供了基于 COCO 数据集预先训练好的权重文件,用户可以直接加载并测试或微调至特定领域任务中去。具体链接可访问 Ultralytics 的 GitHub 页面获取最新发布版信息。 ```python from ultralytics import YOLO model_n = YOLO('yolov8n.pt') # 加载 nano 版本 model_s = YOLO('yolov8s.pt') # 加载 small 版本 model_m = YOLO('yolov8m.pt') # 加载 medium 版本 model_l = YOLO('yolov8l.pt') # 加载 large 版本 model_x = YOLO('yolov8x.pt') # 加载 extra-large 版本 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

到点就困告

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值