当前位置: 首页 > news >正文

Windows10下Pytracking环境搭建避坑全记录:从CUDA到VS编译prroi_pool.pyd

Windows10下Pytracking环境搭建避坑全记录:从CUDA到VS编译prroi_pool.pyd

在Windows系统上配置深度学习环境向来是个技术活,尤其是涉及到需要编译C++扩展的项目。最近在复现Pytracking中的DiMP和ATOM算法时,我花了整整三天时间才搞定环境搭建。这篇文章将详细记录整个过程中遇到的各种坑以及解决方案,希望能帮助后来者少走弯路。

1. 环境准备与基础依赖安装

1.1 创建Python虚拟环境

强烈建议使用Anaconda创建独立的Python环境,避免与系统环境冲突。我使用的是Python 3.7.0版本,与PyTorch 1.4.0兼容性最佳:

conda create -n pytracking python=3.7.0 conda activate pytracking

1.2 安装PyTorch及相关依赖

PyTorch版本需要严格匹配,以下是经过验证的组合:

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

其他必要依赖:

pip install matplotlib pandas jpeg4py opencv-python visdom tb-nightly pip install cython pycocotools

注意:jpeg4py在某些系统上可能需要先安装libjpeg-turbo开发包

2. CUDA与cuDNN配置

2.1 版本匹配问题

Pytracking对CUDA版本有严格要求,以下是验证过的组合:

组件版本要求备注
CUDA10.0/10.111.x不兼容
cuDNN7.6.5需与CUDA版本匹配
PyTorch1.4.0必须使用CUDA版本

2.2 环境变量配置

确保以下路径已添加到系统PATH中:

  • C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\bin
  • C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\libnvvp
  • C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\extras\CUPTI\libx64

验证CUDA是否安装成功:

nvcc --version

3. PreciseRoIPooling编译实战

3.1 获取源代码

需要从两个仓库获取代码:

git clone https://github.com/visionml/pytracking git clone https://github.com/vacancy/PreciseRoIPooling

将PreciseRoIPooling中的pytorch目录复制到:pytracking/ltr/external/PreciseRoIPooling/

3.2 预编译文件问题

官方提供的prroi_pool.pyd可能不兼容你的环境,常见错误包括:

  • DLL load failed
  • 找不到指定的程序
  • ImportError: dynamic module does not define module export function

这时需要手动编译,以下是详细步骤。

4. Visual Studio编译prroi_pool.pyd

4.1 创建VS工程

  1. 打开Visual Studio 2017/2019
  2. 新建项目 → 空项目
  3. 配置类型选择"动态库(.dll)"
  4. 平台选择x64
  5. 平台工具集选择Visual Studio 2015 (v140)

4.2 添加源文件

需要添加以下文件到工程:

PreciseRoIPooling/pytorch/prroi_pool/src/prroi_pooling_gpu.cpp PreciseRoIPooling/pytorch/prroi_pool/src/prroi_pooling_gpu.h PreciseRoIPooling/src/prroi_pooling_gpu_impl.cu PreciseRoIPooling/src/prroi_pooling_gpu_impl.cuh

重要:将.c文件重命名为.cpp,否则会出现编译错误

4.3 配置项目属性

4.3.1 常规设置
  • 目标文件扩展名改为.pyd
  • 配置类型:动态库(.dll)
  • 平台工具集:Visual Studio 2015 (v140)
4.3.2 VC++目录

包含目录添加:

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\include [你的pybind11路径]\include [Anaconda路径]\envs\pytracking\include [Anaconda路径]\envs\pytracking\Lib\site-packages\torch\include [Anaconda路径]\envs\pytracking\Lib\site-packages\torch\include\TH [Anaconda路径]\envs\pytracking\Lib\site-packages\torch\include\THC

库目录添加:

[Anaconda路径]\envs\pytracking\libs [Anaconda路径]\envs\pytracking\Lib\site-packages\torch\lib C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\lib\x64
4.3.3 链接器设置

附加依赖项添加:

python37.lib python3.lib cudart.lib c10.lib torch.lib torch_python.lib _C.lib c10_cuda.lib

4.4 关键代码修改

在prroi_pooling_gpu.cpp中:

// 修改前 PYBIND11_MODULE(TORCH_EXTENSION_NAME, m) { // 修改后 PYBIND11_MODULE(prroi_pool, m) {

4.5 编译错误处理

常见编译错误及解决方案:

  1. "data"未声明的标识符

    • 解决方案:将所有data改为data_ptr
  2. 命名空间错误

    • 解决方案:在std前添加::
  3. CUDA相关错误

    • 确保已安装CUDA 10.0/10.1
    • 右键.cu文件 → 属性 → 项类型改为"CUDAC/C++"

