参考链接

https://blog.csdn.net/carrymingteng/article/details/120978053
https://blog.csdn.net/weixin_43947712/article/details/115530913

YOLO作为一个快速高效的目标检测的方案,非常适合部署在边缘设备嵌入式系统上,这里参考网上链接,尝试在Jetson Nano上搭建一个YOLO v5的目标识别示例。

1. 修改显存
修改/etc/systemd/nvzramconfig.sh文件
把后面一行

mem = $((("${totalmem}"/2/"${NRDEVICES}")*1024))
修改为
mem = $((("${totalmem}"*2/"${NRDEVICES}")*1024))

修改之后重启,用
$ free -h
查看显存

在这里插入图片描述
在修改之前默认swap为1.9G,修改之后更改为7.7G。

2. 安装pytorch&torchvision

首先,预安装一些需要的软件
$ sudo apt install libopenblas-base libopenmpi-dev
$ pip3 install Cython
$ pip3 install numpy

这里略过了原文中的apt的更新和pip3的安装,假设都已经更新
然后安装pytorch

$ pip3 install torch-1.8.0-cp36-cp36m-linux_aarch64.whl

这里采用离线的方式安装pytorch,whl文件从网上提前下载。
之后安装torchvision,先安装一些需要的软件包

$ sudo apt install libjpeg-dev zlib1g-dev libpython3-dev libavcodec-dev libavformat-dev libswscale-dev

下载torchvision代码库
$ git clone --branch v0.9.0 https://github.com/pytorch/vision torchvision

然后进入目录进行编译
$ cd torchvision
$ export BUILD_VERSION=0.9.0
$ python3 setup.py install --user
最后一步需要较长时间。

安装完成之后,就可以在python3里面import torch和torchvision,以及查看版本,如下

在这里插入图片描述

3 搭建YOLO v5环境
下载源代码库
$ git clone https://github.com/ultralytics/yolov5.git

然后按照目录下requirements.txt文件安装需要的python模块
$ cd yolov5
$ pip3 install -r requirements.txt

之后就可以运行程序来测试,在yolov5目录运行
$ python3 detect.py --source data/images/bus.jpg --weights yolov5n.pt --img 640 #图片识别
$ python3 detect.py --source test.mp4 --weights yolov5n.pt --img 640 #视频测试,mp4为提前准备的视频
$ python3 detect.py --source 0 --weights yolov5n.pt --img 640 #摄像头测试

个人在程序运行过程中出现了缺少_imagingft C module的问题,经查是pillow库的问题,重新安装了pillow库解决了问题。

测试程序会自动下载权重文件yolov5n.pt进行识别,识别结果会输出在runs/detect/exp文件夹中,图片识别结果如下


每运行一次测试程序,就会出现一个新的文件夹(exp2,exp3,exp4等),输出结果放置在新生成的文件夹。
经过实际测试,三个程序都可以顺利运行,其中摄像头测试通过连接Nano的USB摄像头,能够及时得显示出场景中的识别信息。

在这里插入图片描述