Jetson Nano | darknet (yolov3.4-tiny)摄像头实时检测

因为用的是opencv4所以使用yolo3编译可能回出错,可以换成yolov4或yolov4-tiny,同时YOLO V4无论在精度和速度上都较YOLO V3有了很大的提升,为在性能受限的嵌入式设备上部署检测程序提供了可能。

但是由于2GB版本内存比较小,跑yolo4会出现卡住的情况,yolov4和yolov4-tiny的区别是:tiny是yolov4的压缩版,主要运行小算力cpu核心版本,在jetso nano 上使用tiny版帧率会比yolov4提升十多倍。总的来说还是推荐使用yolov4-tiny,帧率提升很多,使用感会提升很多。

1. 安装CUDA,OpenCV,cuDNN

具体教程请看教程

2. 下载

git clone https://github.com/AlexeyAB/darknet.git

3. 配置

cd darknet
sudo vim Makefile   #修改Makefile

4. 将Makefile的前三行修改一下

GPU=1
CUDNN=1
OPENCV=1
Jetson Nano | darknet (yolov3.4-tiny)摄像头实时检测_第1张图片
5. 编译

在darknet路径下编译

make  -j4

6. 放置权重文件

wget https://pjreddie.com/media/files/yolov3-tiny.weights
wget https://github.com/AlexeyAB/darknet/releases/download/darknet_yolo_v4_pre/yolov4-tiny.weights
https://pan.baidu.com/s/1rS3DIlARFCiqId0TmN1XYg    (提取码:16ln)

权重文件yolov3-tiny.weights,yolov4-tiny.weights拷贝至darknet目录下

Jetson Nano | darknet (yolov3.4-tiny)摄像头实时检测_第2张图片
7. 测试
以下都适用v3,改名即可
Yolov4-tiny图片的检测

./darknet detect cfg/yolov4-tiny.cfg yolov4-tiny.weights data/dog.jpg # 简写版

./darknet detector test cfg/coco.data cfg/yolov4-tiny.cfg yolov4-tiny.weights data/dog.jpg # 完整版

改变检测阈值

默认情况下,YOLO仅显示检测到的置信度为.25或更高的对象。您可以通过将-thresh标志传递给yolo命令来更改此设置。

例如,要显示所有检测,您可以将阈值设置为0.1:

./darknet detect cfg/yolov4-tiny.cfg yolov4-tiny.weights data/dog.jpg -thresh 0.1

Jetson Nano | darknet (yolov3.4-tiny)摄像头实时检测_第3张图片
Jetson Nano | darknet (yolov3.4-tiny)摄像头实时检测_第4张图片
Yolov4-tiny视频的检测(github下来的data里面并没有该视频文件,需要用户自行上传要检测的视频文件到data文件夹下)

./darknet detector demo cfg/coco.data cfg/yolov4-tiny.cfg yolov4-tiny.weights data/xxx.mp4 

Jetson Nano | darknet (yolov3.4-tiny)摄像头实时检测_第5张图片
yolov4-tiny 见下图:
Jetson Nano | darknet (yolov3.4-tiny)摄像头实时检测_第6张图片
Yolov4-tiny 摄像头(CSI)实时检测方法:

./darknet detector demo cfg/coco.data cfg/yolov4-tiny.cfg yolov4-tiny.weights  # 但是我蓝屏了,默认MIPI CSI摄像机(1280×720)

或者(我成功了):

./darknet detector demo cfg/coco.data cfg/yolov4-tiny.cfg yolov4-tiny.weights "nvarguscamerasrc ! video/x-raw(memory:NVMM), width=1280, height=720, format=NV12, framerate=30/1 ! nvvidconv  ! video/x-raw, width=1280, height=720, format=BGRx ! videoconvert ! video/x-raw, format=BGR ! appsink"

说明:

(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)

作用是确保来自CSI相机的原始视频转换为BGR色彩空间。
Jetson Nano | darknet (yolov3.4-tiny)摄像头实时检测_第7张图片
能达到13fps
Jetson Nano | darknet (yolov3.4-tiny)摄像头实时检测_第8张图片

video设备选择USB摄像头对应的编号,上方为选择了USB摄像头的编号video1

./darknet detector demo cfg/coco.data cfg/yolov4-tiny.cfg yolov4-tiny.weights /dev/video1

你可能感兴趣的