进入烧录模式:
将机器通过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
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安装在挂载的硬盘下,这样就解决了存储不够的问题
bash archiconda3.sh
为何最后用了pytorch1.7,是因为pytorch1.11最新版本的源码编译需要很大的内存,内存不够只能swap来凑,在swap扩展到8GB的条件下pytorch才可以编译通过,系统需要5-6个GB,根目录下已经cudnn占了几百MB,我的按照上面步骤做完只剩下9.1GB,这也是为什么系统桌面要裁剪,cuda一定要移走的原因。注明:小系统我不会且身边没有能够提供的条件
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个小时我是没体验到,可能由于版本问题,越新的支持的越多就需要编译更多的文件吧;所以在我不断探索下找到了一个更简单的方式,继续看下面
为什么是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/
还是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
会缺一个包,不确定是否是我网络导致,但是安装的时候下载很慢,容易报错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
pip install onnxruntime-gpu==1.7
我的测试有一些额外的逻辑处理,可能性能会比原版的差一点,但不会太多
模型 | 输入尺寸 | 速度 |
---|---|---|
yolov5s | 640*384 | 100ms |
yolov5s6 | 1280*768 | 300ms |
安装完成之后swap就可以释放了,删掉文件,还有4GB的存储,部署的时候可以吧archiconda3移动到根目录下,这样不需要挂载硬盘也可以使用了;
写在最后:其实都是小问题,内存不够,存储不够,缺失文件,哪些文件可以移动哪些不可以等等,但是博客大佬们都是复制粘贴,没有人记录这些小问题,从swap2GB扩展到4GB再到6GB直到8GB,不断尝试,尝试到怀疑人生,坑里爬了半个月,总算上岸;后续再更新其他模型的性能测试