Skip to main content

Windows上的YOLOv5对象检测(分步教程)

本教程将指导你在具有PyTorch GPU支持的Windows系统上完成YOLOv5的安装和运行。其中将包含易于掌握的视频和Google Colab。
Created on April 16|Last edited on May 6
本报告是作者Dave Davies所写的"YOLOv5 Object Detection on Windows (Step-By-Step Tutorial)"的翻译



在这篇报告中,我们将分步骤介绍如何使用YOLOv5并在 Windows计算机上创建边界框。如有需要,你也可以直接前往 Colab章节
简而言之,如果你想学习如何在自己的Windows机器上安装和运行YOLO并进行对象检测的话,那就继续阅读;如果你是想直接上手看看它能做什么,可前往Colab章节。

章节



如果你是碰巧了解到YOLO,或者只是认为这样的边界框看起来很有趣的人(我就是这样走上这条路的),那么就先让我们来快速看看这是怎么回事。
点击此处直接前往代码和说明章节。

YOLO是什么?

YOLO的含义是“你只看一次”(You Only Look Once)。这也是使用单一卷积网络进行快速目标检测的框架名称。YOLO 的运行速度通常会比其他物体检测系统更快,因为其会即时地从整体视角查看图像,而不是逐个像素地进行扫描。
为了实现这一点,YOLO会将图像分解为网格,然后对网格化后每个部分进行分类和本地化(即:建立对象和结构)。然后其会预测应该在哪里放置边界框。在预测边界框时,YOLO采用了基于回归的算法,而不是基于分类的算法。
通常而言,基于分类的算法分两步完成:1. 选择感兴趣区域( Region Of Interest,ROI);2. 在选定的区域中应用卷积神经网络(convolutional neural network,CNN)以检测对象。
YOLO的回归算法将一次性预测整个图像的边界框,这使得其速度得到显著提升,并为系统的名称提供了一个十分机智的选项。
了解了这些之后,我们具体来看看。

完成设置

你需要安装:
  • Yolov5 Repository
  • Python 3.8(或更高版本)
  • PyTorch
  • CUDA
不用担心:我们接下来会对这些逐一进行说明。

安装YOLOv5

我们要做的第一件事就是安装YOLOv5。你可在此处的GitHub 库中获取。
如需获取文件:

在文件下载后,只需将其提取至所需的位置并继续。我们稍后再回来接着介绍YOLO。

安装Python

接下来我们需要安装Python。我们首先在这里下载最新版本。
如果你之前安装过其他版本,那就不要勾选“将 Python x.x 添加至 PATH 中”,我们会稍后对其进行手动指定:

快速地检查一下文件夹,我们会发现机器上安装了旧版本的 Python:

虽然 3.8版本也好用,但在这里我们还是选择使用 3.9,这样我们也可以介绍从3.8之前版本进行升级所需遵循的过程。
由于我们将使用Windows控制台,我们首先来检查一下版本情况:

控制台访问的是哪个版本的Python?

执行此操作的最简单方法是转到Windows资源管理器中的 Python目录,并在地址栏中键入“cmd”

点击回车,然后输入:
python
此时你将能够看到使用中的版本号:

如果你运行的是旧版本 Python,那么现在就需要前往设置编辑环境变量:

同时修改Path变量,指向最新版本的Python:

现在你应像我们之前做的那样在控制台中仔细检查设置,然后继续:

安装CUDA

现在是安装CUDA的时候了。
CUDA是NVDIA为其GPU提供的并行计算平台。简而言之,这是让机器能够并行计算多个部分的工具(这也是YOLO速度极快的重要原因)。我可以很确定地说,如果没有这一功能,实时边界框将无��谈起。
前往Nvidia CUDA工具包页面并选择适合你电脑的选项。例如,我的选项为:

下载完成后打开文件并进行安装:


你可能需要重启。重启之后我们来安装PyTorch。

安装PyTorch

PyTorch是目前最为流行的定义模型、运行参数(我们要涉及的内容)以及执行训练的机器学习框架。
当我写“最流行”几个字时,我是说真的:
与大多数机器学习框架一样,PyTorch会在 GPU 上运行计算和参数,这比在CPU上运行要快得多。但是你必须确保设置正确,所以现在我们来操作一下。

以Python模块的方式安装PyTorch

你可以在PyTorch上手页面中选择适合自己的选项。
例如,我的选项为:

现在我们要复制给出的代码:

然后在Windows资源管理器中打开Python/Scripts文件夹:

接下来在地址栏中输入“cmd”:

回车后将在该文件夹中打开控制台,此时即可粘贴从PyTorch 复制的代码。
我的代码(例)如下:
pip3 install torch==1.9.1+cu111 torchvision==0.10.1+cu111 torchaudio===0.9.1 -f https://download.pytorch.org/whl/torch_stable.html
控制台中出现了一些“已安装”通知,还有一些报错。但如果你是首次安装的话就不会出现这些问题。我们可以忽略这些。

