伴隨我們進(jìn)入工業(yè)4.0和工業(yè)物聯(lián)網(wǎng)(IIOT)時(shí)代,更多重點(diǎn)肯定會(huì)放在自動(dòng)化層面。機(jī)器視覺(jué)技術(shù)變得越來(lái)越複雜,在提高製造商產(chǎn)品品質(zhì)水準(zhǔn)同時(shí),也有巨大潛力加速提升產(chǎn)出效能。這項(xiàng)技術(shù)之應(yīng)用範(fàn)圍也一直在擴(kuò)大,新應(yīng)用註定會(huì)在我們?nèi)粘I钪邪l(fā)揮更大作用,如在汽車ADAS系統(tǒng)中處理物件偵測(cè)/識(shí)別,使基於面部識(shí)別的安全機(jī)制能夠整合到可攜式電子設(shè)備,以及無(wú)數(shù)其他關(guān)鍵任務(wù)。
為了減小延遲,並在需要時(shí)即時(shí)進(jìn)行操作,需要在網(wǎng)路邊緣部署大量工業(yè)機(jī)器視覺(jué)設(shè)備。透過(guò)這些,可以避免成本高昂的生產(chǎn)線停工風(fēng)險(xiǎn),並防止作業(yè)人員生命受到威脅。然而,還有一些重大的影響需要考量,因?yàn)檫@意味著必須在網(wǎng)路邊緣實(shí)現(xiàn)高度自主。
透過(guò)機(jī)器學(xué)習(xí)推斷,可以從捕獲的資料中提取出迴圈模式,進(jìn)而有助於在未來(lái)處理類似場(chǎng)景時(shí)做出更好決策。然而,必須注意,在邊緣網(wǎng)路應(yīng)用這種人工智慧(AI)有重大技術(shù)挑戰(zhàn),特別是在現(xiàn)有資源有限情況之下。
機(jī)器視覺(jué)系統(tǒng)無(wú)處不在,你到處都能遇到它們,它們已經(jīng)是你所有使用一切的一部分。從垃圾郵件篩檢程式到影像識(shí)別和處理,它們已經(jīng)滲透到我們?nèi)粘I睿瑹o(wú)論是在家裡,在工作中,還是在兩者之間的往返途中。在工業(yè)製造和生產(chǎn)環(huán)境,你會(huì)發(fā)現(xiàn)部署了許多基於機(jī)器視覺(jué)的系統(tǒng)。舉例來(lái)說(shuō),最基本的應(yīng)用是數(shù)位相機(jī)可以捕捉大米包裝被填充和密封的影像,電腦演算法即時(shí)地用來(lái)處理這些影像,並透過(guò)將它們與已知的「好」影像進(jìn)行比較,來(lái)偵測(cè)潛在的問(wèn)題,例如可能是袋子裂開(kāi)了,或者沒(méi)有完全填滿,或者是密封過(guò)程在角處留下漏孔。隨著機(jī)器視覺(jué)的進(jìn)步,其偵測(cè)潛在故障的能力也越來(lái)越強(qiáng),從而能夠提高產(chǎn)品品質(zhì)和生產(chǎn)效率。
這種在機(jī)器視覺(jué)系統(tǒng)中使用的演算法可被廣泛地歸類為基於人工智慧,並利用深度學(xué)習(xí)神經(jīng)網(wǎng)路能夠以數(shù)位方式「看到」要檢查的物件。伴隨工業(yè)4.0和工業(yè)物聯(lián)網(wǎng)(IIOT)等倡議持續(xù)推動(dòng)製造業(yè)運(yùn)營(yíng)轉(zhuǎn)型,機(jī)器視覺(jué)應(yīng)用將在提高運(yùn)營(yíng)效率方面發(fā)揮越來(lái)越大作用。早期人工智慧實(shí)現(xiàn)需要大量運(yùn)算資源,而這些資源通常被限制在資料中心。與早期的人工智慧應(yīng)用不同,如今基於人工智慧的機(jī)器視覺(jué)應(yīng)用需要更靠近「邊緣」,以便提供非常準(zhǔn)確、快速和可操作的影像偵測(cè)。
深度學(xué)習(xí)和神經(jīng)網(wǎng)路
傳統(tǒng)的電腦程式是針對(duì)給定數(shù)量的輸入條件而需要提供一系列結(jié)果而編寫。當(dāng)你知道輸入是什麼,並且在輸入數(shù)量是有限的時(shí)候,這都沒(méi)有問(wèn)題。然而,假若一個(gè)系統(tǒng)面對(duì)以前從未見(jiàn)過(guò)的情況會(huì)發(fā)生什麼?該如何使系統(tǒng)以一種適當(dāng)和有用的方式做出回應(yīng)?
機(jī)器學(xué)習(xí)概念允許演算法從過(guò)去的資料中進(jìn)行學(xué)習(xí),然後在遇到未來(lái)資料時(shí)做出決策或預(yù)測(cè)。分析資料或影像可以採(cǎi)用多面層方式,每一層都比上面一層更詳細(xì)。這樣,系統(tǒng)就可以學(xué)會(huì)對(duì)以前從未見(jiàn)過(guò)的情況做出回應(yīng)。機(jī)器學(xué)習(xí)對(duì)於目標(biāo)偵測(cè)和識(shí)別特別風(fēng)行,通常使用人工或卷積神經(jīng)網(wǎng)路(CNN)。

