
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
十五、总结
本文完成了以下内容:
- 在 Ubuntu 22.04 中安装 Miniconda;
- 创建独立的
pytorchConda 环境; - 安装 Python 3.12;
- 安装 CPU 版 PyTorch、TorchVision 和 TorchAudio;
- 安装 Ultralytics YOLOv8;
- 使用 YOLOv8n 对示例图片进行目标检测;
- 检测到 4 个人、1 辆公交车和 1 个停车标志;
- 使用 CPU 完成约 90.5 ms 的单张图片推理;
- 了解本地图片、目录、视频和 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。