一、jetson nano默认已经安装了CUDA10.0,但是没有配置,需要你把CUDA的路径写入环境变量中。打开.bashrc 文件,执行命令:
sudo gedit ~/.bashrc
在文件的最后添加如下:
export CUDA_HOME=/usr/local/cuda-10.0
export LD_LIBRARY_PATH=/usr/local/cuda-10.2/lib64:$LD_LIBRARY_PATH
export PATH=/usr/local/cuda-10.0/bin:$PATH
验证cuda安装是否成功:关闭当前命令行,并执行:
source ~/.bashrc
nvcc -V
查看CUDNN版本:
dpkg -l |grep -i cudnn
# 版本8.0之前:
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
# 版本8.0之後(前提是确保此路径中有cudnn_version.h文件
cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2
附,CUDA官网下载地址:CUDA Toolkit 10.1 original Archive | NVIDIA Developer
cuDNN 官网下载连接:cuDNN Archive | NVIDIA Developer
二、配置Anaconda
主要是解决 jetson nano 的conda 环境安装问题,但是jetson nano使用的aarch64架构是没法使用anaconda的,虽然可以自己编译,但是conda指令是没法编译到aarch64架构上运行的。
不过有替代品,miniforge。
miniforge与miniconda的区别在于miniforge的下载通道是conda-forge
miniforge的地址:https://github.com/conda-forge/miniforge
miniforge的.sh release 下载地址:https://github.com/conda-forge/miniforge/releases
安装完成后,就和anaconda的使用方式一样。
主要参考链接:
手把手教你如何在Ubuntu下安装Miniconda_Python进阶者的博客-CSDN博客
三、安装Pytorch、torchvison等
首先查看下,各个库文件需要对应的版本
进入到conda环境后,开始安装需要的库
torch网址链接:https://download.pytorch.org/whl/torch_stable.html
本人用的是清华镜像下载:Links for torch (tsinghua.edu.cn)
在清华镜像里,可以下载到所有东西,不过需要根据版本一个一个去选,比较麻烦,但是如果是批量化生产,可以一次下载完后,做成bin文件去安装,就方便很多。也可以利用如下指令一步安装到位,如果大文件安装失败建议还是先去下载whl后再安装
pip install -r requirements.txt
不想下载也可以单独pip安装,缺什么库就安装什么库就可以,一般会比较顺利的进行下去,
最后 ,利用 pip list 查看所有已安装的库及版本信息
四、修改部分源代码
1.修改yolov5文件夹下的common.py文件
添加如图所示位置,将代码复制进去(有的话就不用复制了),记得在上方 import warnings
class SPPF(nn.Module):
def __init__(self, c1, c2, k=5):
super().__init__()
c_ = c1 // 2
self.cv1 = Conv(c1, c_, 1, 1)
self.cv2 = Conv(c_ * 4, c2, 1, 1)
self.m = nn.MaxPool2d(kernel_size=k, stride=1, padding=k // 2)
def forward(self, x):
x = self.cv1(x)
with warnings.catch_warnings():
warnings.simplefilter('ignore')
y1 = self.m(x)
y2 = self.m(y1)
return self.cv2(torch.cat([x, y1, y2, self.m(y2)], 1))
2.修改环境下site-packages/torch/nn/modules/upsamping.py文件,改为如图所示:
五、运行程序测试
提前将yolov5s.pt文件下载好,可以选择不同版本,链接为:
[YOLOv5s]https://github.com/ultralytics/yolov5/releases/download/v6.1/yolov5s.pt)
[YOLOv5s]https://github.com/ultralytics/yolov5/releases/download/v5.0/yolov5s.pt)
如果是6.1版本不能用的话,就选择5.0的试试,本人在X86_64上用的是6.1的,在arm上用的5.0
1、打开笔记本电脑摄像头: python detect.py --source 0
2、打开海康摄像头 :python detect.py --source rtsp://admin:[email protected]:554/Streaming/Channels/101 --weights yolov5s.pt
3、打开大华摄像头:python detect.py --source 'rtsp://admin:[email protected]:554/cam/realmonitor?channel=1&subtype=0' --weights yolov5s.pt
4、显示多路视频,需要新建一个streams.txt ,放在yolov5文件夹下即可,里面每个视频流放一行,类似于这样:
rtsp://admin:[email protected]:554
rtsp://admin:[email protected]:554/cam/realmonitor?channel=1&subtype=0
rtsp://admin:[email protected]:554/cam/realmonitor?channel=1&subtype=0
r然后运行 python detect.py --source streams.txt --weights yolov5s.pt 即可显示多路视频识别