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