NI 的視覺開發(fā)模塊和視覺助手讓機(jī)器視覺從構(gòu)思到原型再到應(yīng)用部署一路通暢。
視覺系統(tǒng)正在成為主流。技術(shù)的成本/效益分析及合理應(yīng)用已發(fā)展到這樣的階段: 工程師正在將視覺功能運(yùn)用到各種應(yīng)用中,從無人駕駛汽車到消費(fèi)類電子產(chǎn)品質(zhì)量檢測系統(tǒng)無所不包。這種大規(guī)模采用正在推動視覺走出實(shí)驗(yàn)室,走進(jìn)嵌入式系統(tǒng)和工廠車間。所部署的系統(tǒng)往往需要與控制環(huán)路中的 I/O、廣泛分布的大量攝像頭或視覺功能實(shí)現(xiàn)高級同步。隨著工藝和應(yīng)用的日趨復(fù)雜化,視覺系統(tǒng)正在要求更快、更高級的處理以及更嚴(yán)格的時序與同步。
為滿足這些要求,視覺系統(tǒng)設(shè)計(jì)人員正日漸依賴由實(shí)時處理器、FPGA、GPU 或 DSP 處理單元構(gòu)成的異構(gòu)處理平臺處理專門的任務(wù),滿足 I/O要求和處理性能需求。智能相機(jī)、圖像采集卡和視覺系統(tǒng)都使用異構(gòu)架構(gòu)來滿足應(yīng)用要求。
FPGA 具備的并行處理功能,例如賽靈思 All Programmable FPGA 系列提供的并行處理功能,自然適用于實(shí)現(xiàn)大量圖像處理算法的。FPGA 可用于同時執(zhí)行高數(shù)據(jù)強(qiáng)度處理和高速傳感器測量。此外,這類器件時延極低,這對視覺應(yīng)用來說極為重要,因?yàn)闀r延會增大根據(jù)圖像數(shù)據(jù)做出決策所需的時間。FPGA 有助于避免抖動,因此可作為高確定性的處理單元。
但是構(gòu)建包含一個 FPGA 的異構(gòu)系統(tǒng)會給系統(tǒng)設(shè)計(jì)人員帶來嚴(yán)重的編程難題。在上市時間的重壓下,視覺系統(tǒng)設(shè)計(jì)人員要能夠迅速構(gòu)建具有復(fù)雜特性的解決方案原型。在異構(gòu)系統(tǒng)上編程需要這樣一種工具: 在目標(biāo)硬件上編譯和運(yùn)行算法之前,其不僅可幫助領(lǐng)域?qū)<以诙鄠€平臺上設(shè)計(jì) IP 功能,而且還可幫助他們測試視覺算法。該工具應(yīng)該支持: 在整個原型設(shè)計(jì)過程中能夠輕松訪問吞吐量及資源使用信息。
NI 把這稱之為算法工程。采用該工藝技術(shù),領(lǐng)域?qū)<遥杉芯鉀Q手里的難題,不必關(guān)注底層硬件技術(shù)。NI 具有視覺助手的視覺開發(fā)模塊 (VDM) 能夠?yàn)槟峁┲С忠曈X助手的視覺開發(fā)功能。
配備視覺助手的 VDM 有助于快速完成原型設(shè)計(jì)、代碼生成、FPGA 資源估算、自動代碼并行化以及并行數(shù)據(jù)流同步化(針對時延均衡等任務(wù))。VDM 包含超過 50 種 FPGA 圖像處理功能以及在處理器與 FPGA 之間高效傳輸圖像的功能。您可使用 VDM 中的視覺助手迅速設(shè)計(jì) FPGA 視覺應(yīng)用原型,開發(fā) FPGA 視覺應(yīng)用。
基于配置的原型設(shè)計(jì)
視覺助手是一種基于配置的原型設(shè)計(jì)工具,可幫助您迭代圖像處理算法,查看參數(shù)調(diào)整如何影響圖像。有了視覺助手,您可以在圖像流水線中的每一個視覺模塊后顯示輸出(處理后的圖像)(圖 1)。您可使用該工具測試不同圖像集上的不同算法和參數(shù),無需編譯 IP,因此可顯著減少設(shè)計(jì)視覺算法所需的時間。
?
圖 1 — 能夠估算器件利用率的視覺助手
您可使用視覺助手測試原型設(shè)計(jì)環(huán)境中算法的結(jié)果和所部署代碼的結(jié)果,以確保實(shí)現(xiàn)方案可獲得相同的結(jié)果。
NI 已經(jīng)定制了用于滿足 FPGA 編程人員要求的工具。在 FPGA 上構(gòu)建任何算法時,主要考慮因素是 FPGA 架構(gòu)上的資源消耗、流水線的時延以及在特定架構(gòu)上該算法可實(shí)現(xiàn)的最高頻率。視覺助手通過為圖像流水線中的每個模塊提供所消耗資源的估算,起到幫助作用。您可使用該工具測試原型設(shè)計(jì)環(huán)境中算法的結(jié)果和所部署代碼的結(jié)果,以確保實(shí)施方案能夠獲得相同的結(jié)果。
一個考慮因素是把多大的內(nèi)核用于圖像濾波運(yùn)算。內(nèi)核大小的選擇會影響流水線中資源的使用和時延情況,較大的內(nèi)核一般比較小的內(nèi)核需要的資源更多。
要為應(yīng)用選擇最合適的內(nèi)核大小,您可使用視覺助手進(jìn)行實(shí)驗(yàn),直到您在最小資源耗用和最大性能方面取得最理想的結(jié)果。如圖 1 所示視覺 IP 功能實(shí)時估算是原型設(shè)計(jì)過程中的一個必備功能。
視覺開發(fā)模塊的視覺 FPGA IP可讓開發(fā)人員使用大規(guī)模并行處理和 Vivado 高層次綜合工具在 FPGA 上實(shí)現(xiàn)全面流水線的低時延架構(gòu)優(yōu)化型視覺功能。
實(shí)時并行運(yùn)行多個圖像流水線是一個常規(guī)要求。這種場景要求在多條流水線融合為單條流水線時,并行流水線的時延必須均衡。NI 在其視覺FPGA IP 工具集中提供一個同步緩存器。視覺助手不僅可自動計(jì)算流水線中的時延,而且還可在并行流水線融合時確保均衡的時延,從而可為您配置同步緩沖器。這樣就能保證同步緩沖器中的 FIFO 能夠根據(jù)流水線的最大時延提供足夠的深度。
視覺助手中的性能測量實(shí)用工具可估算處理每幀所需的最長時間(圖 2),告訴您流水線中所有模塊的總體時延。NI 硬件系列中的大部分處理器都具有運(yùn)行于其上的實(shí)時操作系統(tǒng),因此使用視覺助手能輕松估算執(zhí)行視覺功能所需的時間。
?
圖 2 — 性能測量實(shí)用工具
對于使用 LabVIEW 的新手來說,需要注意的是視覺助手可確保創(chuàng)建功能齊全的項(xiàng)目,包括所有的相關(guān)組件(如傳輸虛擬儀器 (VI) 和 DMA FIFO)以及圖像采集邏輯等。一個 VI 與其它編程語言中的一個函數(shù)或子程序類似。傳輸 VI 需要在主機(jī)/采集邏輯和 FPGA 之間傳輸圖像數(shù)據(jù)。DMA FIFO 無需主機(jī)處理器參與。因此它們是在 FPGA 目標(biāo)器件和主機(jī)之間傳輸大量數(shù)據(jù)的、最快捷的可用方法。采集邏輯取決于視覺系統(tǒng)是基于內(nèi)處理還是協(xié)處理。此外,視覺助手還可幫助您創(chuàng)建其它 VI,比如運(yùn)行在處理器上的主機(jī) VI 以及 FPGA VI 等。隨后您可使用賽靈思 Vivado? 工具編譯 FPGA VI,為部署在FPGA 上生成比特流。
值得一提的是容納圖像處理流水線的系統(tǒng)可以根據(jù)采集邏輯駐留的位置大致劃分為內(nèi)處理或協(xié)處理。在內(nèi)處理中采集邏輯駐留在 FPGA 上; 攝像機(jī)使用采集邏輯配置,圖像在 FPGA 上處理。該結(jié)果和處理后的圖像隨即發(fā)送回主機(jī)進(jìn)行評估和進(jìn)一步分析。在協(xié)處理中,攝像頭的采集邏輯駐留在處理器上。把圖像從處理器傳輸給 FPGA,然后將處理后的圖像從 FPGA 發(fā)送回處理器,需要一定量的時間。此外,您還可在處理器和 FPGA 之間對圖像流水線的處理進(jìn)行分區(qū)。
作為使用 FPGA 的視覺系統(tǒng)的開發(fā)人員,您需要清楚 FPGA 可實(shí)現(xiàn)的吞吐量。您可使用吞吐量信息和實(shí)時資源估算來判斷您可部署多少功能(IP 模塊)到 FPGA 上。在協(xié)處理?xiàng)l件下,處理器性能決定了最終的吞吐量。在使用 NI 隨同視覺開發(fā)模塊提供的 FPGA IP 功能時也是如此,因?yàn)檫@些功能不僅可全面實(shí)現(xiàn)流水線,而且還可提供優(yōu)于大多數(shù)處理器的性能。
從原型到部署
視覺開發(fā)模塊的視覺 FPGA IP 可讓開發(fā)人員使用大規(guī)模并行處理和賽靈思 Vivado 高層次綜合(HLS) 工具在 FPGA 上實(shí)現(xiàn)全面流水線的低時延架構(gòu)優(yōu)化型視覺 IP。NI 提供的視覺 FPGA IP 目前針對三個賽靈思 FPGA 系列(Kintex?-7、Virtex?-5 和Spartan?-6)和賽靈思Zynq?-7000 All Programmable SoC。
圖像可視為二維陣列,圖像運(yùn)算一般基于矩陣。FPGA 內(nèi)在的并行性可為它們實(shí)現(xiàn)高速性能。您不僅可使用環(huán)路實(shí)現(xiàn)圖像矩陣運(yùn)算,也可展開環(huán)路,充分利用 FPGA 的并行特性,在展開環(huán)路后執(zhí)行多項(xiàng)任務(wù)。LabVIEW FPGA 和 LabVIEW FPGA IP Builder 是開發(fā)人員在 FPGA 上創(chuàng)建視覺 IP 使用的主要工具。
視覺 FPGA IP 功能為單像素處理,因此它們先從像素流中接收 1 個像素,然后再輸出 1 個像素。這些 IP 功能使用基于使能的握手或 4 線握手協(xié)議互動。采用這種實(shí)現(xiàn)方案的主要原因是控制路徑的復(fù)雜性會隨圖像流水線中功能數(shù)量的增加而增大,因此在這些功能之間需要無縫數(shù)據(jù)轉(zhuǎn)換。4 線協(xié)議可在位于單周期時間環(huán)路(SCTL) 中的視覺 FPGA IP功能之間實(shí)現(xiàn)無損數(shù)據(jù)傳輸。
使用 SCTL 可確保環(huán)路中的模塊能夠在用戶設(shè)定的頻率下提供時鐘功能。
圖 3 是通過描述 4 線協(xié)議和同步緩沖器來融合像素的 FPGA VI。該 4 線協(xié)議專門針對并行運(yùn)行的算法而設(shè)計(jì),它可通過確保數(shù)據(jù)在生產(chǎn)— 消費(fèi)架構(gòu)中處理來提高吞吐量。另外,4 線握手在 FPGA 上消耗的資源最少。這非常重要,因?yàn)樵搮f(xié)議可構(gòu)成對底層視覺功能的開銷。
?
圖 3 — 支持同步節(jié)點(diǎn)的 FPGA VI 的內(nèi)部構(gòu)件
此外,視覺 FPGA IP 還可為您帶來在流水線中添加定制代碼,提供開放式環(huán)境的高靈活性。定制代碼需要具有 4 線握手實(shí)現(xiàn)方案的封裝程序 VI。隨后您可將定制代碼插入到圖像流水線中。必須確保定制代碼為全面流水線的,否則就可能影響流水線的完整性。您可使用 LabVIEW 實(shí)現(xiàn)定制代碼,也可通過 LabVIEW FPGA 中的 HDL 集成節(jié)點(diǎn)在VHDL 中使用現(xiàn)有的代碼。
該視覺 FPGA IP 工具集提供多種預(yù)處理功能,例如邊緣檢測濾波器、卷積濾波器、低通濾波器、灰度形態(tài)、二進(jìn)制形態(tài)和閾值。此外,它還包含執(zhí)行算術(shù)和邏輯運(yùn)算的視覺 IP 功能以及輸出圖心等結(jié)果的功能。它還有一項(xiàng)功能—— 簡單邊緣工具(Simple Edge Tool)。該功能能沿著一條線找到邊緣,對測徑應(yīng)用非常實(shí)用。量化功能能接收掩膜圖像和待處理的圖像流,并返回一份報(bào)告,提供有關(guān)掩膜圖像所定義區(qū)域的面積、平均偏差和標(biāo)準(zhǔn)偏差的信息。線性平均可計(jì)算全部圖像或部分圖像的平均像素密度(平均線輪廓)。
NI 視覺 FPGA IP 列表中的最新成員是顆粒分析報(bào)告。您可通過執(zhí)行顆粒分析或區(qū)塊分析來檢測圖像中的連接區(qū)域或像素分組,然后對這些區(qū)域進(jìn)行選擇測量。使用該信息,您可檢測晶圓片上的瑕疵,檢測電路板上的焊接瑕疵,也可定位運(yùn)動控制應(yīng)用中的對象。
該 IP 的一項(xiàng)獨(dú)特特性是,它能在顆粒信息在兩個幀間擴(kuò)散時檢測到該顆粒。NI 隨同 VDM 提供了一個顆粒分析報(bào)告示例。圖 4 是具備圖像顯示功能的主機(jī) VI。檢測系統(tǒng)時需要該功能,因?yàn)槟鸁o法隨時保證受檢測的對象能在單個幀中捕獲。
?
圖 4 — 啟用保持重疊后的顆粒分析報(bào)告示例
近 70% 的 NT 視覺 FPGA IP 功能都是使用 IP Builder 開發(fā)的。這是 LabVIEW FPGA 中的一個實(shí)用工具,有助于您使用 LabVIEW 以圖形代碼形式編碼,然后使用 Vivado HLS 輸出 RTL 代碼。這種方法的主要優(yōu)勢在于,熟悉圖形編碼的用戶可以在開發(fā)應(yīng)用的同時,生成一個描述應(yīng)用頻率及時延要求的指令文件。將 LabVIEW IP Builder 與 VivadoHLS 搭配使用即可生成合適的 VHDL 代碼。您可在圖像上使用基于陣列的運(yùn)算,而且 Vivado HLS 可確保 VI 將依據(jù)指令集實(shí)現(xiàn)所需的運(yùn)算頻率及最低時延。
Vivado HLS 是視覺應(yīng)用開發(fā)的理想選擇,它能幫助從所生成的 IP Builder C 語言代碼抽象化算法描述和數(shù)據(jù)類規(guī)范(整數(shù)固定點(diǎn))。此外,它還能為功能的早期測試生成必要的仿真模型。所生成的架構(gòu)感知 VHDL 代碼可提供高度可重復(fù)的高質(zhì)量結(jié)果。
NI 始終堅(jiān)持的理念是提供開放靈活的系統(tǒng)并輔以合適的軟件工具,充分發(fā)揮其優(yōu)勢。開發(fā)人員正在將基于異構(gòu)架構(gòu)的視覺系統(tǒng)設(shè)計(jì)到數(shù)量不斷增長的廣泛應(yīng)用中。對這些異構(gòu)系統(tǒng)的軟件設(shè)計(jì)而言,下一個前沿可能是能使用各種系統(tǒng)組件(CPU、GPU 和 FPGA)的功能與資源智能判斷算法組件部署位置的編譯器或應(yīng)用開發(fā)引擎。
隨著更高級產(chǎn)品和工藝不斷推動視覺系統(tǒng)應(yīng)用范圍的擴(kuò)大,應(yīng)用開發(fā)人員將需要一款支持視覺功能的高效原型設(shè)計(jì)及算法開發(fā)環(huán)境。為開發(fā)人員及域?qū)<姨峁┖线m的工具,將為大眾掀起新一輪視覺系統(tǒng)創(chuàng)新浪潮。
評論