如何配置 Ultralytics YOLO11 的环境
前言
在 2024 年的 11 月末,Ultralytics 悄然进入 8.3 时代,与之而来的便是 YOLO11 的发布。根据 Ultralytics 官方在 COCO 数据集上的测试,YOLO11 与它的前辈 YOLOv8 相比,$ mAP^{50-95}_{val} $ 拥有近 3% 的提升,而参数量下降了 22%。最重要的是,YOLO11 依然支持多种视觉任务,包括分类、(定向)目标检测、姿态/关键点检测与实例分割。因此可以认为,YOLO11 在保持了与 YOLOv10 相当的精度与速度的同时,支持更多的视觉任务。
本文将介绍如何在 Ubuntu 22.04.5 LTS 上安装最新版本的 Ultralytics,并测试安装与推理。
安装前准备
检查 Python
版本
首先,检查 Python
版本,请确保您的 Python
版本至少高于 Python
3.8。
python3 --version
细心的读者可能发现了,笔者在此处使用了虚拟环境。的确,笔者使用 Miniconda 作为虚拟环境的管理器,并且创建了一个名为 yolo11_devel
的环境,Python
版本为 3.9.21。若您的系统仍在使用系统 Python
解释器,不必担心,配置流程与使用了虚拟环境一致,满足 Ultralytics 的最低依赖即可。但笔者还是强烈建议在 Python
项目中使用虚拟环境来管理软件包依赖,因为系统 Python
环境与依赖一旦混乱,或对系统造成不可挽回的后果。
更新 pip 包管理器
使用以下命令来更新 pip 包管理器,以便后面获取最新的 Ultralytics:
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
由于 YOLO11 需要至少 PyTorch 1.8.0,因此请访问 PyTorch官网:历史版本 以查找适合您的系统且不低于 v1.8.0 的 PyTorch 版本。
以笔者为例,由于先前已安装 CUDA ToolKit 11.7,因此选择了 PyTorch v2.0.1:
向下划动,在“Wheel”一栏中,找到下图所示的命令并粘贴至终端中运行,即可自动完成 PyTorch 的安装与配置。
- 带有CUDA加速的 PyTorch v2.0.1:
pip install torch==2.0.1 torchvision==0.15.2 torchaudio==2.0.2
- 使用 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
在终端中运行命令,等待下载即可,请勿中途打断或改变任何 Python
环境相关的内容。安装完成后,在无报错的情况下控制台将如图所示:
安装完成后,请在终端输入 python
或 python3
,运行以下 Python
语句以测试安装:
import torch
print (torch.__version__) # CUDA 版应为 2.0.1+cu117,CPU 版为 2.0.1
print(torch.cuda.is_available()) # CUDA 版应为 True
当然,笔者在此处显示的 Pytorch 版本仍然是 2.0.1 而非 2.0.1+cu117,因为笔者最早实际上是使用 Miniconda 安装的。只要 print(torch.cuda.is_available())
的结果为 True
,那么就说明当前 PyTorch 支持 GPU 加速。
安装 ONNX Runtime 和 ONNX
若您需要 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'
可能会有读者遇到以下情况:当运行了 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 更高,因此可以选择 NumPy 1.23.5 版本,使用 pip 包管理器安装即可。
但是,若您当前系统中存在 NumPy 的编译时依赖,比如说 OpenCV 的 C++
源码编译安装时,指定了某 NumPy 版本的头文件目录,那么请尽量不要使用 pip 包管理器随意更改 NumPy 版本,或至少尽量保持当前使用的 NumPy 版本与其它组件编译时的版本相当,以避免一些不可预知的错误。对于 NumPy 的编译时依赖,比如说 OpenCV 的编译与安装细则,请参阅 如何配置 OpenCV 的开发环境 一文。
pip install numpy==1.23.5
安装 YOLO11
检查早期版本的 Ultralytics 安装
由于 YOLO 家族由不同的开发者与研究人员所发行、推进,因此不同的 YOLO 或 Ultralytics 版本在同一个 Python
解释器中可能会出现冲突,比如说 Ultralytics - THU-MIG YOLOv10 与 Ultralytics YOLO11 之间。因此,需要先使用 pip 包管理器卸载所有早期的 Ultralytics 版本,以保证一个 Python
解释器中仅存在一个 Ultralytics:
pip uninstall ultralytics
克隆仓库
在终端中,使用以下 Git 命令以克隆 Ultralytics YOLO11 的仓库:
git clone https://github.com/ultralytics/ultralytics.git
笔者将克隆下来的仓库更名为 yolo11
,然后在终端中切换到 YOLO11 的仓库,安装 YOLO11 所需依赖。可以注意到,pyproject.toml
中的大部分重要组件的版本与我们先前安装的版本一致,如 PyTorch 版本在 1.8.0 以上,TorchVision 在 0.9.0 以上。
请注意:若先前已经编译安装 OpenCV 且生成了 OpenCV-Python,请将 pyproject.toml
中 dependencies
数组里的 "opencv-python>=4.6.0"
注释掉,避免通过 pip 包管理器安装的使用 CPU 计算的 OpenCV-Python 将编译生成的 OpenCV-Python 覆盖。若仍未安装 OpenCV-Python 或者先前就使用了 pip 包管理器安装过 OpenCV-Python,则无需理会。
修改并保存后,返回终端,使用以下命令来安装:
pip install .
pip 包管理器与 Setup Tools 会自动处理它与其它包之间的依赖关系的,只需等待它自动下载并安装即可,若一切正常,则成功安装后控制台将如图所示:
当然,也可以使用可编辑的模式进行安装,即使用 pip install -e .
,但鉴于大多数人不会配置开发 IDE 且不需要改动 Ultralytics 源代码,因此本文对可编辑安装与 IDE 的开发配置不做过多叙述,未来会单独出一篇博客来讲述如何安装并编辑它们。
完成安装后,我们可从网上随便下载一张图片,放在某个目录下。例如,笔者将一张包含人与巴士的图片放在 ~/Images/
下,并从 YOLO11 的 GitHub 仓库中下载了 yolo11s.pt
模型文件到 yolo11/weights/
下。若 yolo11/
下暂无该目录,请手动创建。在终端中,使用以下命令来进行推理测试:
yolo detect predict model=yolo11s.pt source=/home/anawaert/Images/bus.jpg
最后,打开 yolo11/runs/detect/predict/
,即可看到推理的结果:
总结
由于 YOLO11 同样由 Ultralytics YOLOv8 演化而来,因此在配置它的时候会让我们感到非常熟悉。后续,Anawaert 同样也将持续更新 YOLO11 的训练集标注、模型训练,欢迎关注 Anawaert Blog。若您有其它的想法或 YOLO11 安装技巧,欢迎在下方评论区留言分享。