人工智能
拆解 Yolov8:Ultralytics 的病毒式计算机视觉杰作
到目前为止,图像中的对象检测使用 计算机视觉模型 由于处理时间的原因,面临着几秒钟延迟的主要障碍。这种延迟阻碍了自动驾驶等用例的实际采用。不过,Ultralytics发布的YOLOv8计算机视觉模型突破了处理延迟。新模型可以以无与伦比的精度和速度实时检测物体,使其在计算机视觉领域广受欢迎。
本文探讨了 YOLOv8、其功能,以及如何通过其开源 Github 存储库微调和创建自己的模型。
Yolov8 解释
YOLO (You Only Live Once) 是一种流行的计算机视觉模型,能够 检测和分割图像中的对象。该模型经历了多次 过去的更新,YOLOv8 标志着第 8 个版本。
目前,YOLOv8 通过引入强大的新功能和改进来构建以前版本的功能。这使得图像和视频数据中的实时对象检测具有更高的准确性和精度。
从 v1 到 v8:简史
约洛夫1: YOLO 的第一个版本于 2015 年发布,作为单阶段目标检测模型推出。功能包括模型读取整个图像以在一次评估中预测每个边界框。
约洛夫2: 下一个版本于 2016 年发布,在 PASCAL VOC 和 COCO 等基准测试中呈现出顶级性能,并且可以高速运行(67-40 FPS)。即使具体检测数据有限,它也可以准确检测 9000 多个物体类别。
约洛夫3: Yolov2018 于 3 年推出,提出了新功能,例如更有效的主干网络、多个锚点以及用于多尺度特征提取的空间金字塔池化。
约洛夫4: 随着 Yolov4 于 2020 年发布,引入了新的 Mosaic 数据增强技术,该技术提供了改进的训练能力。
约洛夫5: Yolov2021 于 5 年发布,添加了强大的新功能,包括超参数优化和集成实验跟踪。
约洛夫6: 随着 6 年 Yolov2022 的发布,该模型被开源,以促进社区驱动的开发。引入了新功能,例如新的自蒸馏策略和锚定辅助训练(AAT)策略。
约洛夫7: Yolov2022 于 7 年同年发布,在速度和准确性方面改进了现有模型,是发布时最快的物体检测模型。
是什么让 YOLOv8 脱颖而出?
YOLOv8无与伦比的准确性和高速度使计算机视觉模型从之前的版本中脱颖而出。这是一项重大成就,因为现在可以毫无延迟地实时检测对象,与以前的版本不同。
但除此之外,YOLOv8 还具有强大的功能,其中包括:
- 可定制的架构: YOLOv8 提供了灵活的架构,开发人员可以进行定制以满足他们的特定要求。
- 适应性训练: YOLOv8新的自适应训练功能,例如训练过程中的损失函数平衡和技术,提高了学习率。以 Adam 为例,它有助于提高准确性、加快收敛速度以及提高整体模型性能。
- 高级图像分析: 通过新的语义分割和类别预测功能,除了核心对象检测功能外,该模型还可以检测对象之间的活动、颜色、纹理甚至关系。
- 数据扩充: 新的数据增强技术有助于解决现实世界中条件不理想的物体检测情况下图像变化的问题,例如低分辨率、遮挡等。
- 骨干支撑: YOLOv8提供了对多种骨干网的支持,包括CSPDarknet(默认骨干网)、EfficientNet(轻量级骨干网)和ResNet(经典骨干网),供用户选择。
用户甚至可以通过将 CSPDarknet53 替换为与 YOLOv8 输入和输出维度兼容的任何其他 CNN 架构来自定义主干网。
训练和微调 YOLOv8
YOLOv8 模型可以进行微调以适应某些用例,也可以完全从头开始训练以创建专门的模型。有关培训程序的更多详细信息,请参阅 官方文件.
让我们探讨一下如何执行这两项操作。
使用自定义数据集微调YOLOV8
微调操作加载预先存在的模型并使用其默认权重作为训练的起点。直观地说,模型会记住所有先前的知识,并且微调操作通过调整权重来添加新信息。
YOLOv8 模型可以使用 Python 代码或通过命令行界面 (CLI) 进行微调。
1. 使用Python微调YOLOv8模型
首先将 Ultralytics 包导入到您的代码中。然后,使用以下代码加载要训练的自定义模型:
首先,安装官方发行版的 Ultralytics 库。
# 从 PyPI 安装 ultralytics 包 pip 安装 ultralytics |
接下来,在 Python 文件中执行以下代码:
从 ultralytics 导入 YOLO # 加载模型 # 在 MS COCO 数据集上训练模型 |
默认情况下,代码将使用 COCO 数据集训练模型 100 个时期。但是,您还可以配置这些设置以在 YAML 文件中设置大小、纪元等。
使用您的设置和数据路径训练模型后,监控进度、测试和调整模型,并继续重新训练,直到达到您想要的结果。
2. 使用 CLI 微调 YOLOv8 模型
要使用 CLI 训练模型,请在命令行中运行以下脚本:
yolo 训练模型=yolov8n.pt 数据=coco8.yaml epochs=100 imgsz=640 |
CLI 命令加载预训练的“yolov8n.pt”模型,并在“coco8.yaml”文件中定义的数据集上进一步训练它。
使用 YOLOv8 创建您自己的模型
使用 YOLO 框架创建自定义模型基本上有两种方法:
- 从头开始训练: 这种方法允许您使用预定义的 YOLOv8 架构,但不会使用任何预先训练的权重。培训将从头开始。
- 定制架构: 您调整默认的 YOLO 架构并从头开始训练新结构。
这两种方法的实现保持相同。要从头开始训练 YOLO 模型,请运行以下 Python 代码:
从 ultralytics 导入 YOLO # 加载模型 # 训练模型 |
请注意,这次我们加载了“.yaml”文件而不是“.pt”文件。 YAML 文件包含模型的架构信息,并且不加载任何权重。训练命令将从头开始训练该模型。
要训练自定义架构,您必须在类似于上面的“yolov8n.yaml”的“.yaml”文件中定义自定义结构。然后,加载此文件并使用与上面相同的代码训练模型。
要了解有关使用 AI 进行物体检测的更多信息并了解最新的 AI 趋势,请访问 团结.ai.