拓十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Ubuntu 22.04 安装 Miniconda、PyTorch 与 YOLOv8 并完成 CPU 推理

Ubuntu 22.04 安装 Miniconda、PyTorch 与 YOLOv8 并完成 CPU 推理

Ubuntu 22.04 安装 Miniconda、PyTorch 与 YOLOv8 并完成 CPU 推理

本文记录在 VMware Ubuntu 22.04 虚拟机中安装 Miniconda、PyTorch CPU 版和 Ultralytics YOLOv8,并使用 YOLOv8n 对示例图片进行目标检测的完整过程。

一、实验环境

项目配置
操作系统Ubuntu 22.04.5 LTS
虚拟机VMware Workstation
CPUIntel Core i5-13450HX
CPU 核心8 核
内存7.5 GiB
GPU无 NVIDIA GPU,仅 VMware SVGA
Python 环境Miniconda
PyTorch2.14.0+cpu
TorchVision0.29.0+cpu
TorchAudio2.11.0+cpu
Ultralytics8.4.168

由于虚拟机没有 NVIDIA 显卡直通,也没有安装 NVIDIA 驱动,因此这里安装的是PyTorch CPU 版本。

检查 NVIDIA 驱动:

nvidia-smi

如果提示:

nvidia-smi: not found

说明当前系统没有可用的 NVIDIA 驱动,此时应使用 CPU 版 PyTorch。


二、安装 Miniconda

1. 下载 Miniconda

cd ~ curl -fL --retry 3 \ -o /tmp/Miniconda3-latest-Linux-x86_64.sh \ https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh

2. 安装到用户目录

bash /tmp/Miniconda3-latest-Linux-x86_64.sh \ -b \ -p "$HOME/miniconda3"

3. 初始化 Bash

"$HOME/miniconda3/bin/conda" init bash

4. 禁止自动激活 base

为了避免影响 Vivado、ESP-IDF 和系统 Python,建议关闭 base 自动激活:

"$HOME/miniconda3/bin/conda" config --set auto_activate_base false

重新加载配置:

source ~/.bashrc

检查版本:

conda --version

本文安装结果:

conda 26.7.1

三、创建 PyTorch 虚拟环境

1. 关于 Conda 服务条款

较新版本的 Conda 在使用 Anaconda 默认源时,可能要求接受服务条款:

CondaToSNonInteractiveError: Terms of Service have not been accepted

如果不想使用 Anaconda 默认源,可以使用conda-forge:

conda create -n pytorch \ --override-channels \ -c conda-forge \ python=3.12 \ pip \ -y

如果使用默认源,则需要先接受对应的服务条款:

conda tos accept --override-channels --channel https://repo.anaconda.com/pkgs/main conda tos accept --override-channels --channel https://repo.anaconda.com/pkgs/r

本文使用conda-forge。

2. 激活环境

conda activate pytorch

检查 Python:

python --version

结果:

Python 3.12.14

3. 安装 CPU 版 PyTorch

由于当前没有 NVIDIA GPU,使用 PyTorch 官方 CPU 软件源安装:

python -m pip install \ torch torchvision torchaudio \ --index-url https://download.pytorch.org/whl/cpu

安装完成后检查:

python - <<'PY' import torch import torchvision import torchaudio print('torch:', torch.__version__) print('torchvision:', torchvision.__version__) print('torchaudio:', torchaudio.__version__) print('cuda_available:', torch.cuda.is_available()) PY

输出结果:

torch: 2.14.0+cpu torchvision: 0.29.0+cpu torchaudio: 2.11.0+cpu cuda_available: False

cuda_available: False表示当前使用的是 CPU 版本,这是正常的。


四、安装 Ultralytics YOLOv8

在pytorch环境中执行:

conda activate pytorch python -m pip install ultralytics

检查版本:

python - <<'PY' import ultralytics print(ultralytics.__version__) PY

本文安装版本:

8.4.168

查看yolo命令位置:

command -v yolo

输出类似:

$HOME/miniconda3/envs/pytorch/bin/yolo

注意:yolo命令位于 Conda 虚拟环境内部,必须先激活环境才能使用。


五、运行 YOLOv8 图片检测

创建工作目录:

mkdir -p ~/yolov8 cd ~/yolov8

激活环境:

source ~/.bashrc conda activate pytorch

执行推理:

yolo predict \ model=yolov8n.pt \ source='https://ultralytics.com/images/bus.jpg' \ device=cpu

第一次运行会自动下载:

yolov8n.pt bus.jpg

本文运行结果:

Ultralytics 8.4.168 Python-3.12.14 torch-2.14.0+cpu CPU: Intel Core i5-13450HX YOLOv8n summary (fused): 72 layers 3,151,904 parameters 0 gradients 8.7 GFLOPs image 1/1 bus.jpg: 640x480 4 persons 1 bus 1 stop sign

速度统计:

Preprocess: 5.7 ms Inference: 90.5 ms Postprocess: 9.2 ms

结果图片保存位置类似:

~/yolov8/runs/detect/predict-2/bus.jpg

每次运行都会生成一个新的编号目录,例如:

runs/detect/predict runs/detect/predict-2 runs/detect/predict-3

所以第二次运行结果是predict-2。


六、查看检测结果

可以使用 Ubuntu 图片查看器:

xdg-open ~/yolov8/runs/detect/predict-2/bus.jpg

也可以使用 VS Code 打开:

code ~/yolov8/runs/detect/predict-2/bus.jpg

结果图片中会绘制检测框、类别名称和置信度。


七、检测本地图片

例如检测:

~/Pictures/test.jpg

