Connect with us

人工智能

解析YOLOv8:Ultralytics的病毒式计算机视觉杰作

mm
Blog featured image for YOLOv8

直到现在,使用计算机视觉模型在图像中进行物体检测由于处理时间的原因,存在几个秒的延迟,这阻碍了其在自动驾驶等领域的实际应用。然而,Ultralytics发布的YOLOv8计算机视觉模型打破了这种延迟。新的模型可以实时检测物体,具有无与伦比的准确性和速度,使其在计算机视觉领域广受欢迎。

本文探讨YOLOv8、其功能以及如何通过其开源Github仓库对其进行微调和创建自己的模型。

YOLOv8解释

YOLOv8-Ultralytics

YOLO(You Only Live Once)是一种流行的计算机视觉模型,能够检测和分割图像中的物体。该模型已经历了多次更新,YOLOv8标志着其第8个版本。

目前,YOLOv8在前几版本的基础上引入了强大的新功能和改进,实现了图像和视频数据的实时物体检测,具有增强的准确性和精度。

从v1到v8:简要历史

Yolov1: 2015年发布的第一个YOLO版本是一种单阶段物体检测模型。其特点包括模型读取整个图像以预测每个边界框,在一次评估中。

Yolov2: 2016年发布的下一个版本,在PASCAL VOC和COCO等基准测试中表现出色,运行速度快(67-40 FPS)。它还可以准确检测超过9000个物体类别,即使具有有限的特定检测数据。

Yolov3: 2018年发布的Yolov3引入了新的特性,如更有效的骨干网络、多个锚点和空间金字塔池化用于多尺度特征提取。

Yolov4: 2020年发布的Yolov4引入了新的Mosaic数据增强技术,提供了改进的训练能力。

Yolov5: 2021年发布的Yolov5添加了强大的新功能,包括超参数优化和集成实验跟踪。

Yolov6: 2022年发布的Yolov6将模型开源,以促进社区驱动的开发。引入了新的特性,如新的自我蒸馏策略和锚点辅助训练(AAT)策略。

Yolov7: 同年(2022年)发布的Yolov7在速度和准确性方面改进了现有模型,并且是当时发布的最快的物体检测模型。

什么使YOLOv8脱颖而出?

Image showing vehicle detection

YOLOv8的无与伦比的准确性和高速使其在计算机视觉模型中脱颖而出。这是一个值得注意的成就,因为物体现在可以在实时中被检测,而不会有延迟,就像在以前的版本中一样。

但除此之外,YOLOv8还具有强大的功能,包括:

  1. 可定制的架构: YOLOv8提供了一个灵活的架构,开发人员可以根据其特定需求进行定制。
  2. 自适应训练: YOLOv8的新自适应训练能力,如训练期间的损失函数平衡和技术,提高了学习率。例如,Adam,促进了更好的准确性、更快的收敛和整体更好的模型性能。
  3. 高级图像分析: 通过新的语义分割和类别预测能力,模型可以检测活动、颜色、纹理,甚至物体之间的关系,除了其核心的物体检测功能。
  4. 数据增强: 新的数据增强技术有助于解决图像变异的方面,例如低分辨率、遮挡等,在现实世界的物体检测场景中,条件并不理想。
  5. 骨干支持: YOLOv8提供了对多个骨干的支持,包括CSPDarknet(默认骨干)、EfficientNet(轻量级骨干)和ResNet(经典骨干),用户可以从中选择。

用户甚至可以通过用其他与YOLOv8的输入和输出维度兼容的CNN架构替换CSPDarknet53来定制骨干。

训练和微调YOLOv8

YOLOv8模型可以被微调以适应某些用例,也可以从头开始训练以创建一个专用模型。有关训练程序的更多详细信息可以在官方文档中找到。

让我们探索如何执行这两种操作。

使用自定义数据集微调YOLOV8

微调操作加载一个预先存在的模型,并使用其默认权重作为训练的起点。直观地说,模型记住了所有以前的知识,微调操作通过调整权重添加新的信息。

YOLOv8模型可以使用Python代码或通过命令行界面(CLI)进行微调。

1. 使用Python微调YOLOv8模型

首先,将Ultralytics包导入代码。然后,使用以下代码加载要训练的自定义模型:

首先,从官方发行版安装Ultralytics库。

# 从PyPI安装ultralytics包
pip install ultralytics

接下来,在Python文件中执行以下代码:

from ultralytics import YOLO

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

# 在MS COCO数据集上训练模型
results = model.train(data=’coco128.yaml’, epochs=100, imgsz=640)

默认情况下,代码将使用COCO数据集训练模型100个epoch。然而,您也可以配置这些设置以设置大小、epoch等,在YAML文件中。

一旦您使用自己的设置和数据路径训练模型,请监视进度,测试和调整模型,并不断重新训练,直到达到所需的结果。

2. 使用CLI微调YOLOv8模型

要使用CLI训练模型,请在命令行中运行以下脚本:

yolo train model=yolov8n.pt data=coco8.yaml epochs=100 imgsz=640

CLI命令加载预训练的`yolov8n.pt`模型,并在`coco8.yaml`文件中定义的数据集上进一步训练它。

使用YOLOv8创建自己的模型

基本上有两种方法可以使用YOLO框架创建自定义模型:

  • 从头开始训练: 这种方法允许您使用预定义的YOLOv8架构,但不会使用任何预训练权重。训练将从头开始。
  • 自定义架构: 您可以调整默认的YOLO架构,并从头开始训练新的结构。

这两种方法的实现保持相同。要从头开始训练YOLO模型,请运行以下Python代码:

from ultralytics import YOLO

# 加载模型
model = YOLO(‘yolov8n.yaml’) # 从YAML文件构建一个新模型

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

注意,这次我们加载了一个`.yaml`文件,而不是`.pt`文件。YAML文件包含模型的架构信息,没有加载任何权重。训练命令将从头开始训练这个模型。

要训练自定义架构,您必须在一个`.yaml`文件中定义自定义结构,类似于上面的`yolov8n.yaml`。然后,您可以加载此文件并使用上述相同的代码训练模型。

要了解更多关于使用AI进行物体检测的信息,并随时了解最新的AI趋势,请访问unite.ai

Haziqa 是一名具有丰富经验的数据科学家,擅长为 AI 和 SaaS 公司撰写技术内容。