网站大量收购独家精品文档,联系QQ:2885784924

搭建Yolov8神经网络来进行物体检测的详尽教程!.docx

搭建Yolov8神经网络来进行物体检测的详尽教程!.docx

  1. 1、本文档共24页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

一、简介

通过这篇文章,我开始了一系列关于YOLOv8的教程--用于计算机视觉的最先进的人工神经网络。特别是,这个模型可以用来解决分类、物体检测和图像分割问题。所有这些方法都是用来检测图像或视频中的物体,但方式不同,如下所示。

为图像分类而创建和训练的神经网络确定图像上物体的类别,并返回其名称和这种预测的概率。例如,在左边的图像上,它返回了这是一只猫,这个预测的置信度是92%(0.92)。

对象检测的神经网络,除了对象类型和概率外,还返回对象在图像上的坐标:X、Y、宽度和高度,如第二张图像所示。此外,物体检测神经网络可以检测到图像上的几个物体及其边界框。

最后,除了物体类型和边界框之外,为图像分割而训练的神经网络还能检测物体的形状,如右图所示。

有许多不同的神经网络架构是为这些任务开发的,对于每一项任务,过去你都必须使用一个单独的网络。幸运的是,在YOLO创建之后,情况发生了变化。现在你可以使用一个单一的平台来解决所有这些问题。

在这篇文章中,我们将发现使用YOLOv8的物体检测。我将指导你如何创建一个网络应用,用它来检测图像上的交通灯和路标。在接下来的文章中,我将介绍其他功能,包括图像分割。

在接下来的章节中,我将展示创建一个物体检测器所需的所有具体步骤。按照这个步骤,在阅读结束时,你将会有一个工作的人工智能驱动的网络应用。

所以,请确保你的电脑上安装了Python和Jupyter笔记本,让我们开始吧。

二、开始使用yolov8

从技术上讲,YOLOv8是一组卷积神经网络模型,使用PyTorch框架创建和训练。

此外,YOLOv8软件包提供了一个单一的PythonAPI,可以使用相同的方法与所有这些模型一起工作。这就是为什么,要使用它,你需要一个运行Python代码的环境。我强烈建议使用Jupyter笔记本。

要使用PIP将YOLOv8安装到你的电脑上,在Jupyter笔记本中运行以下命令:

!pipinstallultralytics

进入全屏模式退出全屏模式

ultralytics?包中有一个YOLO?类,用于创建神经网络模型。

要访问它,请将其导入你的Python代码中:

fromultralyticsimportYOLO

进入全屏模式退出全屏模式

现在一切准备就绪,可以创建神经网络模型了:

model?=?YOLO(yolov8m.pt)

正如我之前写的,YOLOv8是一组神经网络模型。这些模型是用PyTorch创建和训练的,并导出为扩展名为.pt?的文件。有三种类型的模型存在,每种类型有5个不同大小的模型:

你选择的模型越大,你可以获得更好的预测质量,但它的工作速度会越慢。在本教程中,我将介绍物体检测,这就是为什么在前面的代码片段中,我选择了yolov8m.pt,这是一个用于物体检测的中等大小的模型。

当你第一次运行这段代码时,它将从Ultralytics服务器下载yolov8m.pt?文件到当前文件夹,然后,将构建model?对象。现在你可以训练这个model?,检测对象,并输出到生产中使用。对于所有这些任务,它有方便的方法:

train({pathtodatasetdescriptorfile})-用来训练图像数据集的模型。

predict({image})-用于对指定的图像进行预测,例如,检测所有物体的边界框,该模型可以在该图像上找到。

export({format})-用于将该模型从默认的PyTorch格式导出到指定的格式。

所有用于物体检测的YOLOv8模型已经在COCO数据集上进行了预训练,COCO数据集是一个由80种类型的图像组成的巨大集合。因此,如果你没有特别的需求,那么你可以按原样运行它,而不需要额外的训练。例如,你可以下载这张图片为cat_dog.jpg:

并运行predict?来检测上面的所有物体:

results?=?model.predict(cat_dog.jpg)

predict?方法接受许多不同的输入类型,包括一张图片的路径、一个图片的路径数组、著名的PILPython库的Image对象等。

在通过模型运行输入后,它为每个输入图像返回一个结果数组。因为我们只提供了一张图片,所以它返回一个只有一个项目的数组,你可以用这种方式提取:

result?=?results[0]

这个结果包含了检测到的对象和方便处理它们的属性。最重要的是boxes?数组,里面有检测到的图像上的边界框的信息。你可以通过运行len?函数来确定检测到多少个对象:

len(result.boxes)

当我运行这个函数时,我得到了2,这意味着有两个盒子被检测到,可能一个是狗,一个是猫。

然后,你可以在一个循环中分析每个盒子,或者手动分析。让我们得到第一个:

box?=?result.

文档评论(0)

外卖人-小何 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档