在计算机视觉领域,目标跟踪算法一直是研究热点。PyTracking作为集成了多种先进跟踪算法(如ATOM、DiMP、PrDiMP等)的开源框架,为研究者提供了便捷的实验平台。然而,其复杂的依赖关系和特定的环境配置要求,常常让开发者在搭建过程中遭遇各种"坑"。本文将基于Ubuntu系统,以问题为导向,分享PyTracking环境配置中的典型错误及其解决方案,帮助开发者高效完成环境搭建。
配置PyTracking的第一步是搭建合适的Python环境。虽然官方推荐使用Python 3.7和特定版本的PyTorch,但实际操作中版本兼容性问题频发。
建议使用conda创建独立环境以避免包冲突:
bash复制conda create -n pytracking python=3.7.0
conda activate pytracking
注意:使用Python 3.7而非更高版本,可减少与PyTorch 1.4.0的兼容性问题
官方文档建议通过pip安装PyTorch 1.4.0和torchvision 0.5.0:
bash复制pip install torch===1.4.0 -f https://download.pytorch.org/whl/torch_stable.html
pip install torchvision===0.5.0 -f https://download.pytorch.org/whl/torch_stable.html
但实际测试发现,这种安装方式可能导致后续PreciseRoIPooling编译失败。更可靠的方案是使用conda安装:
bash复制conda install pytorch==1.4.0 torchvision==0.5.0 cudatoolkit=10.0 -c pytorch
版本兼容性对照表:
| 组件 | 推荐版本 | 备注 |
|---|---|---|
| Python | 3.7.0 | 过高版本可能导致兼容问题 |
| PyTorch | 1.4.0 | 必须匹配CUDA版本 |
| torchvision | 0.5.0 | 与PyTorch版本绑定 |
| CUDA | 10.0 | 需与显卡驱动兼容 |
PyTracking依赖众多第三方库,其中几个关键组件容易引发问题。
运行以下命令安装基础依赖:
bash复制pip install matplotlib pandas tqdm
pip install opencv-python visdom tb-nightly scikit-image tikzplotlib gdown
部分依赖需要特别注意:
jpeg4py:需要先安装系统级依赖
bash复制sudo apt-get install libturbojpeg
pip install jpeg4py
spatial-correlation-sampler:KYS跟踪器必需
bash复制pip install spatial-correlation-sampler
常见问题排查:
--user参数bash复制pip install -i https://pypi.tuna.tsinghua.edu.cn/simple package_name
PreciseRoIPooling是PyTracking中最容易出问题的模块,其编译过程涉及多个环节。
首先确保系统已安装ninja-build:
bash复制sudo apt-get install ninja-build
若非sudo用户,需手动配置环境变量:
bash复制export PATH="/usr/bin:/usr/lib:/usr/share:/usr/share/man:$PATH"
从GitHub获取PreciseRoIPooling源码后,需要替换两个关键文件:
bash复制cp PreciseRoIPooling/src/prroi_pooling_gpu_impl.cu* pytracking/ltr/external/PreciseRoIPooling/pytorch/prroi_pool/src/
原因分析:原始项目使用git子模块管理这些文件,直接下载zip包会导致软链接失效。手动替换可解决路径问题。
常见的编译错误及解决方案:
ninja返回非零状态
bash复制subprocess.CalledProcessError: Command '['ninja', '-v']' returned non-zero exit status 1.
解决方法:
bash复制rm -rf build/
CUDA相关错误
bash复制nvcc --version
环境搭建完成后,正确配置数据集和参数是运行跟踪器的关键。
从官方MODEL_ZOO下载所需模型:
bash复制mkdir -p networks
# 下载模型到该目录
推荐模型下载源:
运行以下命令生成默认配置文件:
python复制python -c "from pytracking.evaluation.environment import create_default_local_file; create_default_local_file()"
python -c "from ltr.admin.environment import create_default_local_file; create_default_local_file()"
生成的文件需要手动编辑,设置正确的路径:
pytracking/evaluation/local.pyltr/admin/local.py常见错误:无法读取groundtruth文件
python复制Exception: Could not read file /path/to/groundtruth_rect.txt
修改pytracking/utils/load_text.py中的加载函数:
python复制def load_text_numpy(path, delimiter, dtype):
if isinstance(delimiter, (tuple, list)):
for d in delimiter:
try:
import io
with open(path,'r') as f:
ground_truth_rect=np.loadtxt(io.StringIO(f.read().replace(',',' ')))
return ground_truth_rect
except:
pass
raise Exception('Could not read file {}'.format(path))
Visdom提供了直观的结果展示方式,但配置不当会导致无法查看跟踪效果。
在新终端中运行:
bash复制python -m visdom.server -port 8097
访问http://localhost:8097查看可视化界面。
运行ATOM跟踪器的基本命令:
bash复制python pytracking/run_tracker.py atom default --dataset_name otb --sequence Soccer --debug 1 --threads 0
参数说明:
atom:跟踪器名称default:参数配置(位于pytracking/parameter/atom)otb:数据集名称Soccer:测试序列debug:可视化等级threads:线程数在Visdom界面中,重点关注:
调试建议:
--debug级别获取更多信息环境正常运行后,可通过以下方式进一步提升体验。
PyTracking支持多种跟踪算法切换:
| 跟踪器 | 启动命令 | 特点 |
|---|---|---|
| ATOM | atom default |
基于重叠最大化 |
| DiMP | dimp default |
判别式模型预测 |
| PrDiMP | prdimp default |
概率回归方法 |
| KYS | kys default |
场景信息利用 |
若要使用非OTB数据集,需要:
bash复制--threads 4
python复制# 在参数文件中修改
'image_sample_size': 288,
'image_output_size': 80,
python复制'backbone': 'resnet18' # 或resnet50
汇总配置过程中的常见错误及解决方案:
ImportError: libGL.so.1
bash复制sudo apt install libgl1-mesa-glx
Visdom连接失败
CUDA out of memory
数据集路径错误
local.py配置依赖版本冲突
bash复制pip install --force-reinstall package==version
在实际项目中,PyTracking的配置过程确实会遇到各种意外情况。记得第一次成功运行ATOM跟踪器时,看到Visdom上稳定的跟踪框,之前所有的调试时间都变得值得。建议从简单的OTB数据集开始,逐步扩展到更复杂的场景,这样能快速验证环境是否正确配置。