3. 环境搭建与工具链
做目标跟踪算法落地,第一步不是写代码,而是把环境搭好。我见过太多同学花了两天调代码,最后发现是OpenCV版本不对——这种坑,咱们提前填上。
核心原则:环境隔离 + 版本锁定。别图省事直接装系统Python里,后面有你哭的时候。
3.1 Python环境配置
我个人习惯用 Miniconda,比Anaconda轻量,够用就行。你想想看,一个目标跟踪项目,依赖就那么几个,没必要装一整套数据科学全家桶。
安装步骤很简单:
- 去官网下载Miniconda(Python 3.8+版本)
- 一路默认安装,记得勾选"Add to PATH"
- 打开终端,验证一下:
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 本章知识体系
下面这张图,是我做环境搭建时的思维导图。你照着这个顺序来,基本不会出错:
3.7 常见问题速查表
| 问题 | 原因 | 解决方案 |
|---|---|---|
| conda命令找不到 | 未添加PATH | 重新安装,勾选"Add to PATH" |
| cv2.imshow报错 | 无GUI环境 | 改用cv2.imwrite保存图像 |
| torch.cuda不可用 | 版本不匹配 | 检查CUDA驱动,重装对应PyTorch |
| ONNX Runtime加载失败 | 缺少CUDA依赖 | 安装cuDNN或使用CPU版 |
最后说一句:环境搭建这事儿,看着琐碎,但一次配好,后面省心半年。我每次开新项目,都会把 check_env.py 跑一遍,确保所有依赖都在。你也试试?