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下也不會有錯,其余編譯問題都不會很難,
附上運行結果,如圖

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/321501.html
標籤:其他
上一篇:快速搭建本地服務器
