『NVIDIA Jetson Xavier筆記』Xavier(arrch64架構)搭建second點雲目標檢測環境!

Xavier(基於arrch64架構)搭建second點雲目標檢測環境!

  • 首先聲明聲明一下,在Xavier上編譯各種東西實在是太難了,希望對你有所幫助,中間遇到各種坑!
  • 系統我刷機使用的是Jetpack4.2,刷機教程可以參考上一篇博客:Xavier(基於arrch64架構)刷機Jetpack4.2!)
  • 環境信息參考如下(torch和torchvision使用pip安裝),在最後附錄下面展示!
  • second點雲項目github地址https://github.com/traveller59/second.pytorch
  • 此外在使用pip的時候我們可以制定pip的源
# 阿里源
pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/
# 豆瓣
pip install -r requirements.txt -i https://pypi.douban.com/simple/
# 清華大學
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/

一. 事先準備工作

1.1. 安裝cmake

在給Xavier刷完機之後,首先是安裝Cmake,要進行源安裝,然後運行./boostrad那個,然後sudo make && make install。最後需要將你的cmake路徑添加到環境變量中去。

export PATH=$PATH:/your_camke_path/

1.2. 創建second虛擬環境

這裏參考我之前的博客,使用一個miniforge的軟件包,個人感覺相比其它方法,這個方法最棒。 博客鏈接:『NVIDIA Jetson Xavier筆記』Xavier(基於arrch64架構)安裝anaconda!

1.3. 安裝一些依賴包

激活進入second虛擬環境之後, 這裏我們在安裝numba包之前要安裝一些依賴:

sudo apt-get install llvm-7

查看llvm的路徑(執行下面命令後會在終端顯示llvm的安裝路徑):

which llvm-config-7

執行如下命令:

export LLVM_CONFIG=/usr/bin/llvm-config-7
pip install llvmlite==0.29.0
pip  install numba==0.44.1

到此,如果安裝沒問題的話,在python環境下看能否import numba成功,可以的話說明已經安裝成功,接下來在.bashrc下面添加導出路徑。

export NUMBAPRO_CUDA_DRIVER=/usr/lib/aarch64-linux-gnu/libcuda.so   # (set your Xavier cuda lib path)
export NUMBAPRO_NVVM=/usr/local/cuda/nvvm/lib64/libnvvm.so # set your libnvvm path
export NUMBAPRO_LIBDEVICE=/usr/local/cuda/nvvm/libdevice

二. 安裝pytorch以及spconv

2.1. 安裝pytorch以及torchvision

Xavier安裝pytotrch剛開始不太容易,因爲沒有直接安裝的腳本(需要編譯,坑特別多),幸好有這個NVIDIA官方提供了.whl文件,鏈接爲:Welcome to the new NVIDIA Developer Forums!,按照裏面的安裝步驟就可以,然後就可以按抓給你對應的torchvision版本。

如果下載過程,可以直接用我百度雲鏈接:提取碼:o03n

pip install torch-1.1.0-cp36-cp36m-linux_aarch64.whl

下面是安裝torchvision,參考nvidia官方里的issues的答案:

sudo apt-get install libjpeg-dev zlib1g-dev
git clone --branch v0.3.0 https://github.com/pytorch/vision torchvision
cd torchvision
sudo python setup.py install
cd ../ # attempting to load torchvision from build dir will result in import error

不同版本的torch所對應的torchvision:

PyTorch v1.0 - torchvision v0.2.2
PyTorch v1.1 - torchvision v0.3.0
PyTorch v1.2 - torchvision v0.4.0
PyTorch v1.3 - torchvision v0.4.2

2.2. 安裝spconv

在這部分花的時間也不少,因爲編譯不過。這裏使用的是Spconv 1.1。

git clone https://github.com/traveller59/spconv  --recursive

記得要檢查一下,third-party裏面的pybind11 是否下載完整,否則容易出錯。編譯完成後會在dist文件夾下有 spconv 1.1的whl 文件,然後 pip3 install 安裝就可以。這裏爲了方便我百度雲直接提供了編譯好的.whl文件,只需要直接pip一下。 百度雲鏈接:提取碼:o03n

pip install spconv-1.1-cp36-cp36m-linux_aarch64.whl

三. second網絡驗證性能

3.1. 性能測試

