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

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

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

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

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

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

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