命令:

conda activate pytorch cd ~/yolov8 yolo predict \ model=yolov8n.pt \ source="$HOME/Pictures/test.jpg" \ device=cpu

如果需要指定输出目录:

yolo predict \ model=yolov8n.pt \ source="$HOME/Pictures/test.jpg" \ project="$HOME/yolov8/output" \ name='test_result' \ device=cpu

输出:

~/yolov8/output/test_result/test.jpg

八、检测整个图片目录

yolo predict \ model=yolov8n.pt \ source="$HOME/Pictures" \ device=cpu

Ultralytics 会遍历目录中的所有图片并保存检测结果。


九、检测视频

yolo predict \ model=yolov8n.pt \ source="$HOME/videos/test.mp4" \ device=cpu

CPU 推理视频会比较慢。视频越清晰、分辨率越高,处理时间越长。


十、保存检测结果

1. 保存带框图片

默认情况下:

yolo predict model=yolov8n.pt source=bus.jpg

会自动保存带检测框的图片。

2. 保存文本结果

yolo predict \ model=yolov8n.pt \ source=bus.jpg \ save_txt=True \ save_conf=True

通常会生成类似:

runs/detect/predict/labels/bus.txt

每一行格式大致为:

class_id x_center y_center width height confidence

3. 只显示结果,不保存

yolo predict \ model=yolov8n.pt \ source=bus.jpg \ save=False

十一、导出 ONNX 模型

在pytorch环境中执行:

conda activate pytorch cd ~/yolov8 yolo export \ model=yolov8n.pt \ format=onnx

生成文件:

yolov8n.onnx

ONNX 可以用于:

  • ONNX Runtime
  • OpenCV DNN
  • TensorRT
  • 部分 FPGA 推理框架
  • 其他深度学习部署工具

查看模型信息:

python - <<'PY' import onnx model = onnx.load('yolov8n.onnx') onnx.checker.check_model(model) print('ONNX model check passed') PY

如果没有安装 ONNX:

pip install onnx

十二、使用 Python 调用 YOLOv8

除了命令行,也可以直接使用 Python:

from ultralytics import YOLO model = YOLO('yolov8n.pt') results = model.predict( source='bus.jpg', device='cpu', save=True ) for result in results: print(result.boxes)

运行:

conda activate pytorch python test_yolo.py

十三、VS Code 中使用 Conda 环境

打开 VS Code 后,在集成终端执行:

source ~/.bashrc conda activate pytorch

检查 Python:

which python python --version

需要得到类似:

$HOME/miniconda3/envs/pytorch/bin/python Python 3.12.14

如果 VS Code 仍然使用系统 Python,可以按:

Ctrl + Shift + P

执行:

Python: Select Interpreter

选择:

$HOME/miniconda3/envs/pytorch/bin/python

十四、常见问题

1. Command 'yolo' not found

错误:

Command 'yolo' not found

原因:

  • 没有激活pytorch环境;
  • 没有安装 Ultralytics。

解决方法:

source ~/.bashrc conda activate pytorch python -m pip install ultralytics

验证:

command -v yolo

2. conda 命令找不到

conda: command not found

解决方法:

source ~/miniconda3/etc/profile.d/conda.sh

或者重新打开终端:

source ~/.bashrc

3. Conda 要求接受服务条款

错误:

CondaToSNonInteractiveError: Terms of Service have not been accepted

可以选择使用conda-forge:

conda create -n pytorch \ --override-channels \ -c conda-forge \ python=3.12 pip -y

4. cuda_available 为 False

torch.cuda.is_available()

输出:

False

原因:

  • 虚拟机没有 NVIDIA GPU;
  • 没有安装 NVIDIA 驱动;
  • 安装的是 CPU 版 PyTorch。

如果只是学习 YOLOv8 推理,CPU 版可以使用,但速度较慢。

5. 每次运行结果目录编号增加

这是正常现象:

predict predict-2 predict-3

如果需要固定目录:

yolo predict \ model=yolov8n.pt \ source=bus.jpg \ project=output \ name=bus_result \ exist_ok=True

exist_ok=True表示允许覆盖已有目录。

6. 下载模型慢

模型默认从 GitHub 下载。如果网络较慢,可以手动下载yolov8n.pt,放到当前目录后再运行:

yolo predict model=yolov8n.pt source=bus.jpg

十五、总结

本文完成了以下内容:

  1. 在 Ubuntu 22.04 中安装 Miniconda;
  2. 创建独立的pytorchConda 环境;
  3. 安装 Python 3.12;
  4. 安装 CPU 版 PyTorch、TorchVision 和 TorchAudio;
  5. 安装 Ultralytics YOLOv8;
  6. 使用 YOLOv8n 对示例图片进行目标检测;
  7. 检测到 4 个人、1 辆公交车和 1 个停车标志;
  8. 使用 CPU 完成约 90.5 ms 的单张图片推理;
  9. 了解本地图片、目录、视频和 ONNX 导出的使用方法。

常用命令总结:

source ~/.bashrc conda activate pytorch cd ~/yolov8 yolo predict model=yolov8n.pt source='https://ultralytics.com/images/bus.jpg' device=cpu yolo predict model=yolov8n.pt source="$HOME/Pictures/test.jpg" device=cpu yolo export model=yolov8n.pt format=onnx

当前系统没有 NVIDIA GPU,因此 YOLOv8 使用 CPU 运行。后续如果需要大幅提高推理速度,需要配置 NVIDIA 显卡直通、安装驱动和 CUDA,并重新安装 GPU 版 PyTorch。

返回列表