CPU,GPU,FPGA:如何為您的機器視覺應用選擇最佳方法

2020-12-11 騰訊網

來源:機器視覺 | 作者:湯姆·布倫南

翻譯:雲禪

三種最常見的圖像處理平臺的優勢和潛在應用

圖1:使用GPU實現快速圖像處理速度的焊接檢查應用程式的UI。

機器視覺應用中圖像處理平臺的三個最常見的選擇是中央處理器(CPU),圖形處理器(GPU)和現場可編程門陣列(FPGA)。

CPU是傳統臺式計算機和筆記本電腦的心臟。在手機或平板電腦中,消耗較少功率的ARM處理器可提供CPU功能。CPU具有更大的指令集和大量的本地計算機語言庫,例如C,C ++,Java,C#和Python。其中一些語言具有可將功能轉移到GPU並在GPU上運行的軟體包。

傳統上,GPU已用於在PC上的視頻遊戲中渲染像素(即圖形)。可攜式計算機通常還具有GPU。GPU越好,圖形質量越好,幀速率越高。對於圖像處理應用,GPU執行相同的功能,但相反。

在機器視覺中,不是從視頻遊戲中的條件開始,而是嘗試將其渲染到具有數百萬個像素的屏幕上,而是處理數百萬個像素以幫助軟體解釋和理解圖像。由於它們具有由許多並行內核和優化的像素數學組成的架構,因此GPU非常有效地處理圖像和繪製圖形。

FPGA的可編程電路運行下載到卡上的自定義程序,以將其配置為以比CPU或GPU功耗更低的低級邏輯來完成所需的任務。FPGA還不需要作業系統的開銷。

機器視覺系統的開發人員和集成人員可以在開發系統的其餘部分之前,嘗試決定使用哪些平臺。首先對系統進行原型設計通常可以確定平臺的選擇。如果特定應用程式的數學運算無法在一個平臺上運行,則可能無法在任何平臺上運行。

設置系統的物理特性(鏡頭,照明燈,照相機等),收集圖像選擇並在任何舒適的環境中測試數學都可以為平臺選擇提供依據。例如,某些智能相機包括板載FPGA,以對相機進行編程以進行不同的測試。如果原型可以使用智能相機按預期運行,則FPGA可能是該應用程式的正確平臺,並且可能不需要考慮CPU或GPU。

平臺標準

選擇特定平臺的第一個也是最重要的標準是速度。原型應用程式一旦在測試臺上工作,就必須確定該應用程式每秒需要處理多少部分,或者必須處理實時視頻每秒要處理多少幀。通常,對於實時視頻,約30 fps會創建逼真的圖像。

還必須考慮速度的其他方面,例如延遲。系統可能能夠在10毫秒內處理一幀,但需要200毫秒才能從相機上取下該幀,GigE Vision驅動程序需要100毫秒來接收該幀並將其提供給應用程式,另外需要10毫秒來處理該幀。 。在零件檢查應用程式中,可能是在框架到達應用程式時,相關零件已經移動。

一個假想的系統可能必須開始排隊零件圖像,以跟上零件在生產線上的移動速度。將需要具有確定性時序的可編程邏輯控制器(PLC)來跟蹤生成排隊圖像的零件的位置,以便如果零件未通過機器視覺系統檢查,則可以將其從生產線中拉出。

還必須考慮啟動延遲。並非所有的應用程式都可以在工廠車間連續運行,或者在生產線開始運行前讓其啟動幾分鐘。諸如戶外和消費市場系統之類的某些應用(例如自動駕駛汽車中的系統)可能需要加電並準備在幾毫秒內運行。具有多層軟體的機器視覺系統(例如具有作業系統的CPU)可能難以滿足較短的啟動時間要求。

以原型速度製作時,可以通過拍攝高解析度秒表來進行測試。可以將渲染到屏幕上的幀與秒表上顯示的時間進行比較,從而可以輕鬆量化等待時間並確定系統可能需要更改或改進的方式。

應該考慮電源的可靠性,尤其是對於基於無人機的戶外或移動應用,要求平臺具有足夠的魯棒性以應對反覆的電源中斷,機器視覺公眾號。

應該考慮平臺的熱量和所需空間。為工廠車間構建的應用程式通常有一個面板空間,該面板可以容納所有電子設備以及一個風扇,以幫助冷卻系統。在多塵的環境或設備必須防水的情況下,需要適當的防護等級(分別為IP65 / IP67),還可能需要密封的面板,這些面板可能會迅速升溫。在這些條件下,需要更大的面板和無風扇組件。必須裝入面板的物品越多,它們產生的熱量就越大,系統可能引起的問題也就越多,並且價格可能會更高。

