栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

mask-fusion 编译全过程总结

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

mask-fusion 编译全过程总结

1. 编译环境

      Ubuntu18.04 + CUDA10.0 + CUDNN7.4.1.5 (maskfusion作者用的是ubuntu16版本,用的CUDA8,个人觉得只要环境配置OK,我相信更高版本的ubuntu和CUDA都可以)

2.安装问题(就我个人的环境而言)

     (1)安装cuda:建议使用.run格式的下载文件,NVIDIA官网下载时,注意后面的插件扩展包一并下载(如我的cuda_10.0.130_410.48_linux.run(1.9G)和扩展cuda_10.0.130.1_linux.run(3.3MB))

             直接使用sudo sh + 下载路径下的文件名(注意给文件改可执行权限)

              如我的: 用户名~/下载$ sudo sh cuda_10.0.130_410.48_linux.run

               运行后,直接enter,然后除问安装驱动这个no,其余全yes。具体贴图过程网上有,然后就是环境变量设置,网上都有

      (2)CUDNN:下载解压后,在该目录下用以下命令,注意cuda版本号

                   sudo cp cuda/include/cudnn.h /usr/local/cuda/include/
                   sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64/
                   sudo chmod a+r /usr/local/cuda/include/cudnn.h
                   sudo chmod a+r /usr/local/cuda/lib64/libcudnn*

       (3)Anaconda3安装:建议官网直接下Linux最新版,不要在意python版本,只要高于自己ubuntu系统的python即可,毕竟我只用他于虚拟环境管理器,有他方便些。

                 如我的(python3.8.8版本的Anaconda3-2021.05-Linux-x86_64.sh),给予文件权限后,  路径下  sudo sh + Anaconda3-2021.05-Linux-x86_64.sh    然后是安装,直接enter加yes即可

3.下载mask-fusion源码(Github上直接输入maskfusion,第一个就是。大神勿喷小白教程)

关于编译问题,对 build.sh 文件进行了修改,并且删掉了最后的build,然后进行下列操作

如图,主要删除了cuda安装模块,作者写的虚拟环境创建模块和build,改动都在图中表示出来了,对照更改即可(建议有vpn这种东西,要不很容易失败)

还有其中pangolin的安装下载,建议不要用源码,因为pangolin在维护,一直在更新,不建议用最新的,将以前装成功的复制到对应的deps文件夹如图

 在build.sh 文件处相应修改,如下图,注释掉git clone "pangolin ........"

其他包在有fanqiang工具下,不会报错,很快完成。

4.Anaconda下虚拟环境的创建,maskfusion代码基本在python3.6下运行不会错,至于其他的版本未试过。首先 anaconda装成功后,打开终端前面会有个(base),输入 conda deactivate即可关掉。然后创建自己的虚拟环境,输入 conda create -n + 环境名 python=

如我的 conda create  -n tensorflow python=3.6.9    (PS:ubuntu自带python2.7和py3.6.9 ,为了不装其他的py以及适应maskfusion的编译条件,就直接选用py3.6,> 3.6的好像是不行的) 接着激活创建的环境 ,输入 conda activate tensorflow 在创建的环境下安装需要的包,其中我装的是 tensorflow-gpu==1.14 和 keras==2.2.5 . 输入 pip3 install tensorflow-gpu==1.14 和pip3 install keras==2.2.5 (pip3需要安装)包的安装顺序就用build.sh文件中的那样,如图选中的地方

包装好后,可用 pip list 查看安装成功否,如图

5. 在 ./build.sh 成功后,进行编译,编译指令改过,如下,其余按照build.sh进行即可(注意,都要在自己的虚拟环境中进行)

cmake
  -DBOOST_ROOT="${BOOST_ROOT}"
  -DOpenCV_DIR="$(pwd)/../deps/opencv/build"
  -DPangolin_DIR="$(pwd)/../deps/Pangolin/build/src"
  -DCUDA_HOST_COMPILER=/usr/bin/gcc
  -DWITH_FREENECT2=OFF
  ..

主要就是把 -DMASKFUSION_PYTHON_VE_PATH="$(pwd)/../python-environment" 删掉了

编译按照上面的配置不会有错

6.运行问题(主要有两个)

使用指令跑代码,数据集在github上有,下载即可,在build下进入生成的GUI文件下,输入

./MaskFusion -run -l /home/用户名/datasets/teddy-handover.klg

(1)错误提示:cudaSafeCall() Runtime API error : invalid texture reference.

忘记截图,按照之前的搜索信息,提示如上,解决办法,找到maskfusion下Core文件,打开找到CMakeLists.txt文件,打开,注释选中的两行,如图

然后重新编译即可,可能还会遇到下面一个问题

(2)错误提示:AttributeError: 'str' object has no attribute 'decode'

解决办法,找到文件 cd /home/用户名/.local/lib/python3.6/site-packages/keras/engine

然后 sudo gedit saving.py ,打开后删掉以 .decode(‘utf-8’)结尾的语句, 如图我注释掉了

 这个改掉保存即可,在运行就没错了,就出结果了

写在最后: 这过程中最大的错在于最开始未理解python的索引问题,因为我的系统下有py3.6 , py3.7, py3.8 以及py2.7。只要最开始注意到python的问题,就是先为系统指定一个固定的py,即使不用anaconda,直接装环境需要的包在指定py下也不会有错,其余编译问题都不会很难。

附上运行结果,如图

     

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/333591.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号