当前位置:   article > 正文

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

yolov8 分类

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

本系列其他文章 

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

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

一.物体检测 

物体检测是 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 预训练模型,在目标数据集上进行微调。调整训练参数以达到最佳效果。

  1. from ultralytics import YOLO
  2. # Load a model
  3. model = YOLO("yolov8n.yaml") # build a new model from YAML
  4. model = YOLO("yolov8n.pt") # load a pretrained model (recommended for training)
  5. model = YOLO("yolov8n.yaml").load("yolov8n.pt") # build from YAML and transfer weights
  6. # Train the model
  7. results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
  • 结果评估:使用验证集评估模型的识别精度和速度。
  1. from ultralytics import YOLO
  2. # Load a model
  3. model = YOLO("yolov8n.pt") # load an official model
  4. model = YOLO("path/to/best.pt") # load a custom model
  5. # Validate the model
  6. metrics = model.val() # no arguments needed, dataset and settings remembered
  7. metrics.box.map # map50-95
  8. metrics.box.map50 # map50
  9. metrics.box.map75 # map75
  10. 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 模型。
  1. from ultralytics import YOLO
  2. # Load a model
  3. model = YOLO("yolov8n-cls.yaml") # build a new model from YAML
  4. model = YOLO("yolov8n-cls.pt") # load a pretrained model (recommended for training)
  5. model = YOLO("yolov8n-cls.yaml").load("yolov8n-cls.pt") # build from YAML and transfer weights
  6. # Train the model
  7. results = model.train(data="mnist160", epochs=100, imgsz=64)
  • 结果评估:使用包含分类标签的验证集评估模型的分类精度。
  1. from ultralytics import YOLO
  2. # Load a model
  3. model = YOLO("yolov8n-cls.pt") # load an official model
  4. model = YOLO("path/to/best.pt") # load a custom model
  5. # Validate the model
  6. metrics = model.val() # no arguments needed, dataset and settings remembered
  7. metrics.top1 # top1 accuracy
  8. 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 模型。

  1. from ultralytics import YOLO
  2. # Load a model
  3. model = YOLO("yolov8n-seg.yaml") # build a new model from YAML
  4. model = YOLO("yolov8n-seg.pt") # load a pretrained model (recommended for training)
  5. model = YOLO("yolov8n-seg.yaml").load("yolov8n.pt") # build from YAML and transfer weights
  6. # Train the model
  7. results = model.train(data="coco8-seg.yaml", epochs=100, imgsz=640)
  • 结果评估:使用包含分割掩码的验证集评估模型的分割精度。 
  1. from ultralytics import YOLO
  2. # Load a model
  3. model = YOLO("yolov8n-seg.pt") # load an official model
  4. model = YOLO("path/to/best.pt") # load a custom model
  5. # Validate the model
  6. metrics = model.val() # no arguments needed, dataset and settings remembered
  7. metrics.box.map # map50-95(B)
  8. metrics.box.map50 # map50(B)
  9. metrics.box.map75 # map75(B)
  10. metrics.box.maps # a list contains map50-95(B) of each category
  11. metrics.seg.map # map50-95(M)
  12. metrics.seg.map50 # map50(M)
  13. metrics.seg.map75 # map75(M)
  14. 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 模型。
  1. from ultralytics import YOLO
  2. # Load a model
  3. model = YOLO("yolov8n-pose.yaml") # build a new model from YAML
  4. model = YOLO("yolov8n-pose.pt") # load a pretrained model (recommended for training)
  5. model = YOLO("yolov8n-pose.yaml").load("yolov8n-pose.pt") # build from YAML and transfer weights
  6. # Train the model
  7. results = model.train(data="coco8-pose.yaml", epochs=100, imgsz=640)
  • 结果评估:使用包含关节点标注的验证集评估模型的姿态估计精度。
  1. from ultralytics import YOLO
  2. # Load a model
  3. model = YOLO("yolov8n-pose.pt") # load an official model
  4. model = YOLO("path/to/best.pt") # load a custom model
  5. # Validate the model
  6. metrics = model.val() # no arguments needed, dataset and settings remembered
  7. metrics.box.map # map50-95
  8. metrics.box.map50 # map50
  9. metrics.box.map75 # map75
  10. 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 模型。

  1. from ultralytics import YOLO
  2. # Load a model
  3. model = YOLO("yolov8n-obb.yaml") # build a new model from YAML
  4. model = YOLO("yolov8n-obb.pt") # load a pretrained model (recommended for training)
  5. model = YOLO("yolov8n-obb.yaml").load("yolov8n.pt") # build from YAML and transfer weights
  6. # Train the model
  7. results = model.train(data="dota8.yaml", epochs=100, imgsz=640)
  • 结果评估:使用包含 OBB 标注的验证集评估模型的 OBB 检测精度。
  1. from ultralytics import YOLO
  2. # Load a model
  3. model = YOLO("yolov8n-obb.pt") # load an official model
  4. model = YOLO("path/to/best.pt") # load a custom model
  5. # Validate the model
  6. metrics = model.val(data="dota8.yaml") # no arguments needed, dataset and settings remembered
  7. metrics.box.map # map50-95(B)
  8. metrics.box.map50 # map50(B)
  9. metrics.box.map75 # map75(B)
  10. metrics.box.maps # a list contains map50-95(B) of each category

六、总结

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

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/979866
推荐阅读
相关标签
  

闽ICP备14008679号