Livox_detection项目复现过程||问题、避雷操作记录

Ubuntu18.04系统。

博客记录的相关项目:livox_detection_simu项目和livox_detection_v1.1项目。这两个项目的文件内容除了与训练模型不同,其他基本相同。所以本记录对以上2个项目均适用。

Rviz中只有点云没有检测框?或许是因为你在Pycharm中运行的py脚本!

复现关键点:

1、pybind11不要用最新版,手动指定版本。

2、不用在pycharm中运行目标检测脚本,否则rviz只能看到点云,没有检测结果。

3、如果需要tensorflow-GPU计算,则需要安装CUDA10.0。

 

一、下载/克隆项目源码

1、livox_detection_simu项目链接

GitHub - Livox-SDK/livox_detection_simu: Trained on Simulated Data, Tested in the Real World

a05512e370d446babaa6196eba6d574a.png

2、livox_detection项目链接(本文指的是分支中的v1.1版本)

GitHub - Livox-SDK/livox_detection: Livox open source detection algorithm

727b5627ccbb43b596683af6ceb7353f.png 

二、配置虚拟环境

1、README给的依赖环境:

  • python3.6+
  • tensorflow1.13+ (tested on 1.13.0)    #  先不着急安装,且看下面第2点。
  • pybind11
  • ros

运行过程中netifaces相关报错,可以在安装一个netifaces包 ,命令如下:

pip install netifaces

 2、tensorflow安装什么版本?

2.1 选择CPU/GPU版?

首先,众所周知tensorflow1.x的版本,CPU版和GPU版是分开的,其中GPU版本包含CPU的所有内容。所以如果想要在GPU上运行,可以直接选择GPU版本,运行过程中检测到用不了GPU设备会自动放到CPU上运行的。安装tensorflow-gpu1.15版本命令示例(如果选GPU版,先别着急安装,且看下面2.2):

pip install tensorflow-gpu==1.15

问题1:为什么安装了gpu版,还是在cpu上运行?

其次,如果同时安装了tensorflow和tensorflow-gpu,按照后安装那个来执行。也就是如果后安装tensorflow,就只能在CPU上运行。

2.2 安装GPU版本最好和CUDA版本兼容!

没有选择GPU版本的可以跳过这一步,看2.3。

问题2:为什么我复现出来,但是检测速度很慢,两三百毫秒?

为了使项目运行在GPU上,tensorflow版本需要和CUDA版本对应。项目要求1.13+,所以确保自己CUDA是10.0。

在终端使用nvcc -V命令,查看本机安装的是CUDA11.4。所以采用1.13和1.15只能在CPU上运行。

e40efee35d9445a8a190e6dfd6d7abdc.png

e5512a7cac69493e91fe5789e3d13945.png

2.3 选择tensorflow 1.X?

根据测试tensorflow1.13和1.15版本都可以成功允许脚本。由于是在CPU上运行,检测速度达不到项目说明中写的“25ms"。

如下图所示,左边使用tensorflow1.13,检测速度在310+ms;右边是tensorflow1.15,检测速度在240+ms。所以CPU运行的话,选1.15似乎更好。

fc1c8c97344f47d9b40563e7101c0274.png

安装tensorflow 1.15命令示例:

pip install tensorflow==1.15

3、ROS 安装和导入

3.1 ROS安装教程:自行搜索如“Ubuntu18.04 安装ROS教程”。

3.2 问:本机安装ROS后Pycharm中的虚拟环境如何导入rospy等相关的包?

答:解释器设置-Python解释器右边的下拉小箭头-全部显示-选择自己的环境-上面第五个的图标(显示解释器路径)-添加类似如下的ROS路径。

ea17ef2731e7462381b41b208bdfc4dc.png

三、根据README安装——Installation

1、手动确定pybind11 版本 

官方使用git克隆pybind11库,但是由于项目更新,新版的可能会出现问题。我这里使用了pybind11 2.6.1 版本能够正常运行。在下载链接里找到对应版本,下载zip压缩包后解压到

utils/lib_cpp文件夹,并重命名为pybind11。

pybind11 2.6.1 版本下载链接https://github.com/pybind/pybind11/releases?page=3

4103a3b2c86d4fac9b6fec1a587d54d4.png

在链接里找到2.6.1

 

57ec719c0d97408c938df052088052c9.png

解压路径

2、按照README在utils/lib_cpp路径下编译。并将so文件复制到项目根目录。

$ mkdir build && cd build
$ cmake -DCMAKE_BUILD_TYPE=Release ..
$ make

成功编译输出:

3c6c66a3d69041318833397cb8c12723.png 

3、 下载与训练模型。

两个项目的预训练模型不同,所以在对应的README链接中下载。解压到项目根目录/model路径下。文件夹名字不要写错。

d4411300da9141adbc39242495f3c1e6.png

四、README——Run

1、下载demo点云包

下载官方准备的点云包并放到项目根目录,分别是demo1.bag和demo2.bag。

2、执行检测程序

$ roscore

$ rviz -d ./config/show.rviz

$ python livox_detection_simu.py

$ rosbag play *.bag -r 0.1

终端启动ROS,rviz,回放demo包,执行检测程序。分别在四个终端执行以上四句命令。

其中第四句在需要回放的bag的目录,按照上面就是在项目根目录。

9b7bac074fa443269d9c22b049ba949c.png

 第三句,也是一样的道理,在终端中进入对应路径运行脚本。

3、Rviz怎么显示结果?

在Rviz中添加话题,并将最上面<Fixed Frame>中内容改称/livox_frame(手动输入,不可以下拉)。

添加点云/livox/lidar、目标检测框/detect_box3d、文本/text_det。

正确运行的结果如下:

207cad9cf7cd424dadd9dc7fbff95c30.png

习惯用Pycharm的同学注意!不要在Pycharm中右键运行,或者点击右上角运行图标,否则在rviz中看不到3D检测框(/detect_box3d 话题没有信息输出)。必须要在终端中运行脚本。

我也不知道为什么,有知道的可以说说。因为我一直在pycharm中而非终端里运行,导致我在这个项目上浪费的很多时间。换了个种方法,查看代码,更换环境。

未解决的问题:一段时间后,3D检测框明显跟不上目标移动速度。猜测是未使用GPU计算,计算速度过慢导致的。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值