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
CPU Intel Core i5-13450HX
CPU 核心 8 核
内存 7.5 GiB
GPU 无 NVIDIA GPU,仅 VMware SVGA
Python 环境 Miniconda
PyTorch 2.14.0+cpu
TorchVision 0.29.0+cpu
TorchAudio 2.11.0+cpu
Ultralytics 8.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. 创建独立的 pytorch Conda 环境;
  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。

相关推荐
wdfk_prog1 小时前
Wi-Fi Direct 教程 05:control socket 与 eloop——P2P_FIND 怎样进入 wpa_supplicant 命令解析器
运维·服务器·后端·网络协议·ubuntu·p2p·wifi-direct
ZMacros1 小时前
Live-build方法构建debian和ubuntu
linux·ubuntu·debian
YOLO数据集集合2 小时前
桥梁病害检测数据集 | 桥梁病害 结构健康监测 裂缝检测 钢筋外露9134期
yolo·目标检测·外墙裂缝·建筑病害·桥梁病害·桥梁缺陷
zy_destiny12 小时前
深度学习实战-基于YOLOv8的玉米雄穗目标检测:从数据集下载到训练部署全流程实录
yolo·目标检测·机器学习
向成科技14 小时前
XC3576H工控主板|深度适配Ubuntu 26.04 LTS,释放边缘AI与工业开发新潜能
linux·人工智能·ubuntu·机器人·硬件·主板·边缘ai
子木HAPPY阳VIP16 小时前
Ubuntu 关闭防火墙操作步骤
linux·运维·ubuntu
王振超wzc16 小时前
嵌入式开发环境搭建--WM软件安装,Ubuntu操作系统安装
linux·运维·ubuntu
YOLO数据集集合18 小时前
外墙裂缝目标检测YOLO数据集:6,296张图像助力建筑病害智能识别| 外墙裂缝检测 YOLO数据集 建筑健康监测 无人机巡检 目标检测8030期
yolo·目标检测·无人机·建筑·外墙裂缝·建筑病害
CAE虚拟与现实19 小时前
PyTorch和scikit-learn的区别
人工智能·pytorch·scikit-learn