熱線電話:0755-23712116
郵箱:contact@shuangyi-tech.com
地址:深圳市寶安區(qū)沙井街道后亭茅洲山工業(yè)園工業(yè)大廈全至科技創(chuàng)新園科創(chuàng)大廈2層2A
三種最常見的圖像處理平臺(tái)的優(yōu)勢(shì)和潛在應(yīng)用
圖1:使用GPU實(shí)現(xiàn)快速圖像處理速度的焊接檢查應(yīng)用程序的UI。
機(jī)器視覺應(yīng)用中圖像處理平臺(tái)的三個(gè)最常見的選擇是中央處理器(CPU),圖形處理器(GPU)和現(xiàn)場(chǎng)可編程門陣列(FPGA)。
CPU是傳統(tǒng)臺(tái)式計(jì)算機(jī)和筆記本電腦的心臟。在手機(jī)或平板電腦中,消耗較少功率的ARM處理器可提供CPU功能。CPU具有更大的指令集和大量的本地計(jì)算機(jī)語(yǔ)言庫(kù),例如C,C ++,Java,C#和Python。其中一些語(yǔ)言具有可將功能轉(zhuǎn)移到GPU并在GPU上運(yùn)行的軟件包。
傳統(tǒng)上,GPU已用于在PC上的視頻游戲中渲染像素(即圖形)。便攜式計(jì)算機(jī)通常還具有GPU。GPU越好,圖形質(zhì)量越好,幀速率越高。對(duì)于圖像處理應(yīng)用,GPU執(zhí)行相同的功能,但相反。
在機(jī)器視覺中,不是從視頻游戲中的條件開始,而是嘗試將其渲染到具有數(shù)百萬(wàn)個(gè)像素的屏幕上,而是處理數(shù)百萬(wàn)個(gè)像素以幫助軟件解釋和理解圖像。由于它們具有由許多并行內(nèi)核和優(yōu)化的像素?cái)?shù)學(xué)組成的架構(gòu),因此GPU非常有效地處理圖像和繪制圖形。
FPGA的可編程電路運(yùn)行下載到卡上的自定義程序,以將其配置為以比CPU或GPU功耗更低的低級(jí)邏輯來(lái)完成所需的任務(wù)。FPGA還不需要操作系統(tǒng)的開銷。
機(jī)器視覺系統(tǒng)的開發(fā)人員和集成人員可以在開發(fā)系統(tǒng)的其余部分之前,嘗試決定使用哪些平臺(tái)。首先對(duì)系統(tǒng)進(jìn)行原型設(shè)計(jì)通??梢源_定平臺(tái)的選擇。如果特定應(yīng)用程序的數(shù)學(xué)運(yùn)算無(wú)法在一個(gè)平臺(tái)上運(yùn)行,則可能無(wú)法在任何平臺(tái)上運(yùn)行。
設(shè)置系統(tǒng)的物理特性(鏡頭,照明燈,照相機(jī)等),收集圖像選擇并在任何舒適的環(huán)境中測(cè)試數(shù)學(xué)都可以為平臺(tái)選擇提供依據(jù)。例如,某些智能相機(jī)包括板載FPGA,以對(duì)相機(jī)進(jìn)行編程以進(jìn)行不同的測(cè)試。如果原型可以使用智能相機(jī)按預(yù)期運(yùn)行,則FPGA可能是該應(yīng)用程序的正確平臺(tái),并且可能不需要考慮CPU或GPU。
選擇特定平臺(tái)的第一個(gè)也是最重要的標(biāo)準(zhǔn)是速度。原型應(yīng)用程序一旦在測(cè)試臺(tái)上工作,就必須確定該應(yīng)用程序每秒需要處理多少部分,或者必須處理實(shí)時(shí)視頻每秒要處理多少幀。通常,對(duì)于實(shí)時(shí)視頻,約30 fps會(huì)創(chuàng)建逼真的圖像。
還必須考慮速度的其他方面,例如延遲。系統(tǒng)可能能夠在10毫秒內(nèi)處理一幀,但需要200毫秒才能從相機(jī)上取下該幀,GigE Vision驅(qū)動(dòng)程序需要100毫秒來(lái)接收該幀并將其提供給應(yīng)用程序,另外需要10毫秒來(lái)處理該幀。 。在零件檢查應(yīng)用程序中,可能是在框架到達(dá)應(yīng)用程序時(shí),相關(guān)零件已經(jīng)移動(dòng)。
一個(gè)假想的系統(tǒng)可能必須開始排隊(duì)零件圖像,以跟上零件在生產(chǎn)線上的移動(dòng)速度。將需要具有確定性時(shí)序的可編程邏輯控制器(PLC)來(lái)跟蹤生成排隊(duì)圖像的零件的位置,以便如果零件未通過機(jī)器視覺系統(tǒng)檢查,則可以將其從生產(chǎn)線中拉出。
還必須考慮啟動(dòng)延遲。并非所有的應(yīng)用程序都可以在工廠車間連續(xù)運(yùn)行,或者在生產(chǎn)線開始運(yùn)行前讓其啟動(dòng)幾分鐘。諸如戶外和消費(fèi)市場(chǎng)系統(tǒng)之類的某些應(yīng)用(例如自動(dòng)駕駛汽車中的系統(tǒng))可能需要加電并準(zhǔn)備在幾毫秒內(nèi)運(yùn)行。具有多層軟件的機(jī)器視覺系統(tǒng)(例如具有操作系統(tǒng)的CPU)可能難以滿足較短的啟動(dòng)時(shí)間要求。
以原型速度制作時(shí),可以通過拍攝高分辨率秒表來(lái)進(jìn)行測(cè)試??梢詫秩镜狡聊簧系膸c秒表上顯示的時(shí)間進(jìn)行比較,從而可以輕松量化等待時(shí)間并確定系統(tǒng)可能需要更改或改進(jìn)的方式。
考慮系統(tǒng)所需的功率對(duì)于某些應(yīng)用程序至關(guān)重要,而對(duì)于其他應(yīng)用程序則不那么重要。對(duì)于在移動(dòng)設(shè)備或無(wú)人機(jī)等電池供電的硬件上運(yùn)行的應(yīng)用程序,可能不適合使用CPU或傳統(tǒng)GPU,因?yàn)檫@些平臺(tái)可能會(huì)耗電。但是,像NVIDIA的Jetson這樣的移動(dòng)GPU(www.nvidia.com)提供了低功耗選項(xiàng)?;赗aspberry Pi的片上系統(tǒng)(SoC)平臺(tái)還將比CPU具有更低的功耗要求。
應(yīng)該考慮電源的可靠性,尤其是對(duì)于基于無(wú)人機(jī)的戶外或移動(dòng)應(yīng)用,要求平臺(tái)具有足夠的魯棒性以應(yīng)對(duì)反復(fù)的電源中斷,機(jī)器視覺公眾號(hào)。
應(yīng)該考慮平臺(tái)的熱量和所需空間。為工廠車間構(gòu)建的應(yīng)用程序通常有一個(gè)面板空間,該面板可以容納所有電子設(shè)備以及一個(gè)風(fēng)扇,以幫助冷卻系統(tǒng)。在多塵的環(huán)境或設(shè)備必須防水的情況下,需要適當(dāng)?shù)姆雷o(hù)等級(jí)(分別為IP65 / IP67),還可能需要密封的面板,這些面板可能會(huì)迅速升溫。在這些條件下,需要更大的面板和無(wú)風(fēng)扇組件。必須裝入面板的物品越多,它們產(chǎn)生的熱量就越大,系統(tǒng)可能引起的問題也就越多,并且價(jià)格可能會(huì)更高。
在幾乎所有情況下,所選平臺(tái)都需要與其他設(shè)備通信,這是機(jī)器視覺應(yīng)用程序的關(guān)鍵方面,直到設(shè)計(jì)過程結(jié)束才可能被考慮。以必須傳輸數(shù)據(jù)以進(jìn)行打印的應(yīng)用程序?yàn)槔?。可能?yán)格要求CPU與打印機(jī)通信。
數(shù)據(jù)存儲(chǔ)和檢索要求也可能會(huì)影響平臺(tái)選擇。CPU提供了將信息寫入硬盤的功能。在GPU和FPGA上處理內(nèi)存和持久性存儲(chǔ)可能會(huì)更加困難。在某些情況下,可能需要CPU來(lái)擴(kuò)充GPU或FPGA,以嚴(yán)格處理與數(shù)據(jù)相關(guān)的問題。智能相機(jī)和緊湊的嵌入式視覺系統(tǒng)可以是包括CPU,GPU,F(xiàn)PGA和數(shù)字處理器(DSP)的平臺(tái)的組合。
還必須考慮系統(tǒng)依賴性和將來(lái)的證明。硬件可靠性和潛在的更換時(shí)間表應(yīng)予估計(jì)。硬件和軟件可以購(gòu)買多長(zhǎng)時(shí)間?如果所需的處理能力發(fā)生變化,系統(tǒng)是否允許按比例放大或縮???所選組件將提供多長(zhǎng)時(shí)間的技術(shù)支持?是否有足夠的人具備操作組件的必要技能?將來(lái)尋找人員來(lái)運(yùn)行系統(tǒng)是否會(huì)引起長(zhǎng)期關(guān)注?
應(yīng)該考慮所選組件的發(fā)展以及它們將來(lái)是否會(huì)滿足系統(tǒng)要求。如果一系列FPGA或GPU背后的工程師以解決機(jī)器視覺系統(tǒng)將要遇到的特定挑戰(zhàn)的心態(tài)開發(fā)下一代硬件,那么這可能意味著贊成在應(yīng)用中采用這些FPGA或GPU。如果硬件供應(yīng)商試圖針對(duì)其他問題進(jìn)行工程設(shè)計(jì),而忽略了特定應(yīng)用程序的需求,則可能會(huì)打擊使用該供應(yīng)商的硬件產(chǎn)品線。
考慮定制代碼開發(fā)的要求以創(chuàng)建變通辦法,有助于將來(lái)驗(yàn)證系統(tǒng)。機(jī)器視覺應(yīng)用程序需要的自定義代碼越多,系統(tǒng)開發(fā)漏洞的潛力就越大,這是不利的一面。但是,如果您需要長(zhǎng)期使最終用戶使用該應(yīng)用程序,則還需要自定義和擴(kuò)展功能。如果用于特定平臺(tái)的供應(yīng)商工具提供了很少甚至沒有定制代碼的解決方案,但是如果需要的話,可以添加定制代碼,這可能就是采用該平臺(tái)的原因。
用戶界面要求經(jīng)常被視為平臺(tái)選擇的標(biāo)準(zhǔn)。大多數(shù)系統(tǒng)最終不得不與人進(jìn)行某種程度的交流。像素處理可以100%正確,但是如果系統(tǒng)無(wú)法與任何人交流信息,則系統(tǒng)可能不適合執(zhí)行任務(wù)。CPU是開發(fā)用戶界面的最佳工具?;贕PU,F(xiàn)PGA或CPU / GPU組合的系統(tǒng)可以不使用用戶界面進(jìn)行設(shè)計(jì),而是通過網(wǎng)頁(yè)提供摘要信息以監(jiān)控結(jié)果。
對(duì)于任何機(jī)器視覺任務(wù),都沒有唯一正確的答案。但是,三個(gè)不同的機(jī)器視覺系統(tǒng)的樣本演示了如何考慮平臺(tái)標(biāo)準(zhǔn)來(lái)推動(dòng)這些系統(tǒng)的設(shè)計(jì)-機(jī)器視覺公眾號(hào)。
Artemis Vision(www.artemisvision.com)與Melt Tools(www.melttools.com)簽訂合同,主要設(shè)計(jì)用于教室的焊接觀察器。焊接涉及視野中間非常明亮的光線和黑暗的環(huán)境/背景,需要高動(dòng)態(tài)范圍(HDR)成像才能同時(shí)顯示焊接位置的背景和細(xì)節(jié)(圖1)。
該應(yīng)用程序需要在不同的曝光時(shí)間進(jìn)行多次曝光,然后將圖像拼接在一起,以渲染顯示不同光照水平的單個(gè)幀。要產(chǎn)生流暢的視頻,需要30 fps的輸出。該系統(tǒng)最初是在Intel i7 CPU上原型設(shè)計(jì)的。每個(gè)輸入幀需要30到35毫秒來(lái)處理,這意味著每60到70毫秒輸出一個(gè)組合的,已處理的幀。速度太慢,無(wú)法支持30 fps的輸出速率,每幀需要30到35 ms,因此CPU對(duì)于該應(yīng)用程序不是一個(gè)可行的平臺(tái)。
考慮將算法轉(zhuǎn)移到FPGA上,然后考慮轉(zhuǎn)移到多核服務(wù)器并并行化算法??蛻粝胍粋€(gè)適合教室使用的系統(tǒng),但是,該系統(tǒng)需要使用工程教室中已經(jīng)存在的硬件進(jìn)行構(gòu)造。
教室中的計(jì)算機(jī)具有相當(dāng)強(qiáng)大的GPU,可為工程軟件渲染圖像。將HDR算法放到GPU上的選項(xiàng)最有意義。
該算法是在CUDA中實(shí)現(xiàn)的,是一款中游NVIDIA圖形卡。GPU在5到6毫秒內(nèi)處理了一個(gè)幀,并在另外5到6毫秒內(nèi)將幀復(fù)制到了GPU內(nèi)存中。除了攝像頭本身以外,不需要其他硬件即可創(chuàng)建焊接查看器。
3D激光輪廓儀需要快速處理才能支持高線速度。對(duì)于垂直于行進(jìn)軸的視場(chǎng)中的1000個(gè)像素,最佳系統(tǒng)將捕獲正方形輪廓。在1000毫米的視野和1000毫米的行程范圍內(nèi),該系統(tǒng)應(yīng)能夠處理1000幀以獲得1毫米/像素的分辨率,通常每秒可計(jì)算出數(shù)百赫茲或幀(圖2)。
需要快速啟動(dòng)時(shí)間,以使3D Profiler能夠充分捕獲和處理運(yùn)動(dòng)中的零件的圖像。確定性時(shí)序可避免使用編碼器和排隊(duì)部件,從而使系統(tǒng)更易于組裝和調(diào)試。
直接將GPU內(nèi)存進(jìn)出的能力給將GPU與3D激光輪廓分析應(yīng)用程序結(jié)合使用提出了挑戰(zhàn)。設(shè)計(jì)為PC組件的GPU不需要操作系統(tǒng),但最容易通過該CPU的OS使用。因此,F(xiàn)PGA通常被視為3D激光線輪廓儀的平臺(tái)。FPGA提供速度,確定性時(shí)序,快速啟動(dòng)時(shí)間和可靠性。
使用片狀材料的客戶希望采用各種尺寸的板。需要兩秒鐘的測(cè)量時(shí)間。生產(chǎn)線以每分鐘120英尺的速度運(yùn)行。電路板的尺寸從4 x 4英尺到4 x 8英尺,并且該系統(tǒng)需要檢測(cè)拐角和邊緣上的芯片。
需要一個(gè)操作員界面,以便可以更改板的類型,并且與任何工業(yè)系統(tǒng)一樣,如果系統(tǒng)運(yùn)行不正常,則需要一個(gè)用戶界面來(lái)提供錯(cuò)誤消息。
該系統(tǒng)首先由運(yùn)行速度太慢的CPU構(gòu)建。評(píng)估電路板尺寸并計(jì)算拐角和邊緣是否完整,大約需要5000毫秒。邊角算法花費(fèi)了大量時(shí)間。
通過指定感興趣區(qū)域(ROI)減少需要處理的像素?cái)?shù)量可以提高應(yīng)用程序的速度。實(shí)施了一個(gè)系統(tǒng)來(lái)裁剪有限的邊緣和角落的ROI。由于使用了裁剪緊密的區(qū)域來(lái)驗(yàn)證邊緣和角落,因此計(jì)算時(shí)間減少到800到1200毫秒。對(duì)算法的更改使將應(yīng)用程序保留在基于CPU的平臺(tái)上成為可能(圖3)。
如這些示例所示,不存在適用于機(jī)器視覺應(yīng)用的千篇一律的平臺(tái)。許多變量會(huì)影響應(yīng)該選擇CPU,GPU還是FPGA或這三者的某種組合。智能相機(jī)可以使用CPU,DSP或CPU和FPGA的組合。在單個(gè)平臺(tái)中可能存在有關(guān)功耗和處理速度的多種選擇。最佳性能決定了正確的解決方案。