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