小白从零开始在jetson nano上进行YOLOV3-Tiny 与 tensorrt加速检测

发布于:2022-11-09 ⋅ 阅读:(10) ⋅ 点赞:(0) ⋅ 评论:(0)

一、前期准备需要

1.一块jetson nano版

2.SD卡(已经烧录好了镜像资源)

3.电脑上下载XFPT7(对于学生完全免费)(方便从电脑上直接传输文件进入板子)

二、软件需求(在电脑上,因为在板子上直接下载github上下载资源包我一般都没能下载成功)

1.darknet(AB大神版,可直接make编译)地址:https://github.com/AlexeyAB/darknet

2.TRT-yolov3-master 地址:https://github.com/yqlbu/TRT-yolov3

3.yolov3-tiny.weights

三、开始工作

(1)换源:可在电脑上先将清华源放在txt文件中在通过xfpt7传到板子上就不用手打

          打开终端输入 sudo cp /etx/apt/sources.list /eyc/apt/sources.list.bak(后面是备份)

                                 sudo gedit /etc/apt/sources.list 用清华源复制替换掉其中的内容

                                  sudo apt-get update

(2)下载pip sudo apt-get install python3-pip python3-dev(一定要是python3,否则默认下载的是python2)         

(3)将darknet解压到板子的桌面 打开文件夹,将yolov3-tiny-weights文件复制进文件夹,在文件夹中右键打开终端输入make -j4

输入./darknet detector demo cfg/coco.data cfg/yolov3-tiny.cfg yolov3-tiny.weights 即可使用摄像头检测 但是帧率很低

(4)使用tensorrt前需要protobuf、onnx、pycuda、numpy,

 首先下载protobuf:sudo pip3 install protobuf==3.8.0(注意可能会报错protobuf要求python>=3.7,此时需要更新pip3的版本,即可解决)

然后下载onnx与numpy:sudo pip3 install numpy==1.16.0
                                        sudo pip3 install  onnx==1.4.1

注意此时onnx可能会报错python的依赖库没有安装完 可参考博客:Jetson Nano 安装onnx_々云逸的博客-CSDN博客_jetson onnx

最后下载pycuda :博客:jetson nano安装pycuda_帅的发光发亮的博客-CSDN博客

注意最后运行博客中的矩阵时 可能报错:

  1. import pycuda.autoinit

  2. Traceback (most recent call last):

  3. File "<stdin>", line 1, in <module>

  4. File "/home/xiaor/pycuda-2019.1.2/pycuda/autoinit.py", line 2, in <module>

  5. import pycuda.driver as cuda

  6. File "/home/xiaor/pycuda-2019.1.2/pycuda/driver.py", line 62, in <module>

  7. from pycuda._driver import * # noqa

  8. ModuleNotFoundError: No module named 'pycuda._driver'

 只要在import pycuda时候没有报错 可以不用管

(5)在TRT-YOLO-master中打开yolov3-onnx,将yolov3-tiny.cfg复制进去,在终端中输入python3 yolov3_to_onnx.py  --model yolov3-tiny-416和python3 onnx_to_tensorrt.py --model yolov3-tiny-416产生一个trt文件

(6)从电脑中传入一个MP4文件,在终端执行:

python3 detector.py --file --filename ./data/文件名mp4 --model yolov3-tiny-416 --runtime开始识别视频

但是我在使用detector文件进行摄像头的实时监测时候,都会产生一个代码冗余的情况,还希望有大神可以指点我一下 。

我也是一个小白,刚开始玩jetson nano,也参考了CSDN上面的很多博客,如果有什么相同的地方,还请原谅。大家一起学习。

博客:trt-yolov3:Jetson Nano上的yolov3-tiny识别(已完结)_我肚子好饿的博客-CSDN博客

这个博客比我的详细一点,但是自己还是踩了很多坑,写这个 主要是为了回顾一下自己用jetson nano的过程