工業(yè)機器視覺需要邊緣計算嗎
為了降低延遲并在必要時能夠立即采取行動,很大一部分工業(yè)機器視覺需要在邊緣網(wǎng)絡(luò)實現(xiàn)計算處理。通過這一點,將有可能避免代價高昂的生產(chǎn)線停機風險,并防止員工的生命受到威脅。不過,還有一些重大的影響因素需要考慮,因為這意味著必須在邊緣端擁有巨大的自主權(quán)。
通過機器學習推斷,從捕獲的數(shù)據(jù)中提取特征,以便將來在處理類似場景時作出更好的決策。然而,必須指出的是,在邊緣端應(yīng)用這種人工智能(AI)具有與之相關(guān)的重大技術(shù)挑戰(zhàn),特別是在資源有限的情況下。
無處不在的機器視覺系統(tǒng)!
這種機器視覺系統(tǒng)中使用的算法被廣泛歸類為基于人工智能(AI)的算法,并利用深度學習神經(jīng)網(wǎng)絡(luò)對要檢查的對象進行數(shù)字化的“檢查”。隨著工業(yè)4.0和工業(yè)物聯(lián)網(wǎng)(IIoT)等舉措不斷改變制造業(yè)廠商,機器視覺應(yīng)用將在提高運營效率方面發(fā)揮越來越大的作用。與早期需要大量計算資源的人工智能實現(xiàn)不同,這些計算資源往往被限制在數(shù)據(jù)中心內(nèi),今天的人工智能機器視覺應(yīng)用需要更靠近“邊緣”端,以便提供高精度、快速和可操作的圖像檢測。
深度學習和神經(jīng)網(wǎng)絡(luò)
傳統(tǒng)的計算機程序是為了在給定的輸入條件下輸出一組結(jié)果而編寫的。當你知道會輸入什么并且輸入的數(shù)量有限時,這是有效的一種方法。然而,當一個系統(tǒng)遇到它以前從未遇到過的情況時,將會發(fā)生什么———你如何使它以適當和有用的方式作出反應(yīng)?
卷積神經(jīng)網(wǎng)絡(luò)是對部分大腦處理視覺信息的數(shù)字解釋。與任何神經(jīng)網(wǎng)絡(luò)(見圖1)一樣,CNN 包含多層節(jié)點,但它們的不同之處在于,某些神經(jīng)元只連接起來選擇其他神經(jīng)元,這是因為CNN 就像我們的大腦一樣,強調(diào)數(shù)據(jù)的空間結(jié)構(gòu)。例如,當看起來像是汽車圖像(例如車輪、擋風玻璃和車門后視鏡)時,我們會在相同區(qū)域內(nèi)尋找其他元素來證實或反駁這一假設(shè),例如方向盤、車門立柱或燈組。觀察圖像其他區(qū)域的價值會降低,因為它不太可能讓我們對圖像是否真的是一輛汽車有一個明確的答案(增強學習)。CNN的工作原理與此相同,因此比全連接網(wǎng)絡(luò)的效率更高,特別是在處理大型圖像時。
圖1 神經(jīng)網(wǎng)絡(luò)基本概念
CNN在機器視覺中的應(yīng)用
CNN的結(jié)構(gòu)被稱為“網(wǎng)絡(luò)拓撲結(jié)構(gòu)”,并且已經(jīng)發(fā)展成為標準,其中包括流行的AlexNet和GoogleNet,這些都得到了快速的普及,并且比AlexNet復(fù)雜得多。其他拓撲結(jié)構(gòu)包括VGG和ResNet。從開發(fā)的角度來看,有許多開源庫、CNN框架和跨平臺并行編程語言可用于幫助CNN的編碼和快速部署。Caffe是一個流行框架的例子,它包含創(chuàng)建、訓練、測試和刷新CNN所需的所有網(wǎng)絡(luò)元素。
如何建立CNN 網(wǎng)絡(luò)將取決于目前和將來要實現(xiàn)的目標。你要找的“東西”有多少個不同的類別———是有限數(shù)量,還是成千上萬? 你將使用哪種圖像分辨率或幀速率? 這些參數(shù)會增加嗎? 你只需要檢測一個物體,還是需要對目標進行詳細的細節(jié)描述并跟蹤它的運動軌跡?
選擇在哪個硬件平臺上運行機器視覺應(yīng)用程序涉及許多因素。盡管現(xiàn)場可編程門陣列(FPGA)一直是熱門的候選,隨著處理器性能的提升,在高性能CPU 或GPU上運行現(xiàn)實更受歡迎。FPGA 使您能夠動態(tài)地構(gòu)建一個專門解決自己問題的計算體系結(jié)構(gòu),并能夠提供極高的性能。這是由于FPGA 的特性決定的,其包括數(shù)千個專用的單精度浮點乘法器和累加器塊,以及一個可以配置成一系列緩沖和緩存結(jié)構(gòu),并且能夠和FPGA 計算單元緊密耦合的嵌入式高帶寬存儲器。這使得片上系統(tǒng)具有非常低的延遲和片間可編程互連的功能,同時能夠結(jié)合邏輯,來構(gòu)建所需的拓撲結(jié)構(gòu)。最終,硬件的選擇將取決于視覺檢測系統(tǒng)能夠檢測到的速度,如果超出可選界限,則會提示錯誤,以便另一個進程可以干預(yù)。
對基于人工智能的機器視覺應(yīng)用的需求日益增長,導(dǎo)致許多制造商打包開發(fā)完整的系統(tǒng)評估和開發(fā)平臺,以加快系統(tǒng)驗證和原型制作。例如,專業(yè)的嵌入式視覺攝像機制造商Basler [1] 為其Dart系列攝像機 [2] 提供了一個完整的評估工具包,其中包括掛架攝像機軟件套件()。 基于Intel Atom 四核處理器,圖3[3] 所示的AAEONUP嵌入式視覺套件還包括一個Basler攝像頭和配套軟件。
上述兩個工具都為簡單的機器視覺應(yīng)用提供了一個良好的起點,但功能齊全的基于人工智能的方法保證了更多的計算資源和能力來加速神經(jīng)網(wǎng)絡(luò)處理過程。例如,Intel就提供了許多不同的機器視覺方法。如前所述,F(xiàn)PGA長期以來一直與機器視覺聯(lián)系在一起,非常適合運行神經(jīng)網(wǎng)絡(luò)。Intel Max 10 FPGA系列 [4] 是一個很受歡迎的設(shè)備系列,它非常適合許多基于人工智能的視覺應(yīng)用程序,
最新發(fā)布的OpenVINO(開放式視覺推理與神經(jīng)網(wǎng)絡(luò)優(yōu)化)軟件工具包(見圖5)完全支持Intel的FPGA 和CPU,它有助于加速應(yīng)用程序設(shè)計,并優(yōu)化一系列Intel硬件設(shè)備的工作負載性能。OpenVINO 支持通過一個公共API跨CPU、FPGA和GPU 異構(gòu)地執(zhí)行CNN 任務(wù),它使用一個函數(shù)庫和預(yù)優(yōu)化的內(nèi)核來幫助縮短整個開發(fā)周期并加快產(chǎn)品上市速度。它還托管OpenCV 計算機視覺庫和OpenVX 跨平臺計算機視覺來加速API的優(yōu)化調(diào)用。
該工具包包括三個部分———深度學習、基于CNN 的計算機視覺技術(shù)和硬件加速———同時,工具包還包括一些預(yù)先訓練的深度學習模型。計算機視覺方面包括一個基于Python的優(yōu)化器,可以通過命令行接口從Caffe等框架中導(dǎo)入經(jīng)過訓練的模型。
加速,即添加重要的計算資源(通常是并行計算資源)的過程,不僅限于機器視覺應(yīng)用程序,還可以在越來越多的其他應(yīng)用程序中找到,例如用于加快瀏覽器搜索速度的數(shù)據(jù)中心。然而,許多工業(yè)視覺應(yīng)用更強調(diào)在“邊緣”端進行計算,即系統(tǒng)可以在不依賴云服務(wù)的情況下正常運行。
Intel最近宣布了Intel神經(jīng)計算棒2——一個基于Intel Movidius Myriad X視覺處理單元(VPU)的USB神經(jīng)網(wǎng)絡(luò)處理平臺。Movidius VPU 包括16個128位超長指令字(VLIW)可用C 語言編程的混合架構(gòu)矢量引擎(SHAVE)內(nèi)核,以及一個專用的神經(jīng)計算加速器引擎。Movidius Myriad XVPU 能夠為神經(jīng)網(wǎng)絡(luò)處理提供每秒1萬億次運算處理(TOPS),
神經(jīng)計算棒可以使深入學習神經(jīng)網(wǎng)絡(luò)在一臺筆記本電腦中進行部署,它提供了Intel OpenVINO發(fā)行版,以進一步幫助用戶快速實現(xiàn)與部署。一旦實現(xiàn)了工作原型系統(tǒng),它就可以快速部署在基于Movidius的單板模塊上,如基于AAEON UP AI 核的mini PCI Express系統(tǒng) [5] 。
基于人工智能的機器視覺應(yīng)用如今能夠快速開發(fā)和部署,要歸功于神經(jīng)網(wǎng)絡(luò)軟件和開發(fā)工具包的完備性,比如和Caffe近似的OpenVINO和CNN 框架。緊湊、低功耗硬件原型平臺的發(fā)展進一步加快了邊緣節(jié)點視覺系統(tǒng)的開發(fā)速度。