在幾乎所有情況下,所選平臺都需要與其他設備通信,這是機器視覺應用程式的關鍵方面,直到設計過程結束才可能被考慮。以必須傳輸數據以進行列印的應用程式為例。可能嚴格要求CPU與印表機通信。

數據存儲和檢索要求也可能會影響平臺選擇。CPU提供了將信息寫入硬碟的功能。在GPU和FPGA上處理內存和持久性存儲可能會更加困難。在某些情況下,可能需要CPU來擴充GPU或FPGA,以嚴格處理與數據相關的問題。智能相機和緊湊的嵌入式視覺系統可以是包括CPU,GPU,FPGA和數字處理器(DSP)的平臺的組合。

還必須考慮系統依賴性和將來的證明。硬體可靠性和潛在的更換時間表應予估計。硬體和軟體可以購買多長時間?如果所需的處理能力發生變化,系統是否允許按比例放大或縮小?所選組件將提供多長時間的技術支持?是否有足夠的人具備操作組件的必要技能?將來尋找人員來運行系統是否會引起長期關注?

應該考慮所選組件的發展以及它們將來是否會滿足系統要求。如果一系列FPGA或GPU背後的工程師以解決機器視覺系統將要遇到的特定挑戰的心態開發下一代硬體,那麼這可能意味著贊成在應用中採用這些FPGA或GPU。如果硬體供應商試圖針對其他問題進行工程設計,而忽略了特定應用程式的需求,則可能會打擊使用該供應商的硬體產品線。

考慮定製代碼開發的要求以創建變通辦法,有助於將來驗證系統。機器視覺應用程式需要的自定義代碼越多,系統開發漏洞的潛力就越大,這是不利的一面。但是,如果您需要長期使最終用戶使用該應用程式,則還需要自定義和擴展功能。如果用於特定平臺的供應商工具提供了很少甚至沒有定製代碼的解決方案,但是如果需要的話,可以添加定製代碼,這可能就是採用該平臺的原因。

用戶界面要求經常被視為平臺選擇的標準。大多數系統最終不得不與人進行某種程度的交流。像素處理可以100%正確,但是如果系統無法與任何人交流信息,則系統可能不適合執行任務。CPU是開發用戶界面的最佳工具。基於GPU,FPGA或CPU / GPU組合的系統可以不使用用戶界面進行設計,而是通過網頁提供摘要信息以監控結果。

對於任何機器視覺任務,都沒有唯一正確的答案。但是,三個不同的機器視覺系統的樣本演示了如何考慮平臺標準來推動這些系統的設計-機器視覺公眾號。

焊接查看器

該應用程式需要在不同的曝光時間進行多次曝光,然後將圖像拼接在一起,以渲染顯示不同光照水平的單個幀。要產生流暢的視頻,需要30 fps的輸出。該系統最初是在Intel i7 CPU上原型設計的。每個輸入幀需要30到35毫秒來處理,這意味著每60到70毫秒輸出一個組合的,已處理的幀。速度太慢,無法支持30 fps的輸出速率,每幀需要30到35 ms,因此CPU對於該應用程式不是一個可行的平臺。

考慮將算法轉移到FPGA上,然後考慮轉移到多核伺服器並並行化算法。客戶想要一個適合教室使用的系統,但是,該系統需要使用工程教室中已經存在的硬體進行構造。

教室中的計算機具有相當強大的GPU,可為工程軟體渲染圖像。將HDR算法放到GPU上的選項最有意義。

該算法是在CUDA中實現的,是一款中遊NVIDIA圖形卡。GPU在5到6毫秒內處理了一個幀,並在另外5到6毫秒內將幀複製到了GPU內存中。除了攝像頭本身以外,不需要其他硬體即可創建焊接查看器。

3D雷射輪廓儀

3D雷射輪廓儀需要快速處理才能支持高線速度。對於垂直於行進軸的視場中的1000個像素,最佳系統將捕獲正方形輪廓。在1000毫米的視野和1000毫米的行程範圍內,該系統應能夠處理1000幀以獲得1毫米/像素的解析度,通常每秒可計算出數百赫茲或幀(圖2)。

需要快速啟動時間,以使3D Profiler能夠充分捕獲和處理運動中的零件的圖像。確定性時序可避免使用編碼器和排隊部件,從而使系統更易於組裝和調試。

直接將GPU內存進出的能力給將GPU與3D雷射輪廓分析應用程式結合使用提出了挑戰。設計為PC組件的GPU不需要作業系統,但最容易通過該CPU的OS使用。因此,FPGA通常被視為3D雷射線輪廓儀的平臺。FPGA提供速度,確定性時序,快速啟動時間和可靠性。

