jetson nano项目(1)部署yolov4(c++)

 

环境检查

https://zhuanlan.zhihu.com/p/136785542

Ubuntu为例,首先需要满足以下环境条件.

    • CMake >= 3.8
    • CUDA 10.0
    • OpenCV >= 2.4
    • cuDNN >= 7.0 for CUDA 10.0
    • GPU with CC >= 3.0
    • on Linux GCC or Clang

 我使用的jetson nano最新的镜像默认应该已经装了这些。当前opencv默认版本4.1

jetson nano设置

1修改电源

打开Jetson Nano,切换为MAXIN模式(10w),同时使用ADC4A电源给予供电。注意将跳帽插上才能开启此供电模式。

2共享内存设置

自身内存4G ,共享内存给了5个g左右(刷机的时候初始化选择了最大默认给了1.2G,后来增加5个G)

 如何设置参看

https://www.cnblogs.com/kekeoutlook/p/13512508.html

全流程安装

下载源码和测试权重

框架:

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

权重:

https://drive.google.com/open?id=1cewMfusmPjYWbrnuJRuKhPMwRe_b9PaT

第一处修改

https://cloud.tencent.com/developer/article/1624913

打开后根据需要修改GPU、CUDNN等的值,GPU为1的话需要安装cuda.

GPU=1

CUDNN=1的话需要安装CUDNN.

CUDNN_HALF=0 仅支持带有Tensor Cores的GPU如Titan V / Tesla V100 / DGX-2或者之后的显卡.

OPENCV=1的话,需要安装OpenCV

第二处修改

问题:找不到nvcc

克隆Darknet之后,以root(sudo)进行设置,手动修改makefile中 NVCC路径

设置

NVCC = /usr/local/cuda/bin/nvcc

您的NVCC应该与您在Makefile中指定的cuda库匹配

开始编译

修改完Makefile之后,在终端中输入:

sudo make 

  

将权重文件yolov4.weights拷贝至darknet目录下

将测试的图片放入data目录下,开始检测

./darknet detect cfg/yolov4.cfg yolov4.weights data/dog.jpg

  

 运行结果自动保存照片

 图像分辨率  768*576

 更多测试

 图像分辨率640*424

 

 

5-2 视频的检测:

终端输入:

./darknet detector demo cfg/coco.data cfg/yolov4.cfg yolov4.weights data/test_video.mp4

检测的效果如图2所示:

 性能

参考分析  https://cloud.tencent.com/developer/article/1624913

根据官方的文档的说明,新版本YOLO的 AP 和 FPS 分别提高了 10% 和 12%,从检测的结果可以看出,YOLO V4 在内存较小的嵌入式设备上能够很好的运行,而且YOLO V4相较于YOLO V3在检测的速度和精度上都有了一定的提升,对于小目标的检测效果有了进一步的提升。

对于Nano的4G内存,运行YOLO V3十分地吃力,通常到第二层就会出现死机的状况,但是对于YOLO V4,Jetson Nano却能够较为流畅的运行。

在Jetson Nano上运行YOLO V4进行目标的检测,输入的视频的分辨率大小为720*400,在检测视频目标的过程中,视频的平均处理速度值始终维持在0.9FPS左右,从检测的效果中也可以看出,对于近处的目标,识别度基本维持在0.8以上,而对于远处小目标的检测,识别度也能维持在0.2以上,个别目标的识别率甚至能达到0.8以上。YOLO V4无论在精度和速度上都较YOLO V3有了很大的提升,为在性能受限的嵌入式设备上部署检测程序提供了可能。

 

https://blog.csdn.net/qq_33642342/article/details/104498574?utm_medium=distribute.pc_relevant.none-task-blog-baidulandingword-8&spm=1001.2101.3001.4242

TensorRT YOLOv4 on TensorRT+tkDNN: https://github.com/ceccocats/tkDNN For YOLOv3 (-70% faster inference): Yolo is natively supported in DeepStream 4.0 read PDFwang-xinyu/tensorrtx implemented yolov3-spp, yolov4, etc.

https://github.com/ceccocats/tkDNN

https://medium.com/@peaceful0907/nvidia-jetson-nano-with-yolov3-39325af72e4d

    • Nano: YOLOv3 使用 darknet 未透過 python
      320*320: fps~2.2
      416*416: fps~1.4
      608*608: fps~0.7 (load得很慢)
      Memory 約剩餘300~500M之間
    • Nano: YOLOv3-tiny 使用darknet 未透過 python
      fps 約 9~11
      Memory 約剩餘1.2G
    • Nano: YOLOv3 with TensorRT 透過python interface:
      320*320: fps 約 3~4
      416*416: fps 約 2~3
      608*608: fps 約 1~2
      Memory 約剩餘500~900M之間

https://cloud.tencent.com/developer/article/1624913

Jetson NANO 之 Yolo V4

根据官方的文档的说明,新版本YOLO的 AP 和 FPS 分别提高了 10% 和 12%,从检测的结果可以看出,YOLO V4 在内存较小的嵌入式设备上能够很好的运行,而且YOLO V4相较于YOLO V3在检测的速度和精度上都有了一定的提升,对于小目标的检测效果有了进一步的提升。

对于Nano的4G内存,运行YOLO V3十分地吃力,通常到第二层就会出现死机的状况,但是对于YOLO V4,Jetson Nano却能够较为流畅的运行。

在Jetson Nano上运行YOLO V4进行目标的检测,输入的视频的分辨率大小为720*400,在检测视频目标的过程中,视频的平均处理速度值始终维持在0.9FPS左右,从检测的效果中也可以看出,对于近处的目标,识别度基本维持在0.8以上,而对于远处小目标的检测,识别度也能维持在0.2以上,个别目标的识别率甚至能达到0.8以上。YOLO V4无论在精度和速度上都较YOLO V3有了很大的提升,为在性能受限的嵌入式设备上部署检测程序提供了可能。

https://blog.csdn.net/beckhans/article/details/89373939

Jetson Nano 使用yolov3-tiny及TensorRT加速,达到接近实时目标检测与识别

25fps

https://blog.csdn.net/weixin_43562948/article/details/104724461

Windows环境下使用VS2015对YOLOV4源码的两种编译方式并测试

F:yolo_maskcnnyoloyolov4darknet-master

原文地址:https://www.cnblogs.com/kekeoutlook/p/13488402.html