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.sh2. 安装到用户目录
bash /tmp/Miniconda3-latest-Linux-x86_64.sh \ -b \ -p "$HOME/miniconda3"3. 初始化 Bash
"$HOME/miniconda3/bin/conda" init bash4. 禁止自动激活 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.143. 安装 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: Falsecuda_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=cpuUltralytics 会遍历目录中的所有图片并保存检测结果。
九、检测视频
yolo predict \ model=yolov8n.pt \ source="$HOME/videos/test.mp4" \ device=cpuCPU 推理视频会比较慢。视频越清晰、分辨率越高,处理时间越长。
十、保存检测结果
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 confidence3. 只显示结果,不保存
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.onnxONNX 可以用于:
- 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 yolo2. conda 命令找不到
conda: command not found解决方法:
source ~/miniconda3/etc/profile.d/conda.sh或者重新打开终端:
source ~/.bashrc3. Conda 要求接受服务条款
错误:
CondaToSNonInteractiveError: Terms of Service have not been accepted可以选择使用conda-forge:
conda create -n pytorch \ --override-channels \ -c conda-forge \ python=3.12 pip -y4. 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=Trueexist_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。