Jetson Nano是英偉達發布的一款小型人工智能(AI)計算主板,最大亮點是帶有嵌入式領域相對高端的GPU,并且提供AI和計算機視覺(Computer Vision)的應用程序編程接口(API),可以直接用于注重低功耗的AI應用場景。
Jetson Nano自發布以來,在開源硬件圈子里的熱度一向很高,但由于疫情導致全球物料短缺,一芯難求.Nvidia公司對于Jetson Nano開發板的產能急劇下降,市場基本上無貨可買,有貨的商家也將單價提到極高的價格.為了保證各位開發者能夠繼續使用Jetson Nano開發板進行各項科研工作,圖為信息科技(深圳)有限公司結合Jetson nano開發板特性,綜合各項性能,結合Jetson nano模塊,自研載板,最終在不懈努力之下研發出了圖為Jetson Nano國產套件,一比一大小還原Nvidia Jetson Nano開發板,可完美對接開發板的各種AI特性以及開發優勢.本篇評測除了實事求是地展示圖為Jetson Nano國產套件的各項性能特點,還將從入門指導角度盡力地為大家排除各種使用障礙。
1.Jetson Nano核心模塊硬件概況
GPU:NVIDIA Maxwell 架構,128 個 NVIDIA CUDA 核心
●?存儲:16G EMMC
●?視頻編碼:一路4K@30p、或4路1080p@30、或兩路1080p@60
●?視頻解碼:一路4K@60p、或兩路4K@30、或8路1080p@30
●?攝像頭:2 x MIPI CSI-2或USB或者網絡攝像頭
●?攝像頭網絡:千兆以太網
●?顯示器:HDMI 2.0 或 DP1.2
●?高速接口:1 x PCIe、4x USB 3.0I/O
●?UART、2x SPI、3x I2C、I2S、GPIOs
圖為Jetson Nano國產開發套件由核心板和載板組成,它們通過SO-DIMM接口連接,這種接口常見于筆記本內存。圖為Jetson Nano國產開發套件使用的核心板與Nvidia Jetson Nano開發板的核心板不同,國產套件是采用帶16g Hynix?emmc5.1作為核心存儲,官方套件則是采用sd卡作為核心存儲.
eMMC (Embedded Multi Media Card)是MMC協會訂立、主要針對手機或平板電腦等產品的內嵌式存儲器標準規格。eMMC在封裝中集成了一個控制器,提供標準接口并管理閃存.eMMC的應用是對存儲容量有較高要求的消費電子產品。2011年已大量生產的一些熱門產品,如Palm Pre、Amazon Kindle II和Flip MinoHD,都采用了eMMC。
EMMC優點:
1.簡化存儲器的設計。eMMC是當前最紅的移動設備本地存儲解決方案,目的在于簡化手機存儲器的設計,由于NAND Flash芯片的不同品牌包括三星、KingMax、東芝(Toshiba)或海力士(Hynix)、美光(Micron)等,所以都需要根據每家公司的產品和技術特性來重新設計,而過去并沒有技術能夠通用所有品牌的NAND Flash芯片。
2.更新速度快;
3.加速產品研發速度。
相比于sd卡作為核心存儲.emmc速度更快,穩定性更高,適應環境能力更強,更符合當前邊緣設備的系統環境搭建.
2.供電與系統啟動指導
首先,Nvidia開發板套件里是沒有包含顯示器、HDMI線和電源等部件,這些需要用戶自己準備或購買。使用的電源為5v4a的DC電源或者Micro?USB電源,板子上有個供電選擇跳線帽,編號J48。當通過Micro-USB供電時,需要保證J48上的跳線帽斷開,Micro-USB電源導通,DC電源切斷;當通過DC接口供電時,需要保證跳帽接上,這個在實際使用過程中往往會造成使用者的疑惑,懷疑剛收到的設備有問題.但是在圖為Jetson Nano國產開發套件上采用唯一DC供電,無需連接跳線帽,直接連接12DC電源適配器即可,在保證簡單實用的前提下,相比Nvidia開發套件5v4a的輸入更為穩定,面對大型模型時,也不會掉電壓力。
圖為Jetson Nano開發套件的顯示器支持HDMI接口和DP接口。目前市場上HDMI顯示器已經比較普及,如果你的顯示器只支持VGA的話,得考慮新買一臺顯示器。如果使用電視機做顯示器用,現在市場上主流品牌的液晶電視都同時支持HDMI和DP。
攝像頭模塊可以使用Jetson Nano推薦的LI-IMX219-MIPI-FF-NANO攝像頭模塊;也支持第三方的樹莓派的Pi Camera V2模塊。如果你已經有樹莓派V2攝像頭,可以直接使用。攝像頭接到下圖CAM0和CAM1接口。
3.性能測試
Jetson Nano應該算是閹割加降頻的Jetson TX1。CPU方面去掉了big.LITTLE中的4個A53,GPU中則直接砍掉了一半的CUDA核心。其實4個A53對于TX1本來就很雞肋,因為你并不能同時使用8個核心,只能按集群來切換。與TX1相比,Nano中的4個A57頻率也從1.9GHz降到了1.43GHz。由于繼續使用20nm制程,降頻顯然是降低功耗的另一主要手段。GPU頻率從1GHz降到922MHz,變化不大,也與Switch SoC的最高頻率一致。使用Ubuntu Benchmark Tools做了一些跑分測試。可以看出性能大致相當于2008年的主流CPU。????????????????????????????????
總的來說,Nano的CPU性能強于樹莓派3B,與樹莓派4相差不大。雖然GPU的472GFlops半精度浮點性能大概只有TX2的1/3,但也基本達到Intel HD Graphics 615集顯的水平。再加上有CUDA加持,實際性能應該更強。那么樹莓派能做的事,Nano都能做,樹莓派做不了的事,Nano或許也能做。
3.1測試 TensorFlow
跑一段自己寫的非線性回歸代碼, 速度還是挺快的, 使用 vi 新建 python 文件命名: tensorflowDemo.py然后復制以下代碼進去。保存后使用 python3 tensorflowDemo.py 運行, 這段必須在圖形化界面下運行,因為會出現一張圖表。由于是 TensorFlow2 所以把 import tensorflow as tf 改成了 import tensorflow.compat.v1 as tf 和 tf.disable_v2_behavior(),即代碼的前兩句,如果是TensorFlow1 則為 import tensorflow as tf。
# -*- coding: utf-8 -*-
import tensorflow.compat.v1 as tf tf.disable_v2_behavior()
import numpy as np
import matplotlib.pyplot as plt
x_data = np.linspace(-0.5, 0.5, 200)[:, np.newaxis] noise = np.random.normal(0, 0.02, x_data.shape) y_data = np.square(x_data) + noise
x = tf.placeholder(tf.float32, [None, 1]) y = tf.placeholder(tf.float32, [None, 1])
# 輸入層一個神經元,輸出層一個神經元,中間 10 個
# 第一層
Weights_L1 = tf.Variable(tf.random.normal([1, 10])) Biases_L1 = tf.Variable(tf.zeros([1, 10])) Wx_plus_b_L1 = tf.matmul(x, Weights_L1) + Biases_L1 L1 = tf.nn.tanh(Wx_plus_b_L1)
# 第二層
Weights_L2 = tf.Variable(tf.random.normal([10, 1])) Biases_L2 = tf.Variable(tf.zeros([1, 1]))
Wx_plus_b_L2 = tf.matmul(L1, Weights_L2) + Biases_L2 pred = tf.nn.tanh(Wx_plus_b_L2)
# 損失函數
loss = tf.reduce_mean(tf.square(y - pred))
# 訓練
train = tf.train.GradientDescentOptimizer(0.1).minimize(loss)
with tf.Session() as sess: sess.run(tf.global_variables_initializer()) for i in range(2000):
sess.run(train, feed_dict={x: x_data, y: y_data})
print("第{0}次,loss = {1}".format(i, sess.run(loss,feed_dict={x: x_data, y: y_data}))) pred_vaule = sess.run(pred, feed_dict={x: x_data})
plt.figure() plt.scatter(x_data, y_data)
plt.plot(x_data, pred_vaule, 'r-', lw=5)
plt.show()
3.2 YOLOv4 環境搭建和攝像頭實時檢測
因為用的是opencv4所以使用 yolo3編譯可能回出錯,可以換成 yolov4 或yolov4-tiny, 同時YOLO V4無論在精度和速度上都較YOLO V3有了很大的提升,為在性能受限的嵌入式設備上部署檢測程序提供了可能。yolo v4和yolov4-tiny的區別是:tiny是yolov4 的壓縮版,主要運行小算力 cpu 核心版本,在 jetso nano上使用tiny版幀率會比 yolov4提升十多倍。總的來說還是推薦使用yolov4-tiny,幀率提升很多,使用感會提升很多。
閑話少說,開始安裝。
下載
git clone?https://github.com/AlexeyAB/darknet.git?
配置
cd darknet
sudo?vim?Makefile #修改 Makefile
將下圖標注中的三項值由0修改為1
GPU=1
CUDNN=1
OPENCV=1
?
編譯
在 darknet 路徑下編譯
make -j4?
放置權重文件
將github上下載好權重文件后,將權重文件yolov4.weights 和 yolov4-tiny.weights 拷貝至 darknet 目錄下,
測試
Yolov4 圖片的檢測
./darknet detect cfg/yolov4.cfg yolov4.weights?data/dog.jpg?# 簡寫版
./darknet?detector?test?cfg/coco.data?cfg/yolov4.cfg?yolov4.weights?data/dog.jpg # 完整版
?
Yolov4?視頻的檢測(github?下來的data?里面并沒有該視頻文件,需要用戶自行上傳要檢測的視頻文件到data?文件夾下)
./darknet detector demo cfg/coco.data cfg/yolov4.cfg yolov4.weights data/123.mp4
? 總結
這個就是我們傳說中的,英偉達AIOT的一款重量級產品 - Jetson Nano!
千萬別小看這快板子,它可是可以跑Ubuntu 18.04, CUDA什么的一應俱全,并且具有4G顯存的而且體積非常小的神器.這是一塊性能非常強悍的板子,更重要的是軟件資源非常豐富,你可以編譯依賴庫非常復雜的caffe,并且你還可以任意編譯任何你的tensorrt加速的模型;這快板子的推理速度可以滿足一些基本的需求。比如:
基于yolov3的人流和車流的檢測;
基于MTCNN的人臉檢測和比對(帶人臉建庫);
使用TensorRT加速onnx模型;
基于yolov3的手檢測器等,
目前人工智能風口開始逐步進入落地應用階段,更多產品希望能夠將人工智能算力運用于實際終端,即實現所謂的邊緣計算需求。從根本上來說近幾年推動人工智能的核心在于深度學習算法,但是深度學習的推理加速離不開高速GPU的支持,而一般桌面PC或服務器級別的顯卡(如英偉達1080Ti等)價格非常昂貴,不適合邊緣計算需求,而且體積也過于龐大。因此,英偉達推出的這款嵌入式人工智能開發板Jetson Nano非常契合當前行業需求。
審核編輯:符乾江
評論
查看更多