Jetson Nano 【7】调研错误 'tensorrt.tensorrt.ActivationType' has no attribute 'LEAKY_RELU'

  • 这个问题出现在torch2rt与tensorRT之间的调用
  • 类似报错还有:'Tensor' object has no attribute '_trt',这个我在debug的时候也遇到了
  • 我的环境:
    • 硬件:Jetson Nano
    • 系统:Ubuntu 18.04 aarch
    • 环境:pytorch1.4-aarch ,Jetpack4.2(Tensorrt5.0.6),torch2trt-github编译版
  • 我的Traceback:
Traceback (most recent call last):
  File "/home/jetsonnano/Desktop/Yolov3/4_torch2trt_detect_custom.py", line 149, in <module>
    model_trt = torch2trt(model_backbone, [x], fp16_mode=True)
  File "/usr/local/lib/python3.6/dist-packages/torch2trt/torch2trt.py", line 377, in torch2trt
    outputs = module(*inputs)
  File "/home/jetsonnano/.local/lib/python3.6/site-packages/torch/nn/modules/module.py", line 532, in __call__
    result = self.forward(*input, **kwargs)
  File "/home/jetsonnano/Desktop/Yolov3/models_for_trt.py", line 377, in forward
    x = module(x)
  File "/home/jetsonnano/.local/lib/python3.6/site-packages/torch/nn/modules/module.py", line 532, in __call__
    result = self.forward(*input, **kwargs)
  File "/home/jetsonnano/.local/lib/python3.6/site-packages/torch/nn/modules/container.py", line 100, in forward
    input = module(input)
  File "/home/jetsonnano/.local/lib/python3.6/site-packages/torch/nn/modules/module.py", line 532, in __call__
    result = self.forward(*input, **kwargs)
  File "/home/jetsonnano/.local/lib/python3.6/site-packages/torch/nn/modules/activation.py", line 559, in forward
    return F.leaky_relu(input, self.negative_slope, self.inplace)
  File "/usr/local/lib/python3.6/dist-packages/torch2trt/torch2trt.py", line 202, in wrapper
    converter['converter'](ctx)
  File "/usr/local/lib/python3.6/dist-packages/torch2trt/converters/activation.py", line 22, in convert_leaky_relu
    layer = ctx.network.add_activation(input_trt, trt.ActivationType.LEAKY_RELU)
AttributeError: type object 'tensorrt.tensorrt.ActivationType' has no attribute 'LEAKY_RELU'
Traceback (most recent call last):
  File "/usr/lib/python3.6/runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "/usr/lib/python3.6/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/home/jetsonnano/.vscode-server-insiders/extensions/ms-python.python-2020.2.63072/pythonFiles/lib/python/new_ptvsd/no_wheels/ptvsd/__main__.py", line 45, in <module>
    cli.main()
  File "/home/jetsonnano/.vscode-server-insiders/extensions/ms-python.python-2020.2.63072/pythonFiles/lib/python/new_ptvsd/no_wheels/ptvsd/../ptvsd/server/cli.py", line 361, in main
    run()
  File "/home/jetsonnano/.vscode-server-insiders/extensions/ms-python.python-2020.2.63072/pythonFiles/lib/python/new_ptvsd/no_wheels/ptvsd/../ptvsd/server/cli.py", line 203, in run_file
    runpy.run_path(options.target, run_name="__main__")
  File "/usr/lib/python3.6/runpy.py", line 263, in run_path
    pkg_name=pkg_name, script_name=fname)
  File "/usr/lib/python3.6/runpy.py", line 96, in _run_module_code
    mod_name, mod_spec, pkg_name, script_name)
  File "/usr/lib/python3.6/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/home/jetsonnano/Desktop/Yolov3/4_torch2trt_detect_custom.py", line 149, in <module>
    model_trt = torch2trt(model_backbone, [x], fp16_mode=True)
  File "/usr/local/lib/python3.6/dist-packages/torch2trt/torch2trt.py", line 381, in torch2trt
    ctx.mark_outputs(outputs, output_names)
  File "/usr/local/lib/python3.6/dist-packages/torch2trt/torch2trt.py", line 282, in mark_outputs
    trt_tensor = torch_output._trt
AttributeError: 'Tensor' object has no attribute '_trt'
解决思路
  • 我首先去torch2trt的github上查了查,发现两个类似的issues,如下图所示:
  • 他们的链接是:
    • https://github.com/NVIDIA-AI-IOT/torch2trt/issues/226
    • https://github.com/NVIDIA-AI-IOT/torch2trt/issues/15
      在这里插入图片描述
      在这里插入图片描述
  • 俩好像都没有解决,但是多少给了我们一些思路
  • 首先,我们也可以肯定的是,torch2trt这个库是支持Leaky_relu,这个函数,我进源码看了一眼,是调用的tensorrt.tensorrt.ActivationType.LEAKY_RELU,也就是说,当前版本不支持leaky_relu的时候,就会有这个错误
  • 可以用这个查查torch2trt都支持什么CONVERTERS
import torch2trt
print(torch2trt.CONVERTERS)