圖1 : 基本的神經(jīng)網(wǎng)路概念。(source:Intel) |
|
卷積神經(jīng)網(wǎng)路是大腦處理視覺(jué)訊息部分的數(shù)位呈現(xiàn)。與任何神經(jīng)網(wǎng)路一樣,CNN也包含節(jié)點(diǎn)層,但它們不同之處在於,某些神經(jīng)元只與選定的其他神經(jīng)元相連。這是因?yàn)镃NN與我們大腦一樣,強(qiáng)調(diào)資料的空間架構(gòu)。例如,當(dāng)我們看到起初認(rèn)為可能是一輛汽車的影像(例如車輪、擋風(fēng)玻璃和車門後視鏡)時(shí),我們會(huì)在與這些元件相同的區(qū)域?qū)ふ移渌兀源_認(rèn)或反駁這種判斷,例如方向盤、車門柱或車燈。而隨意查看影像的另一個(gè)部分則沒(méi)有太多價(jià)值,因?yàn)樗惶赡軐?dǎo)致我們明確地判斷影像是否真的是一臺(tái)汽車。CNN工作原理基本相同,因此比完全連接的網(wǎng)路更有效,尤其是在處理大型影像時(shí)。
將CNN技術(shù)用於機(jī)器視覺(jué)應(yīng)用
CNN的架構(gòu)被稱作「網(wǎng)路拓?fù)浼軜?gòu)」,有一些已經(jīng)成為業(yè)界標(biāo)準(zhǔn),其中包括風(fēng)行的Alexnet和Googlenet。Googlene正在得到快速流行,而且比Alexnet複雜得多。其他拓?fù)浼軜?gòu)還包括VGG 和ResNet。從開(kāi)發(fā)的角度來(lái)看,有許多開(kāi)源碼庫(kù)、CNN框架和跨平臺(tái)的平行程式設(shè)計(jì)語(yǔ)言,可用於?明CNN的編碼和快速部署。CAffe是一個(gè)流行的框架例子,它包含有創(chuàng)建、培訓(xùn)、測(cè)試和完善CNN需要的所有網(wǎng)路元素。
如何建立自己的CNN將取決於你當(dāng)今和未來(lái)想要達(dá)到之目標(biāo)。你要找的「東西」有多少種不同的類別,是一小部分,還是成千上萬(wàn)?你將使用何種影像解析度或畫面播放速率?這些要求未來(lái)會(huì)提高嗎?你只是需要偵測(cè)一個(gè)物體,還是需要在它周圍畫一個(gè)詳細(xì)的邊界框並追蹤它的運(yùn)動(dòng)?
對(duì)於類似快速生產(chǎn)線等工業(yè)機(jī)器視覺(jué)應(yīng)用,有許多特定的影像識(shí)別挑戰(zhàn)。其中大部分與被偵測(cè)影像的品質(zhì)有關(guān),可能涉及到一定程度的預(yù)CNN演算法影像處理。除了能夠在偵測(cè)區(qū)域內(nèi)隔離物體外,物體照明的均勻性也是另一個(gè)考量因素。例如,要能夠識(shí)別產(chǎn)品標(biāo)籤是否正確固定在瓶子上,需要偵測(cè)標(biāo)籤邊緣和瓶子邊緣。如果瓶子是由透明玻璃製成,標(biāo)籤背面也是透明,影像處理需要生成更多的深色圖元,以便清晰地識(shí)別邊緣,它還需要避免由於生產(chǎn)設(shè)備或其他運(yùn)動(dòng)元件的反射光而引起錯(cuò)誤觸發(fā)。在這些情況下,通常使用邊緣偵測(cè)和閾值演算法來(lái)提高識(shí)別可靠度。
選擇何種硬體平臺(tái)來(lái)運(yùn)作機(jī)器視覺(jué)應(yīng)用涉及到許多決策。隨著處理器性能提高,在高性能CPU或GPU上運(yùn)作機(jī)器視覺(jué)應(yīng)用已經(jīng)是一個(gè)現(xiàn)實(shí),然而FPGA一直是熱門候選者。FPGA能夠針對(duì)試圖解決之問(wèn)題動(dòng)態(tài)構(gòu)建運(yùn)算體系架構(gòu),並提供極高性能。這是由於FPGA的特性而得以實(shí)現(xiàn),它包括數(shù)千個(gè)專用的單精確度浮點(diǎn)乘法和累加器模組,以及一個(gè)嵌入式高頻寬記憶體,可配置為一系列緩衝和緩存架構(gòu),並與FPGA的運(yùn)算元素緊密耦合。這能夠使晶片保持很低的延遲,並可實(shí)現(xiàn)可程式設(shè)計(jì)互連,從而能夠?qū)⑦壿嬚显谝黄穑瑴?zhǔn)確地構(gòu)建所需的拓?fù)浼軜?gòu)。最終,硬體的選擇將由視覺(jué)偵測(cè)系統(tǒng)偵測(cè)到的速度決定,如果超出範(fàn)圍,則會(huì)突顯錯(cuò)誤,以便其他進(jìn)程可以干預(yù)。
對(duì)基於人工智慧機(jī)器視覺(jué)應(yīng)用日益增長(zhǎng)的需求導(dǎo)致許多製造商在提供現(xiàn)成的完整評(píng)估和開(kāi)發(fā)平臺(tái),以加速系統(tǒng)驗(yàn)證和原型設(shè)計(jì)。例如,專業(yè)嵌入式相機(jī)製造商 Basler為其Dart系列相機(jī)提供一套完整的評(píng)估套件,其中包括pylon攝像頭軟體套件。

