Nvidia--Jetson Nano開發版測評

本文介紹 Apollo Cyber RT操作系統學習記錄(一)

前幾日,剛好收到Nvidia贈送一塊Jetson Nano開發版,拿到之後我做的第一件事情就是… 開機,但我發現它沒有帶電源。。。並且wifi什麼也不自帶,好吧,那拿到它的第一件事情當然就是打開淘寶啦!先把電源,wifi啥的買了,給它裝上了一個漂亮的外殼。這個是封裝之後的nano。這個就是我們傳說中的,英偉達AIOT的一款重量級產品 - Jetson Nano!

你可別小看這快板子,它可是可以跑Ubuntu 18.04, CUDA什麼的一應俱全,並且具有4G顯存的而且體積非常小的神器!爲什麼叫做神器,後面我會慢慢的講,大家可以看看它的外形。

如果你只是想做一個小型的AI終端,比如人臉識別啦、檢測老鼠啦、檢測行人啦、監控你的植物是否缺水啦、製作你自己的自動駕駛校車啦。。。等等,都可以用這個微型電腦,並且!就這麼一個小玩意,擁有4G顯存!!非常不錯,當我們對板子進行開機之後,就會發現英偉達綠光閃閃的桌面呈現在我們眼前。可以簡單的check一下系統信息,驚喜的發現,哇,居然自帶CUDA。

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-ECp6h1rv-1590114691221)(assets/a.png)]

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-IPeZUlAH-1590114691223)(assets/b.png)]

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-okt2RX1t-1590114691225)(assets/c.png)]

在正式對這快板子的性能進行評測之前,我需要給大家幾點上手的建議:

  • 板子價格不貴,如果你搞AIoT,別用瑞芯什麼的rk3399了,直接nano,爲什麼?CUDA還比不上你嵌入式的GPU?跑深度學習模型,得益於CUDA和TensorRT,完爆大部分嵌入式板子;
  • 板子買回來之後,別聽網上人瞎扯淡買電源,一個microusb就可以供電,也就是以前的安卓手機充電線即可,爲什麼?因爲我淘寶買了一個發現根本沒有用。。白花了20塊大洋,淘寶坑貨多,後面實際用起來也沒有功率不夠的情況;
  • 板子買回來以後,別急着買鼠標鍵盤或者小的顯示屏,**事實證明,nano鏈接我的2k顯示屏沒有任何壓力!!**而且尺寸是21寸的!!我沒有管那麼多,插上DP接口就用,發現板子打起來沒任何壓力呀!!這超出我的意料,這要是raspberry或者rk3399估計發熱已經爆炸了。
  • 板子回來以後,第一件事情去買個亞克力的外殼以及99塊錢的攝像頭。
  • 雖然用一個microusb可以處理大部分情況,但是如果你所有外設都加上的時候,還是可能會掉電,此時就需要再增加一個電源供電了。

別問我爲什麼攝像頭這麼貴,簡單的usb視頻聊天的那種我沒有試過,你要買工業相機更貴,99塊雖然比樹莓派的那個攝像頭貴了些,但是1080pi,畫質更清晰,拍月亮更給力。

好了,前沿差不多介紹到這裏。接下來正式開始nano的測評。

Summary

先給出一個關於nano的一個整體的總結,我們以問題的形式來回答:

  1. nano怎麼刷系統?

    直接官方下載ubuntu18.04景象,你準備一個64G的tf卡就可以燒錄了。

  2. nano支持CUDA幾?

    CUDA10,當你刷入系統後,CUDA就已經自帶了。據我所知,現在CUDA10是最新的穩定版本,很多深度學習框架都依賴於CUDA10,你CUDA10.1都太新了,比如tensorflow最新版就不支持cuda10.1,只能是cuda10.所以CUDA10足夠了,至於以後更新,以後再說。

  3. nano具有opencv,cmake,gcc這樣的編譯工具嗎?

    nano的ubuntu18.04與普通ubuntu使用沒有差別,cmake你可以apt安裝,也可以自己編譯,我自己就在鏈接2k顯示屏,外接鍵盤鼠標,優盤的情況下,編譯了cmake,沒有什麼大問題,板子發熱也不是很嚴重。另外需要說明的是,nano自帶了opencv以及tensorrt。所以基本你需要的庫都在這裏了。

  4. nano怎麼上網?

    你用一個usb的無線網卡就行。這個其實很方便。

  5. nano可以用來人臉識別嗎?

    本文後面的評測會嘗試評測一些主流算法,看看顯存是否滿足,實時性是否滿足,可供參考。

  6. 買這個nano影響我開法拉利嗎?

    不影響。

  7. nano帶有opencv嗎?

    據我所知,好像沒有自帶,需要自己編譯或者直接從apt安裝。

最後,也總結幾個比較奇怪的地方:

  • 沒有 nvidia-smi,查看顯存佔用不太方便,我不知道這算不算驅動安裝成功了???
  • 沒有locate,還得手動安裝,這說明這個系統是個閹割版本,不過問題不大,畢竟是物聯網板子,整太多東西先的臃腫。

總的來說在系統初始狀態方面,足夠的精簡,但是簡而不缺,一些重要的庫都還是具備的。應該來說比樹莓派強很多,樹莓派那個系統纔是真實要啥沒啥。並且性能很弱雞。

評測

今日要評測的方面主要是兩個:

  • 板子的硬件性能,以及它的極限;
  • 一些常用算法的速度。