在这里插入图片描述

  • 输出是个Json,格式化后可以看到当前torch2trt支持leaky_relu

  • 那么也就是当前tensorRT不支持,最直接的验证方法是,直接打出来,看看有没有这个函数

  • 我现在是tensorRT6.0版本是有了,之前5.0是没有的,而当版本更新到6.0的时候,原来的错误自然而然消失了
    在这里插入图片描述

  • 还有一种更加直观的方法——去文档查看,以下是文档地址

  • 这个是5.0.2.1的API文档,通过搜索ActivationTpye可以清楚看到它支持的函数只有三个

  • 在这里插入图片描述

  • 对比6.0版本的文档,可以发现6.0新增了许多激活函数,期中就包括了LEAKY_RELU

  • 在这里插入图片描述

  • 顺便查了查7版本的文档,发现激活函数部分没有更新,那暂时用6也就够了

解决办法
  • 因此我的解决思路是,将tensorRT升级到6.0 版本

  • 于是,第一反应就是去官网下载,于是瞅到了这个

  • 在这里插入图片描述

  • 我发现,想要给我的Jetson Nano 更新TensorRT版本,就必须直接更新整体的Jetpack,目前最新Jetpack4.3是包含tensorRT6.0

  • 而改变Jetpack版本,根据官网说法,有两种方法

    • 第一种是直接重烧4.3的系统:就是下载最新镜像,然后重新装一遍系统
    • 第二种是用NVIDIA 的SDK Manager刷Jetpack版本:推荐这位博主刷机教程,虽然我没成功
    • 第三种,我是没有尝试过的,思路是直接从github上源码编译,有可能可以,因为我在那篇文档里面瞟到tensorrt7.0似乎支持Jetson Nano这种aarch的系统架构
  • 另外,附上Jetpack 4.3的镜像(如果选择自己下,迅雷可能会快一些):

链接:https://pan.baidu.com/s/1qiXhP-6xFLyRwBIIWa0zCg 
提取码:6brj 
复制这段内容后打开百度网盘手机App,操作更方便哦
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
### 回答1: 您可以按照以下步骤在Jetson Nano上下载Qt5.9.9: 1. 访问Qt官网,下载适用于Jetson Nano的Qt5.9.9安装包; 2. 将安装包传输到Jetson Nano上,使用终端进入安装包所在目录; 3. 执行命令:chmod +x qt-opensource-linux-x64-5.9.9.run,授予可执行权限; 4. 执行命令:./qt-opensource-linux-x64-5.9.9.run,开始进行安装; 5. 根据安装向导进行操作,安装完成后即可使用Qt5.9.9。 ### 回答2: 要下载Jetson Nano上的Qt5.9.9,您可以按照以下步骤进行操作: 1. 在Jetson Nano上打开终端窗口。 2. 运行以下命令以安装Qt5.9.9的依赖项: ``` sudo apt-get install build-essential libgl1-mesa-dev ``` 3. 下载Qt5.9.9的安装包。您可以从Qt官方网站或镜像站点下载。 4. 在终端中进入下载目录,并运行以下命令解压下载的安装包: ``` tar -xvf qt-opensource-linux-x64-5.9.9.run ``` 5. 运行以下命令以开始安装Qt5.9.9: ``` sudo ./qt-opensource-linux-x64-5.9.9.run ``` 这将启动Qt安装向导。 6. 按照安装向导的提示进行操作。可以选择安装路径和组件。对于Jetson Nano,建议选择安装所需的最小组件以节省磁盘空间。 7. 继续按照安装向导的指导完成安装过程。 8. 安装完成后,您可以通过运行以下命令来验证Qt5.9.9的安装: ``` qmake -v ``` 如果安装成功,应该能够看到Qt5.9.9的版本信息。 请注意,上述步骤仅适用于Linux操作系统。如果您的Jetson Nano运行的是其他操作系统,请参考相应的安装指南。确保下载的Qt版本与Jetson Nano的架构和操作系统兼容。 ### 回答3: 要在Jetson Nano上下载和安装Qt 5.9.9,您可以按照以下步骤进行操作: 1. 打开Jetson Nano的终端。 2. 下载和安装Qt 5.9.9的依赖项。在终端中输入以下命令来安装必要的依赖项: ``` sudo apt-get update sudo apt-get install build-essential libgl1-mesa-dev ``` 3. 下载Qt 5.9.9的安装包。您可以在Qt官方网站上下载适用于Linux的Qt 5.9.9安装包。 4. 在终端中进入下载目录。使用`cd`命令进入您保存Qt安装包的目录。 5. 解压缩下载的安装包。使用以下命令解压缩该安装包: ``` tar -xvf qt-opensource-linux-x64-5.9.9.run ``` 6. 运行安装脚本。在终端中输入以下命令来运行Qt安装脚本: ``` sudo ./qt-opensource-linux-x64-5.9.9.run ``` 7. 按照安装向导的指示完成安装。可以选择自定义安装路径和组件安装。 8. 等待安装完成。这可能需要一些时间,具体时间取决于您的系统性能。 9. 安装完成后,在终端中输入以下命令以验证Qt安装: ``` qmake -v ``` 10. 如果成功安装,会显示关于Qt版本和信息的输出。 请注意,以上步骤仅适用于在Jetson Nano上手动下载和安装Qt 5.9.9。您还可以探索其他方法,如使用PPA或使用Jetson Nano的包管理器安装Qt,以便更方便地管理和更新Qt。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

椰子奶糖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值