圖2 : Pylon攝像頭軟體套件。(來(lái)源:Basler) |
|
基於Intel Atom四核處理器,AAEON UP嵌入式視覺(jué)套件還包括一個(gè)Basler相機(jī)和pylon軟體。
以上兩款套件都可為簡(jiǎn)單機(jī)器視覺(jué)應(yīng)用提供良好的開(kāi)端,但一個(gè)功能齊全的基於人工智慧的方案則需要更多能夠加速神經(jīng)網(wǎng)路處理的運(yùn)算資源和能力。

圖3 : AAEON UP開(kāi)發(fā)套件。(來(lái)源:AAEON UP) |
|
例如,Intel能夠?yàn)闄C(jī)器視覺(jué)應(yīng)用提供許多不同的方案。如前所述,F(xiàn)PGA長(zhǎng)期以來(lái)一直用於機(jī)器視覺(jué)領(lǐng)域,非常適合運(yùn)作神經(jīng)網(wǎng)路。Intel Max 10 FPGA即是一個(gè)非常受歡迎的產(chǎn)品系列,適合於許多基於人工智慧的視覺(jué)應(yīng)用,其功能框圖見(jiàn)圖4。

圖4 : Intel Max 10機(jī)器視覺(jué)基本功能架構(gòu)。(來(lái)源:Intel) |
|
最近發(fā)佈的OpenVino(開(kāi)放式視覺(jué)推理和神經(jīng)網(wǎng)路優(yōu)化)軟體工具包完全支援Intel的FPGA和CPU,有助於加快應(yīng)用的開(kāi)發(fā)速度,並優(yōu)化各種Intel硬體設(shè)備的工作載荷性能。OpenVino方案透過(guò)常用的API支援CPU、FPGA和GPU執(zhí)行CNN任務(wù)的異構(gòu)能力,它使用函式程式庫(kù)和預(yù)先優(yōu)化的內(nèi)核來(lái)幫助減少總體開(kāi)發(fā)週期並加快上市時(shí)程,它還承載對(duì)OpenCV電腦視覺(jué)庫(kù)和OpenVX跨平臺(tái)電腦視覺(jué)加速API的優(yōu)化調(diào)用。
該工具包由三部分組成:深度學(xué)習(xí)、基於CNN的電腦視覺(jué)技術(shù)和硬體加速,它還包括一些預(yù)先演算過(guò)的深度學(xué)習(xí)模型。電腦視覺(jué)層面包括一個(gè)基於python的優(yōu)化器,可以透過(guò)命令列介面調(diào)用,從Caffe等框架中導(dǎo)入經(jīng)過(guò)演算的模型。

