RangeNet++ 检测3D点云语义算法的详细配置和常见问题

配置环境:
        Ubuntu18.04

        GPU: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博客icon-default.png?t=N7T8https://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

针对本笔记本的文件版本

天翼网盘链接:

天翼云盘 珍藏美好生活 家庭云|网盘|文件备份|资源分享天翼云盘是中国电信推出的云存储服务,为用户提供跨平台的文件存储、备份、同步及分享服务,是国内领先的免费网盘,安全、可靠、稳定、快速。天翼云盘为用户守护数据资产。icon-default.png?t=N7T8https://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(TARGETSinferDESTINATION 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)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/17989.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于Vue uni-app的自定义列表表格信息展示组件

摘要:随着软件技术的不断发展,前端开发面临着越来越多的挑战。特别是在业务场景复杂多变的情况下,如何提高开发效率和降低维护成本成为了关键。本文旨在探讨组件化开发在前端应用中的重要性,并以Vue uni-app自定义列表表格为例&am…

R语言lavaan结构方程模型(SEM)

结构方程模型(Sructural Equation Modeling,SEM)是分析系统内变量间的相互关系的利器,可通过图形化方式清晰展示系统中多变量因果关系网,具有强大的数据分析功能和广泛的适用性,是近年来生态、进化、环境、…

I.MX6ULL模仿 STM32 驱动开发格式实验

系列文章目录 I.MX6ULL模仿 STM32 驱动开发格式实验 I.MX6ULL模仿 STM32 驱动开发格式实验 系列文章目录一、前言二、模仿 STM32 寄存器定义2.1 STM32 寄存器定义简介2.2 I.MX6Ul 寄存器定义2.3硬件原理图2.4实验程序编写 三、编译下载验证 一、前言 使用 C 语言编写 LED 灯驱…

2024年中国金融行业网络安全市场全景图

网络安全一直是国家安全的核心组成部分,特别是在金融行业,金融机构拥有大量的敏感数据,包括个人信息、交易记录、财务报告等,这些数据的安全直接关系到消费者的利益和金融市场的稳定,因此金融行业在网络安全建设领域一…

SSL协议:网络安全通信的守护者

在网络通信迅猛发展的今天,数据安全和隐私保护变得尤为重要。安全套接层协议(Secure Sockets Layer, SSL)作为早期网络加密及身份验证的基石,为在线数据传输提供了安全保障。下面我们就来了解一下SSL协议。 SSL协议概述 SSL协议最…

[nextjs]推荐几个很好看的模板网站

最近在做网站,折腾了 vue 框架,然后发现了 nextjs 框架,感觉这个做出来的网站配色很好看,然后又开始研究这个 网站配色好看是因为用的 tailwindcss,找网站过程中,发现了几个很好看的模板网站,在这里推荐下,或许你也能用得上 推荐第一个网站是: https://tailspark.co/ 有组件,也…

前端项目性能优化:工程化环境中将图片转为base64(vite插件)

一、优化原理 通过将图片转为base64的形式来减少请求,实现性能优化。 考虑到过大的图片转为base64形式会导致加载时间过长,反而会影响性能,所以需要对转化的图片的大小进行限制。 每次去使用图片的时候都去手动转化一次是很麻烦的&#xf…

python--pycharm中将venv删除后怎么办

在终端中输入以下命令来创建一个新的虚拟环境(可选): python -m venv venv 激活虚拟环境: Windows: .\venv\Scripts\activate选择自己项目的虚拟环境

Java 使用WebMagic爬取网页(简单示例)

框架简介 WebMagic是一个基于Java的开源网络爬虫框架,它提供了很多简单易用的API接口,可以帮助使用者快速构建出高效、可扩展的网络爬虫程序,WebMagic由四个组件(Downloader、PageProcessor、Scheduler、Pipeline)构成,核心代码非…

HLS入门(Xilinx Vivado 2019.2)——点亮LED仿真

