软硬件版本
Jetson Nano 4G
ubuntu 18.04
JP 4.5.1
CUDA 10.2
TensorRT 7.1.3.0
Python 3.6
一、下载源码
git clone https://github.com/AlexeyAB/darknet.git
二、编辑Makefile
cd darknet
sudo vim Makefile
三、编译
在darknet路径下输入
make -j4
编译成功,输入./darknet有如下输出
四、将我们在windows下训练好的权重以及改好的文件复制到板子上的darknet文件夹相应位置
复制的文件有四个个分别是:
1.我们训练好的权重文件
2.修改过的cfg文件夹下的cfg/yolov4-tiny.cfg
3.修改后的cfg文件夹下的cfg/coco.data
4.修改后的cfg文件夹下的cfg/coco.name
我这里把修改后的四个文件统一放在了一个文件夹里面如下
通过WinSCP把这个文件夹直接拖到nano的darknet里面
五、USB摄像头测试
输入指令
./darknet detector demo ok/new.data ok/yolov4-tiny-new.cfg ok/yolov4-tiny-new_last.weights /dev/video1
六、CSI摄像头检测
1.先安装 GStreame
sudo add-apt-repository universe
sudo add-apt-repository multiverse
sudo apt-get update
sudo apt-get install gstreamer1.0-tools gstreamer1.0-alsa gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav
sudo apt-get install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libgstreamer-plugins-good1.0-dev libgstreamer-plugins-bad1.0-dev
2.输入下面指令显示安装成功
3. 测试
./darknet detector demo ok/new.data ok/yolov4-tiny-new.cfg ok/yolov4-tiny-new_last.weights "nvarguscamerasrc ! video/x-raw(memory:NVMM), width=1280, height=720, format=NV12, framerate=30/1 ! nvvidconv flip-method=2 ! video/x-raw, width=1280, height=720, format=BGRx ! videoconvert ! video/x-raw, format=BGR ! appsink"
4.效果
USB摄像头和CSI摄像头在FPS上差别不大,后续我还会进行tensorrt转换
重头戏!!!进行tensorrt转换并调用摄像头
一、下载源码
我是在电脑上下载的源码然后复制到nano板子上
GitHub - jkjung-avt/tensorrt_demos: TensorRT MODNet, YOLOv4, YOLOv3, SSD, MTCNN, and GoogLeNet
二、将我之前训练好的yolov4-tiny.weights和yolov4-tiny.cfg从电脑上复制到刚才下载好的文件中,路径是tensorrt_demos-master/yolo
注意这里的yolov4-tiny.weights是我们之前训练好的,yolov4-tiny.cfg是我们训练时修改过的
三、看一下requirements.txt中我们是否满足条件
四、返回上一层plugins文件夹下执行make编译
编译成功生成yolo_layer.o和libyolo.layer.so文件
如果不编译的话后面运行onnx_to_tensorrt.py会有如下错误
五、将yolov4-tiny.weights文件转换为onnx格式
在tensorrt_demos-master/yolo下输入
python3 yolo_to_onnx.py -m yolov4-tiny
六、生成trt文件
python3 onnx_to_tensorrt.py -m yolov4-tiny
七、调用CSI检测(测试的时候都是在tensorrt_demos-master文件夹下进行)
这里检测代码我们可以看utils/camera.py,里面有说怎么调用
返回上层文件夹输入
python3 trt_yolo.py --gstr "nvarguscamerasrc ! video/x-raw(memory:NVMM), width=1280, height=720, format=NV12, framerate=30/1 ! nvvidconv flip-method=2 ! video/x-raw, width=1280, height=720, format=BGRx ! videoconvert ! video/x-raw, format=BGR ! appsink" -m yolov4-tiny
即可调用CSI摄像头,FPS17左右
八、调用USB摄像头
输入
python3 trt_yolo.py --usb 1 -m yolov4_tiny
即可调用USB摄像头,FPS=26左右
九、测试MP4视频
python3 trt_yolo.py --video ceshi.MP4 -m yolov4_tiny
十、修改置信度
可以修改置信度也可以不修改,打开trt_yolo.py
以上就是yolov4-tiny部署到jetson nano 以及tensorrt转换+测试的整个流程
参考博文:
jetson-nano项目:使用csi摄像头运行yolov3-tiny demo_x16516581的博客-CSDN博客
Nvidia Jetson Nano 安装 GStreamer_.-CSDN博客
Jetson Nano使用YOLOv4进行目标检测_FriendshipTang的博客-CSDN博客
Jetson nano从烧录系统到DeepStream+TensorRT+yolov5检测CSI摄像头视频 - 哔哩哔哩
版权声明:本文为CSDN博主「hhhhhhky」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_54603153/article/details/120226231
暂无评论