圖3:需要用於此尺寸標註系統的UI,因此需要CPU平臺。

尺寸標註系統

使用片狀材料的客戶希望採用各種尺寸的板。需要兩秒鐘的測量時間。生產線以每分鐘120英尺的速度運行。電路板的尺寸從4 x 4英尺到4 x 8英尺,並且該系統需要檢測拐角和邊緣上的晶片。

需要一個操作員界面,以便可以更改板的類型,並且與任何工業系統一樣,如果系統運行不正常,則需要一個用戶界面來提供錯誤消息。

該系統首先由運行速度太慢的CPU構建。評估電路板尺寸並計算拐角和邊緣是否完整,大約需要5000毫秒。邊角算法花費了大量時間。

通過指定感興趣區域(ROI)減少需要處理的像素數量可以提高應用程式的速度。實施了一個系統來裁剪有限的邊緣和角落的ROI。由於使用了裁剪緊密的區域來驗證邊緣和角落,因此計算時間減少到800到1200毫秒。對算法的更改使將應用程式保留在基於CPU的平臺上成為可能(圖3)。

結論

如這些示例所示,不存在適用於機器視覺應用的千篇一律的平臺。許多變量會影響應該選擇CPU,GPU還是FPGA或這三者的某種組合。智能相機可以使用CPU,DSP或CPU和FPGA的組合。在單個平臺中可能存在有關功耗和處理速度的多種選擇。最佳性能決定了正確的解決方案。

