大疆妙算2复现prometheus项目
妙算2复现prometheus项目博客上面已经有很多版本,在参考别人的步骤的同时也遇到了很多新的问题,故在此记录,仅供各位参考。
需要做的事情
1.挂载妙算二自带的128G硬盘。
2.找到与cuda9.0对应的cudnn版本,并且一定要找到对应于arm架构的版本,否则后续会出现错误,并且难以找到相应的解决办法。
3.安装pytorch1.0.0(因项目需要此版本)
4.安装ros需要的依赖项
5.下载并编译Prometheus源码
(一)挂载128G硬盘
因在参考别人挂载硬盘的过程时,经常出现卡在登录页面无法进入的情况,特此记录整个挂载过程。
1. 查看已有的分区找到硬盘的名称 :sudo fdisk -lu
2.对硬盘进行分区(这里用自己的硬盘名称):
sudo fdisk /dev/sda1
a.输入m查看帮助
b.输入d,删除已有的分区
c.输入n,新建分区,这里注意创建成主分区否则后续无法格式化。
d.输入w保存设置退出
3.再次查看分区:sudo fdisk -lu
4.格式化分区,挂载之前一定要格式化硬盘:
sudo mkfs -t ext4 /dev/sda1
5.挂载分区:先将硬盘挂载到一个临时的目录下,在/mnt/下新建一个home目录
cd ~/mnt
mkdir home
sudo mount -t ext4 /dev/sda1 /mnt/home
之后可以查看mnt/home目录下的剩余空间以确认硬盘是否挂载到相应的目录下面
6.将原镜像下面的东西拷贝到新建的home文件下面
sudo cp -a /home/* /mnt/home/
7.设置开机挂载:sudo vim /etc/fstab
在末尾增加一行:/dev/sda1/ ext4 defaults 0 1
8.挂载未挂载的分区:mount -a
查看挂载的硬盘位置 df -h
重启查看开机挂载是否成功:
sudo reboot
至此硬盘挂载步骤结束,如果出现开机卡在登录页面无法进入系统的情况,可以先把开机挂载的硬盘删除,格式化硬盘重新按步骤走一遍。
(二)去Nvidia官网找到与CUDA版本对应的cudnn版本,这里选择7.1版本的cudnn如下图所示,
sudo tar xvf cudnn-9.0-linux-x64-v7.1.tgz
进入解压的文件夹下:
cd ./cuda
将cudnn的文件拷贝到cuda相应的文件下,这里一定要用root权限:
sudo cp include /cudnn.h /usr/local/cuda/include
sudo cp lib64/* /usr/local/cuda/lib64/
进入cuda文件下更改权限:
cd /usr/local/cuda/lib64
sudo chmod +r libcudnn.so.7.1.4
sudo rm -rf libcundd.so libcudnn.so.7
sudo ln -s libcudnn.so.7.1.4 libcudnn.so.7
sudo ln -s libcudnn.so.7 libcudnn.so
最后更新动态链接库:
sudo ldconfig
到此cudnn配置完成
(三)安装pytorch=1.0.0
安装之前需要解释之前为什么挂载妙算二自带的硬盘。安装pytorch时,需要保证系统空间大于12G,而妙算本身的空间是不够的,好在大疆自带一块128G的硬盘,可以直接挂载使用。
下载pytorch源码:
git clone --recursive --branch v1.0.0 https://github.com/pytorch/pytorch
这里需要注意:当源码下载完之后,还会克隆一些子模块到文件中,而下载子模块的时候会因为外网连接不上,出现联接不到网址的错误。此时不要慌,直接跳过就可以。后续会有命令继续下载没有下载完成的子模块。
接下来需要下载python的依赖项和必要的组件:
-
sudo apt install libopenblas-dev libatlas-dev liblapack-dev
-
sudo apt install liblapack-dev checkinstall
下载安装pip,这里一定要安装最近几年的pip,否则后面会出现版本不对应,出现莫名奇妙的错误。参考pip官网。wget https://bootstrap.pypa.io/get-pip.py sudo python get-pip.py
安装完成之后,继续执行下面的命令:
sudo apt-get install python-dev
sudo pip install numpy scipy #scipy:操控numpy数组来进行科学计算,统计分析
sudo pip install pyyaml #pyymal 编写工程的配置文件
sudo pip install scikit-build
sudo apt-get -y install cmake
sudo apt install libffi-dev
sudo pip install cffi #python调用c的功能接口
以上命令在执行时可能会出现安装不上的情况,这里可以跳过,继续执行下面的步骤。
安装完成之后,添加cudnn中lib和include的路径:
sudo gedit ~/.bashrc
export CUDNN_LIB_DIR=/usr/lib/aarch64-linux-gnu
export CUDNN_INCLUDE_DIR=/usr/include
source ~/.bashrc
编译源码之前需要对源码进行修改,关闭源码中的NCCL:
以上步骤执行完之后终于可以编译安装pytorch了
cd torch
git submodule update --init --recursive
这条命令会执行很长时间,并且会出现联接外网地址中断的情况,此时只需要在连接中断后反复执行命令即可。
sudo pip install -U setuptools
sudo pip install -r requirement.txt
sudo ~/jetson_clock.sh 这里是开启妙算2的最大模式,如果感觉声音比较大,可以不用执行命令
sudo pip install scikit-buils --user sudo lsconfig
设置环境变量
export USE_NCCL=0 USE_DISTRIBUTE=1 UES_OPENCV=ON USE_CUDNN=1 USE_CUDA=1 ONNX_ML=1
开始编译,以下两条命令会执行很长时间,只需耐心等待即可
sudo -E USE_MKLDNN=0 USE_QNNPACK=0 USE_NNPACK=0 USE_DISTRIBUTED=1 BUILD_TEST=0 python setup.py bdist_wheel
sudo -E USE_MKLDNN=0 USE_QNNPACK=0 USE_NNPACK=0 USE_DISTRIBUTED=0 BUILD_TEST=0 DEBUG=1 python setup.py build develop
经过漫长的编译之后,再执行下面的命令:
sudo apt clean
sudo apt-get install libjpeg-dev zliblg-dev
在home目录下新建一个目录xx
cd xx
git clone https://github.com/python-pillow/Pillow.git
cd Pillow
sudo python setup.py install
sudo apt-get install python-sklearn
sudo pip install pandas Cython scikit-image
sudo pip --no-cache-dir install torchvision
至此,torch已经安装完毕,可以新开一个终端进行验证。执行下面的命令。
python
import torch
执行完上述命令之后没有出现错误,则pytorch安装完毕。
(四)安装ros需要的依赖项
sudo apt install ros-kinetic-tf2-eigen
sudo apt-get install ros-kinetic-mavros ros-kinetic-macros-extras
wget https://raw.githubusercontent.com/macvink/mavros/scripts/install_geographiclib_datasets.sh
执行第二,三条命令时会出现连接不上外网的情况:
解决方案:
解决办法:
进入https://site.ip138.com/raw.Githubusercontent.com
输入raw.githubusercontent.com查寻ip地址,找到一个合适的地址添加到Ubuntu系统中。
sudo vim /etc/hosts
添加一个地址即可,例:185.199.110.133 raw.githubusercontent.com
退出并保存
(五)下载并编译Prometheus源码
github clone https://github.com/amov-lab/Prometheus.git
cd Prometheus
./compile_detection.sh #以root模式编译
echo 'source /home/dji/gjh/Prometheus/devel.setup.bash/' >> ~/.bashrc
source ~/.bashrc
运行Prometheus实验
#新建一个终端,运行
roscore
#再新建一个终端,用于运行摄像头
rosrun prometheus_detection web-cam
回到原来的终端运行实验
roslaunch prometheus_detection ms_coco_det.launch
roslaunch prometheus_detection uav_det.launch
roslaunch prometheus_detection tracker_kcf.launch
roslaunch prometheus_detection tracker_siamrpn.launch
至此实验所有步骤结束
``