AI 模型与平台

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

mm
Blog featured image for YOLOv8

直到现在,使用计算机视觉模型在图像中进行对象检测仍然面临着几个秒的延迟问题,这是由于处理时间造成的。这种延迟阻碍了在自动驾驶等用例中的实际采用。然而,Ultralytics发布的YOLOv8计算机视觉模型已经突破了处理延迟。新的模型可以实时检测对象,具有无与伦比的准确性和速度,使其在计算机视觉领域广泛流行。

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

Yolov8解释

YOLOv8-Ultralytics

YOLO(你只活一次)是一种流行的计算机视觉模型,能够检测和分割图像中的对象。该模型已经经过多次更新,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脱颖而出?

显示车辆检测

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。然而,您也可以在YAML文件中配置这些设置以设置大小、epoch等。
一旦您使用自己的设置和数据路径训练模型,请监控进度,测试和微调模型,并继续重新训练,直到达到所需的结果。

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 公司撰写技术内容。