使用 YOLOv5 和 PyTorch PlatoBlockchain 数据智能在 Python 中进行对象检测推理。 垂直搜索。 哎。

使用 YOLOv5 和 PyTorch 在 Python 中进行对象检测推理

介绍

目标检测是计算机视觉中的一个大领域,也是计算机视觉“在野外”更重要的应用之一。 一方面,它可以用来构建在环境中导航代理的自主系统——无论是执行任务的机器人还是自动驾驶汽车,但这需要与其他领域的交叉。 然而,异常检测(例如生产线上的缺陷产品)、在图像中定位对象、面部检测和对象检测的各种其他应用都可以在不与其他领域相交的情况下完成。

对象检测不像图像分类那样标准化,主要是因为大多数新开发通常是由个人研究人员、维护人员和开发人员完成的,而不是大型库和框架。 很难将必要的实用程序脚本打包到 TensorFlow 或 PyTorch 等框架中,并维护迄今为止指导开发的 API 指南。

这使得对象检测稍微复杂一些,通常更冗长(但并非总是如此),并且比图像分类更不易接近。 在生态系统中的主要好处之一是它为您提供了一种无需搜索有关良好实践、工具和使用方法的有用信息的方法。 使用对象检测——大多数人必须对该领域的景观进行更多的研究才能获得良好的把握。

对大众来说幸运的是——Ultralytics 围绕他们的 YOLOv5 实现开发了一个简单、非常强大和漂亮的对象检测 API。

在这个简短的指南中,我们将在 Python 中执行对象检测,使用由 Ultralytics 在 PyTorch 中构建的 YOLOv5,使用一组在 MS COCO 上训练的预训练权重。

YOLOv5

YOLO(你只看一次) 是一种方法论,也是为对象检测而构建的一系列模型。 自 2015 年成立以来,YOLOv1、YOLOv2 (YOLO9000) 和 YOLOv3 都是由同一作者提出的——并且深度学习社区在接下来的几年中继续推进开源。

Ultralytics 的 YOLOv5 是 PyTorch 中 YOLO 的第一个大规模实现,这使得它比以往任何时候都更易于访问,但 YOLOv5 获得如此立足点的主要原因还在于围绕它构建的精美简单且功能强大的 API。 该项目抽象出不必要的细节,同时允许可定制性,几乎所有可用的导出格式,并采用惊人的实践,使整个项目既高效又尽可能优化。 确实,它是开源软件实施之美的一个例子,以及它如何为我们生活的世界提供动力。

该项目在 MS COCO 上提供了预训练的权重,这是一个关于上下文对象的主要数据集,可用于基准测试和构建通用对象检测系统——但最重要的是,可用于将上下文对象的一般知识转移到自定义数据集。

使用 YOLOv5 进行目标检测

在继续之前,请确保您有 torchtorchvision 安装:

! python -m pip install torch torchvision

YOLOv5 有详细的、严肃的文档和精美简单的 API,如 repo 本身和以下示例所示:

import torch

model = torch.hub.load('ultralytics/yolov5', 'yolov5s')
img = 'https://i.ytimg.com/vi/q71MCWAEfL8/maxresdefault.jpg'  
results = model(img)
fig, ax = plt.subplots(figsize=(16, 12))
ax.imshow(results.render()[0])
plt.show()

的第二个论点 hub.load() 方法指定我们想要使用的权重。 通过选择之间的任何地方 yolov5nyolov5l6 – 我们正在加载 MS COCO 预训练的权重。 对于定制模型:

model = torch.hub.load('ultralytics/yolov5', 'custom', path='path_to_weights.pt')

在任何情况下——一旦你通过模型传递输入,返回的对象包括有用的方法来解释结果,我们选择 render() 它们,它返回一个 NumPy 数组,我们可以将其放入 imshow() 称呼。 这会产生一个很好的格式:

将结果另存为文件

您可以将推理结果保存为文件,使用 results.save() 方法:

results.save(save_dir='results')

如果它不存在,这将创建一个新目录,并将我们刚刚绘制的相同图像保存为文件。

裁剪对象

您还可以决定将检测到的对象裁剪为单个文件。 在我们的例子中,对于检测到的每个标签,可以提取许多图像。 这很容易通过 results.crop() 方法,它重新创建了一个 runs/detect/ 目录,与 expN/crops (其中 N 每次运行都会增加),其中为每个标签创建一个带有裁剪图像的目录:

