JetsonNano跑YoloV3速度评测

---
title: JetsonNano跑YoloV3速度评测
date: 2019-09-22 14:45:04
category: 默认分类

---

本文介绍 JetsonNano跑YoloV3速度评测
<!-- more -->

# JetsonNano跑YoloV3速度评测

> This article was original written by Jin Tian, welcome re-post, first come with https://jinfagang.github.io . but please keep this copyright info, thanks, any question could be asked via wechat: `jintianiloveu` 

很久没有发文章了,这段时间做了很多事情,主要工作还是在于onnx模型的TensorRT加速,我们在前段时间发过很多文章讲述如何对caffe模型进行TensorRT加速,我们也有现成的算法可以用来做这件事情,通过TensorRT加速的基于Darknet53+FPN的YoloV3可以跑到~40fps,在一块decent的GPU上,这个速度已经非常快了,毕竟这个后端十分重,速度也超越了一些经典的二阶段算法,效果如下图:

![TensorRT YoloV3](https://s2.ax1x.com/2019/08/29/mqlzb6.png)

![](https://s2.ax1x.com/2019/08/29/mqMk2n.png)

可以看到几乎没有漏检,这用来进行商业化的项目部署还是很有用的,但请相信我,如果你没有TensorRT加速,Darknet53+yolov3 608的输入速度你很难做快。这个算法我们将会开源到平台,在加入更多的模型之后。因为我们需要把所有的Caffe->TensorRT的操作封装成一个库,这样部署起来就非常方便了。

当然我们的算法平台 http://manaai.cn 也更新了很多最新的项目,比如我们从零训练的手和人脸的检测器,这用来进行无人机的操控很有用途,我们几乎将所有能用得上的人手和人脸的数据集都汇聚到了一块,基于我们自己的caffe版本可以进行大规模的训练,项目地址和与训练模型 [这里](http://manaai.cn/aicodes_detail3.html?id=43):

![](https://s2.ax1x.com/2019/08/21/mN5JLd.gif)

但实际上我们训练之后发现,这个模型竟然可以作为人脸的检测器:

![](https://s2.ax1x.com/2019/09/07/nlglzd.png)

当然效果与专业的人脸检测器还是有差距,但是毕竟速度和模型大小摆在那里。说到人脸检测器,现在很多都是评测的时候用大尺寸,比如1024x980这样的尺寸,精度上去了,但是实际上测试发现大尺寸下速度却很慢,慢到GPU上都无法实时,这就很过分了,但是除了这个算法:RetinaFace, 目前来讲是唯一一个同时兼顾速度和精度的人脸检测算法,更重要的是,这个算法可以同时拿到人脸位置和landmark,和MTCNN类似。

当然这个算法也可以在MANA平台找到,需要向大家说明的是,我们开源的是我们修改的pytorch训练版本,可以训练但是部署的时候不够快,基于onnx TensorRT加速的版本,将会在随后push到平台仓库,欢迎大家关注,预计可以做到400fps(1080尺寸输入下,GPU环境),即便是最垃圾的GPU,也能做到满实时。

最后言归正传,我们这篇文章继续上一篇的讲解。上一期我们讲到:

> 我们收到了一个Nvidia发过来的JetsonNano进行评测,但是不带电源,淘宝买了一个电源发现不好使,只要不运行大模型就容易崩溃。

最后发现,原来问题不是电源的问题,这里提醒一下JetsonNano的玩家:**真正原因是由于我们没有短接一个跳线, 只有在短接之后板子才会从电源汲取电源而不是从usb接口**.

短接之后,一切正常。这一点如果没有人告诉你,你应该不太可能知道,这就是只搞软件不搞硬件带来的偏科问题。。

## YoloV3评测

本篇文章不仅仅要在Nano上评测YoloV3算法,还要教大家如何在Nano的板子上部署,并且得到我们相同的效果。所以文章可能会比较耗时,闲话短说,先来看看Nano跑起来的效果:

![](https://s2.ax1x.com/2019/09/22/upcm8O.gif)

这里先说结论,因为相信很多读者是想用Nano来做点东西的:

- 跑Yolov3+Mobilenetv2没有一点问题,~7fps的速度我觉得是可以接受的;
- SSD+Mobilenet我没有测,但YoloV3+Mobilenet应该是精度更高一些的,输入尺寸也大一些;
- 这个是用C++跑的,我想说的是在Nano上跑caffe模型什么的一点问题都没有;
- 用在机器人视觉或者自己的项目上,你可以通过TensorRT获得更多的加速;
- 和同等级的芯片对比,比如Intel的神经网络加速棒,瑞芯的芯片等,我相信他们很难在同样的软件下达到这个速度,除非用上他们自己的神经网络加速软体套件,但这样的话,Nano就得上TensorRT大招了,毫无疑问会更快。

本期文章暂时不就Nano的TensorRT加速表现进行评测。我们可能在下一期,对几个我们训练的onnx模型进行TensorRT加速,顺便看看这些模型在Nano上能够跑到多块的速度,比如Retinaface等等。

## Nano YoloV3部署教程

接下来需要传授大家如何部署了。用到的工具很简单,所有的代码来自于mana平台:

http://manaai.cn

具体来说,我们需要两个项目:

- 手势操控控制无人机的caffe模型(http://manaai.cn/aicodes_detail3.html?id=43)
- YoloV3训练框架和MobilenetVOC预训练模型 (http://manaai.cn/aicodes_detail3.html?id=26)

> 上面的项目是我们花费了大量时间和精力训练、维护、编写、debug的开箱即用的代码,我们放在了MANA平台,如果你也是AI爱好者,想要从一些先人那里获取更多的知识和经验,不妨支持一下我们的工作,毫无疑问我们可以提供你物超所值的东西。平台代码和项目一直在更新,并永远保持最前沿。

接下来看如何部署(代码获取需要相关权限):

1. 下载模型训练框架

   ```
   git clone https://gitlab.com/StrangeAI/yolov3_mobilenet_caffe ~/caffe
   cd yolov3_mobilenet_caffe
   mkdir build
   cd build
   cmake ..
   make -j8
   make install
   make pycaffe
   ```

   这里需要注意,这个训练框架我们不需要真正训练,如果你需要训练,不要在你的Nano上进行,上面操作只是我们下面的C++程序需要调用caffe。

   当然在这个过程中,你可能会遇到很多坑,但是请记住两个点:

   - Nano自带了基本上所有环境,比如boost,opencv等;
   - 编译错误先看错误,然后google;
   - 实在不行,请来我们的AI社区交流提问,大神在线解答:http://talk.strangeai.pro


1. 编写Yolov3预测C++程序

   这一段我不打算贴代码,一来这个代码有点长,二来对于新手不太友好,因为还需要CMakeLists.txt的一大堆东西,大家直接clone一个现成的项目:

   ```
   git clone https://gitlab.com/StrangeAI/handface_detect.git
   ```

   通过该项目的一些readme进行编译,只要正确链接到你clone到HOME下的caffe,这个yolov3的检测程序就是可以正确编译的。

最后提醒一下,上面的代码需要MANA会员权限,我们花费大量时间精力分享我们的源代码,并非是给伸手党一堆无用的东西,而是一些我们觉得有用的精髓,能够帮助初学者快速得到自己想要的东西,这也是我们还是新手的时候梦寐以求的,希望每一位初学者能够珍惜前人的劳动成果。当然,如果你觉得请我们喝杯咖啡显得过于炫富,也可以通过其他开源渠道获得相关代码。

如果大家对于本篇教程有任何疑问,欢迎来我们的AI交流社群交流发帖:

http://talk.strangeai.pro

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值