JetsonNano跑YoloV3速度評測

JetsonNano跑YoloV3速度評測

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

好久沒有發文章了,這段時間作了不少事情,主要工做仍是在於onnx模型的TensorRT加速,咱們在前段時間發過不少文章講述如何對caffe模型進行TensorRT加速,咱們也有現成的算法能夠用來作這件事情,經過TensorRT加速的基於Darknet53+FPN的YoloV3能夠跑到~40fps,在一塊decent的GPU上,這個速度已經很是快了,畢竟這個後端十分重,速度也超越了一些經典的二階段算法,效果以下圖:git

TensorRT YoloV3

能夠看到幾乎沒有漏檢,這用來進行商業化的項目部署仍是頗有用的,但請相信我,若是你沒有TensorRT加速,Darknet53+yolov3 608的輸入速度你很難作快。這個算法咱們將會開源到平臺,在加入更多的模型以後。由於咱們須要把全部的Caffe->TensorRT的操做封裝成一個庫,這樣部署起來就很是方便了。github

固然咱們的算法平臺 manaai.cn 也更新了不少最新的項目,好比咱們從零訓練的手和人臉的檢測器,這用來進行無人機的操控頗有用途,咱們幾乎將全部能用得上的人手和人臉的數據集都匯聚到了一塊,基於咱們本身的caffe版本能夠進行大規模的訓練,項目地址和與訓練模型 這裏算法

但實際上咱們訓練以後發現,這個模型居然能夠做爲人臉的檢測器:後端

固然效果與專業的人臉檢測器仍是有差距,可是畢竟速度和模型大小擺在那裏。說到人臉檢測器,如今不少都是評測的時候用大尺寸,好比1024x980這樣的尺寸,精度上去了,可是實際上測試發現大尺寸下速度卻很慢,慢到GPU上都沒法實時,這就很過度了,可是除了這個算法:RetinaFace, 目前來說是惟一一個同時兼顧速度和精度的人臉檢測算法,更重要的是,這個算法能夠同時拿到人臉位置和landmark,和MTCNN相似。bash

固然這個算法也能夠在MANA平臺找到,須要向你們說明的是,咱們開源的是咱們修改的pytorch訓練版本,能夠訓練可是部署的時候不夠快,基於onnx TensorRT加速的版本,將會在隨後push到平臺倉庫,歡迎你們關注,預計能夠作到400fps(1080尺寸輸入下,GPU環境),即使是最垃圾的GPU,也能作到滿實時。網絡

最後言歸正傳,咱們這篇文章繼續上一篇的講解。上一期咱們講到:框架

咱們收到了一個Nvidia發過來的JetsonNano進行評測,可是不帶電源,淘寶買了一個電源發現很差使,只要不運行大模型就容易崩潰。工具

最後發現,原來問題不是電源的問題,這裏提醒一下JetsonNano的玩家:真正緣由是因爲咱們沒有短接一個跳線, 只有在短接以後板子纔會從電源汲取電源而不是從usb接口.gitlab

短接以後,一切正常。這一點若是沒有人告訴你,你應該不太可能知道,這就是隻搞軟件不搞硬件帶來的偏科問題。。

YoloV3評測

本篇文章不只僅要在Nano上評測YoloV3算法,還要教你們如何在Nano的板子上部署,而且獲得咱們相同的效果。因此文章可能會比較耗時,閒話短說,先來看看Nano跑起來的效果:

這裏先說結論,由於相信不少讀者是想用Nano來作點東西的:

  • 跑Yolov3+Mobilenetv2沒有一點問題,~7fps的速度我以爲是能夠接受的;
  • SSD+Mobilenet我沒有測,但YoloV3+Mobilenet應該是精度更高一些的,輸入尺寸也大一些;
  • 這個是用C++跑的,我想說的是在Nano上跑caffe模型什麼的一點問題都沒有;
  • 用在機器人視覺或者本身的項目上,你能夠經過TensorRT得到更多的加速;
  • 和同等級的芯片對比,好比Intel的神經網絡加速棒,瑞芯的芯片等,我相信他們很難在一樣的軟件下達到這個速度,除非用上他們本身的神經網絡加速軟體套件,但這樣的話,Nano就得上TensorRT大招了,毫無疑問會更快。

本期文章暫時不就Nano的TensorRT加速表現進行評測。咱們可能在下一期,對幾個咱們訓練的onnx模型進行TensorRT加速,順便看看這些模型在Nano上可以跑到多塊的速度,好比Retinaface等等。

Nano YoloV3部署教程

接下來須要傳授你們如何部署了。用到的工具很簡單,全部的代碼來自於mana平臺:

manaai.cn

具體來講,咱們須要兩個項目:

上面的項目是咱們花費了大量時間和精力訓練、維護、編寫、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社區交流提問,大神在線解答:talk.strangeai.pro
  2. 編寫Yolov3預測C++程序

    這一段我不打算貼代碼,一來這個代碼有點長,二來對於新手不太友好,由於還須要CMakeLists.txt的一大堆東西,你們直接clone一個現成的項目:

    git clone https://gitlab.com/StrangeAI/handface_detect.git
    複製代碼

    經過該項目的一些readme進行編譯,只要正確連接到你clone到HOME下的caffe,這個yolov3的檢測程序就是能夠正確編譯的。

最後提醒一下,上面的代碼須要MANA會員權限,咱們花費大量時間精力分享咱們的源代碼,並不是是給伸手黨一堆無用的東西,而是一些咱們以爲有用的精髓,可以幫助初學者快速獲得本身想要的東西,這也是咱們仍是新手的時候求之不得的,但願每一位初學者可以珍惜前人的勞動成果。固然,若是你以爲請咱們喝杯咖啡顯得過於炫富,也能夠經過其餘開源渠道得到相關代碼。

若是你們對於本篇教程有任何疑問,歡迎來咱們的AI交流社羣交流發帖:

talk.strangeai.pro

相關文章
相關標籤/搜索