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