本篇討論的是有關(guān)CPU(在Zynq SoC中是指ARM處理器核)和FPGA的可編程邏輯架構(gòu)之間的機(jī)器視覺算法分割。
美國國家儀器公司(National Instruments)的Carlton Heard在新一期RTC雜志剛剛發(fā)表了一篇內(nèi)容翔實的標(biāo)題為《FPGA –將視覺技術(shù)提升至新高》的機(jī)器視覺處理方案文章,Heard寫道:
“視覺應(yīng)用程序必須依靠其他解決方案,而不是簡單地依靠更快的處理器來提高速度。一種選擇是分割圖像處理算法,并行處理更多任務(wù),在視覺應(yīng)用程序當(dāng)中使用的算法非常適合于這樣處理。如SSE 、超線程和多核技術(shù)可以用于在不增加原始時鐘速率的情況下并行處理、執(zhí)行多個任務(wù)。不過,選擇這種方法也需要處理多個問題。除非所使用的軟件包將復(fù)雜性進(jìn)行抽象化,否則難以使用多線程編程軟件。必須在線程之間傳送數(shù)據(jù),這樣會出現(xiàn)存儲器拷貝和同步抖動。此外,它通常是一個手動過程,以利用現(xiàn)有的單線程圖像處理算法,并兼容多內(nèi)核。即使這樣,開銷問題往往禁止過多的并行處理,因為大多數(shù)系統(tǒng)設(shè)計人員無法為所創(chuàng)建的測試單元購買16內(nèi)核服務(wù)器級計算機(jī)。”
“使用FPGA的好處在于,它基本上是由軟件定義的硬件。因此,系統(tǒng)設(shè)計人員可以在軟件芯片中編程,并且當(dāng)該軟件下載到FPGA,代碼變成可根據(jù)需要重新編程的實際硬件。由于FPGA實際是并行設(shè)備,使用FPGA進(jìn)行圖像處理特別有利。可將算法分割運(yùn)行數(shù)千種不同的通路,并能保持完全獨(dú)立。雖然FPGA本身是非常適合許多視覺應(yīng)用程序的,但系統(tǒng)中還存在很多因素不適合在FPGA上運(yùn)行。評估是否要使用FPGA進(jìn)行圖像處理需要考慮多項因素。
“ FPGA處在處理圖像時具有令人難以置信的低延時(微秒數(shù)量級)...當(dāng)使用具有高速相機(jī)總線的FPGA,如不緩沖的圖像數(shù)據(jù)的Camera Link,只要第一個像素自相機(jī)中發(fā)出,F(xiàn)PGA就可以處理圖像,而不要等到整個圖象讀出已經(jīng)完成后再處理。”
“ FPGA可以幫助避免抖動。因為 FPGA不會因為其他線程、操作系統(tǒng)或中斷產(chǎn)生額外的開銷, FPGA具有很好的確定性。對于許多圖像處理算法來說,F(xiàn)PGA能夠?qū)⑺_定的執(zhí)行時間精確到納秒。”
Heard的文章延續(xù)了系統(tǒng)級功耗限制的討論,這樣的討論有利于FPGA在視覺系統(tǒng)中的應(yīng)用。
“一個FPGA可消耗1-10瓦的功率,而同樣性能的CPU會輕易消耗50-200瓦。功耗較大,就必須消散大量的熱量。在無風(fēng)扇嵌入式應(yīng)用程序中,這可能會造成更為復(fù)雜的大型機(jī)械設(shè)計。所以,在極端條件下如太空,空中和水下應(yīng)用中,低功耗FPGA特別有用。”
Heard的文章列出了機(jī)器視覺的四個主要應(yīng)用類別:
1、可視化
2、高速控制
3、圖像預(yù)處理
4、協(xié)處理
?“可視化”,從相機(jī)拍攝圖像并進(jìn)行調(diào)整,以增強(qiáng)圖像顯示效果以適應(yīng)人眼觀看。在這種情況下,F(xiàn)PGA從相機(jī)讀取圖像,執(zhí)行某些類型的并行處理,如突出顯示邊緣和關(guān)注功能或掩蔽功能。然后在FPGA直接輸出圖像至監(jiān)視器或?qū)⑵浒l(fā)送到主機(jī)CPU進(jìn)行顯示.....例如,使用醫(yī)療設(shè)備拍攝圖像,提取細(xì)胞圖像顯示在監(jiān)視器上供醫(yī)生檢查。FPGA可用于測量每個細(xì)胞的大小和顏色,并突出顯示醫(yī)生關(guān)注的特定細(xì)胞。
? 高速控制應(yīng)用程序,采用已處理圖像控制輸出,以執(zhí)行控制執(zhí)行器等任務(wù)。“在這些應(yīng)用中,捕獲圖像和執(zhí)行操作之間的時間必須連續(xù)而且短暫,因此應(yīng)優(yōu)先使用具有低延遲和低抖動功能的FPGA。FPGA與視覺和I / O緊密集成可啟用高級應(yīng)用程序,如視覺伺服,視頻數(shù)據(jù)被用于定位直接反饋并控制伺服電機(jī)。”
Heard的文章清楚地說明在激光跟蹤中通過使用具有確定性的,低抖動的,基于FPGA視覺系統(tǒng)來顯著減少錯誤(而不是使用基于CPU系統(tǒng)):
“FPGA非常適用于做空氣成分分選,比如需要執(zhí)行成像、檢驗和對正在下降的空氣進(jìn)行分選等。這類應(yīng)用程序低抖動至關(guān)重要,因為必須要知道決策和I / O的時間間隔。”
“圖像預(yù)處理、協(xié)同處理幾乎相同,區(qū)別在于設(shè)備初始捕獲圖像......預(yù)處理圖像時,圖像數(shù)據(jù)遍歷FPGA ,被修改或增強(qiáng),然后FPGA將圖像發(fā)送到主機(jī)以進(jìn)行進(jìn)一步處理和分析。協(xié)處理指圖像數(shù)據(jù)自CPU還不是自相機(jī)發(fā)送到FPGA 。一旦捕獲數(shù)據(jù)需要處理大量圖像時這種情況是最常見的”
Heard的文章清楚地說明了美國國家儀器公司使用LabVIEW FPGA擴(kuò)展了LabVIEW 圖形開發(fā)平臺,可加速復(fù)雜視覺處理系統(tǒng)開發(fā):
“通常情況下,使用FPGA會增加設(shè)計的復(fù)雜度。硬件編程與傳統(tǒng)軟件編程的顯著差異是一條復(fù)雜而不平凡的學(xué)習(xí)曲線。然而,高層次綜合工具如LabVIEW FPGA的可用于將這些復(fù)雜度抽象化,設(shè)計師能夠充分利用FPGA技術(shù),不需要對VHDL編程有深入的了解。”
如果設(shè)計團(tuán)隊更熟悉其他類型的開發(fā)工具也可以采取其他方法。例如,如果開發(fā)團(tuán)隊非常熟悉采用高級編程語言的C和C + +、Xilinx Vivado HLS (高層次綜合)編碼視覺系統(tǒng)可在 Xilinx 7 系列 All Programmable 器件 和 Zynq All Programmable SoC利用這些語言編譯將這些算法編寫成硬件描述。
許多視覺系統(tǒng)開發(fā)團(tuán)隊所熟悉的其他種類的視覺專用開發(fā)工具,如MVTec的綜合開發(fā)軟件HALCON 和Silicon Software Visual Applets圖形設(shè)計工具。這些工具也可以針對Xilinx All Programmable器件,使用低功耗可編程硬件提高視覺性能,而無需學(xué)習(xí)新的設(shè)計風(fēng)格。
-
FPGA
+關(guān)注
關(guān)注
1626文章
21667瀏覽量
601864 -
cpu
+關(guān)注
關(guān)注
68文章
10825瀏覽量
211157 -
機(jī)器視覺
+關(guān)注
關(guān)注
161文章
4345瀏覽量
120111
發(fā)布評論請先 登錄
相關(guān)推薦
評論