赞
踩
对象检测是一项计算机视觉任务,涉及识别和定位图像或视频中的对象。它是许多应用的重要组成部分,例如自动驾驶汽车、机器人和视频监控。
多年来,已经开发了许多方法和算法来查找图像中的对象及其位置。卷积神经网络对于此类任务有着非常好的性能和质量。
用于此任务的最流行的神经网络之一是 YOLO,由 Joseph Redmon、Santosh Divvala、Ross Girshick 和 Ali Farhadi 在 2015 年在他们著名的研究论文“You Only Look Once: Unified, Real-Time Object Detection”中创建。
从那时起,YOLO 已经出现了相当多的版本。最近的版本可以做的不仅仅是对象检测,还可做对象分割、对象追踪等、姿势识别等任务,本系列文章展示了如何使用YOLOv8。
本系列文章分为3个大模块:
YOLOv8可以解决分类、对象检测和图像分割问题。所有这些方法都以不同的方式检测图像或视频中的对象,如下图所示:
分类 | 检测 | 分割 |
---|---|---|
在本文中,讨论如何使用 YOLOv8 的对象检测, 我将创建一个 Web 应用程序,用它来检测图像上的交通灯和路标。在本系列的后续的其他文章中,我将介绍其他功能,包括图像分割。
从本质上讲,YOLOv8 是一组卷积神经网络模型,使用 PyTorch 框架。
此外,YOLOv8 提供了 Python API,我们也会利用Python在Jupyter环境中展示内容。
我们在Jupyter中建立对应的notebook,然后过运行以下命令在其中安装 YOLOv8 包:
!pip install ultralytics
接着,导入YOLO包:
from ultralytics import YOLO
现在一切准备就绪,可以创建模型了:
model = YOLO("yolov8m.pt")
YOLOv8 是一组神经网络模型,这些模型使用 PyTorch 创建和训练的,并导出到扩展名为 .pt
的文件。存在三种类型的模型,每种类型有 5 个不同尺寸的模型:
分类 | 检测 | 分割 | 种类 |
---|---|---|---|
yolov8n-cls.pt | yolov8n.pt | yolov8n-seg.pt | 纳米 |
yolov8s-cls.pt | yolov8s.pt | yolov8s-seg.pt | 小 |
yolov8m-cls.pt | yolov8m.pt | yolov8m-seg.pt | 中 |
yolov8l-cls.pt | yolov8l.pt | yolov8l-seg.pt | 大 |
yolov8x-cls.pt | yolov8x.pt | yolov8x-seg.pt | 巨大 |
使用的模型越大,可以实现的预测质量就越好,但运行速度就越慢。在本文中,我使用“yolov8m.pt”,它是用于对象检测的中型模型。
第一次运行此代码时,它将从 Ultralytics 服务器下载 yolov8m.pt
文件到当前文件夹,然后创建 YOLO 对象。现在可以使用该对象完成以下任务:
所有官方的 YOLOv8 模型均已在 COCO 数据集 上进行预训练,该数据集是 80 种类型的图像的大集合。
假设我们有张图像名为"cat_dog.jpg":
运行predict
以检测其上的所有对象:
results = model.predict("cat_dog.jpg")
predict
方法接受许多不同的输入类型,包括单个图像的路径、图像路径数组等。
通过模型运行输入后,它会返回每个输入图像的结果数组。由于我们只提供了单个图像,因此它返回一个包含单个项目的数组,可以通过以下方式提取该数组:
result = results[0]
result包含检测到的对象以及使用它们的属性。其中最重要的是 boxes
数组,包含有关图像上检测到的边界框的信息。您可以通过运行 len
函数来确定检测到的对象数量:
len(result.boxes)
当我运行此代码时,输出是“2”,这意味着检测到两个对象。
然后,循环或手动分析每个框。先看第一个:
box = result.boxes[0]
box 对
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。