(second) sl@sl-xavier:~/zhang/second.pytorch/second$ export PYTHONPATH=/home/zhang/second.pytorch/
(second) sl@sl-xavier:~/zhang/second.pytorch/second$ python  ./pytorch/train.py evaluate --config_path=./configs/all.fhd.config --model_dir=./model_dirb --measure_time=True --batch_size=1
......
......
[  41  800 1104]
Restoring parameters from /home/sl/zhang/second.pytorch/second/model_dirb/voxelnet-63550.pt
feature_map_size [1, 100, 138]
remain number of infos: 3769
Generate output labels...
[100.0%][===================>][4.22it/s][16:16>00:00]      
generate label finished(3.84/s). start eval:
==========================================================================================
avg example to torch time: 21.604 ms
avg prep time: 16.747 ms
avg voxel_feature_extractor time = 2.204 ms
avg middle forward time = 166.750 ms
avg rpn forward time = 26.099 ms
avg predict time = 24.597 ms
all_time : 258.001 ms

注意: 程序運行過程中,難免會遇到各種各樣的問題,我遇到的問題是opencv-python安裝不了,後來考慮到只是簡單的測試,就把cv2包註銷掉了。

3.2. 報錯解決

  File "<__array_function__ internals>", line 6, in linspace
  File "/home/sl/miniforge-pypy3/envs/second/lib/python3.6/site-packages/numpy/core/function_base.py", line 121, in linspace
    .format(type(num)))
TypeError: object of type <class 'numpy.float64'> cannot be safely interpreted as an integer.

參加github官網issues:To solve it, you can either downgrade your numpy, or modify utils/eval.py, line 704:

for i in range(overlap_ranges.shape[1]):  
        for j in range(overlap_ranges.shape[2]):
            a, b, c = overlap_ranges[:, i, j] #extracting the three numbers
            min_overlaps[:, i, j] = np.linspace(a, b, int(c)) #casting to integer
            #min_overlaps[:, i, j] = np.linspace(*overlap_ranges[:, i, j])

四. 補充之Jetson查看CPU、內存以及GPU使用情況

官方新推出jtop工具,專門用來查看jetson的CPU、GPU等信息,使用方法也很簡單!

4.1. 安裝步驟

sudo -H pip install jetson-stats

如果提示沒有安裝pip,執行如下命令安裝pip。
安裝方法:

4.2. 使用方法

直接在命令行輸入:

sudo jtop

五. 附錄部分