我們評測第二個之後,基本上就對這快板子的水準心裏有數了,能不能用它來做AIOT,來做我們的AI本地服務器,就看它能把常用的算法跑到什麼程度。我們將會cover的評測點包括:

  • caffe版本的yolov3+mobilenetv的速度;
  • TensorRT加速的yolov3的檢測速度;
  • SSD目標檢測的速度;
  • Nvidia官方FasterRCNN的運行速度;
  • TensorRT加速的MTCNN的運行速度;
  • Libtorch的HumanPose Estimation模型的推理速度;
  • TensorRT加速的BERT的運行速度。

以上評測我們將一個一個來,每一個都會給出一個總結,即nano的速度跟CPU和GTX1080系列的速度差異,對比這個差異不是看它比gtx系列強,而是看它差多少倍,這樣我們在GTX1080或者其他大卡上跑,基本上除以一個倍數就可以知道它在nano上大概的速度。另外一方面,我們也會探索一下nano的顯存極限,看看它運行我們跑的最大模型是什麼。

caffe版本yolov3+mobilenetv2的運行速度

這個我們不使用tensorrt優化,而是直接在板子上編譯一個GPU版本的caffe,然後inference我們的caffemodel,我們已經知道了這個模型在GTX1080 ti上的速度,看看它在nano上的表現怎麼樣。

首先說明一下,這是一片評測文章,很多算法可能有源代碼,可能沒有,有一些甚至我們內部項目尚未開源,但我們儘可能的給出每個測試的源代碼,這個評測的代碼可以在 http://manaai.cn 上找到。

在進行這個之前,必須得明確一個問題,nano上能編譯GPU版本的caffe嗎?說實話,單單這個步驟就踩了不少坑,原因不是caffe難以編譯,而是硬件限制,導致最後編譯階段通常會卡死。

總結一下這個步驟的坑:

  • 除非交叉編譯,否則難免需要在nano上編譯你需要的庫,但好歹nano能扛得過去,這要是樹莓派或者rk3399,估計…. 已經炸了;
  • caffe算是一個比較複雜的,庫依賴比較多的庫,但是操作下來沒有發現什麼東西不支持的情況 (如果是raspberry的debian那個系統就有很多庫沒有arm版本),這個不錯,最起碼生態比較好。
  • 調用nano的nvcc編譯cuda代碼,似乎除了慢一些,沒有其他的問題,別看它個子小,上陣殺敵不輸於它的GTX哥哥們。

看一下我們在nano上編譯caffe的過程:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-Tfblj35l-1590114691226)(https://s2.ax1x.com/2019/08/11/evyRRP.png)]

可以看到,還是可以編譯的,並且編譯比較成功,沒有出現啥幺蛾子,主要是我們自己維護的caffe已經比較健壯了,採用cmake可以避免很多makefile造成的亂七八糟的坑。

另外我們再次編譯了一些由caffe驅動的應用程序:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-HKj6tYsC-1590114691227)(https://s2.ax1x.com/2019/08/11/evcr4A.png)]

依舊問題不是很大。這些代碼其實在manaai.cn上可以找到對應的,尋找caffe框架的即可,最經典的是yolov3的mobilenetv2版本。網址傳送門:

http://manaai.cn

大家可能關心nano上運行yolov3+mobilenetv2的速度如何,但是我得遺憾的告訴大家,nano在這個任務上撲街了。。。至於原因,猜測可能是我的電源功率不足,因爲實際上是能跑起來的,但是跑起來之後系統就掉點down機了,不確定是不是功率問題,後面等我換個電源再來評測。

但是至少我們得到了這些通過實踐得來的結論:

  • nano跑caffemodel沒有問題,編譯GPU版本的caffe是沒有問題;
  • nano load yolov3這麼大的網絡是沒有問題的,並且可以成功load網絡。

tensorrt加速的yolov3

上面那個測試撲街之後,我們不能放棄。我們繼續嘗試用tensorrt加速的yolov3,事實證明,tensorrt加速之後對於網絡的運行效率有很大的提升。我們實際上測試的結果如下:

對於416的輸入尺寸,inference一張圖片的速度大概是56ms左右。 我們測試的yolov3是從darknet轉換的版本,因此這個速度應該來說是非常快的,而且考慮到第一次load模型具有一定的預熱時間,估計video inference的時候速度會更快。

簡單測試的結果表明,nano推理yolov3模型幾乎可以達到一個實時。

結論

後面的幾個測評我們後面繼續測試,由於我們的電源供電不足導致caffemodel推理的時候出現掉電的情況,還需要更換電源繼續測試。但初步可以總結如下:

  • 這是一塊性能非常強悍的板子,更重要的是軟件資源非常豐富,你可以編譯依賴庫非常複雜的caffe,並且你還可以任意編譯任何你的tensorrt加速的模型;
  • 這快板子的推理速度可以滿足一些基本的需求。比如目標檢測等。

在接下來的測試中,我們將基於jetson nano開發一些比較有趣的應用程序,並且會將代碼開源到mana平臺,我們打算做的list包括:

  • 基於yolov3的人流和車流的檢測;
  • 基於MTCNN的人臉檢測和比對(帶人臉建庫);
  • 我們將會嘗試使用TensorRT加速onnx模型,給大家展示一個頭盔檢測的demo;
  • 基於yolov3的手檢測器,也就實時檢測你的左右手。

如果你想繼續跟進我們的更新,歡迎訂閱我們的專欄,這樣我們只要已更新,你就可以收到更新通知。也歡迎來我們的社區交流更多的AI問題:

http://talk.strangeai.pro

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章