相關焦點

  • 視覺算法工業部署及優化學習路線分享
    2019年:又一個偶然的機會,我開始在大洋彼岸某個村的CSL做summer research,項目的需求是為他們實驗室的一款深度學習編譯器(target為fpga)去寫一套opencl的backend。什麼是編譯器?什麼是backend?什麼是fpga?什麼是opencl?
  • 居然有免費的GPU可以跑深度學習代碼!
    2、創建Colab文件右鍵在更多裡面選擇google Colaboratry(如果沒有Colaboratory需要在關聯更多應用裡面關聯Colaboratory)kill -9 -1(3)、選擇配置環境我們大家肯定會疑慮,上述方法跑的那段程序是不是用GPU跑的呢?不是,想要用GPU跑程序我們還需要配置環境,點擊工具欄「修改」,選擇筆記本設置
  • 萊特幣ltc挖礦教程:cpu挖礦與gpu挖礦(詳細圖文)
    小編特整理了萊特幣ltc挖礦教程,用詳細的圖文介紹萊特幣的兩種挖礦方法:cpu挖礦與gpu挖礦。萊特幣挖礦教程LitecoinMining第一步 下載萊特幣客戶端  下載萊特幣客戶端(https://litecoin.org/zh_HANS)也就是萊特幣錢包,您可以找到適合自己作業系統的版本。  安裝過程非常簡單,只要等待數據塊下載完畢就可以使用了。
  • 在 Ubuntu 16.04 中安裝支持 CPU 和 GPU 的 Google TensorFlow 神經網絡軟體
    它的創建者 Google 希望提供一個強大的工具以幫助開發者探索和建立基於機器學習的應用,所以他們在去年作為開源項目發布了它。TensorFlow 是一個非常強大的工具,專注於一種稱為深層神經網絡deep neural network(DNN)的神經網絡。深層神經網絡被用來執行複雜的機器學習任務,例如圖像識別、手寫識別、自然語言處理、聊天機器人等等。
  • 機器學習平臺在Kubernetes上的實踐
    : ${cpu}           memory: ${memory}Gi           <#if (gpu > 0)>           nvidia.com/gpu: ${gpu}                    limits:           cpu: ${cpu}           memory: ${memory}Gi           <#
  • 如何在GPU上設計高性能的神經網絡
    gpu對於機器學習是必不可少的。可以通過AWS或谷歌cloud輕鬆地啟動這些機器的集群。NVIDIA擁有業內領先的GPU,其張量核心為Volta V100和安培A100加速哪種方法最適合你的神經網絡?為了以最低的成本設計出最快的神經網絡,機器學習架構師必須解決許多問題。此外,僅僅使用帶有GPU和張量核心的機器並不能保證最高性能。
  • 機器學習提升嵌入式視覺應用
    在訓練過程中,為該神經網絡施加一定數量的正確輸入和錯誤輸入,並使用誤差函數教授網絡所需的性能。訓練深度神經網絡可能需要相當龐大的資料集,才足以正確訓練所需性能。機器學習最重要的應用之一是嵌入式視覺領域,其中,各類系統正從視覺實現的系統演進為視覺引導的自動化系統。相較於其他較簡單的機器學習應用,嵌入式視覺應用最主要的區別在於採用二維(2D)輸入格式。
  • 【經驗】深度學習如何挑選GPU?
    因此,選擇購買合適的GPU是一項非常重要的決策。那麼2020年,如何選擇合適的GPU呢?這篇文章整合了網絡上現有的GPU選擇標準和評測信息,希望能作為你的購買決策的參考。1 是什麼使一個GPU比另一個GPU更快?有一些可靠的性能指標可以作為人們的經驗判斷。
  • 工業檢測中的機器視覺應用情況
    機器視覺在工業檢測中的應用歷史與發展機器視覺在工業上應用領域廣闊,核心功能包括:測量、檢測、識別、定位等。產業鏈可以分為上遊部件級市場、中遊系統集成/整機裝備市場和下遊應用市場。機器視覺中,缺陷檢測功能,是機器視覺應用得最多的功能之一,主要檢測產品表面的各種信息。
  • 2020年深度學習如何挑選GPU?這篇 GPU 最全攻略請查收
    關注 極市平臺 公眾號 ,回復 加群,立刻申請入群~深度學習是一個對計算有著大量需求的領域,從一定程度上來說,GPU的選擇將從根本上決定深度學習的體驗。因此,選擇購買合適的GPU是一項非常重要的決策。那麼2020年,如何選擇合適的GPU呢?
  • 如何選擇Embedded Linux的圖形框架
    打開APP 如何選擇Embedded Linux的圖形框架 發表於 2019-05-27 14:59:53 對於Android
  • 【機器視覺】學習機器視覺需要哪些知識?
    要回答這個問題,我們可以分解一下機器視覺系統,來逐個分析。一套最簡單的機器視覺系統包括1.
  • 【CTO講堂】如何用Python一門語言通吃高性能並發、GPU計算和深度...
    公司簡介:武漢極意網絡科技有限公司是全球首家「行為式驗證」安全技術服務提供商,開創了驗證安全從1.0時代到2.0時代的變革,並始終致力於為各大網站、應用、企業提供「更安全、更便捷、更具智慧的驗證」服務及解決方案。
  • 實踐經驗分享:在深度學習中餵飽GPU
    加入極市專業CV交流群,與6000+來自騰訊,華為,百度,北大,清華,中科院等名企名校視覺開發者互動交流!
  • 亞馬遜開源神經機器翻譯框架Sockeye:基於Apache MXNet的NMT平臺
    隨著神經機器翻譯(NMT)技術的不斷演進,越來越多的科研機構和公司選擇開源自己的項目,讓更多人能夠開發出自己的 NMT 模型。此前,清華大學開源了神經機器翻譯工具包 THUMT,谷歌也推出了基於 TensorFlow 的 NMT 模型搭建教程。作為 MXNet 的支持者,亞馬遜也開源了自己的 NMT 框架 Sockeye。
  • 機器視覺十佳圖書列表
    計算機視覺賦予機器或者計算機人類感官的計算機的科學。計算機視覺包括獲取,處理、分析和理解數字圖像以及提取高維數據的方法。本文蟲蟲給你推薦業界選出的計算機視覺最佳的圖書。它還用實例應用演示如何成功使用視覺挑戰日常遇到的工作。你能學到什麼:你將獲得解決基本視覺問題的科學方法。能夠使用統計模型分析問題,並且嚴格使用的工程技術解決問題。本書重點介紹在現實條件下工作的基本技巧,並鼓勵學生做創造性突破。
  • 2D相機與3D相機的機器視覺
    機器視覺與計算機視覺並沒有一個明顯的定義去劃分。但在實際應用中,應用於工業檢測的時候更多地被稱為機器視覺而非計算機視覺。這時候,機器視覺更多地偏向或者專指以圖像傳感器為採集軟體,輔助以光源,PLC甚至機器人等外部設備,以實現特定的檢測或定位等特定目的。如果你從事的是機器視覺行業則避免不了PCL,機器人,編碼器,光柵尺,光源,鏡頭等這些圖像之外的硬體設備打交道。
  • 技術回顧 ▏深度學習在機器視覺中有哪些典型的應用?
    首先,視覺世界是無限變化的,系統設計者有無數種方法使用視覺數據。其中有一些應用案例,如目標識別和定位,都可以通過深度學習技術得到很好的解決。因此,如果你的應用需要一種算法來識別家具,那麼你很幸運:你可以選擇一種深度神經網絡算法,並使用自己的數據集對其進行重新編譯。 訓練數據對有效的深度學習算法至關重要。