results.crop()
Saved 1 image to runs/detect/exp2
Saved results to runs/detect/exp2

[{'box': [tensor(295.09409),
   tensor(277.03699),
   tensor(514.16113),
   tensor(494.83691)],
  'conf': tensor(0.25112),
  'cls': tensor(0.),
  'label': 'person 0.25',
  'im': array([[[167, 186, 165],
          [174, 184, 167],
          [173, 184, 164],

您还可以使用以下方法验证输出文件结构:

查看我们的 Git 学习实践指南,其中包含最佳实践、行业认可的标准以及随附的备忘单。 停止谷歌搜索 Git 命令,实际上 学习 它!

! ls runs/detect/exp2/crops


! ls runs/detect/exp2/crops

对象计数

默认情况下,当您执行检测或打印 results 对象 - 您将获得为此执行推理的图像数量 results 对象(YOLOv5 也适用于批量图像),其分辨率和检测到的每个标签的计数:

print(results)

结果是:

image 1/1: 720x1280 14 persons, 1 car, 3 buss, 6 traffic lights, 1 backpack, 1 umbrella, 1 handbag
Speed: 35.0ms pre-process, 256.2ms inference, 0.7ms NMS per image at shape (1, 3, 384, 640)

用脚本推理

或者,您可以运行检测脚本, detect.py,通过克隆 YOLOv5 存储库:

$ git clone https://github.com/ultralytics/yolov5 
$ cd yolov5
$ pip install -r requirements.txt

然后运行:

$ python detect.py --source img.jpg

或者,您可以提供 URL、视频文件、包含多个文件的目录的路径、仅匹配某些文件的路径中的 glob、YouTube 链接或任何其他 HTTP 流。 结果保存到 runs/detect 目录。

走得更远——计算机视觉的实用深度学习

你好奇的天性让你想走得更远? 我们建议查看我们的 套餐: “使用 Python 进行计算机视觉的实用深度学习”.

使用 YOLOv5 和 PyTorch PlatoBlockchain 数据智能在 Python 中进行对象检测推理。 垂直搜索。 哎。

另一个计算机视觉课程?

我们不会对 MNIST 数字或 MNIST 时尚进行分类。 他们很久以前就发挥了作用。 在让高级黑盒架构承担性能负担之前,太多的学习资源专注于基本数据集和基本架构。

我们想专注于 揭秘, 实际性, 理解, 直觉真实项目. 想学 形成一种 你可以有所作为? 我们将带您从大脑处理图像的方式到编写研究级的乳腺癌深度学习分类器,再到“产生幻觉”的深度学习网络,通过实际工作教您原理和理论,为您配备成为应用深度学习解决计算机视觉问题的专家的专业知识和工具。

里面是什么?

  • 视觉的首要原则以及如何教计算机“看”
  • 计算机视觉的不同任务和应用
  • 让您的工作更轻松的交易工具
  • 为计算机视觉寻找、创建和利用数据集
  • 卷积神经网络的理论与应用
  • 处理数据集中的域转移、共现和其他偏差
  • 迁移学习并利用他人的训练时间和计算资源为您谋取利益
  • 构建和训练最先进的乳腺癌分类器
  • 如何将健康的怀疑态度应用于主流思想并理解广泛采用的技术的含义
  • 使用 t-SNE 和 PCA 可视化 ConvNet 的“概念空间”
  • 公司如何使用计算机视觉技术取得更好结果的案例研究
  • 适当的模型评估、潜在空间可视化和识别模型的注意力
  • 执行领域研究,处理您自己的数据集并建立模型测试
  • 尖端架构、想法的发展、是什么让它们与众不同以及如何实现它们
  • KerasCV – 用于创建最先进的管道和模型的 WIP 库
  • 如何解析和阅读论文并自己实现它们
  • 根据您的应用选择型号
  • 创建端到端机器学习管道
  • 使用 Faster R-CNN、RetinaNets、SSD 和 YOLO 进行对象检测的景观和直觉
  • 实例和语义分割
  • 使用 YOLOv5 进行实时对象识别
  • 训练 YOLOv5 目标检测器
  • 使用 KerasNLP(行业强大的 WIP 库)使用 Transformers
  • 将 Transformers 与 ConvNet 集成以生成图像的标题
  • 深梦

结论

在这个简短的指南中,我们了解了如何使用 PyTorch 构建的 YOLOv5 执行对象检测。

时间戳记:

更多来自 堆栈滥用