HLS入门——点亮LED仿真 一、HLS简介(一)什么是HLS?(二)HLS能做什么?(三)HLS的使用(四)HLS的优势(五)HLS与VHDL/Verilog编程技术的关系…

在矩池云上使用StoryDiffusion的详细方法

StoryDiffusion 是由南开大学和字节跳动团队联合研发的,基于一致性自注意力机制生成长跨度图像和视频的新型扩散模型(Consistent Self-Attention for Long-Range Image and Video Generation),使用者不需要进行额外训练&#xff0…

VBA技术资料MF158:获取系统的用户名

我给VBA的定义:VBA是个人小型自动化处理的有效工具。利用好了,可以大大提高自己的工作效率,而且可以提高数据的准确度。“VBA语言専攻”提供的教程一共九套,分为初级、中级、高级三大部分,教程是对VBA的系统讲解&#…

ROS学习笔记(16):夹缝循迹

0.前言 在笔记的第15期对巡墙驾驶的原理进行了简单讲解,而这期我们来讲一下夹缝循迹,也常被叫follow the gap,也更新一些概念。 1.探索式路径规划与避障 1.概念 无预先建图的路径规划叫探索式路径规划,例如巡墙循迹和夹缝循迹&…

CTF网络安全大赛简单的web抓包题目:HEADache

题目来源于&#xff1a;bugku 题目难度&#xff1a;简单 题目 描  述: > Wanna learn about some types of headache? > Lets dig right into it! 下面是题目源代码&#xff1a; <!DOCTYPE html> <html> <head><meta charset"utf-8"&…

智能高效的IDE GoLand v2024.1全新发布 - 进一步升级AI辅助工具

GoLand 使 Go 代码的阅读、编写和更改变得非常容易。即时错误检测和修复建议&#xff0c;通过一步撤消快速安全重构&#xff0c;智能代码完成&#xff0c;死代码检测和文档提示帮助所有 Go 开发人员&#xff0c;从新手到经验丰富的专业人士&#xff0c;创建快速、高效、和可靠的…

基于Spring 框架中的@Async 注解实现异步任务

Async 是 Spring 框架中的一个注解&#xff0c;用于实现方法级别的异步执行。使用 Async 可以让你的代码在非当前线程中执行&#xff0c;从而提高应用的并发性能。 1、 启用异步支持 在 Spring 应用的主配置类或任何其他配置类上添加 EnableAsync 注解来开启异步任务的支持 …

极验3逆向 JS逆向最新点选验证码 逆向分析详解

目录 声明&#xff01; 一、请求流程分析 二、w参数生成位置 三、主要问题 四、结果展示 原创文章&#xff0c;请勿转载&#xff01; 本文内容仅限于安全研究&#xff0c;不公开具体源码。维护网络安全&#xff0c;人人有责。 声明&#xff01; 本文章中所有内容仅供学习交流…

Pytorch 1.9.0环境安装

pytorch官方链接: https://pytorch.org/get-started/previous-versions/ 安装指令&#xff1a;conda install pytorch1.9.0 torchvision0.10.0 torchaudio0.9.0 cudatoolkit11.3 -c pytorch -c conda-forge 报错&#xff1a;Solving environment: unsuccessful initial attemp…

分支机构多,如何确保文件跨域传输安全可控?

随着企业全球化发展&#xff0c;分支机构的分布越来越广泛&#xff0c;跨域文件传输需求也随之增加。然而&#xff0c;跨域文件传输面临的数据安全和传输效率问题&#xff0c;使得构建一个安全、可控的文件交换系统成为迫切需求。FileLink跨网文件交换系统通过综合的技术手段和…

Java常见集合类一(List)

一、Collection接口及其常见实现子类、子接口 由上图可以看出&#xff0c;Collection 接口实现了 Iterable 接口&#xff1b; Iterable接口是Java集合类中的核心接口之一&#xff0c;实现该接口的类具有迭代功能&#xff0c;它提供了能够对实现它的子类 中的元素进行逐个遍历的…