现在我们需要安装一些额外的模块,这些模块可在 YOLOv5 要求中找到。
如需安装这些模块,只需打开包含已解压文件的 YOLOv5 文件夹,然后再次在地址栏中输入“cmd”并点击回车。

在控制台中我们将运行以下代码以安装必要模块:
pip install -r requirements.txt

注意:在此阶段中,你可能会收到需要安装 Visual Studio 的重大错误消息。如果出现此问题,可在这里下载。(该问题与 PyCOCOTools 有关)。
安装Visual Studio后,我们要再次在YOLO 文件夹的控制台中使用以下代码安装PyCOCOTools。
现在我们使用以下代码运行上述要求:
pip install -r requirements.txt
又完成了一项。

在你的网络摄像头中使用YOLOv5创建边界框

你等待的时刻终于到了。现在我们让这些正常运转并在你的网络摄像头中创建一些边界框吧。
在YOLOv5文件夹的控制台中输入以下代码:
python detect.py --source 0


如果你有多个网络摄像头,或是有应用程序对摄像头进行嗅探,那么可能需要对此数字进行修改。如果你只有一个摄像头,那么source值就会是 0,和例子中一样。
一小会儿后:

如果你想将其停止,只需在打开的窗口中点击一下即可。

在图像中使用YOLOv5创建边界框

如果你需要检测预先已存在于图像中的对象,只需将图像放在 OLO目录中的文件夹中即可。
我在YOLO文件夹中创建了一个名为“images”的目录。出于 SEO方面的考虑,我在此处的示例中采用了从谷歌媒体工具包中提取的一张照片:
谷歌咖啡馆
再次打开YOLO控制台,我们输入:
python detect.py --source images/google.jpg
这里需要将google.jpg替换为你自己的图像名称。
运行后你将看到:

前往其存储位置后...


在YouTube视频中使用YOLOv5创建边界框

假设你想在YouTube视频中创建边界框,或只是想检测一下视频中的对象,
那么我们就需要在YOLO目录中进一步安装几个模块。
首先运行:
pip install pafy
然后:
pip install youtube_dl
在安装了这些模块后,我们现在可以再次打开控制台到YOLO文件夹并输入:
python detect.py --source https://youtu.be/jNQXAC9IVRw
你也要将YouTube 网址替换为你自己的网址。为了举例,我选择了有史以来发布的首个 YouTube视频。它变成了:


YOLOv5模型、大小以及性能

默认情况下,YOLO会选择使用最小模型,因为这样在处理时所需要的资源会更少。上述的例子中也采用了这样的方式。
更大的模型通常会需要更强大的处理能力,但其准确度也会更高。你只需要自行定义即可。
在上述使用网络摄像头的对象检测示例中,默认代码为:
python detect.py --source 0
我们可以使用其他三种模型尺寸中的任何一种,只需将尺寸添加到代码末尾即可:
小型(默认)
python detect.py --source 0
中型
python detect.py --source 0 --weights yolov5m.pt
大型
python detect.py --source 0 --weights yolov5l.pt
最大
python detect.py --source 0 --weights yolov5x.pt
永远是功耗和性能方面的取舍。

YOLOv5对象检测的视频讲解

如果你是一名Weights & Biases YouTube频道订阅者的话,则可能已经看过以上详细的分步骤讲解。如果你还没有订阅该频道,那么我还是建议你现在就订阅一下,其中有很多优质的教程和活动等等。
如果你更喜欢跟着视频学习,这里有一段由W&B风趣幽默的 Ivan Goncharov进行的讲解。




正确优化你的YOLOv5实验

无论你是ML、CV新手还是只是想使用YOLOv5进行目标检测,建立良好的习惯并使用正确的工具都是非常有必要的。
所以请点击此处,只需5分钟即可了解如何通过Weights & Biases追踪自己的实验情况。
举几个你可以做的简单的例子:

使用边界框调试器在训练期间对验证数据模型预测进行可视化




记录训练和验证指标并轻松与实验追踪数据进行比较





使用W&B表格直观查看模型预测和数据集



如果你想了解更多关于使用Weights & Biases来增强训练过程的信息,那么这篇报告可能会有所帮助,也可以观看以下关于 YOLOv5训练的视频:



YOLOv5 Colab

或许你并不想安装这款软件,但又想直接上手试试。
无论如何Colab都是你的绝佳选择。
值得注意的是,Colab不适合用于实时对象检测,所以你将无法在网络摄像头等设备上设置。
不过这依然是上手尝试的好办法 :)


总结一下

如果你刚刚才开始自己的机器学习之路,那么YOLO将是非常值得一试的出发点。
如果你在这方面有些经验,但想要扩充计算机视觉方面的技能,那么希望你发现这是一个快速的起点。

收集和标记图像以在PyTorch中训练YOLOv5目标检测模型

做好准备迎接下一阶段了吗?
在第二部分中,我们介绍了如何收集和标记图像以在PyTorch中对YOLOv5对象检测模型进行训练。

推荐阅读


Iterate on AI agents and models faster. Try Weights & Biases today.