Ubuntu18.04 安装配置BisNetv2-Tensorflow踩坑记录

Ubuntu18.04 安装配置BisNetv2-Tensorflow踩坑记录

欢迎关注 —> 我的博客原文

尝试了一段时间PaddleSeg,被kitti和cityscapes的数据集格式搞到头晕,我又是DL的纯小白,整个配置文件都云里雾里。正好最近在相关的公众号上看到有新的实时语义分割模型,换个口味试试。

参考:Unofficial tensorflow implementation of real-time scene image segmentation model “BiSeNet V2: Bilateral Network with Guided Aggregation for Real-time Semantic Segmentation”

准备工作

Github推荐的测试环境:

  • Ubuntu 16.04(x64)
  • python 3.5
  • cuda-9.0
  • cudnn-7.0
  • GTX-1070
  • tensorflow-gpu 1.12.0

我自己这边的为了PaddleSeg配置的环境:

  • Ubuntu 18.04(x64)
  • python 3.6.9
  • cuda-10.1
  • cudnn-7.6.5
  • GTX-1070

首先在这个库的requirements列表里tensorrt这个tensorflow的组件对依赖项的版本有比较苛刻的要求。requirements里要求7.0.0.11版本,参考TensorRT官方文档,需要以下依赖:

  • 9.0,10.0,10.2的CUDA Toolkit
  • TensorFlow 1.14.0(以上)

之前安装的CUDA10.1并不支持tensorrt,因此在使用pip安装时,会提示没有适合的版本可以安装。

更新CUDA和cudnn

因为PaddleSeg要求10.1版本(实测其实PaddleSeg更新后也支持10.2),为了保留CUDA10.1,安装多版本的CUDA。

  1. 如何查看当前CUDA以及cudnn版本

    CUDA版本:

    cat /usr/local/cuda/version.txt
    或者
    nvcc --version
    

    cudnn版本:

    cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
    

    注意:使用nvcc --version后显示的CUDA版本和nvidia-smi显示的CUDA可能是不同的,是因为CUDA有runtime API和driver API两种API,nvcc显示的版本是runtime API,而nvidia-smi显示的是driver
    API。(参考文章

  2. 先卸载CUDA10.1的NVIDIA driver。

    sudo apt-get --purge remove "*nvidia*"
    

    卸载后禁用nouveau驱动,参考NVIDIA官方文档

    • 新建conf文件,/etc/modprobe.d/blacklist-nouveau.conf,内容如下:

      blacklist nouveau
      options nouveau modeset=0
      
    • 重新生成内核initramfs信息:

      sudo update-initramfs -u
      

    全部完成后,重启系统。此时系统是无显驱的状态,分辨率会变得很低。

  3. 安装CUDA 10.2的新驱动。

    wget http://developer.download.nvidia.com/compute/cuda/10.2/Prod/local_installers/cuda_10.2.89_440.33.01_linux.run
    sudo sh cuda_10.2.89_440.33.01_linux.run
    

    因为卸载了驱动,所以选项全选,驱动和CUDA Toolkit全都安装。

  4. 安装cudnn

    cudnn文件下载,选择压缩包文件,解压到cuda文件夹下:

    sudo cp cuda/include/cudnn.h /usr/local/cuda/include/
    sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64/
    sudo chmod a+r /usr/local/cuda/include/cudnn.h
    sudo chmod a+r /usr/local/cuda/lib64/libcudnn*
    

注:如果多版本共存的情况下,可以把各个版本相对应的cudnn解压到cuda-10.1或者10.2下,切换版本时,只需要更改根目录下.bashrc中的cuda路径设置即可。

注:经实际验证,在Ubuntu18.04+CUDA10.2+TensorRT1.14.0(1.12.0同样)下,运行Github上的test程序会报错运行失败,因此安装按作者的测试环境,重新安装CUDA9.0,步骤同上。

若安装时提示using unsupported comilper,可能是因为GCC的版本不是CUDA9.0要求的版本(可能比较高),在sudo sh cuda_9.0.176_384.81_linux.run后面加上–override即可忽略这个问题。

安装TensorFlow

通过pip安装TensorFlow,因为TensorRT要求为7.0.0.11,此版本要求TensorFlow1.14.0,如果pip安装不指定版本,会自动安装最新版本2.x,并不兼容TensorRT,因此需要指定TensorFlow的版本。

pip3 install tensorflow-gpu==1.14.0 (x)
pip3 install tensorflow-gpu==1.12.0 

检验TensorFlow是否安装成功

>>> import tensorflow as tf
>>> tf.__version__ '1.14.0' ```

如果输出1.14.0则说明安装成功。

注:测试时由于CUDA版本的问题,换回CUDA9.0的同时也按作者的测试环境重新安装了1.12.0版本的TensorFlow。

安装TensorRT

注:经过多次尝试,pip的安装方法无论用什么版本都会提示找不到版本无法安装,在TensorRT的官方文档里也没有pip直接安装的方法。文档中Debian和RPM的安装方法要求CUDA Toolkit和cudnn都用Debian或RPM的方法安装。因为之前CUDA和cudnn选择了多版本共存的安装方式,所以这里只能选择手动解压Tar格式文件安装。TensorRT 7 下载地址,选择Tar格式的安装包。

  1. 解压压缩包

    tar -zxvf TensorRT-7.0.0.11.Ubuntu-18.04.x86_64-gnu.cuda-10.2.cudnn7.6.tar.gz
    
  2. 添加TensorRT lib路径到环境变量,注意<>内改成自己对应的绝对路径

    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:<TensorRT-7.0.0.11/lib>
    
  3. 安装Python 3.6版本的TensorRT wheel文件

    sudo pip3 install tensorrt-7.0.0.11-cp36-none-linux_x86_64.whl
    
  4. 安装Python3.6版本的UFF wheel文件

    sudo pip3 install uff-0.6.5-py2.py3-none-any.whl
    
  5. 安装Python graphurgeon wheel文件

    sudo pip3 install graphsurgeon-0.4.1-py2.py3-none-any.whl
    
  6. 参照说明文档,运行sample检验是否安装成功(可选)

    cd TensorRT-7.0.0.11/sample/sampleMNIST
    make
    cd TensorRT-7.0.0.11/data/mnist
    python3 download_pgms.py
    cd TensorRT-7.0.0.11/bin
    ./sample_mnist
    

    如果输出手写数字的图像,则通过检验。

至此CUDA Toolkit,cudnn,TensorFlow和TensorRT都安装完毕,进入bisenetv2的目录,安装其他依赖项。

cd bisenetv2-tensorflow
sudo pip3 install -r requirements.txt
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值