配置环境:
Ubuntu18.04GPU:GeForce MX150
驱动:Ubuntu推荐的nvidia-driver-470
Cuda10.1 + cudnn7.6.2 + TensorRT 5.1.5.0+GCC 7.5.0
运行代码:
RangeNet++
目录
目录
一、环境配置
1. Ubuntu 18.04 安装NVIDIA驱动
(1)通过终端安装,只安装 nvidia 驱动(亲测可用!)
(2)根据NVIDIA驱动版本安装CUDA
2. Cuda10.1 安装
(1)选择CUDA Toolkit 10.1 update2
(2)选择自己的配置,依照Base Installer命令安装(注意选择runfile)
(3)开始安装,取消安装驱动(因为驱动1前面安装过了),其余默认(y)安装
(4)安装完成
(5)环境变量配置
3. 根据CUDA版本选择cudnn版本——cudnn 7.6.2安装
(1) 选择与Cuda对应的版本下载(cudnn7.6.2)
(2)下载后解压得到cuda文件夹
(3)将解压出的文件,移动到/usr/local/cuda文件夹下
(4)赋予所有用户权限,cudnn安装完成
(5)验证cudnn
4. 根据CUDA选TensorRT版本——TensorRT 5.1.5安装
(1)选择要下载的版本(TensorRT 5)
(2)选择TensorRT 5.1 GA(GA版较稳定)
(3)完成问卷调查,选择同意协议
(4)选择对应的Ubuntu和Cuda得版本下载,我的选择如下:
(5)下载完成后,解压到本地
(6)把 TensorRT 的库和头文件添加到系统路径下(这步很重要)
(7)添加路径到环境变量
(8)测试
(9)如果还要用Python接口(未测试):
(10)python接口验证(未测试):
5. gcc 版本
二、RangeNet 源码编译
(1) 确认上述Cuda、cudnn和TensorRT安装成功
(2) 相关依赖安装
(3) 使用 catkin 工具来构建库,终端打开:
(4) 运行demo
(5)讲一个非常重要的问题,有时候编译总不能生成/devel/lib/rangenet_lib/infer 中的infer文件,也不报错,但是会有CMakeLists.txt:164 (find_package)的警告。
(6)如果电脑直接合盖休眠后再开启,依赖项TensorRT可能会不能启动导致程序不能运行。
(7)如果因为网络原因(翻墙后没有这个问题),不能git clone 下来代码,可以直接从网站上下载压缩包。
参考文献:
一、环境配置
1. Ubuntu 18.04 安装NVIDIA驱动
打开终端执行
ubuntu-drivers devices
可以看到我这里推荐安装 nvidia-driver-470,因此安装nvidia-driver-470。安装推荐版本的驱动这里提供两种方法。
(1)通过终端安装,只安装 nvidia 驱动(亲测可用!)
sudo apt install nvidia-driver-470 #安装470驱动
然后重启计算机!!!!!
nvidia 驱动是否安装成功——查看NVIDIA驱动版本
查看NVIDIA驱动版本的命令
方法1:亲测可用(推荐)
cat /proc/driver/nvidia/version
更多关于驱动的内容请参考
Ubuntu 如何根据NVIDIA显卡型号确定对应的显卡驱动版本并安装-CSDN博客https://blog.csdn.net/u014374826/article/details/139103713?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22139103713%22%2C%22source%22%3A%22u014374826%22%7D
(2)根据NVIDIA驱动版本安装CUDA
官方的CUDA Toolkit版本和显卡驱动对应的表格。
通过上表可以发现,由于自己的NVIDIA显卡驱动版本是 470.141.03,所以自己电脑显卡对应的 可选CUDA Toolkit 10.1 update2 .
2. Cuda10.1 安装
官网下载:CUDA Toolkit Archive | NVIDIA Developer
(1)选择CUDA Toolkit 10.1 update2
(2)选择自己的配置,依照Base Installer命令安装(注意选择runfile)
wget https://developer.download.nvidia.com/compute/cuda/10.1/Prod/local_installers/cuda_10.1.243_418.87.00_linux.run sudo sh cuda_10.1.243_418.87.00_linux.run
针对本笔记本的文件版本
天翼网盘链接:
天翼云盘 珍藏美好生活 家庭云|网盘|文件备份|资源分享天翼云盘是中国电信推出的云存储服务,为用户提供跨平台的文件存储、备份、同步及分享服务,是国内领先的免费网盘,安全、可靠、稳定、快速。天翼云盘为用户守护数据资产。https://cloud.189.cn/t/EZ32AjZbmmMb (访问码:2egs)
(3)开始安装,取消安装驱动(因为驱动1前面安装过了),其余默认(y)安装
sudo sh cuda_10.1.243_418.87.00_linux.run
(4)安装完成
(5)环境变量配置
1. 终端输入:
gedit ~/.bashrc
2. 在bashrc末尾加入:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-10.1/lib64 export PATH=$PATH:/usr/local/cuda-10.1/bin export CUDA_HOME=$CUDA_HOME:/usr/local/cuda-10.1
3. 变量生效
source ~/.bashrc
4. 验证版本
nvcc -V
3. 根据CUDA版本选择cudnn版本——cudnn 7.6.2安装
官网下载(需要登陆):CUDA Deep Neural Network (cuDNN) | NVIDIA Developer
需要注册账号
(1) 选择与Cuda对应的版本下载(cudnn7.6.2)
或者,
针对本人笔记本可以直接从天翼网盘链接:
https://cloud.189.cn/t/YBFJJzMZv6Fv (访问码:mbc8)
(2)下载后解压得到cuda文件夹
(3)将解压出的文件,移动到/usr/local/cuda文件夹下
sudo cp -P cuda/lib64/libcudnn* /usr/local/cuda-10.1/lib64/ sudo cp cuda/include/cudnn.h /usr/local/cuda-10.1/include/
(4)赋予所有用户权限,cudnn安装完成
sudo chmod a+r /usr/local/cuda-10.1/include/cudnn.h sudo chmod a+r /usr/local/cuda-10.1/lib64/libcudnn*
(5)验证cudnn
cat /usr/local/cuda-10.1/include/cudnn.h | grep CUDNN_MAJOR -A 2
4. 根据CUDA选TensorRT版本——TensorRT 5.1.5安装
TensorRT 支持的环境和 Python 版本如表所示
官网下载地址:Log in | NVIDIA Developer
(1)选择要下载的版本(TensorRT 5)
(2)选择TensorRT 5.1 GA(GA版较稳定)
(3)完成问卷调查,选择同意协议
(4)选择对应的Ubuntu和Cuda得版本下载,我的选择如下:
注:如果Cuda下载用的是deb(local),则TensorRT也需要下载Debian包本地安装(上图第一个);而Cuda用runfile安装,就得下载tar压缩安装;两者需要对应,否则安装会报错。
或者,
针对本人笔记本可以直接从天翼网盘链接:
https://cloud.189.cn/t/veaAzu2Ar2im (访问码:cbs2)
(5)下载完成后,解压到本地
(6)把 TensorRT 的库和头文件添加到系统路径下(这步很重要)
# TensorRT目录下
sudo cp -r ./lib/* /usr/lib sudo cp -r ./include/* /usr/include
(7)添加路径到环境变量
gedit ~/.bashrc export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/TensorRT-5.1.5.0/lib
source ~/.bashrc
上述完成,则TensorRt的C++接口安装就完成了。
(8)测试
878878788 cd ../bin ./sample_mnist
输出如下结果则安装成功!
(9)如果还要用Python接口(未测试):
#在下载的TensorRT目录文件夹下 cd TensorRT-5.0.2.6/python pip install tensorrt-5.0.2.6-py2.py3-none-any.whl 安装UFF,支持tensorflow模型转化 cd TensorRT-5.0.2.6/uff pip install uff-0.5.5-py2.py3-none-any.whl 安装graphsurgeon,支持自定义结构 cd TensorRT-5.0.2.6/graphsurgeon pip install graphsurgeon-0.3.2-py2.py3-none-any.whl
(10)python接口验证(未测试):
python3 import tensorrt tensorrt.version #输出'5.1.5.0'则安装成功!
5. gcc 版本
二、RangeNet 源码编译
1. 确认上述Cuda、cudnn和TensorRT安装成功
2. 相关依赖安装
sudo apt-get update
sudo apt-get install -yqq build-essential python3-dev python3-pip apt-utils git cmake libboost-all-dev libyaml-cpp-dev libopencv-dev
sudo apt install python-empy
sudo apt-get install python-pip (sudo: pip:找不到命令)
sudo pip install catkin_tools trollius numpy
3. 使用 catkin 工具来构建库,终端打开:
mkdir -p ~/RangeNet_ws/src
cd ~/RangeNet_ws/src
git clone https://github.com/ros/catkin.git
git clone https://github.com/PRBonn/rangenet_lib.git
cd .. && catkin init
catkin build rangenet_lib
4. 运行demo
1)预训练模型下载:https://www.ipb.uni-bonn.de/html/projects/semantic_suma/darknet53.tar.gz
2)预测demo
cd到catkin workspace下
cd ~/RangeNet_ws
-p后是预训练模型路径、-s后是要预测点云.bin
./devel/lib/rangenet_lib/infer -p /home/fairlee/darknet53 -s /home/fairlee/RangeNet_ws/src/rangenet_lib/example/000000.bin --verbose
./devel/lib/RangeNet/infer -p /home/fairlee/darknet53 -s /home/fairlee/KittiData/test/0000000021.bin
./devel/lib/rangenet_lib/infer
-p /home/fairlee/darknet53 -p 后是预训练模型路径
-s /home/fairlee/catkin_ws/src/rangenet_lib/example/000000.bin -s 后是要预测点云
--verbose 显示运行时间
三、运行过程中常遇到的问题
1. 讲一个非常重要的问题,有时候编译总不能生成/devel/lib/rangenet_lib/infer 中的infer文件,也不报错,但是会有CMakeLists.txt:164 (find_package)的警告。
就是CMakeLists.txt有问题啊!!!
5.1 下面展示的是有问题的编译!!!!虽然有问题,但是不报错啊!!!!
CMake Warning at CMakeLists.txt:164 (find_package):
Found package configuration file:
/usr/local/lib/cmake/opencv4/OpenCVConfig.cmake but it set OpenCV_FOUND to FALSE so package "OpenCV" is considered to be NOT FOUND.
# 这个警告表示,CMake找到了OpenCV的配置文件(OpenCVConfig.cmake),这个文件通常由OpenCV的安装过程生成,但是由于某种原因,该文件设置了
# OpenCV_FOUND为FALSE,所以CMake认为它没有找到OpenCV。
检查OpenCV版本:在你的CMakeLists.txt文件中,你指定了需要OpenCV 3.2.0版本。如果你的系统上安装的OpenCV版本不是3.2.0,那么find_package命令可能会失败。你可以通过在终端运行pkg-config --modversion opencv命令来检查你的系统上安装的OpenCV版本。
修改CMakeLists.txt文件中OpenCV 的版本为3.2.0!!!!!!!!!!!!!!!!!
if(EXAMPLE)
# get opencv (required)
find_package(OpenCV 3.2.0 COMPONENTS core viz)
if(OpenCV_FOUND)
message("Building example...")
message("OpenCV Libs: ${OpenCV_LIBS}")
set(OpenCV_LIBRARIES ${OpenCV_LIBS})
message("OpenCV Headers: ${OpenCV_INCLUDE_DIRS}\n")
include_directories(${OpenCV_INCLUDE_DIRS})
add_executable(infer example/infer.cpp)
target_link_libraries(infer rangenet_lib
${catkin_LIBRARIES}
${OpenCV_LIBRARIES}
${Boost_LIBRARIES}
${YAML_CPP_LIBRARIES}
${TENSORRT_LIBRARIES}
)
install(
TARGETS
infer
DESTINATION bin/
)
else()
message("...***************************OpenCV 没有找到或者没有关联上***********************************................................")
endif()
else()
message("Not building example.")
endif()
正确的编译的提示如下!!!!
2. 如果电脑直接合盖休眠后再开启,依赖项TensorRT可能会不能启动导致程序不能运行。
--------------------------------------重启电脑即可!!!--------------------------------------
--------------------------------------重启电脑即可!!!--------------------------------------
--------------------------------------重启电脑即可!!!--------------------------------------
3. 如果因为网络原因(翻墙后没有这个问题),不能git clone 下来代码,可以直接从网站上下载压缩包。
git clone https://github.com/ros/catkin.git
git clone GitHub - PRBonn/rangenet_lib: Inference module for RangeNet++ (milioto2019iros, chen2019iros)
再进行编译也是可以的。
参考文献:
PRBonn/rangenet_lib: Inference module for RangeNet++ (milioto2019iros, chen2019iros) (github.com)