在jetson xavier nx上部署运行pytracking

一、Martin Danelljan作品集pytracking在jetson xavier nx上的安装

  1. conda环境下安装pytracking
    jetson xavier nx是不能安装anaconda的,但是有一个非常小巧的替代品,可谓麻雀虽小五脏俱全:miniforge。具体的安装渠道及方法可参考博文link1 ,其中的换源部分也可使用清华源、阿里云源等,有了miniforge就可以轻松创建虚拟环境啦~
  2. 直接安装pytracking
    自己在使用miniforge时,一般是非常顺利的,但也有可能遇到意想不到的问题,比如类似:核心指令已转储,大概率是nx下和虚拟环境中同时存在某包的不同版本并找不到其需要的版本导致的,这在当时困扰了我很久,最后用gdb python一步步调试发现的。若想直接在jetson xavier nx上安装pytracking依赖,各种依赖包可参照官方教程link2 ,这里不细讲。其中需要注意的是torch和torchvision的安装,它们有相对严格的版本对应关系以及不同的安装方式,具体步骤可参考博文link3

二、RuntimeError: Error building extension '_prroi_pooling’的解决方法之一

  1. 首先,放置测试数据集(以UAV123为例):
    在run_tracker.py所在文件夹下放置好数据集,此时需要在pytracking/evalution/environment.py和pytracking/evalution /local.py里添加数据集路径
  2. 下载好跟踪算法super_dimp的模型文件,放在pytracking/evalution/environment.py和pytracking/evalution/local.py的指定模型位置;
  3. 在run_tracker.py所在文件夹里打开终端,并输入如下命令:
    python3 run_tracker.py dimp super_dimp --debug 1 --use_visdom True
    在浏览器中输入网址:http://localhost:8097,在另一个终端里输入python3 -m visdom.server(确保已安装),若安装成功,即可看到traker在测试数据集上的跟踪情况了,但出现了上述error;
  4. 主要报错:
Building extension module _prroi_pooling...
Allowing ninja to set a default number of workers... (overridable by setting the environment variable MAX_JOBS=N)
##此处省略部分
FAILED: prroi_pooling_gpu_impl.cuda.o 
##此处省略部分
/bin/sh: 1: :/usr/local/cuda/bin/nvcc: not found
##此处省略部分
FAILED: prroi_pooling_gpu.o 
#此处省略部分
In file included from /home/pytracking/ltr/external/PreciseRoIPooling/pytorch/prroi_pool/src/prroi_pooling_gpu.c:15:0:
/usr/local/lib/python3.6/dist-packages/torch/include/ATen/cuda/CUDAContext.h:5:10: fatal error: cuda_runtime_api.h: 没有那个文件或目录
 #include <cuda_runtime_api.h>
          ^~~~~~~~~~~~~~~~~~~~
compilation terminated.
ninja: build stopped: subcommand failed.
##此处省略部分
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
 ##此处省略部分
  File "../ltr/external/PreciseRoIPooling/pytorch/prroi_pool/prroi_pool.py", line 28, in forward
    return prroi_pool2d(features, rois, self.pooled_height, self.pooled_width, self.spatial_scale)
  File "../ltr/external/PreciseRoIPooling/pytorch/prroi_pool/functional.py", line 44, in forward
    _prroi_pooling = _import_prroi_pooling()
  File "../ltr/external/PreciseRoIPooling/pytorch/prroi_pool/functional.py", line 33, in _import_prroi_pooling
    verbose=True
  File "/usr/local/lib/python3.6/dist-packages/torch/utils/cpp_extension.py", line 974, in load
    keep_intermediates=keep_intermediates)
  File "/usr/local/lib/python3.6/dist-packages/torch/utils/cpp_extension.py", line 1179, in _jit_compile
    with_cuda=with_cuda)
  File "/usr/local/lib/python3.6/dist-packages/torch/utils/cpp_extension.py", line 1279, in _write_ninja_file_and_build_library
    error_prefix="Error building extension '{}'".format(name))
  File "/usr/local/lib/python3.6/dist-packages/torch/utils/cpp_extension.py", line 1529, in _run_ninja_build
    raise RuntimeError(message)
RuntimeError: Error building extension '_prroi_pooling'
  1. 解决办法
    上述问题报错无法编译文件中的某一操作,似乎是没有找到文件cuda_runtime_api.h导致的,但去查找了一下这个文件,它确实是存在的。而且jetson xavier nx自带CUDA,不过需要先把它加入环境变量,可参考博文link4 ,这里不细讲。检查了很长时间看着配置没有问题并且在网上找了各种类似错误的解决办法,都没有奏效。无奈之下想了想,出现的问题是找不到已存在的CUDA,就直接在终端输入:export CUDA_HOME = /usr/local/cuda-10.2(jetpack 4.4自带CUDA10.2[可以用命令nvcc -V查看版本哦]),喔嚯!问题被解决了!简直惊喜~

  1. 『Nvidia Jetson AGX Xavier笔记』Xavier(arrch64架构)安装anaconda.link ↩︎

  2. pytracking的github链接.link ↩︎

  3. NVIDIA Jetson NX配置深度学习环境(Pytorch、torchvision)超级详细,torchvision安装避坑总结.link ↩︎

  4. 带你玩转Jetson Xavier NX系列教程 | Xavier NX 环境变量配置,风扇控制以及Jtop安装.link. ↩︎

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值