运行NVIDIA的TensorRT5.0.2.6的例子sample_uff_ssd遇到的坑

NVIDIA错误:ERROR: UFFParser: Graph error: Cycle graph detected
ERROR: sample_uff_ssd: Fail to parse
sample_uff_ssd: sampleUffSSD.cpp:540: int main(int, char**): Assertion `tmpEngine != nullptr' failed.

tensorflow错误:ImportError: libcublas.so.9.0: cannot open shared object file: No such file or directory

解决办法:https://blog.csdn.net/qq_34374211/article/details/81018320

好久没写博客了,最近也是在搞tensorrt,真的是一个大坑,这个5.0,本例子针对了tensorRT的5.0,其他的版本不知道,运行sample_uff_ssd例子的时候真的是遇到坑了,之所以采坑是因为想用tensorRT加速tensorflow模型,思路是先将tensorflow训练出来的ckpt模型(现在的tensorflow模型训练出来的模型可能不是ckpt了,但是还是那个格式),将ckpt模型转换成pb模型(这一个步骤被称为freeze,冻结)意思是将tensorflow的图文件中主要的结构摘出来,然后利用tensorrt的convert-to-uff命令将pb转成uff,tensorRT可以直接将uff加速,但是inference的过程需要自己写(c++ or python)。

本着先运行例子,然后看懂,最后加载自己的uff模型的思路开始探索tensorRT的坑。。。。。。。。。。。

先说说本人及其配置 ubuntu16.04 cuda9.0 cudnn7.0.5(tensorRT5.0需要7.3的cudnn,我的是7.0的,没改也能运行),convert-to-uff用的是python3的,这个就是个坑,先前不知道怎么安装的就将tensorRT的whl文件都安装在了python3底下,具体安装步骤参考https://blog.csdn.net/xulei_Tao/article/details/90339694,这真是最大一个坑,后面会介绍。

一、例子的运行步骤

按照例子下面的readme步骤:1、首先安装uff转换,上面的链接有安装步骤,一定要用pip2安装,不要用pip3或者pip

                                                 2、下载模型文件ssd_inception_v2_coco,下载地               址 http://download.tensorflow.org/models/object_detection/ssd_inception_v2_coco_2017_11_17.tar.gz

                                                 3、将上面的文件进行解压,然后将加压后的文件夹中的frozen_inference_graph.pb复制到sampleuffssd文件夹中运行转换命令convert-to-uff --input-file frozen_inference_graph.pb -O NMS -p config.py

                                                 4、这个时候将转换好的uff模型剪切到data文件夹下并重命名为sample_ssd_relu6.uff

                                                 5、编译sampleuffssd下的cpp文件,会在bin文件夹下产生一个可执行文件

                                                 6、执行./sample_uff_ssd会发生以下错误

运行NVIDIA的TensorRT5.0.2.6的例子sample_uff_ssd遇到的坑_第1张图片

于是开始baidu和google,baidu出的东西大都是没这个错误,google还可以,直接将错误定位到了NVIDIA的官网论坛里, https://devtalk.nvidia.com/default/topic/1046206/tensorrt/tensorrt5-sample_uff_ssd-can-t-run/下面解答的解决方案就是可能是某些节点导致,反正没搞明白啥意思。

二、解决方法

1、搜索了一顿错误后没有发现解决方案,以为这个就是个bug或者什么的,让同事运行了下该例子,一下就成功了。开始郁闷,是不是自己显卡问题,不兼容么,本人显卡k80;觉得NVIDIA不会这么坑

2、将k80机器上的cudnn版本换了,换成了7.3.1,最后结果还是一样

3、中间再搜索解决方案的时候还搜到了一个博主的博客https://www.cnblogs.com/sdu20112013/p/10702173.html这个博客也是从安装tensorRT到如何运行该例子,也说了例子的模型 有问题,但是最后人家运行成功了,还莫名其妙。

4、周一的时候开始在另外一台机器上尝试,因为另外一台机器上没有安装tensorRT于是又重新来过一遍,或者这台机器还装的是cuda9.1的版本,tensorRT还没有这一版本的支持,于是又重新安装了cuda9.0,cudnn7.3.1,还重新安装了python3-pip,tensorflow,我晕,要不是之前都安装过,这些的弄好久,附,安装连接

                  cudnn https://blog.csdn.net/xs1102/article/details/81666663

                  cuda   https://blog.csdn.net/mtllyb/article/details/79505012

                   tensorflow的安装 sudo pip2 install tensorflow-gpu==1.8.0

                  tensorflow错误解决:https://blog.csdn.net/qq_34374211/article/details/81018320

                  因为pip3不好用,于是用了pip2安装完成按照上面步骤,例子运行正常,分析原因

convert-to-uff这个不一样,其他一样,一个用的是python2底下的convert-to-uff一个用的是convert-to-uff,也就是说必须用python2去做转换模型的操作

运行成功界面:

运行NVIDIA的TensorRT5.0.2.6的例子sample_uff_ssd遇到的坑_第2张图片

运行NVIDIA的TensorRT5.0.2.6的例子sample_uff_ssd遇到的坑_第3张图片

 

 

 

你可能感兴趣的:(学习,学习笔记)