1. 程式人生 > >圖像識別VPU——易用的嵌入式AI支持深度學習平臺介紹

圖像識別VPU——易用的嵌入式AI支持深度學習平臺介紹

dem 解碼 控制 令行 好的 測距 輕松 分析 ada

公司玩了大半年的嵌入式AI平臺,現在產品進入量產模式,也接觸了很多嵌入式方案,有了一些心得體會,本人不才,在這裏介紹一下一款簡單易用的嵌入式AI方案——Movidius Myriad 2 VPU(MA2450) 和 Myriad X VPU(MA2485)。這裏本人重點提示:簡單易用的嵌入式AI。現在好多家半導體廠商已經推出嵌入式AI平臺,比如華為海思今年4月份發布的Hi3359A,這個樣品超過100美金/片,集成寒武紀AI核(遺憾不是最新的版本,因為最近寒武紀又發布最新的AI版本,同時還集成大名鼎鼎Cadence的 4核DSP);賽靈思Xilinx的FPGA—— Zynq 7020,ZU2CG開發難度大,價格不菲,還有其他家的ARM+FPGA方案也不便宜,開發難度也不小;英偉達的GPU——JETSON TX2,TX2核心板英偉達自己生產,價格太貴,不適合產品小型化生產;TI 的TDA2x系列和DAVINCI系列最新的DM505,以及後續的版本,專註輔助駕駛ADAS,他的64bit浮點DSP C66X+EVE也支持深度學習(不要小瞧這個EYE,深度學習方面一個EYE可比2個C66X 浮點DSP還牛),不過功耗太高,軟件資源也不好搞到,海掏買美國D3公司DEMO板價格不菲,而且沒技術支持開發周期過長,價格也不便宜。鑒於本公司的資源(小公司),我們選擇了Intel的Movidius Myriad 2,在軟件資源方面,Intel推出神經元棒的免費NCSDK,這個軟件資源讓很多公司看到嵌入AI領域的希望,這一手Intel做得不錯,很多公司都在嵌入式開發板樹莓派3上面加這個神經元棒學習,銷售比較火爆。當然如果要拿到完整的MDK,直接使用Myriad 2 VPU和Myriad X VPU做控制器(比如直接使用片上LEON4運行客戶軟件,直接接CMOS SENSOR,接網口芯片,4K H.264和H.265編解碼,USB,PCIE,SPI,I2C,UART控制等等),那就得花超過100---400萬RMB不菲的門檻費,這些就是中大型公司的玩法,這點錢無所謂。

Movidius Myriad 2 VPU (Vision Processing Unit——視覺處理器)被稱作為“第三次影像革命的開端”的芯片方案。Movidius 已經被Intel收購,Intel Movidius Myriad 2 VPU可在不同目標應用中提供低功耗、高性能的視覺處理解決方案,其中包括嵌入式深度神經網絡、位姿估計、室內導航、3D深度感應、3D制圖(3D掃描建模),視覺慣性測距,以及手勢/眼部跟蹤,基於深度學習的環境感知。
安防巨頭海康和大華把Movidius Myriad 2(MA2450)視覺處理單元應用於視頻監控攝像頭,在完成監控和錄制等傳統任務外,提供人群密度監測、立體視覺、面部識別、人數統計、行為分析以及檢測非法停放車輛等先進的視頻分析功能。Myriad 2為大疆最近發布的首款迷你無人機Spark提供了視覺智能技術,該無人機早就大批量生產。

