jetson-tx2装机、pytorch、yolov5、opencv-python、onnxruntime-gpu

jetson-tx2装机、pytorch、yolov5、opencv-python、onnxruntime-gpu

  • 系统镜像的安装和备份
    • 系统镜像恢复
    • 裁剪系统桌面
  • cuda、cudnn安装
  • archiconda3
  • 安装pytorch、torchvison、opencv-python、onnxruntime-gpu
    • 安装pytorch
      • 安装pytorch1.11
      • 安装pytorch1.7
    • 安装torchvision
    • 安装opencv-python
    • 安装onnxruntime-gpu
  • yolov5测试

环境如下

  1. 系统:ubuntu18.04
  2. jetpack:4.5.1
  3. cuda:10.2
  4. cudnn:8.0.0
  5. pytorch:1.7
  6. torchvison:0.8.1
  7. opencv:4.5.4
  8. archiconda3

系统镜像的安装和备份

系统镜像恢复

进入烧录模式:
将机器通过USB数据线连接至虚拟机ubunutu18.04,然长按repower键不松,再按复位键,即可进入烧录模式。
说明:一般使用另一台机器虚拟机或者linux链接
镜像安装

# 替换镜像文件,本例是将刚克隆的镜像替换为系统镜像的操作
root@mm-desktop:~/tx2-NX/tx2-BIOS-4.5/tx2-nx4.5.1sdk# cd bootloader/
root@mm-desktop:~/tx2-NX/tx2-BIOS-4.5/tx2-nx4.5.1sdk/bootloader# mv system.img system.img.bak
root@mm-desktop:~/tx2-NX/tx2-BIOS-4.5/tx2-nx4.5.1sdk/bootloader# cp ../clone.img system.img
root@mm-desktop:~/tx2-NX/tx2-BIOS-4.5/tx2-nx4.5.1sdk/bootloader# cd ../../
# 烧录镜像
root@mm-desktop:~/tx2-NX/tx2-BIOS-4.5# ./run_tx2_bios_4.5.1.sh

镜像备份

root@mm-desktop:~/tx2/tx2-BIOS-4.5# ls
run_tx2_bios_4.5.1.sh  tx2-nx4.5.1sdk  tx2-nx4.5.1sdk.tar.gz
root@mm-desktop:~/tx2/tx2-BIOS-4.5# cd tx2-nx4.5.1sdk/
root@mm-desktop:~/tx2/tx2-BIOS-4.5/tx2-nx4.5.1sdk# sudo ./flash.sh -r -k APP -G clone.img jetson-xavier-nx-devkit-tx2-nx  mmcblk0p1
...
[  13.2921 ] Reading partition
[  13.2964 ] tegradevflash_v2 --read APP /home/xm/tx2-NX/tx2-BIOS-4.5/tx2-nx4.5.1sdk/clone.img
[  13.3010 ] Bootloader version 01.00.0000
[  13.4607 ] [................................................] 100%
[ 1919.0289 ] 
*** The [APP] has been read successfully. ***
	Converting RAW image to Sparse image... 
# 成功后,会在该目录下生成clone.img和clone.img.raw  两个文件

裁剪系统桌面

后面再详细解释为什么要裁剪系统

apt-get purge xorg* -y
apt-get purge x11* -y
apt-get purge gnome* -y
apt-get purge printer-driver-* -y
apt-get purge libreoffice* -y 
apt autoremove -y

cuda、cudnn安装

cd install_cuda
bash install_package.sh
#选择1安装cuda,之后选择2安装cudnn

移动cuda到其他硬盘,这里要保证系统除了自带的16GB存储还有一块硬盘可以存放文件,原因后面解释

# files为其他硬盘挂载目录
mv /usr/local/cuda-10.2 /files
# 修改cuda环境变量
vim ~/.bashrc
#修改如下:
export CUDA_HOME=/files/cuda-10.2
export LD_LIBRARY_PATH=/files/cuda-10.2/lib64:$LD_LIBRARY_PATH
export PATH=/files/cuda-10.2/bin:$PATH

archiconda3

为什么使用archiconda3,一是为了方便管理环境,比较这个测试机要安装很多不同的环境来测试不同的模型;二是因为实在原机器的存储不够,我能想到的办法就是挂载一块硬盘,将archiconda3安装在挂载的硬盘下,这样就解决了存储不够的问题

bash archiconda3.sh

安装pytorch、torchvison、opencv-python、onnxruntime-gpu

