如何配置 Ultralytics - THU-MIG YOLOv10 的环境

在 Ubuntu 20.04.6 LTS 中配置 YOLOv10 的环境,并使用命令行的方式检验安装

由 Anawaert 于 2024-07-11 发布   

概述

  截至 2024 年 7 月,YOLO 家族已有至少 10 代成员。而在数周之前,由清华大学多媒体智能技术实验室主导的团队在 Ultralytic YOLOv8 的基础上,创造出了最新的 YOLOv10,它的网络结构进行了一些颇具创造力的创新——采用了无 NMS 训练以降低延迟,同时具有增强的模型功能与整体化的模型设计;这使得 YOLOv10 的推理速度与精度达到了前所未有的高度。正因如此,为了训练一个用于目标检测的高性能、高精度模型,本文将介绍 YOLOv10 的环境配置,并测试安装与推理。

安装流程

安装前准备

检查 Python 版本

  首先,检查 Python 版本,请确保您的 Python 版本至少高于 Python 3.8

python3 --version

Python Virtual Environment

  请注意:YOLOv10 中的 安装需求 给出的 SciPy 版本为 SciPy 1.13.0,而 SciPy 1.13.x 又需要至少 Python 3.9,但 YOLOv10 的 项目配置 又仅需 SciPy 1.4.1。经过笔者实测,Python 3.8.10 也同样可以完成 YOLOv10 的安装,但是 需要将SciPy版本降级至1.11.x。若您不是为了与其它计算机视觉/深度学习组件兼容而被迫使用 Python 3.8,请尽量使用 Python 3.9 或更高的 Python 版本

检查 pip 包管理器的版本

  由于 YOLOv10 较新,为了避免安装其依赖时,出现因 pip 包管理器版本过低而导致无法安装最新 Python 模块的问题,请运行以下命令来更新您的 pip 包管理器版本至最新:

python3 -m pip install --upgrade pip

  

检查 NVIDIA GPU 驱动、CUDA ToolKit 与 cuDNN 的安装(可选)

  重要提示:由于 pip 包管理器在安装带有 CUDA 加速的 PyTorch 时会自动安装和配置 CUDA ToolKit,因此若您已安装 NVIDIA GPU 驱动但仍未安装 CUDA ToolKit 与 cuDNN 模块,可跳过本节,在下一节直接使用 pip 包管理器进行安装。若您仍未安装 NVIDIA GPU 驱动,请参阅站内文章:如何在 Linux 上安装 GPU 驱动,本文不予赘述。若您使用 CPU 进行计算,那么也可以跳过本节内容,在下一节中安装使用 CPU 计算的 PyTorch。

安装 PyTorch

  由于 YOLOv10 需要至少 PyTorch 1.8.0,且其 安装需求 中写明需要 PyTorch 2.0.1,因此请访问 PyTorch官网:历史版本 以查找适合您的系统且不低于 v1.8.0 的 PyTorch 版本。

  以笔者这台计算机为例,由于先前已安装 CUDA ToolKit 11.7,因此可选择 PyTorch v2.0.1:

Select PyTorch Version

  向下划动,在“Wheel”一栏中,找到下图所示的命令并粘贴至终端中运行,即可自动完成 PyTorch 的安装与配置。

  • 带有CUDA加速的 PyTorch v2.0.1:
pip install torch==2.0.1 torchvision==0.15.2 torchaudio==2.0.2

DownLoad PyTorch+cu117

  • 使用 CPU 计算的 PyTorch v2.0.1:
pip install torch==2.0.1 torchvision==0.15.2 torchaudio==2.0.2 --index-url https://download.pytorch.org/whl/cpu

Download PyTorch+cpu

  在终端中运行命令,等待下载即可,请勿中途打断或改变任何 Python 环境相关的内容:

Install PyTorch Command


Installed PyTorch Successfully

  安装完成后,请在终端输入 pythonpython3,运行以下 Python 语句以测试安装:

import torch
print (torch.__version__)  # CUDA版应为 2.0.1+cu117,CPU 版为 2.0.1
print(torch.cuda.is_available())  # CUDA 版应为 True

Verify PyTorch Installation

安装 ONNX Runtime

  若您需要 CUDA 加速的 ONNX Runtime,且 CUDA ToolKit 的版本为 11.x,可在终端使用如下命令进行安装 1.18.0 版本的 ONNX Runtime:

pip install onnxruntime-gpu==1.18.0

  若 CUDA 版本为 12.x,则应当使用如下命令:

pip install onnxruntime-gpu==1.18.0 --extra-index-url https://aiinfra.pkgs.visualstudio.com/PublicPackages/_packaging/onnxruntime-cuda-12/pypi/simple/

  当然,CPU 版本的安装命令为:

pip install onnxruntime==1.18.0

  同样,在 python 中检查 ONNX Runtime 的安装情况:

import onnxruntime as ort
print(ort.__version__)
ort.get_device()  # CUDA版为'GPU',CPU版为'CPU'