這顆芯片被一分為二,其中一部分有12個SHAVE 128位處理器,專為影像處理負載做優化,每顆都運作在600MHz的頻率下,而且有超頻潛能,第一代的180MHz顯然是不夠看的;與這些處理器相匹配的是Movidius稱之SIPP過濾器(Streaming Inline Processing Pipeline filters)的硬件加速器——這玩意兒可完成一些預設的影像處理任務,比如將來自不同類型攝像頭的數據融合到一起,或者將多個視頻內容接合到一起;另外還有2個32位RISC處理器用於芯片管理,這就是LEON4(LEON是一款32位RISC處理器,支持SPARC V8指令集,由歐洲航天總局旗下的Gaisler Research開發、維護,目的是擺脫歐空局對美國航天級處理器的依賴。LEON的主要產品線包括LEON2、LEON3、LEON4)。SHAVE這一端對原始影像數據做計算處理,OEM廠商可以選擇不同的方案;SIPP則可協力處理通常任務;集中型的寄存器結構令芯片兩側可同時對相同的數據做處理。這些對於降低延遲是相當有價值的。
鑒於這樣的架構設計,Myriad 2 VPU芯片面積是6.5mm,厚度1mm,具體的性能則是可以48fps的幀率同時處理來自12個1300萬像素攝像頭的數據,以60fps拍攝4K視頻自然也是毫無壓力,功耗低於0.5W(臺積電28nm HPC工藝)。按照El-Ouazzane的說法,相比能夠提供同等效果的GPU,Myriad 2的功耗低了最少10倍。
深度學習框架方面,支持Caffe,Caffe的全稱是Convolutional Architecture for Fast Feature Embedding,作者是博士畢業於伯克利的浙江人賈揚清,它是一個清晰、高效的開源深度學習框架,核心語言是C++,支持命令行、Python和Matlab接口,既可以在CPU上運行也可以在GPU上運行。同時也支持Google的TensorFlow。所以C/C++、Python程序員可以快速切入深度學習的架構去工作。所以說,支持深度學習易用的嵌入式平臺,非VPU莫屬。前面提到的Intel Movidius神經元棒,包括他們提供的免費NCSDK軟件包,可以滿足那些C/C++程序員、Python程序員輕松在WIN下直接開發AI軟件,也可以在ubuntu下直接開發軟件,很方便,而在嵌入式前端,同樣也可以支持NCSDK軟件包,玩得好Caffe和TensorFlow應該很快上手進行算法優化和設計。
而2017年推出的Movidius Myriad X(MA2485)超級NB,Myriad X將提供十倍於Myriad 2同樣功率範圍內深層神經網絡(DNN)的性能。
技術分享圖片
Myriad X 有4個可C編程的128位VLIW矢量處理器和可配置的MIPI通道,並擴展了2.5 MB的芯片內存和更多的固定功能成像/視覺加速器。就像在Myriad X中發現的一樣,Myriad X的矢量單位都是專有的SHAVE (流混合的架構矢量引擎)處理器,對計算機視覺工作負載進行了優化。Myriad X也支持最新的LPDDR4,MA2085變體只配置了外部存儲器接口。
Myriad X的另一個新功能是4K硬件編碼,4K在30Hz(H.264/H.265)和60 Hz(M/JPEG)支持。從接口上看,Myriad X帶來了USB 3.1和PCIe 3.0支持,這兩個都是Myriad VPU家族新支持的接口。與Myriad 2一樣,所有這些都是在同一個小於2W的功率範圍中完成的,更具體地說是在1W以內,使用臺積電16nm FFC工藝。所以說,在如此低功耗下就能完成很多視頻處理和深度學習,前面提到的幾個平臺根本無法做到。
從目前前端圖像識別市場反饋的角度看,這個Myriad 2 VPU(MA2450) 和 Myriad X VPU(MA2485)芯片出貨量比較大。還有在開發板-學習板方面,便宜的樹莓派3,樹莓派3+都可以直接拿神經元棒進行深度學習算法開發,簡單易用。如果是產品設計方面,本公司的VPU模組和ARM + VPU方案也可以快速出產品。
本公司開發的AI平臺,是ARM+VPU組合模式,我們低端使用華為海思Hi3516A/D + VPU和高端使用Hi3519V101+VPU,國產和進口的組合,因為海思Hi3516A/D和Hi3519V101支持H.264/H.265編解碼,帶有ISP,還帶有一個IVE(智能視頻分析算法加速器,確切的說是傳統機器視覺算法加速器),然後再加上Intel Movidius 這個支持深度學習的VPU,就是我們ARM+VPU支持深度學習平臺。也就是說我們的平臺同時支持傳統機器視覺算法+深度學習算法,而且還支持H.265編解碼,海思Hi3516A/D和Hi3519V101的IVE支持的功能如下:
★?DMA:支持直接拷貝、間隔拷貝、內存填充。
★?Filter:支持 5x5 模板濾波。
★?CSC:支持 YUV2RGB、 YUV2HSV、 YUV2LAB、 RGB2YUV 顏色空間轉換。
★?FilterAndCSC:支持 5x5 模板濾波和 CSC 的復合功能。
★?Sobel:支持 5x5 模板 Sobel-like 梯度計算。
★?MagAndAng\Canny:支持 5x5 模板梯度幅值和幅角計算、 Canny 邊緣提取。
★?Erode:支持 5x5 模板腐蝕。
★?Dilate:支持 5x5 模板膨脹。
★?Thresh\Thresh_S16\Thresh_U16:支持圖象閾值化處理。
★?And\Or\Xor:支持兩幅圖象相與、或、異或。
★?Add\Sub:支持兩幅圖象相加權加、減。
★?Integ:支持積分圖計算。
★?Hist:支持直方圖統計。
★?Map:支持對圖像通過 256 級 map 映射賦值。
★?16BitTo8Bit:支持 16bit 數據到 8bit 數據線性轉換。
★?OrdStatFilter:支持順序統計量濾波:中值濾波、最大值濾波、最小值濾波。
★?Bernsen:支持 Bernsen 二值化。
★?NCC:支持兩相同大小圖像互相關系數計算。
★?CCL:支持連通區域標記。
★?GMM:支持灰度圖與 RGB 圖的混合高斯背景建模。
★?LBP:支持簡單局部二值模式計算。
★?NormGrad:支持歸一化梯度計算。
★?LKOpticalFlow:支持 LK 光流跟蹤。
★?STCorner:支持 ShiTomasi 角點檢測。
★?GradFg:支持梯度前景運算。
★?MatchBgModel\UpdateBgModel:支持背景匹配、背景更新。
★?ANN_MLP_Predict:支持 ANN_MLP 預測。
★?SVM_Predict:支持 SVM 預測。
★?支持單獨進行軟復位。
★?支持 128bit AXI 總線和 32 bit APB 總線。
★?支持鏈表級中斷、節點級中斷和超時中斷。
★?支持 SP 400、 SP420 (semi-plannar 420)、 SP422 (semi-plannar 422)、 package、
planar 等輸入格式。
★?支持 SP 400、 SP420、 SP422、 package、 plannar 等輸出格式。

