最近因项目需求,需要用tensorrt加速模型推理,安装Tensorrt-onnx这个时,大概出现了一百亿个问题,真的是心力憔悴。文中若有错误的地方,欢迎指正!
官方给的安装教程,看起来很简单,然而官方教程是建立在理想条件下,我们的实际条件八成是最糟糕情况,什么是最糟糕情况,就是除了 cd、mkdir 这种无脑命令外,其他命令全出现问题,问题里面又套着问题~~
官方教程如下:
git clone --recurse-submodules https://github.com/onnx/onnx-tensorrt.git
cd onnx-tensorrt
mkdir build
cmake .. -DTENSORRT_ROOT=<tensorrt_install_dir> -DGPU_ARCHS="61"
make -j8
sudo make install
1. git clone --recurse-submodules https://github.com/onnx/onnx-tensorrt.git
- Submodule path checked out
- 解决方式:手动下载
2. cmake .. -DTENSORRT_ROOT=<tensorrt_install_dir> -DGPU_ARCHS="61"
2.1 <tensorrt_install_dir>路径格式不对
因为我不太熟悉linux操作,填写路径没有去掉<>这个符号,导致路径搜寻失败。DGPU_ARCHS为GPU算力,我的1080Ti是61,其他类型百度即可。
2.2 cmake版本太低
解决方式:
升级版本即可。
2.3 cmake Could NOT find Protobuf (missing: Protobuf_LIBRARIES Protobuf_INCLUDE_DIR)
解决方式:sudo apt-get install protobuf-compiler libprotobuf-dev
2.4 ShapedWeights.hpp:25:21: fatal error: NvInfer.h: No such file or directory
解决方式:
include_directories(/home/wzp/project/trt/TensorRT-7.0.0.11/include)
link_directories(/home/wzp/project/trt/TensorRT-7.0.0.11/lib)
2.5 PLUGIN-NOTFOUND;TENSORRT_LIBRARY_MYELIN-NOTFOUND
解决方式:添加tensorrt路径
export PATH="$PATH:/home/ubuntu/Download/TensorRT-5.1.5.0"
2.6 The command could not be located because '/usr/bin' is not included in the PATH environment variable.
按2.5操作完之后,系统快捷命令不能用了
解决方式:
采用绝对路径:sudo和vim的绝对路径分别是:/usr/bin/sudo /usr/bin/vi
重启命令框
2.7 一堆错误
error: kBOOL is not a member of nvinfer1::DataType
解决方式:寻遍千山万水,未能解决!
2.8 找不到TensorRT library,TENSORRT_LIBRARY_MYELIN-NOTFOUND
解决方式:
export PATH="$PATH:/home/ubuntu/Download/TensorRT-5.1.5.0"
因为2.7的错误一直未解决,寻找方案的时候从国外的一个论坛得到了启示,我的Tensort和Tensorrt-onnx 版本不对应~~
我的Tensorrt是6版本,而Tensorrt-onnx是Tensorrt7版本,我真是个小呆瓜!
6.0的工程地址在这里: https://github.com/onnx/onnx-tensorrt/tree/6.0-full-dims
2.9 onnx-tensorrt/third_party/onnx does not contain a CMakeLists.txt file.
解决方式:
github上下载项目的时候,没有把/onnx-tensorrt-master/third_party/onnx/里的内容下载,手动下载即可。
3.make -j8
sudo make install
3.1 unable to execute 'swig': No such file or directory
解决方式:
下载安装swig,地址:https://www.cnblogs.com/riasky/p/3483641.html
3.2 Gtk-WARNING **: Calling Inhibit failed: GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name org.gnome.SessionManager was not provided by any .service files
解决方式:
权限不够 sudo vim /etc/profile
3.3 swig: error while loading shared libraries: libpcre.so.1: cannot open shared object file: No such file or directory
解决方式:
设置软连接
ln -s /home/zzl/anaconda3/envs/gpu/lib/libpcre.so.1 /usr/lib/libpcre.so.1
3.4 NvOnnxParser.h:26:21: fatal error: NvInfer.h: No such file or directory
解决方式:
修改setup.py
SWIG_OPTS = [
'-I{你的tensorrt目录}/include',
'-c++',
'-modern',
'-builtin',
]
3.5 error: can't create or remove files in install directory
解决方式:
权限不够。
sudo python setup.py install
3.6 unable to execute 'swig': No such file or directory
解决方式:看来之前没安成功
sudo apt install swig
3.7 NvOnnxParser.h:26:21: fatal error: NvInfer.h: No such file or directory
compilation terminated.error: command 'x86_64-linux-gnu-gcc' failed with exit status 1
解决方式:按照2.13操作无用,在setup.py添加
INC_DIRS = ["/opt/tensorrt/include"]
3.8 警告 WARNING: nvcc not in path.
*** May need to set CUDA_INC_DIR for installation to succeed.
其他的错误
1.make时 出现 fatal error: opencv2/opencv.hpp: No such file or directory
解决方式:
在CMakeLists里,在find_package(…)前面加入:
set(OpenCV_DIR xxxx) (设置路径)
总结:其实还有很多问题没记录,上述列出的问题及解决方式也是当初随手记录的,可能有错误的,可能有步骤不完整的,仅供参考。