1、刷机jetpack4.6
2、搭建运行环境
3、yolov5部署
4、TensorRT加速+调用海康威视摄像头
5、调用多路摄像头
前言:小白的踩坑日记,期间报过的error数不胜数,好在最后跑通了,所有的步骤都是自己实际经历,也非常感谢很多不知名博主的帮助
1、刷机jetpack4.6
1.1安装Ubuntu18.04系统
先安装Ubuntu18.04系统,可以在电脑上装VM虚拟机,也可以通过装有Ubuntu系统的主机进行安装,本文采用虚拟机进行安装。
虚拟机VMware的下载与安装,参考文章VMware虚拟机中安装Ubuntu18.04(linux发行版)【超详细图文教程】
VMware下载地址:VMware
ubuntu18.04镜像源百度网盘下载
链接:https://pan.baidu.com/s/1bx3k4T-z_EcglbyAkIiv5A 提取码:kw9d
我是第一次刷机,并没有出现红框1,直接设置Username和password就继续了,刷机过程中要保证网络畅通,不然会出现网络错误,出现internet error解决不了时可以给TX2插上网线试试。
1.2下载jetpack4.6刷机
参考文章:jetson tx2刷机教程 (成功安装ubuntu18.04+Jetpack4.6.2+CUDA10.2+CUDNN8.2)
按照文章步骤来就好,但是我jtop安装失败,后面的pytorch及torchvision也没有参考文章,只执行到STEP4刷机完成,然后开机tx2进行操作。
2、搭建运行环境
主要就是安装pytorch与torchversion
参考文章:Jetson Nano配置YOLOv5并实现FPS=25
Jetson nano + yolov5 + TensorRT加速+Deepstream调用多路摄像头
2.1 TX2风扇启动、修改内存
如果TX2开机后风扇没有启动,可以使用这个脚本
风扇自启脚本🔗:https://github.com/Pyrestone/jetson-fan-ctl.git
打开终端,输入以下命令:
git clone https://github.com/Pyrestone/jetson-fan-ctl.git # 克隆到本地
cd jetson-fan-ctl
sudo ./install.sh # 自动安装
sudo service automagic-fan restart # 设置开机自启
执行sudo ./install.sh 报错,command not found.解决方法:sudo: ./xxx.sh: command not found_sudo: ./.sh: command not found-CSDN博客
修改TX2板显存:
1、打开终端输入:
sudo gedit /etc/systemd/nvzramconfig.sh
2、修改nvzramconfig.sh文件,主要将"${totalmem}"/2改成"${totalmem}"*2可以扩大一倍显存,如果觉得不够可以*3或者*4
修改mem = $((("${totalmem}"/2/"${NRDEVICES}")*1024))
为mem = $((("${totalmem}"*2/"${NRDEVICES}")*1024))
3、重启板子
4、输入以下代码可以查看修改后的显存
free -h
2.2配置CUDA
1、打开终端(ctrl+alt+t),输入以下命令:
sudo gedit ~/.bashrc
在文档最下面,输入下面命令,然后按ctrl+s保存(主要是为了配置环境变量):
export CUDA_HOME=/usr/local/cuda-10.2
export LD_LIBRARY_PATH=/usr/local/cuda-10.2/lib64:$LD_LIBRARY_PATH
export PATH=/usr/local/cuda-10.2/bin:$PATH
验证CUDA是否安装配置成功 :
source ~/.bashrc
nvcc -V
出现 CUDA版本号就表示配置成功了
2.3 安装torch与torchvision
本文安装torch-1.8.0+torchvision0.9,安装依赖包时需要换源
1、换源:打开终端输入:
mkdir ~/.pip
sudo gedit ~/.pip/pip.conf
在空白处输入如下镜像源之一保存并退出:
豆瓣源:
[global]
timeout=6000
index-url=https://pypi.doubanio.com/simple
trusted-host=pypi.doubanio.com
阿里源:
[global]
index-url=http://mirrors.aliyun.com/pypi/simple/
[install]
trusted-host=mirrors.aliyun.com
清华源:
[global]
index-url=https://pypi.tuna.tsinghua.edu.cn/simple/
[install]
trusted-host=https://pypi.tuna.tsinghua.edu.cn
2.下载torch1.8
下载torch-1.8.0-cp36-cp36m-linux_aarch64.whl,建议U盘下载拷贝到板子上本地安装
官网下载地址:nvidia.box.com/shared/static/p57jwntv436lfrd78inwl7iml6p13fzh.whl
网盘链接(carrymingteng博主的): https://pan.baidu.com/s/1tS51E3a-a-w9_OdCNraoAg
提取码:30qr
3.安装torch1.8,numpy版本1.19.3
打开终端输入:
sudo apt-get update
sudo apt-get install python3-pip libopenblas-base libopenmpi-dev
在torch-1.8.0-cp36-cp36m-linux_aarch64.whl所在文件夹内打开终端输入:
pip3 install --upgrade pip #如果pip已是最新,可不执行
pip3 install Cython
pip3 install numpy==1.19.3
pip3 install torch-1.8.0-cp36-cp36m-linux_aarch64.whl
sudo apt-get install libjpeg-dev zlib1g-dev libpython3-dev libavcodec-dev libavformat-dev libswscale-dev
4.安装torchvision0.9
git clone --branch v0.9.0 https://github.com/pytorch/vision torchvisionpillow==8.4.0
cd torchvision
export BUILD_VERSION=0.9.0
python3 setup.py install --user #时间很长
如果报pillow错误
cd torchvision
pip3 install -i https://pypi.doubanio.com/simple/ --trusted-host pypi.doubanio.com pillow==8.4.0
export BUILD_VERSION=0.9.0
python3 setup.py install --user
安装torchvision时如果无法通过git clone获取,或者安装一直报错,可以网站手动下载安装
torchvision的github地址:https://github.com/pytorch/vision
建议不要下载太新的,pytorch与torchvision的版本是对应的
5.验证torch和torchvision这两个模块是否安装成功
python3
import torch
print(torch.__version__)
import torchvision
print(torchvision.__version__)
安装成功
3、yolov5部署
建议主机下载yolov5文件然后拷贝到tx2上,会方便一些
yolov5文件地址:https://github.com/ultralytics/yolov5.git
yolov5网盘链接(carrymingteng博主链接):百度网盘 请输入提取码
提取码:3ran
yolov5n.pt链接(carrymingteng博主链接):百度网盘 请输入提取码
提取码:oe0w
打开终端输入:
python3 -m pip install --upgrade pip #更新pip
cd yolov5 #进入下载的yolov5文件夹中
pip3 install -r requirements.txt #安装包
python3 -m pip list#查看安装的包
安装过程中出现无法安装的库时,可手动下载对应包然后安装,一般是matplotlib安装不上
matplotlib whl 网盘地址(carrymingteng博主链接):百度网盘 请输入提取码
提取码:fp4i
pip3 install matplotlib.whl
测试
python3 detect.py --source data/images/bus.jpg --weights yolov5n.pt --img 640 #图片测试
python3 detect.py --source video.mp4 --weights yolov5n.pt --img 640 #视频测试,需要自己准备视频
python3 detect.py --source 0 --weights yolov5n.pt --img 640 #摄像头测试
我一开始使用opencv-python 4.8.1调用海康威视摄像头时会报下面错误,后面使用opencv-python4.1.1解决了,但是要将check_requirements(exclude=('tensorboard', 'thop'))这段代码注销掉,就可以正常调用海康威视摄像机
调用摄像头时掉帧卡顿,可将time.sleep(1 / self.fps[i])这段代码注销掉
def update(self, i, cap, stream):
# Read stream `i` frames in daemon thread
n, f, read = 0, self.frames[i], 1 # frame number, frame array, inference every 'read' frame
while cap.isOpened() and n < f:
n += 1
# _, self.imgs[index] = cap.read()
cap.grab()
if n % read == 0:
success, im = cap.retrieve()
if success:
self.imgs[i] = im
else:
LOGGER.warning('WARNING: Video stream unresponsive, please check your IP camera connection.')
self.imgs[i] = np.zeros_like(self.imgs[i])
cap.open(stream) # re-open stream if signal was lost
#time.sleep(1 / self.fps[i]) # wait time
4、TensorrRT加速,调用海康威视摄像头/USB摄像头
参考文章:Jetson Nano配置YOLOv5并实现FPS=25-CSDN博客
在调用海康威视摄像头时需要先知道摄像头的ip地址和账户密码
通过设备网络搜索工具查找摄像头ip,要保证主机,摄像头在一个局域网内
下载链接:https://www.hikvision.com/cn/support/tools/hitools/clea8b3e4ea7da90a9/
对yolov5.cpp文件修改时主要修改12行和342行,12行为自己模型的类别参数,342行为自己要检测的视频或者图片,注意要写全路径。如果调用usb摄像头,则括号内的参数设为0或1。调用海康威视则填入摄像头ip。
342行调用本地图片视频、usb摄像头、海康威视摄像头方法
cv::VideoCapture capture("/home/cao-yolox/yolov5/tensorrtx-master/yolov5/samples/1.mp4"); #修改为自己要检测的视频或者图片,注意要写全路径
cv::VideoCapture capture(0); #调用usb摄像头
cv::VideoCapture capture("rtsp://admin:qwertyuiop123@192.168.31.103/Streaming/Channels/2"); #修改为自己海康威视的账号密码和ip地址
重新编译
进入到buid下重新make。注意只要修改了yolov5.cpp就要重新make。
执行
sudo apt-get install libcanberra-gtk-module
效果
5、调用多路摄像头
参考资料
https://blog.csdn.net/u010414589/article/details/115338399
https://blog.csdn.net/lk007cx/article/details/110228243
https://blog.csdn.net/W1995S/article/details/119858078
https://zhuanlan.zhihu.com/p/296314513
https://github.com/marcoslucianops/DeepStream-Yolo
https://blog.csdn.net/qq122716072/article/details/114156647
https://blog.csdn.net/djj199301111/article/details/123628292