安装pytorch

为何最后用了pytorch1.7,是因为pytorch1.11最新版本的源码编译需要很大的内存,内存不够只能swap来凑,在swap扩展到8GB的条件下pytorch才可以编译通过,系统需要5-6个GB,根目录下已经cudnn占了几百MB,我的按照上面步骤做完只剩下9.1GB,这也是为什么系统桌面要裁剪,cuda一定要移走的原因。注明:小系统我不会且身边没有能够提供的条件

安装pytorch1.11

third_party目录下文件会缺失很多,不知道是我网络原因还是其他原因,去github一个一个找即可
先来依赖项

apt install libatlas-dev liblapack-dev
apt install liblapacke-dev checkinstall
apt install libffi-dev
apt install ninja-build
apt install cmake (cmake version > 3.17)

再来环境需要的包,由于整个周期有点长,已经不确定具体哪几个包必须要,但是进安装上面的几个大包是需要的

pip install cython
pip install numpy 
pip install pyyaml
pip install scikit-build
pip install cffi
pip install typing-extensions
pip install dataclass

最后安装pytroch1.11

cd torch
mkdir build
cd buld 
cmake ..
make -j6
cd ..
python setup.py install
# 由于我直接最后一步一直报错所以尝试了这种办法,可行

这样很麻烦,而且容易断掉,不出问题也需要5-6个小时才可以编译完成,其他博客写的2个小时我是没体验到,可能由于版本问题,越新的支持的越多就需要编译更多的文件吧;所以在我不断探索下找到了一个更简单的方式,继续看下面

安装pytorch1.7

为什么是1.7,因为其他版本的pytorch我没下载下来,这个是whl文件,即英伟达已经编译好了


贴上英伟达提供的安装包链接:https://elinux.org/Jetson_Zoo#PyTorch_.28Caffe2.29最新的版本也只有1.10哦

apt-get install libopenblas-base libopenmpi-dev python3-pip
pip install torch-1.7.0...

这个简单又方便,但是问题来了,英伟达我并没有找到相应的torchvision的whl安装包,找了一圈只能使用源码编译;这个地方版本绝对要对的上,不然只会无止尽的报错,报错到怀疑人生,版本只能去官网查:https://pytorch.org/get-started/previous-versions/

安装torchvision

还是8个g的swap

git clone -b v0.8.1 https://github.com/pytorch/vision vision-0.8.1
cd vision-0.8.1
sudo python3 setup.py install

安装opencv-python

会缺一个包,不确定是否是我网络导致,但是安装的时候下载很慢,容易报错boostdesc_bgm.i,vgg_generated_48.i等下载地址https://download.csdn.net/download/m0_37661841/44322678

git clone https://github.com/opencv/opencv.git
git checkout <你所要用的 OpenCV 版本,建议是用最新版>
git clone git://github.com/Itseez/opencv_contrib
cmake -D CMAKE_BUILD_TYPE=RELEASE \
		-D BUILD_opencv_python3=YES \
		-D CMAKE_INSTALL_PREFIX=./install \
		-D INSTALL_PYTHON_EXAMPLES=ON \
		-D INSTALL_C_EXAMPLES=OFF \
		-D OPENCV_ENABLE_NONFREE=ON \
		# Contrib path
		-D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules \
		# Your virtual environment's Python executable
		# You need to specify the result of echo $(which python)
		-D PYTHON_EXECUTABLE=~/env/bin/python \
		-D BUILD_EXAMPLES=ON ..
make install

安装onnxruntime-gpu

pip install onnxruntime-gpu==1.7

yolov5测试

我的测试有一些额外的逻辑处理,可能性能会比原版的差一点,但不会太多

模型 输入尺寸 速度
yolov5s 640*384 100ms
yolov5s6 1280*768 300ms

安装完成之后swap就可以释放了,删掉文件,还有4GB的存储,部署的时候可以吧archiconda3移动到根目录下,这样不需要挂载硬盘也可以使用了;
写在最后:其实都是小问题,内存不够,存储不够,缺失文件,哪些文件可以移动哪些不可以等等,但是博客大佬们都是复制粘贴,没有人记录这些小问题,从swap2GB扩展到4GB再到6GB直到8GB,不断尝试,尝试到怀疑人生,坑里爬了半个月,总算上岸;后续再更新其他模型的性能测试

你可能感兴趣的:(jetson-tx2,深度学习,嵌入式,gpu,nvidia,opencv,jetson-tx2,yolov5)