Verify ONNX Runtime Installation

  可能会有读者遇到以下情况:当运行了 import onnxruntime as ort 后出现了报错。仔细阅读报错内容,发现是 NumPy 版本过高,2.x 的 NumPy 不兼容 1.x 的 NumPy。此时,我们手动将 NumPy 版本降低即可。

  请注意:手动降低 NumPy 版本时务必留意当前系统中 ONNX Runtime、OpenCV-Python 等其它依赖于 NumPy 的组件对 NumPy 版本的最低要求!以笔者为例,ONNX Runtime 对 NumPy 的最低要求为 1.21.6,OpenCV-Python 4.9.0 对 NumPy 的最低要求为 1.20.3,取交集即可选择 NumPy 1.22.x 或 1.23.x 更高,因此可以选择 1.23.5 版本,使用 pip 包管理器安装即可。

  但是,若您当前系统中存在 NumPy 的编译时依赖,比如说 OpenCV 的 C++ 源码编译安装时,指定了某 NumPy 版本的头文件目录,那么请尽量不要使用 pip 包管理器随意更改 NumPy 版本,或至少尽量保持当前使用的 NumPy 版本与其它组件编译时的版本相当,以避免一些不可预知的错误。对于 NumPy 的编译时依赖,比如说 OpenCV 的编译与安装细则,请参阅 如何配置 OpenCV 的开发环境 一文。

pip install numpy==1.23.5

Install NumPy 1.23.5

安装 YOLOv10

检查早期版本的 Ultralytics 安装

  由于 YOLO 家族由不同的开发者与研究人员所发行、推进,因此不同的 YOLO 或 Ultralytics 版本在同一个 Python 解释器中可能会出现冲突,比如说 Ultralytics - THU-MIG YOLOv10 与 Ultralytics YOLOv8 之间。因此,需要先使用 pip 包管理器卸载所有早期的 Ultralytics 版本,以保证一个 Python 解释器中仅存在一个 Ultralytics:

pip uninstall ultralytics

克隆仓库

  在终端中,使用以下 Git 命令以克隆 YOLOv10 的仓库:

git clone https://github.com/THU-MIG/yolov10.git

  切换到 YOLOv10 的仓库中,安装 YOLOv10 所需依赖。可以注意到,requirements.txt 中的大部分重要组件的版本与我们先前安装的版本一致,如 PyTorch 版本为 2.0.1,ONNX Runtime 为 1.18.x。

  请注意:若您先前已经编译安装 OpenCV 且生成了 OpenCV-Python,请将安装需求中的“opencv-python==4.9.0.80”注释掉,避免通过 pip 包管理器安装的使用 CPU 计算的 OpenCV 将使用 GPU 加速计算的 OpenCV 覆盖

  确定 requirements.txt 中不包含我们已经安装过的依赖或组件后,方可输入下面的命令进行安装:

cd ./yolov10
pip install -r requirements.txt

Install Requirements.txt


Install Requirements.txt Successfully

  使用以下命令来安装当前 Ultralytics 模块:

pip install -e .

  可能有的朋友会发现,通过上述具有 -e 参数的命令安装的 Ultralytics 模块可能在一些 IDE 中无法被正确识别导入,如 JetBrains PyCharm Community 与 Visual Studio Code,这是因为在上述 IDE 中,我们没有对解释器的包路径进行正确设置,导致 IDE 无法知悉我们从本地以可编辑的方式安装了一个 Python 包,但是代码是可以运行的。因此,我们也可以使用非可编辑参数的命令,使得上述IDE能正确识别导入:

pip install .

  YOLOv10 官方推荐的是使用 -e 可编辑安装参数进行安装,但由于多数人不会对 YOLOv10 项目本身进行更改与调试,因此笔者在此处更推荐使用 pip install . 的方式进行安装,您可以根据后续实际情况进行调整。

Installing Ultralytics

  完成安装后,我们可从网上随便下载一张图片,放在某个目录下。例如,笔者将一张包含人与巴士的图片放在用户文件夹下,并从 YOLOv10 的 GitHub 仓库中下载了 yolov10s.pt 模型文件到 yolov10/weights/ 下,若 yolov10/ 下暂无该目录,请手动创建。在终端中,使用以下命令来进行推理测试:

yolo detect predict model=yolov10s.pt source=/home/owen/bus.jpg

Test YOLO Prediction

  最后,打开 yolov10/runs/detect/predict/,即可看到推理的结果:

Prediction Result

总结

  由于 YOLOv10 由 Ultralytics YOLOv8 演化而来,但又非常新,仍处于不断完善与发展的阶段,因此在配置它的时候,YOLOv10 会让我们感到既熟悉又陌生 —— 熟悉在它与 YOLOv8 基本上相通,许多处理流程与使用方法都非常接近;陌生在某些配置需要自己探索与调整,不像 YOLOv8 一般“打包好了,开箱即用”。后续,Anawaert 将更新 YOLOv10 的训练集标注、模型训练,欢迎关注 Anawaert Blog。若您有其它的想法或 YOLOv10 安装技巧,欢迎在下方评论区留言分享。