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

news2025/1/13 13:08:59

配置环境:
        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(
      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)

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

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

相关文章

[Spring Cloud] (9)XSS拦截器

文章目录 简述本文涉及代码已开源Fir Cloud 完整项目防XSS攻击必要性:作用: 整体效果后端增加拦截器开关配置pom中增加jsoup依赖添加JSON处理工具类添加xss拦截工具类防XSS-请求拦截器 前端 简述 本文涉及代码已开源 本文网关gateway,微服务…

基于Matlab实现BP神经网络的手写数字识别

欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景与意义 手写数字识别是计算机视觉和模式识别领域的一个经典问题,具有广泛的应用场景&…

信息安全从业者书单推荐

作为一名网安人,身上肩负的责任是很大的,能力越大,责任也越大,反过来责任越大,能力也必须跟得上。不管是想进这行,还是已经在这行,持续学习肯定是不能缺少的,除了在工作中积累&#…

C++ 求 f(x) = sin x / x 的函数极限

Python: import sympy from sympy import oo #注意无究符号表示形式为两个小定字母o import numpy as np x sympy.Symbol(x) #注意Symbol首字母大写f sympy.sin(x) / x # 定义极限表达式lim sympy.limit(f,x,oo) print(lim)输出: 0 C #include…

Windows系统安装dlib及face_recognition搭建人脸识别环境

关于face_recognition face_recognition被称为世界上最简洁的人脸识别库,借助face_recognition库,我们可以使用Python和命令行提取、识别、操作人脸。 face_recognition的人脸识别是基于业内领先的C开源库 dlib中的深度学习模型,用Labeled …

Centos 7.9 使用 iso 搭建本地 YUM 源

Centos 7.9 使用 iso 搭建本地 YUM 源 1 建立挂载点 [rootlocalhost ~]# mkdir -p /media/cdrom/ 2 创建光盘存储路径 [rootlocalhost ~]# mkdir -p /mnt/cdrom/ 3 上传 CentOS-7-x86_64-Everything-2207-02.iso 到 光盘存储路径 [rootlocalhost ~]# ls /mnt/cdrom/ CentOS-…

基于SSM的“酒店管理系统”的设计与实现(源码+数据库+文档)

基于SSM的“酒店管理系统”的设计与实现(源码数据库文档) 开发语言:Java 数据库:MySQL 技术:SSM 工具:IDEA/Ecilpse、Navicat、Maven 系统展示 首页 管理员登录页面 用户管理页面 客房信息查询 酒店详细信息 后台…

Java学习路线思维导图

目录 Java学习流程1.学习大纲2.Java开发中常用的DOS命令 Java入门学习思维导图 Java学习流程 通过大纲了解学习的重点,通过目录依次深入【注:Java环境的搭建百度,提升自己百度的能力】 1.学习大纲 学习流程如下: Java基础语法 …

【Python】用于发送电子邮件的标准库smtplib和构建邮件主体、添加附件、设置收件人的email

欢迎来到《小5讲堂》 这是《Python》系列文章,每篇文章将以博主理解的角度展开讲解。 温馨提示:博主能力有限,理解水平有限,若有不对之处望指正! 目录 插件介绍邮件代码扩展知识点文章推荐 插件介绍 smtplib 是 Pytho…

内存函数详解与模拟实现

目录 1.memcpy函数 1.1memmcpy函数的模拟使用 2.memmove函数 2.1memmove 函数的模拟使用 3.memcmp 3.1memcmp函数的模拟实现 4.memset (内存设置) 4.1memset函数的模拟实现 1.memcpy函数 void* memcpy(void* destination, const void* source, size_t num);//之所以是v…

工业4.0 企业级云MES全套源码,支持app、小程序、H5、台后管理端

工业4.0 企业级云MES全套源码,支持app、小程序、H5、台后管理端 采用javaspringboot-vue.jsuniapp开发 随着工业4.0的快速发展,制造执行系统(MES)成为了智能制造的核心。今天,将为大家介绍一款开源的MES系统——MES管…

一个基于HOOK机制的微信机器人

一个基于✨HOOK机制的微信机器人,支持🌱安全新闻定时推送【FreeBuf,先知,安全客,奇安信攻防社区】,👯Kfc文案,⚡备案查询,⚡手机号归属地查询,⚡WHOIS信息查询…

家政保洁服务小程序怎么做?家政公司快速搭建专属小程序

在数字化时代背景下,家政保洁服务行业也迎来了线上转型的新机遇。家政保洁服务小程序,作为一种新型的线上服务平台,不仅能够提升家政公司的服务效率,还能为顾客提供更加便捷的预约上门服务体验。那么家政保洁服务小程序怎么做呢&a…

java智慧工厂制造生产管理MES系统saas模式Java+ idea+ uniapp全套MES系统源码,多端展示

java智慧工厂制造生产管理MES系统saas模式Java idea uniapp全套MES系统源码,多端展示 MES 系统源码(生产制造执行系统)能够帮助企业实现全生产过程的可视化,数据分析智能化、构建高效智能工厂,MES系统通过控制指令、人…

工作学习的电脑定时关机,定时重启,定时提醒

可以直接下载工具: 定时自动关机 大家好,! 在我们学习与工作时,经常会遇到想要在完成一个任务后,再关闭电脑或对电脑重启,但这个时间点,操作电脑的人可能不能在电脑旁边,这样就需要…

Docker快速部署Seata的TC服务以及微服务引入Seata教程

目录 一、使用docker部署Seata的TC服务 1、拉取TC服务镜像 2、创建并运行容器 ​3、修改配置文件 4、在Nacos中添加TC服务的配置 5、重启TC服务 二、微服务集成Seata 1、引入依赖 2、修改配置文件 Seata是阿里的一个开源的分布式事务解决方案,能够为分布…

2024年5月计算机视觉论文推荐:包括扩散模型、视觉语言模型、图像编辑和生成、视频处理和生成以及图像识别等各个主题

我们今天总结下2024年5月发表的最重要的论文,重点介绍了计算机视觉领域的最新研究和进展,包括扩散模型、视觉语言模型、图像编辑和生成、视频处理和生成以及图像识别等各个主题。 Diffusion Models 1、Dual3D: Efficient and Consistent Text-to-3D Ge…

mysql中text,longtext,mediumtext区别

文章目录 一.概览二、字节限制不同三、I/O 不同四、行迁移不同 一.概览 在 MySQL 中,text、mediumtext 和 longtext 都是用来存储大量文本数据的数据类型。 TEXT:TEXT 数据类型可以用来存储最大长度为 65,535(2^16-1)个字符的文本数据。如果存储的数据…

SwiftUI中的手势(MagnificationGesture、 RotationGesture)

通过前两篇文章的探索,手势的基本使用规则已经较深的了解,本篇文章主要看看放缩手势MagnificationGesture和旋转手势RotationGesture。 MagnificationGesture 放缩手势 放缩手势在App中用的也比较广泛,下面先看一个示例效果: 上…

Mybatis Cache(二)MybatisCache+Redis

前面提到了,使用mybatis cache,一般是结合redis使用。 一、demo 1、数据表 create table demo.t_address (id int auto_incrementprimary key,address_name varchar(200) null,address_code varchar(20) null,address_type int n…