3. 环境搭建与工具链:Python环境配置、OpenCV安装与验证、PyTorch安装与验证、ONNX Runtime安装

做目标跟踪算法落地,第一步不是写代码,而是把环境搭好。我见过太多同学花了两天调代码,最后发现是OpenCV版本不对——这种坑,咱们提前填上。

核心原则:环境隔离 + 版本锁定。别图省事直接装系统Python里,后面有你哭的时候。

3.1 Python环境配置

我个人习惯用 Miniconda,比Anaconda轻量,够用就行。你想想看,一个目标跟踪项目,依赖就那么几个,没必要装一整套数据科学全家桶。

安装步骤很简单:

  1. 去官网下载Miniconda(Python 3.8+版本)
  2. 一路默认安装,记得勾选"Add to PATH"
  3. 打开终端,验证一下:conda --version

然后创建独立环境:

conda create -n tracking python=3.8
conda activate tracking

我的习惯:环境名用项目名,比如 tracking 或 siamfc。这样后面开多个项目不会乱。

为什么要用Python 3.8?嗯,这里要注意——PyTorch 1.x对3.8支持最稳,ONNX Runtime在3.8上也跑得顺。我踩过Python 3.10的坑,有些老模型导出ONNX时直接报错。

3.2 OpenCV安装与验证

OpenCV是目标跟踪的"眼睛"。读帧、预处理、可视化,全靠它。

安装命令:

pip install opencv-python==4.5.5.64
pip install opencv-contrib-python==4.5.5.64

为什么指定版本?我曾经在4.6.0上遇到 SIFT 专利问题,折腾了半天才发现是contrib模块没装对。4.5.5这个版本,我验证过几十个项目,稳得很。

验证代码:

import cv2
print(cv2.__version__)  # 输出 4.5.5

# 读一张图试试
img = cv2.imread('test.jpg')
if img is not None:
    print(f"图像尺寸: {img.shape}")
else:
    print("请放一张test.jpg在目录下")

避坑指南:我曾经在Ubuntu上装OpenCV,忘了装 libgl1-mesa-glx,结果cv2.imshow()直接崩。如果你在服务器上跑,记得用 cv2.imwrite() 替代显示。

3.3 PyTorch安装与验证

PyTorch是跟踪模型的主力框架。安装前先确认你的CUDA版本:

nvidia-smi  # 查看CUDA版本,比如11.3

然后去PyTorch官网选对应命令。我一般用:

# CUDA 11.3
pip install torch==1.12.0+cu113 torchvision==0.13.0+cu113 --extra-index-url https://download.pytorch.org/whl/cu113

# 如果没GPU,用CPU版
pip install torch==1.12.0 torchvision==0.13.0

验证代码:

import torch
print(f"PyTorch版本: {torch.__version__}")
print(f"CUDA可用: {torch.cuda.is_available()}")

# 简单张量运算
x = torch.rand(3, 3)
print(f"随机张量:\n{x}")

关键点:如果 torch.cuda.is_available() 返回False,别慌。先检查驱动,再检查PyTorch和CUDA版本是否匹配。我遇到过最离谱的一次,是conda自动装了CPU版——所以我现在都用pip指定版本。

3.4 ONNX Runtime安装

ONNX Runtime是模型部署的"桥梁"。训练用PyTorch,部署用ONNX,这是工业界的标准流程。

安装命令:

pip install onnxruntime-gpu==1.12.0  # GPU版
# 或
pip install onnxruntime==1.12.0      # CPU版

验证代码:

import onnxruntime as ort
print(f"ONNX Runtime版本: {ort.__version__}")
print(f"可用提供者: {ort.get_available_providers()}")

# 简单推理测试
import numpy as np
session = ort.InferenceSession(None)  # 这里只是验证导入
print("ONNX Runtime加载成功")

我的经验:ONNX Runtime的GPU版依赖CUDA和cuDNN。如果你在docker里跑,建议直接用官方镜像 mcr.microsoft.com/azureml/onnxruntime,省去配环境的痛苦。

3.5 环境验证总脚本

我习惯写一个 check_env.py,一键验证所有依赖:

import sys
import cv2
import torch
import onnxruntime

print(f"Python版本: {sys.version}")
print(f"OpenCV版本: {cv2.__version__}")
print(f"PyTorch版本: {torch.__version__}")
print(f"CUDA可用: {torch.cuda.is_available()}")
print(f"ONNX Runtime版本: {onnxruntime.__version__}")

# 验证OpenCV读图
cap = cv2.VideoCapture(0)
if cap.isOpened():
    print("摄像头打开成功")
    cap.release()
else:
    print("摄像头不可用,请检查")

print("\n✅ 环境验证完成")

注意:如果你在服务器上跑,没有摄像头,就把VideoCapture那部分注释掉。我曾经在阿里云上跑这个脚本,卡了五分钟才发现是摄像头没接。

3.6 本章知识体系

下面这张图,是我做环境搭建时的思维导图。你照着这个顺序来,基本不会出错:

目标跟踪环境搭建 Python环境 Miniconda + 3.8 conda create -n tracking OpenCV opencv-python 4.5.5 cv2.imread / imshow PyTorch torch 1.12 + CUDA torch.cuda.is_available() ONNX Runtime onnxruntime-gpu 1.12 InferenceSession 一键验证脚本 check_env.py 环境搭建流程:Python → OpenCV → PyTorch → ONNX Runtime → 验证 推荐版本:Python 3.8 + OpenCV 4.5.5 + PyTorch 1.12 + ONNX Runtime 1.12 (经多个项目验证,兼容性最佳)

3.7 常见问题速查表

问题 原因 解决方案
conda命令找不到 未添加PATH 重新安装,勾选"Add to PATH"
cv2.imshow报错 无GUI环境 改用cv2.imwrite保存图像
torch.cuda不可用 版本不匹配 检查CUDA驱动,重装对应PyTorch
ONNX Runtime加载失败 缺少CUDA依赖 安装cuDNN或使用CPU版

最后说一句:环境搭建这事儿,看着琐碎,但一次配好,后面省心半年。我每次开新项目,都会把 check_env.py 跑一遍,确保所有依赖都在。你也试试?

可可精品资料库