(second) sl@sl-xavier:~$ conda list
# packages in environment at /home/sl/miniforge-pypy3/envs/second:
#
# Name                    Version                   Build  Channel
_openmp_mutex             4.5                       0_gnu    conda-forge
blosc                     1.19.0               he1b5a44_0    conda-forge
brotli                    1.0.7             he1b5a44_1002    conda-forge
bzip2                     1.0.8                h516909a_2    conda-forge
ca-certificates           2020.4.5.2           hecda079_0    conda-forge
certifi                   2020.4.5.2       py36h9f0ad1d_0    conda-forge
charls                    2.1.0                he1b5a44_2    conda-forge
cloudpickle               1.4.1                      py_0    https://mirrors.ustc.edu.cn/anaconda/pkgs/main
cycler                    0.10.0                     py_2    conda-forge
cytoolz                   0.10.1           py36h516909a_0    conda-forge
dask-core                 2.17.2                     py_0    https://mirrors.ustc.edu.cn/anaconda/pkgs/main
decorator                 4.4.2                      py_0    https://mirrors.ustc.edu.cn/anaconda/pkgs/main
fire                      0.3.1                    pypi_0    pypi
freetype                  2.10.2               he06d7ca_0    conda-forge
giflib                    5.2.1                h516909a_2    conda-forge
icu                       64.2                 h4c5d2ac_1    conda-forge
imagecodecs               2020.5.30        py36hcd4facd_1    conda-forge
imageio                   2.8.0                      py_0    https://mirrors.ustc.edu.cn/anaconda/pkgs/main
jpeg                      9d                   h6dd45c4_0    conda-forge
jxrlib                    1.1                  h516909a_2    conda-forge
kiwisolver                1.2.0            py36hdb11119_0    conda-forge
lcms2                     2.9                  hbd6801e_2    conda-forge
ld_impl_linux-aarch64     2.34                 h326052a_5    conda-forge
libaec                    1.0.4                he1b5a44_1    conda-forge
libblas                   3.8.0               10_openblas    conda-forge
libcblas                  3.8.0               10_openblas    conda-forge
libffi                    3.2.1             h4c5d2ac_1007    conda-forge
libgcc-ng                 7.5.0                h8e86211_6    conda-forge
libgfortran-ng            7.5.0                hca8aa85_6    conda-forge
libgomp                   7.5.0                h8e86211_6    conda-forge
liblapack                 3.8.0               10_openblas    conda-forge
libpng                    1.6.37               hed695b0_1    conda-forge
libprotobuf               3.12.3               h8b12597_0    conda-forge
libstdcxx-ng              7.5.0                hca8aa85_6    conda-forge
libtiff                   4.1.0                h6fdbc6b_6    conda-forge
libwebp-base              1.1.0                h516909a_3    conda-forge
libzopfli                 1.0.3                he1b5a44_0    conda-forge
llvmlite                  0.29.0                   pypi_0    pypi
lz4-c                     1.9.2                he1b5a44_1    conda-forge
matplotlib                3.2.1                         0    conda-forge
matplotlib-base           3.2.1            py36h0f30586_0    conda-forge
ncurses                   6.1               hf484d3e_1002    conda-forge
networkx                  2.4                        py_0    https://mirrors.ustc.edu.cn/anaconda/pkgs/main
numba                     0.44.1                   pypi_0    pypi
numpy                     1.18.5           py36h3849536_0    conda-forge
olefile                   0.46                       py_0    https://mirrors.ustc.edu.cn/anaconda/pkgs/main
openblas                  0.3.6                h6e990d7_2    conda-forge
openjpeg                  2.3.1                h981e76c_3    conda-forge
openssl                   1.1.1g               h516909a_0    conda-forge
pandas                    1.0.4            py36h7c3b610_0    conda-forge
pillow                    7.1.2            py36h8328e55_0    conda-forge
pip                       20.1.1                     py_1    conda-forge
protobuf                  3.12.2                   pypi_0    pypi
psutil                    5.7.0                    pypi_0    pypi
pyparsing                 2.4.7                      py_0    https://mirrors.ustc.edu.cn/anaconda/pkgs/main
python                    3.6.10          h8356626_1011_cpython    conda-forge
python-dateutil           2.8.1                      py_0    https://mirrors.ustc.edu.cn/anaconda/pkgs/main
python_abi                3.6                     1_cp36m    conda-forge
pytz                      2020.1                     py_0    https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
pywavelets                1.1.1            py36h68bb277_1    conda-forge
pyyaml                    5.3.1            py36h8c4c3a4_0    conda-forge
readline                  8.0                  h75b48e3_0    conda-forge
scikit-image              0.17.2           py36h7c3b610_1    conda-forge
scipy                     1.4.1            py36h3a855aa_3    conda-forge
seaborn                   0.10.1                     py_0    https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
setuptools                47.1.1           py36h9f0ad1d_0    conda-forge
six                       1.15.0                   pypi_0    pypi
snappy                    1.1.8                he1b5a44_1    conda-forge
spconv                    1.1                      pypi_0    pypi
sqlite                    3.30.1               h283c62a_0    conda-forge
tensorboardx              2.0                        py_0    conda-forge
termcolor                 1.1.0                    pypi_0    pypi
tifffile                  2020.6.3                   py_1    conda-forge
tk                        8.6.10               hed695b0_0    conda-forge
toolz                     0.10.0                     py_0    https://mirrors.ustc.edu.cn/anaconda/pkgs/main
torch                     1.1.0                    pypi_0    pypi
tornado                   6.0.4            py36h8c4c3a4_1    conda-forge
wheel                     0.34.2                     py_1    conda-forge
xz                        5.2.5                h6dd45c4_0    conda-forge
yaml                      0.2.5                h516909a_0    conda-forge
zlib                      1.2.11            h516909a_1006    conda-forge
zstd                      1.4.4                h6597ccf_3    conda-forge
(second) sl@sl-xavier:~$ pip list
Package         Version
--------------- -------------------
certifi         2020.4.5.2
cloudpickle     1.4.1
cycler          0.10.0
cytoolz         0.10.1
dask            2.17.2
decorator       4.4.2
fire            0.3.1
imagecodecs     2020.5.30
imageio         2.8.0
kiwisolver      1.2.0
llvmlite        0.29.0
matplotlib      3.2.1
networkx        2.4
numba           0.44.1
numpy           1.18.5
olefile         0.46
pandas          1.0.4
Pillow          7.1.2
pip             20.1.1
protobuf        3.12.3
psutil          5.7.0
pyparsing       2.4.7
python-dateutil 2.8.1
pytz            2020.1
PyWavelets      1.1.1
PyYAML          5.3.1
scikit-image    0.17.2
scipy           1.4.1
seaborn         0.10.1
setuptools      47.1.1.post20200529
six             1.15.0
spconv          1.1
tensorboardX    2.0
termcolor       1.1.0
tifffile        2020.6.3
toolz           0.10.0
torch           1.1.0
torchvision     0.3.0
tornado         6.0.4
wheel           0.34.2

參考文章

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章