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项目链接

livox_detection_simu链接Trained on Simulated Data, Tested in the Real World - Livox-SDK/livox_detection_simuicon-default.png?t=O83Ahttps://github.com/Livox-SDK/livox_detection_simu

a05512e370d446babaa6196eba6d574a.png

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

livox_detection链接Livox open source detection algorithm. Contribute to Livox-SDK/livox_detection development by creating an account on GitHub.icon-default.png?t=O83Ahttps://github.com/Livox-SDK/livox_detection/

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上运行?

其次,如果同时安装了tensorflowtensorflow-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 版本下载链接icon-default.png?t=O83Ahttps://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.bagdemo2.bag

2、执行检测程序

$ roscore

$ rviz -d ./config/show.rviz

$ python livox_detection_simu.py

$ rosbag play *.bag -r 0.1

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

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

9b7bac074fa443269d9c22b049ba949c.png

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

3、Rviz怎么显示结果?

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

点击左下角ADD添加话题,添加点云/livox/lidar、目标检测框/detect_box3d、文本/text_det

正确运行的结果如下:

207cad9cf7cd424dadd9dc7fbff95c30.png

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

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

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

猜你喜欢

转载自blog.csdn.net/FiveSeconds/article/details/142719166