文章目录
前言
目的:测试语义分割结果
一、 voxblox++配置
1.1 官方步骤
依据官网教程即可,很详细installing voxblox++
1.2 补充
补充:此处建议新建一个ROS工作空间,比如eth_ws
,因为它使用catkin build构建工程,而且会通过.rosinstall
文件下载很多该项目需要依赖的包(多达几十个)。
1.3 报错整理
如果编译出错,使用如下几个手段。
- 建议掌握
catkin config
的各类命令。比如catkin config
,catkin config --extend /opt/ros/melodic
。将工作空间环境变量设置正确。 - 如果找不到
xxxxxConfig.cmake
,建议使用echo $CMAKE_PREFIX_PATH
看看路径,并在CmakeLists.txt
中设置set(CMAKE_PREFIX_PATH "/path/to/your/package/cmake or share directory")
- 掌握
echo $PYTHONPATH
以及灵活添加python路径export $PYTHONPATH:/opt/ros/melodic/lib/python2.7/dist-packages
,这一招在找不到python包时依然管用。 - 掌握在python文件中添加路径的方法,比如在
.py
中临时添加python路径,
import sys
sys.path.insert(0, "/home/xxx/ws/cv_bridge_python3/install/lib/python3/dist-packages")
sys.path.remove("/home/xxx/vins_ws/devel/lib/python2.7/dist-packages")
1.4 关于VTK
在编译过程中会报warning,但是其实不装VTK依然可行,程序可以正常跑。
二、voxblox++报错整理
2.1 运行环境
Ubuntu18.04 + CUDA10.0 + CUDNN7.6.5
GPU:2060S
以下使用conda环境
python==3.6
cudatoolkit 10.0.130
cudnn 7.6.5
tensorflow-gpu 1.15.0
keras 2.2.4
pillow 8.4.0
imageio 2.15.0
opencv-python 4.5.5.64
scipy 1.2.1
matplotlib 3.1.1
torch 1.10.2
关于conda安装和卸载包,有两种方式,只是从不同的源下载,最后都会装在conda环境中。
pip3 install tensorflow-gpu==1.15.0
pip3 uninstall tensorflow-gpu==1.15.0
conda remove cudatoolkit
conda install cudatoolkit=10.0 cudnn
此处不建议使用tensorflow2.0及以上版本,程序中很多import不兼容2.0
2.2 报错整理
- 2.2.1 AttributeError:module ‘keras.engine.topology’ has no attribute 'load_weights_from_hdf5_group_by_name
- 2.2.2 module ‘scipy.misc’ has no attribute ‘imresize’ 报错信息解决方法
- 2.2.3 skimage.io.imread与cv2.imread的区别
- 2.2.4 程序运行时,可能会报关于tensorflow的warning,主要是API变化了,自己根据报warning文件位置,依次修改tensorflow的源码文件就行。
- 2.2.5 运行keras时出现Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR的原因和解决方法
- 2.2.6 报错找不到GPU,一般来讲,我们Ubuntu中在系统中如果是Nvidia显卡,会有CUDA。比如我的
/usr/local/cuda-10.2
,但是这个10.2版本我显卡允许的最高版本。为了和Tensorflow=1.15.0适配,显卡也支持低版本的10.0。我建议在conda中安装新的cuda和cudnn,conda search cudatoolkit
,conda install cudatoolkit=10.0 cudnn
。不要去影响系统里本身的CUDA。
三、 运行结果
四、分析总结
4.1 VoxBlox++
该算法实时性不够,可能是加入了语义理解拖慢了速度,本质上,该算法使用了像素平面的MASK_RCNN来实现区域分割。
4.2 MASK_RCNN的实时性测试
由于ETH-ASL对其ROS封装,所以MASK_RCNN更容易结合到自己的工程项目中。使用默认的mask_rcnn_coco.h5
, MASK_RCNN在我RTX2060S上到达2.6fps,如果CPU跑是0.6fps。整体实时性也不佳。