jetson nano使用tensorRT运行trt-yolov3-tiny

jetson nano使用tensorRT运行trt-yolov3-tiny

网上关于jetson nano上跑trt-yolov3-tiny的资料很少,其中只看到仅有的这么一篇https://blog.csdn.net/BlackLion_zhou/article/details/90049351,可能因为写的较早,各种库版本有更新,导致会遇到很多坑,所以只能本着遇到问题解决问题的态度,一个个踩过来。现在把每个进程详细总结出来并列举了可能出现的错误及解决方法。希望能帮到遇到同样困难的你。

1.下载trt-yolo

网上有看到使用git的方法下载源码,但实测发现会丢失部分文件,故直接用浏览器下载,网址如下:
https://github.com/NVIDIA-AI-IOT/deepstream_reference_apps/tree/restructure

2.运行脚本安装所需的文件

$ cd <你的文件路径>/deepstream_reference_apps/yolo
$ sh prebuild.sh

3.编译安装

$ cd apps/trt-yolo
$ mkdir build && cd build
$ cmake -D CMAKE_BUILD_TYPE=Release ..
$ make
$ sudo make install
$ cd ../../..

如果系统安装的是opencv4, make的时候会报以下错误

fatal error: opencv/cv.h: No such file or directory
#include <opencv/cv.h>
compilation terminated.
lib/CMakeFiles/yolo-lib.dir/build.make:69: recipe for target ‘lib/CMakeFiles/yolo-lib.dir/calibrator.cpp.o’ failed

原因是opencv4中将cv.h合并到imgproc中了
故将deepstream_reference_apps/yolo/lib/trt_utils.h中的

#include <opencv/cv.h>
替换为
#include <opencv2/imgproc/imgproc_c.h>
#include "opencv2/imgcodecs/legacy/constants_c.h"

4.添加测试图片

在deepstream_reference_apps/yolo/data/test_images.txt中添加你要测试图片的全路径(如:/home/test.jpg)

5.运行模型

$ cd <你的文件路径>/deepstream_reference_apps/yolo
$ sudo trt-yolo-app --flagfile=config/yolov3-tiny.txt

模型转换过程中会报如下错误

ERROR: Internal error: could not find any implementation for node mm1_19, try increasing the workspace size with IBuilder::setMaxWorkspaceSize()
ERROR: …/builder/tacticOptimizer.cpp (1461) - OutOfMemory Error in computeCosts: 0

解决方法为将deepstream_reference_apps/yolo/lib/yolo.cpp文件中的

m_Builder->setMaxWorkspaceSize(1 << 20);
空间加大,如改为:
m_Builder->setMaxWorkspaceSize(1 << 30);
然后重新编译
$ cd apps/trt-yolo/build/
$ make && sudo make install

编译完成后执行如下命令

$ cd <你的文件路径>/deepstream_reference_apps/yolo
$ sudo trt-yolo-app --flagfile=config/yolov3-tiny.txt

运行结果如下

Loading Complete!
Total number of images used for inference : 1
[======================================================================] 100 %
Network Type : yolov3-tiny Precision : kFLOAT Batch Size : 1 Inference time per image : 407.128 ms

可以看到测试一张图片的速度为407ms,每秒大概2帧的样的,是不是感觉tensorRT没有加速效果? NO NO NO!,从运行结果来看数据类型用的是 kFLOAT,推理的无需使用这么高的精度。
解决方法为将deepstream_reference_apps/yolo/config/yolov3-tiny.txt文件中的

#--precision=kINT8
改为
--precision=kHALF

修改完成后运行 $ sudo trt-yolo-app --flagfile=config/yolov3-tiny.txt 会重新生成TRT引擎,通过降低数据精度,TRT速度能达到原来的10倍,有时候更高,基本上可能达到实时检测,但检测精度不高。

Loading Complete!
Total number of images used for inference : 1
[======================================================================] 100 %
Network Type : yolov3-tiny Precision : kHALF Batch Size : 1 Inference time per image : 48.416 ms

本文主要介绍了如何跑起来,但检测的是图片,视觉感觉效果不是那强烈,下章会介绍用这个模块检测视频

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值