這些功能直接集成在芯片內部,通過加載LIB和函數調用就可以使用了,不需要ARM來運算。搞過傳統算法的人對上面列的內容應該很熟悉,這裏就不累贅。
至於Hi3519V101+VPU的開發攻略,本人不打算寫了,因為海思的SDK包裏面的手冊就寫得很詳細了,VPU移植到ARM平臺的NCSDK軟件Intel官網也有,本人現在沒有深入去研究,都是員工在搞,在這裏寫出來就比較班門弄斧。
下圖就是Hi3519V101 SDK的裏面的文檔,看了這些詳細的文檔,有點嵌入式底子的工程師應該知道如何搭建環境、編譯、和燒寫了。
技術分享圖片
下面圖片是我們自己做的嵌入式VPU模塊和嵌入式Hi3519V101+VPU核心板硬件,沒有硬件平臺支持,再好的算法也不能轉化價值。還有這個VPU支持Google的TensorFlow,這個對Python程序員應該很快進入嵌入式AI開發角色,而不是停留在PC端和服務端,現在很多大公司和有前沿實力的創業公司都往前端布局,嵌入式AI平臺會越來越火,特別是LPDDR5出來的時候,會使嵌入式AI芯片的帶寬大大提升,這樣更加支持算法度更復雜的深度學習算法。
(項目雙贏合作,聯系QQ:2505133162)
技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片

圖像識別VPU——易用的嵌入式AI支持深度學習平臺介紹