圖5 : Intel OpenVINO 框架。(來(lái)源:Intel) |
|
加速是一個(gè)添加重要且通常是平行運(yùn)算資源的過(guò)程,不僅僅局限于機(jī)器視覺(jué)應(yīng)用,也可適用於越來(lái)越多的其他應(yīng)用,其中一例是用於加快流覽器搜索速度的資料中心。然而,許多工業(yè)視覺(jué)應(yīng)用的重點(diǎn)是運(yùn)算需求須處?kù)丁高吘墶梗到y(tǒng)可以在不依賴雲(yún)端服務(wù)情況下運(yùn)作。
Intel最近發(fā)佈了Intel Neural Compute Stick 2,這是一個(gè)基於USB的綜合神經(jīng)網(wǎng)路原型平臺(tái),它採(cǎi)用Intel Movidius Myriad X視覺(jué)處理單元(VPU)。Movidius VPU包含16個(gè)128位元元超長(zhǎng)指令字(VLIW),能夠運(yùn)作混合架構(gòu)向量引擎(SHAVE)內(nèi)核(可用C語(yǔ)言程式設(shè)計(jì)),以及專用的神經(jīng)運(yùn)算加速器引擎。Movidius Myriad X VPU能夠?yàn)樯窠?jīng)網(wǎng)路處理提供令人印象深刻的每秒1萬(wàn)億次操作(TOPS),詳見(jiàn)圖6。

圖6 : Intel Neural Compute Stick 2。(來(lái)源:Intel) |
|
Neural Compute Stick 2無(wú)需風(fēng)扇,能夠仰仗一臺(tái)筆記型電腦進(jìn)行深入學(xué)習(xí)神經(jīng)網(wǎng)路部署。它附帶一個(gè)Intel OpenVino以進(jìn)一步幫助創(chuàng)建工作原型。一旦工作原型系統(tǒng)得以創(chuàng)建,就可以快速部署在基於Movidius的單板模組上,比如mini-PCI Express 尺寸格式的AAEON UP AI CORE。
籍由OpenVino等全面神經(jīng)網(wǎng)路軟體和開(kāi)發(fā)套件,以及Caffe等 CNN框架,基於人工智慧的機(jī)器視覺(jué)應(yīng)用現(xiàn)在能夠進(jìn)行快速開(kāi)發(fā)和部署。緊湊、低功耗的硬體原型平臺(tái)更進(jìn)一步加速了處?kù)毒W(wǎng)路邊緣節(jié)點(diǎn)的視覺(jué)系統(tǒng)開(kāi)發(fā)。
(本文作者M(jìn)ark Patrick任職於貿(mào)澤電子)