4.6 生成与部署

成功编译后:

  1. 将生成的.pyd文件复制到:[Anaconda路径]\envs\pytracking\Lib\site-packages\并重命名为prroi_pool.pyd

  2. 修改functional.py添加加载代码:

import imp file, path, description = imp.find_module('prroi_pool') with file: _prroi_pooling = imp.load_module('prroi_pool', file, path, description)

5. 运行测试与常见问题

5.1 启动Visdom服务器

python -m visdom.server

5.2 运行跟踪器

python pytracking/run_tracker.py atom default --dataset_name otb --sequence Soccer --debug 1 --threads 0

5.3 可能遇到的错误

错误1:Ninja is required

pip install ninja

错误2:找不到cl.exe

将VS的cl.exe路径添加到系统PATH:[VS安装路径]\VC\Tools\MSVC\14.16.27023\bin\Hostx64\x64

错误3:groundtruth_rect.txt读取失败

修改pytracking/utils/load_text.py中的load_text_numpy函数:

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)) else: ground_truth_rect = np.loadtxt(path, delimiter=delimiter, dtype=dtype) return ground_truth_rect

经过这些步骤,你应该能在Windows 10上成功运行Pytracking的各种算法了。整个过程确实复杂,但一旦环境搭建成功,后面的实验就会顺利很多。

http://www.jsqmd.com/news/670751/

相关文章:

  • MATLAB画伯德图卡壳了?手把手教你搞定离散重复控制器的频率响应分析
  • 2026年靠谱的防水板源头厂家推荐,选购时这些要点不能错过 - mypinpai
  • 3分钟为Word添加APA第7版引用模板:告别格式烦恼的终极指南
  • G-Helper:华硕笔记本的轻量级性能管家,3步释放硬件潜能
  • 从Courant-Fischer到Weyl不等式:用Python可视化理解Hermite矩阵特征值扰动
  • 有实力的水处理厂家盘点,讲讲乐浪水处理怎么样,电话号码多少 - 工业设备
  • 类型元编程与编译器常量表达式
  • 别再只盯着Arduino了!用ESP32驱动ILI9341屏幕的完整避坑指南(附代码)
  • 3分钟解锁Mac的NTFS读写权限:Free-NTFS-for-Mac完全指南
  • 四大A*启发函数场景选型全解
  • 初升高衔接班服务怎么联系,探寻口碑好的衔接班品牌 - 工业推荐榜
  • 从入门到放弃?System.Windows.Forms.DataVisualization Chart控件避坑指南:解决数据绑定、样式自定义和性能卡顿
  • nnUNet v2迁移指南:从v1老手到v2新版本,我的踩坑与避坑实录
  • 2026有实力的奢侈品回收企业分析,信誉好且流程规范的靠谱吗 - 工业品网
  • 上饶选贴隐形车衣门店,适配车型、技师经验足且有正品货源怎么选 - 工业设备
  • 从网表到芯片:新手工程师的DFT/BIST避坑指南(含Scan、MBIST实战解析)
  • 别再折腾Python版本了!Windows Server上Seafile 5.0.3保姆级安装避坑指南
  • 避坑指南:在Docker里跑CARLA仿真,为什么录不了log?一个细节帮你搞定
  • 有实力的丹阳肉燕货源探讨,能提升门店复购怎么选择 - myqiye
  • 从在线到桌面:draw.io桌面版如何让你的图表工作更安全高效
  • 思源宋体:7款完全免费中文字体,开启你的专业设计之旅 [特殊字符]
  • Display Driver Uninstaller (DDU) 终极指南:彻底解决显卡驱动冲突问题的完整教程
  • 保姆级教程:用NVIDIA Jetson AGX Xavier和MAX9296采集板搭建8路GMSL2相机系统
  • UDOP-large部署指南:30秒启动,开启英文文档智能问答
  • 避坑指南:SAP BAPI_FIXEDASSET_OVRTAKE_CREATE调用时,价值日期与事务类型那些容易出错的点
  • 深聊5D光影宴会厅设计靠谱企业,费用怎么收费才合理 - 工业品牌热点
  • 大润发购物卡回收攻略,简单一步搞定! - 团团收购物卡回收
  • Realistic Vision V5.1显存优化实测:启用offload后显存占用下降62%数据报告
  • Jenkins自动化部署流水线第一步:搞定Gitee私有仓库的全局认证(2023最新版)
  • 高并发之双写一致性