本文档中若有部分库或安装包下载不下来,则可在如下链接中自取:
链接:https://pan.baidu.com/s/1teYSJX6FWLdvO_nZLkgo4g 提取码:qppf
- 刷机过程
- 刷机准备
1、VMware软件安装(网上具有教程)
2、创建虚拟机(Ubuntu18.04)
①Ubuntu官网下载ubuntu-18.04.1-desktop-amd64
②按照以下步骤操作:
A.创建新的虚拟机
B.点击“下一步”
C.点击“下一步”
D.点击“下一步”
E.自定义“虚拟机名称”,位置建议选择除C盘外的磁盘,点击“浏览”进行更改并下一步
F.处理器数量与每个处理器的内核数量均选择2,避免后期卡顿,并点击“下一步”
G.点击“下一步”
H.点击“下一步”
I.默认选项,点击“下一步”
J.默认选项,点击“下一步”
K.默认选项,点击“下一步”
L.修改磁盘大小,建议设定大些,避免不够用,后期卡顿
M.默认,点击“下一步”
N.点击“完成”
O.双击CD/DVD(SATA)进入设置
P.选择使用ISO映像文件,浏览选择步骤1下载的ubuntu-18.04.1-desktop-amd64文件,并点击“完成”
Q.点击“开启虚拟机”
R.选择中文(简体),并点击右侧安装Ubuntu
S.选择汉语,点击“继续”
T.默认选项,点击“继续”
U.默认选项,点击“现在安装”,出现如下界面,点击“继续”
V.选择shanghai,点击“继续”,随后自定义设置设备名称和密码
W.点击“继续”就开始安装了,安装过程需要花费点时间,耐心等待
- 刷机操作(注:Xaiver处于关机状态)
1、连线图如下
2、Nvidia官网下载SDKmanager.deb包,网站如下:NVIDIA SDK Manager | NVIDIA Developer(需注册账户下载)
3、虚拟机中打开终端,输入sudo apt install ./sdkmanager_[version]-[build#]_amd64.deb
4、安装成功后,在终端输入sdkmanager,打开sdkmanager软件
5、软件操作
①输入个人账户后,进入登录界面,如下
②登录成功后,界面如下。取消Host machine选项(此选项是在虚拟机本身装载),后点击“continue”
③若需刷机(纯Ubuntu系统)+安装应用包,则两项均选;若后期想只刷机或安装应用包,则只选择一项。随后选择下方“I accept...”,“continue”点亮,进行点击
④等待一会时间会弹出如下窗口,选择Manual Setup,然后按住Xaiver的中间键保持不动,再按住开机键2秒后,同时松开,此时Xaiver侧边白色指示灯点亮。打开终端,输入lsusb,若输出有Nvidia Crop,则证明设备连接正常,就可点击Flash开始刷机。(等待漫长。。。)
⑤随后Xaiver连接的显示屏会亮起,进一步进行Ubuntu系统设定(同虚拟机一样),过段时间,Sdkmanager弹出如下窗口,填写刚才Xaiver设定的账户及密码,点击“Install”,(又是漫长等待。。。)
- 刷机后续工作
注:Jetson AGX Xavier是aarch架构,即arm架构,若安装软件或库时失败,则检查安装包是否为aarch的,大部分原因是由于这个。
(1)解决浏览器搜索失败问题
原因是因为浏览器搜索引擎默认是谷歌,其需你点开设置,对搜索引擎进行修改,可选择 百度。
(2)换源
按照如下步骤进行:
①sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak #备份初始源
②sudo gedit /ect/apt/sources.list
③将初始源的全部内容删除,网上搜索阿里源(清华源、网易源等)进行复制粘贴更换,需特特别注重一点,在阿里源语句中的ubuntu后面加上-ports,如下图所示,否则会报错(花了老长时间)。
④sudo apt-get update
⑤sudo apt-get upgrade
(3)安装jetson-jtop(查看电脑状态)
①sudo apt install python3-pip(若已安装则跳至第②步)
②sudo -H pip3 install -U jetson-stats
③jtop (以后可直接在终端输入进行查看,按“5”至风扇控制界面,可按需调节)
(4)查看cuda、cudnn版本
①Cuda版本:nvcc -V
②Cudnn版本:cat /usr/local/cuda-10.2/include/cudnn.h | grep CUDNN_MAJOR -A 2则会出现报错,原因是虽然AGX xavier刷机过程中安装了Cudnn包,但是其位置并不在/usr/local/cuda-10.2/include路径下,而在/usr/include,故需运行如下命令:
cd /usr/include && sudo cp cudnn.h /usr/local/cuda-10.2/include
cd /usr/lib/aarch64-linux-gnu && sudo cp libcudnn* /usr/local/cuda-10.2/lib64
sudo chmod 777 /usr/local/cuda-10.2/include/cudnn.h /usr/local/cuda-10.2/lib64/libcudnn*
cd /usr/local/cuda-10.2/lib64
sudo ln -sf libcudnn.so.8.0.0 libcudnn.so.8
sudo ln -sf libcudnn_ops_train.so.8.0.0 libcudnn_ops_train.so.8
sudo ln -sf libcudnn_ops_infer.so.8.0.0 libcudnn_ops_infer.so.8
sudo ln -sf libcudnn_adv_infer.so.8.0.0 libcudnn_adv_infer.so.8
sudo ln -sf libcudnn_cnn_infer.so.8.0.0 libcudnn_cnn_infer.so.8
sudo ln -sf libcudnn_cnn_train.so.8.0.0 libcudnn_cnn_train.so.8
sudo ln -sf libcudnn_adv_train.so.8.0.0 libcudnn_adv_train.so.8
sudo ldconfig
随后输入命令可查看cudnn版本信息。
(5)安装Archiconda3 (注:与Anaconda相同,其原因是Jetson AGX Xaiver是aarch架构,安装不成Anaconda)
①网上可找资源,
②运行 sh archiconda-<Version> (注:过程中均输入yes即可完成安装)
③给予conda添加更新源,输入下面命令:
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --set show_channel_urls yes
④创建一个虚拟环境,则输入:
conda create -n name(任意定义) python==<Version>(创建的python版本)
例如创建一个名为first,python版本为3.6.9的虚拟环境,则输入:
Conda create -n first python==3.6.9
注:若创建失败,则运行 conda update conda 或conda update --all
(6)安装Cmake(后续在DarkNet环境下跑yolov3或yolov4需要)
①官网下载Cmake压缩包,并进行解压;
②官网的安装步骤在此行不通,因为现在Cmake已编译完成,无bootstrap文件,只有bin doc man share 四个文件,我们只需将解压的cmake文件夹移动至usr/local/路径下;
③输入运行 sudo gedit ~/.bashrc
④在文件末尾添加 export PATH=/usr/local/cmake/bin:$PATH
⑤输入运行 source ~/.bashrc
⑥输入 cmake --version 可查看版本信息
(7)解决出现“illegal instruction (cpre dumped)”的方法
①输入 sudo gedit ~/.bashrc
②在末行添加 export OPENBLAS_CORETYPE=ARMV8 ,保存关闭
③输入 source ~/.bashrc ,更新环境变量
(8)在Darknet框架下,复现YOLO v3、4,并进行Tensorrt加速
- YOLO v3、4复现(Darknet框架搭建)
①conda activate <环境名> 注:建议在archiconda3/envs/<环境名>下打开终端,避免文件混乱
②git clone GitHub - AlexeyAB/darknet: YOLOv4 / Scaled-YOLOv4 / YOLO - Neural Networks for Object Detection (Windows and Linux version of Darknet ) 注:若克隆失败,则直接去该网站下载压缩包
③cd darknet
④mkdir build_release
⑤cd build_release
⑥cmake ..
⑦make -j8
⑧在 GitHub - AlexeyAB/darknet: YOLOv4 / Scaled-YOLOv4 / YOLO - Neural Networks for Object Detection (Windows and Linux version of Darknet )下载所需的v3、4权重文件,将其放置在weights(自己创建)文件夹下;
⑨在make -j8之前,修改Makefile文件的GPU=1、CUDNN=1、CUDNN_HALF=1、OPENCV=1,文件中所有/usr/local/cuda改为/usr/local/cuda-10.2,文件中ARCH部分,注释掉初始的,将GPU==Xaiver的去掉注释 注:每修改一次,则需重新make -j8一次,具体详情参考上方网站
⑩配置opencv环境,将/usr/lib/python3.6/dist-packages/路径下的cv2复制至.../archiconda3/envs/<环境名>/lib/python3.6/site-packages文件下即可;
⑪测试图片、视频
图片:
./darknet detector test ./cfg/coco.data ./cfg/yolov4.cfg ./weights/yolov4.weights <图片路径>
如:
./darknet detector test ./cfg/coco.data ./cfg/yolov4.cfg ./weights/yolov4.weights ./data/horses.jpg
视频:
./darknet detector demo ./cfg/coco.data ./cfg/yolov4.cfg ./weights/yolov4.weights <视频路径>
如:
./darknet detector demo ./cfg/coco.data ./cfg/yolov4.cfg ./weights/yolov4.weights ./data/cw.mp4
- Tensorrt加速
为提高检测帧率,则进行了模型Tensorrt加速,实现实时检测,具体步骤如下:
①conda activate <环境名> 注:建议在archiconda3/envs/<环境名>下打开终端,避免文件混乱
②git clone https://github.com/jkjung-avt/tensorrt_demos 注:若克隆失败,则直接去该网站下载压缩包
③配置tensorrt环境,将/usr/lib/python3.6/dist-packages/路径下Tensorrt有关文件,复制至/archiconda3/envs/<环境名>/lib/python3.6/site-packages文件下即可;
④安装Pycuda,
方法1:在/tensorrt_demos/ssd/路径下打开终端,进入虚拟环境,键入 sudo apt-get install protobuf-compiler运行(这个不需事先知道,否则会报错,安装失败),然后运行 ./install_pycuda.sh 进行安装,若检验是否安装成功,则进入python解释器,键入
import pycuda;
print('pycuda version:', pycuda.VERSION)
方法:2:
下载pycuda压缩包,解压文件并进入终端。键入
python3 configure.py --cuda-root=/usr/local/cuda-10.2
sudo python3 setup.py install
可能随后import pycuda报错,但可以这样解决,
将生成的pycuda相关包放入虚拟环境下的python3.6/lib/sit-pakages/文件下,然后import pycuda应该不会报错。
⑤安装onnx,键入 sudo apt-get install onnx==1.4.1 运行 注:时间可能较为漫长,不要安装版本较高,否则可能安装失败
⑥进入 /tensorrt_demos/plugins/ 路径下,键入 make 运行;
⑦进入 /tensorrt_demos/yolo/ 路径下,将事先下载好的 yolov4.weights 和 上部分的/darknet/cfg/ 路径下的yolov4.cfg文件复制至此,编辑 download_yolo.sh 文件,结果如下图注:其他权重类似:
⑧键入 ./download_yolo.sh 运行
⑨键入 python3 yolo_to_onnx.py -m yolov4-416 运行,花费一段时间
⑩键入 python3 onnx_to_tensorrt.py -m yolov4-416 运行,花费一段时间
⑪键入 cd .. 返回上一级
⑫键入 python3 trt_yolo.py --image <某路径下图片> -m yolov4-416 运行检测图片,
键入 python3 trt_yolo.py --usb 0 -m yolov4-416 运行摄像头检测,
键入 python3 trt_yolo.py --demo <某路径下视频> -m yolov4-416 运行视频检测
(9)Yolov5复现及Tensorrt加速检测
- yolov5复现(yolov5要求python>=3.8,但可创建3.6来运行)
①conda activate <环境名> 注:建议在archiconda3/envs/<环境名>下打开终端,避免文件混乱
②git clone https://github.com/ultralytics/yolov5 注:若克隆失败,则直接去该网站下载压缩包
③安装pytorch
1:在此网站https://elinux.org/Jetson_Zoo#PyTorch_.28Caffe2.29根据个人配置下载pytorch的whl文件 注:可能下载失败,可在csdn上寻找资源进行下载
2:在终端进入whl文件所在的路径下,键入运行 pip3 install <whl文件名>
3:启动python解释器,键入
import torch , torch.__version__ ,torch.cuda.is_available() 运行查看是否安装成功
④安装torchvision
1:git clone -b v0.x.0 https://github.com/pytorch/vision 注:x是torch对应的torchvision版本
2:cd vision
3:sudo python3 setup.py install
4: 启动python解释器,键入 import torchvision , torchvision.__version__ 运行查看是否安装成功
⑤配置opencv环境,同上Darknet的做法相同
⑥根据网站 https://github.com/ultralytics/yolov5 下载权重文件,并放置在weights文件(自己创建)下,
⑦根据yolov5文件夹下的requirements.txt来安装所需库条件(建议单独安装,否则可能会出错):
pip3 install Cython matplotlib==3.2.2 numpy==1.18.5 Pillow PyYAML==5.4.1 scipy==1.5.4 thop tqdm==4.58.0 tensorboard==1.15.0 seaborn==0.11.0 pandaspycocotools==2.0.2
⑧若一切顺利,则现在可以进行测试(将终端路径变换至yolov5下):
摄像头检测:python3 detect.py --source 0 --weights weights/yolov5s.pt --conf 0.25
图片检测:python3 detect.py --source <图片路径> --weights weights/yolov5s.pt --conf 0.25
视频检测:python3 detect.py --source <视频路径> --weights weights/yolov5s.pt --conf 0.25
- Tensorrt复现
①git clone https://github.com/wang-xinyu/tensorrtx 注:若克隆失败,则直接去该网站下载压缩包
②将.../tensorrt/yolov5/gen_wts.py复制至.../yolov5文件下,打开终端键入 python gen_wts.py 运行,则会生成一个.wts文件
③在/tensorrt/yolov5文件下,再次打开终端,键入运行
mkdir build
cd build
cmake ..
make
④将生成的.wts文件复制至/tensorrt/yolov5/build/文件下,打开终端键入运行
sudo ./yolov5 -s yolov5s.wts yolov5s.engine s 注:生成.engine文件,需等待几分钟
sudo ./yolov5 -d yolov5s.engine <图片路径>
注:由于yolov5在Tensorrt加速下生成的.engine文件是对图片的推理,而一般实时性项目均使用摄像头进行检测,故需对yolov5.cpp文件进行魔改,但由于本人能力有限,现阶段未能实现。