作者:Martin Cassel,Silicon Software
深度學習應用憑借其在識別應用中超高的預測準確率,在圖像處理領域獲得了極大關注,這勢必將提升現有圖像處理系統的性能并開創新的應用領域。
利用卷積神經網絡(Convolutional Neural Network, CNN) 等深層神經網絡的解決方案,可以逐漸取代基于算法說明的傳統圖像處理工作。盡管圖像預處理、后期處理和信號處理仍采用現有方法進行,但在圖像分類應用中(缺陷、對象以及特征分類),深度學習變得愈加重要。
利用深度學習處理某些任務更簡單,效果更好,甚至某些任務只能用深度學習方法來解決。深度學習正在逐漸威脅傳統圖像處理方法的地位——特別是處理任務中包含有復雜變量時(如反射面、光照不佳的環境、光照變化或移動的對象)。
深度學習具有平移不變性的優點,這部分使用傳統處理方式需要大量的投入。但如果需要對圖像中的對象或錯誤進行定位、標定、代碼讀取或后期處理,則傳統算法更具有優勢。
圖1:傳統圖像處理及深度學習的適用范圍對比。
傳統圖像處理 | 深度學習 |
典型應用 | 典型應用 |
尺寸測量 代碼讀取 有/無檢測 機器人引導 印刷檢測 汽車 電子 |
表面檢測(裂紋、劃痕) 食品、植物、木材檢測 塑料、注塑成型 織物檢測 醫療成像 農業 |
典型特征 | 典型特征 |
對目標有嚴格要求 方向固定 客戶提供容差范圍內的正式規格 可靠性100% |
目標可變 方向可變 客戶提供模糊的規格,提供Good和Bad零件的樣本 可靠性99% |
深度學習包括神經網絡的訓練和學習、網絡的實現和推斷運算、網絡的CNN 算法在圖像上的執行與分類結果的輸出。用于訓練的數據越多,分類的預測精度就會越高。由于數據量龐大,訓練神經網絡時通常選用GPU。
圖2:訓練數據越多,預測精度越高
速度與精度
基于各種不同技術的處理器,是否都能滿足工業圖像處理中的特殊需求呢?CNN應用必須執行快速(推斷)同時滿足極低的時延。在滿足處理速度的同時,還要滿足高帶寬、低發熱、實時性以及供貨周期長這些需求,僅僅使用傳統CPU 或GPU 是難以實現的,它們通常可以為非工業領域的圖像處理任務提供更合適的解決方案,在這些領域的識別任務盡管同樣復雜,但相對較低的數據吞吐性能即可滿足需求。各個平臺之間區別很大,僅從技術指標方面就能看出,它們無法應用于高要求的任務。盡管GPU 的推斷耗時比CPU 或特殊芯片短得多(如TPU -TensorFlow Processing Units、TensorFlow 處理單元以及Intel Movidius處理器),但是其數據吞吐量這項指標只能達到大約每秒50MB這樣一個較低的水平。
在通常的圖像處理應用中,只需要對少數幾個特性進行分類,因此選擇小型或中型網絡通常就足以應對,AlexNet、SqueezeNet 或MobileNet 都是這類網絡的典型代表。這幾種網絡類型在機器視覺領域,預測精度、網絡大小和計算速度以及帶寬這幾方面有著良好的平衡。這里可以很明顯地看到,通過選擇合適的網絡,可以在犧牲小部分檢測精度的同時,獲得數據吞吐量方面的極大提高,同時也為優化資源和提高分類質量提供了可能性。
圖3:《對用于實際應用的深層神經網絡模式的分析》,Alfredo Canziani、Adam Paszke、Eugenio Culurciello (2017)
推斷應用中的FPGA 和SoC
在很多圖像處理任務的需求中,特別是機器視覺領域,FPGA可以作為獨立處理單元或與ARM 處理器一起構成SoC。FPGA 具有高度并行處理能力、穩定的圖像采集能力以及相對于CPU 和GPU更高的運算性能、圖像幀率和帶寬。基于FPGA的CNN應用可完成高帶寬的分類工作,這尤其適用于高速在線檢測。
FPGA支持直接在圖像采集卡或在嵌入式視覺設備上處理圖像數據——從采集到輸出以及外圍設備控制——且無任何CPU占用,這個特點讓FPGA特別適用于高強度運算的應用,如CNN。因此未配備GPU 的小型PC 也能使用,從而可降低整體系統成本。在工業環境溫度下,FPGA的能效比GPU高十倍,是嵌入式設備的理想之選,這顯著擴大了深度學習在工業4.0 以及無人機和自動駕駛領域的應用。
GPU擁有更高的計算精度和更高的預測精度,但這些是以更短的供貨周期、更高的功耗以及更低的數據吞吐量為代價的。在一個示范性的對比中,基于FPGA的解決方案的數據處理性能是使用GPU的類似解決方案的7.3倍左右。
圖4:FPGA 的性能大約是GPU 性能的7.3倍
優化FPGA 資源
在深度學習領域,存在各種不用降低分類質量就能節省資源的方法。其中之一是通過圖像縮放來降低數據吞吐量,或者改變數據位深:我們的項目經驗表明,數據的位深對后來的預測精度影響甚微。將數據位深32位浮點數降為8位定點數或整數,可以讓FPGA將節省下來的資源用于更大的網絡架構,或實現更高的數據吞吐量,從而實現處理速度的提升,這對例如焊縫檢測或機器人技術這類應用非常有意義。通過類似的預處理降低數據量,讓更適合FPGA的小型網絡的使用成為可能,這樣的網絡通常足以處理缺陷特征較少的簡單分類任務。
32 位浮點GPU 雖然擁有更高的計算精度,但這一點對深度學習的推斷而言無關緊要,在FPGA中使用8位定點運算的網絡,能為大多數深度學習應用提供足夠精確的預測精度,誤差幾乎可以忽略不計。如果需要特別高的計算精度,可以采取一種資源折中策略,在更大的FPGA 上使用16位定點運算。
現在已經有了能完美滿足工業生產的高速處理需求的解決方案,通常使用高性能圖像采集卡或者嵌入式視覺設備,例如使用大型FPGA和高分辨率傳感器的智能相機。利用多種多樣的FPGA 資源,可以處理更復雜的架構以及應用。有了更高的數據帶寬,能夠在FPGA上對整幅圖像進行處理,或進行額外的圖像預處理以及后期處理,例如對GigE Vision相機的最大數據輸出帶寬的深度學習運算也完全能夠滿足。
結語
與傳統圖像處理相比,深度學習應用需要在訓練方面投入較多時間,但是相較其帶來的可靠性和處理速度,這些投入是值得的。圖像采集卡和(嵌入式)視覺設備上所使用的FPGA技術,令神經網絡應用于工業級應用成為可能,這需要強大的實時處理能力、低延遲(實時在線檢測)、高數據吞吐量、高帶寬和低功耗低發熱(嵌入式視覺應用),以及高分辨率。FPGA 及圖像采集卡較長的供貨周期保障了投資安全性,同時由于系統可快速的整合且整體系統成本較低,用戶可以節省長期支出。
編輯:hfy
-
FPGA
+關注
關注
1626文章
21665瀏覽量
601828 -
gpu
+關注
關注
28文章
4700瀏覽量
128697 -
圖像處理
+關注
關注
27文章
1281瀏覽量
56638 -
深度學習
+關注
關注
73文章
5492瀏覽量
120975
發布評論請先 登錄
相關推薦
評論