《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 解決方案 > 用OpenCV和Vivado HLS加速基于Zynq SoC的嵌入式視覺應用開發

用OpenCV和Vivado HLS加速基于Zynq SoC的嵌入式視覺應用開發

2013-07-04
作者:Fernando Martinez Vallina
來源:賽靈思公司HLS設計方法工程師

作者:Fernando Martinez Vallina

賽靈思公司HLS設計方法工程師

Vallina@xilinx.com

José Roberto Alvarez

賽靈思公司視頻技術工程設計總監 jalvarez@xilinx.com

Vivado HLS與OpenCV庫配合使用,既能實現快速原型設計,又能加快基于Zynq All Programmable SoC的Smarter Vision系統的開發進度。

計算機視覺技術幾年來已發展成為學術界一個相當成熟的科研領域,目前許多視覺算法來自于數十年的科研成果。不過,我們最近發現計算機視覺技術正快速滲透到我們生活的方方面面。現在我們擁有能自動駕駛的汽車、能根據我們的每個動作做出反應的游戲機、自動工作的吸塵器、能根據我們的手勢做出響應的手機,以及其它等視覺產品。

今天我們面臨的挑戰就是如何高效實現上述這些及未來的各種視覺系統,同時滿足嚴格的功耗和上市要求。此類產品可以Zynq™ All Programmable SoC為基礎,并結合廣泛使用的計算機視覺庫OpenCV和高層次綜合(HLS)工具,以實現關鍵功能的硬件加速。這種強強組合能為設計和實現Smarter Vision系統提供強大的平臺。

嵌入式系統在當今的市場中無所不在。不過,計算功能方面的局限性,尤其是在處理大型圖片、高幀率時計算能力低下嚴重限制了嵌入式系統在計算機/機器視覺實際實現方面的應用。圖像傳感器技術的發展猶如為嵌入式器件裝上了慧眼,能幫助該器件通過計算機視覺算法與環境互動。嵌入式系統和計算機/機器視覺的融合催生了嵌入式視覺技術,這是一個快速發展的領域,正成為設計能夠觀看并了解周邊環境的設備的基礎所在。

嵌入式視覺系統的開發

嵌入式視覺技術要在計算平臺上運行智能計算機視覺算法。對許多用戶來說,標準的桌面計算處理平臺即可方便地滿足需求。不過,一般性計算平臺或許無法滿足高度嵌入式產品的生產需求,這種產品要做到小型化、高效性、低功耗,而且要處理龐大的圖像數據集,比如同時處理多個每秒60幀的實時高清視頻流。

圖1給出了設計人員通常用來創建嵌入式視覺應用的流程。算法設計是整個流程中最重要的一環,因為算法將決定我們能否滿足任何特定計算機視覺任務的處理和質量標準要求。首先,設計人員在MATLAB®等數字計算環境中搜索算法選項,明確高級處理選項。一旦確定了適當的算法,設計人員通常用C/C++等高級語言來為算法建模,以便快速執行,并滿足最終比特精度實現方案的要求。

圖1 嵌入式視覺系統開發流程

圖1 嵌入式視覺系統開發流程

系統分區是開發過程中的重要步驟。在此,設計人員通過算法性能分析,可明確他們要對算法的哪些部分進行硬件加速,從而滿足處理代表性輸入數據集的實時要求。同樣重要的是對目標平臺中的整個系統進行原型設計,從而實際地檢測性能預期。一旦原型設計過程說明設計滿足了所有性能和質量目標要求,那么設計人員就能在實際的目標器件中啟動最終系統實現。最后一步就是測試運行在芯片上的設計在各種用例場景下的表現。一切檢查完成后,設計團隊就能發布最終產品。

ZYNQ SOC:嵌入式視覺的最明智的選擇

在開發機器視覺應用過程中,設計團隊必須選擇高度靈活的器件,這一點至關重要。設計團隊所需的計算平臺應提供強大的通用處理功能,以支持多種不同的軟件生態系統,此外還要有穩健可靠的數字信號處理功能,以便實現計算強度高、存儲高效的計算機視覺算法。芯片的高度集成對實現高效、完整的系統至關重要。

賽靈思All Programmable SoC是以處理器為中心的器件,在單芯片上提供了軟/硬件和I/O可編程性。Zynq SoC在單個器件中集成了一個ARM®雙核Cortex™-A9 MPCore™處理系統、FPGA邏輯和一些關鍵外設。這樣,該器件就能幫助設計人員實現極為高效的嵌入式視覺系統。

處理子系統、FPGA邏輯和外設在Zynq SoC中的高度集成能確保相對于采用分立式組件設計而成的系統而言提高數據傳輸速率,降低功耗和材料清單成本。我們能用Zynq SoC實現實時處理支持1080p60視頻序列(1,920 x 1,080 RGB圖像,每秒60幀)的系統,達到每秒數千億次運算的處理功能。

為了全面利用Zynq SoC的諸多功能與特性,賽靈思推出了以IP和系統為中心的設計環境Vivado™設計套件。該套件可加速集成和實現,從而可幫助設計人員提高開發生產力,進而動態開發出Smater嵌入式產品。Vivado HLS作為該套件的一個組件,能幫助設計人員將采用C/C++語言開發的算法編譯為RTL,以便在FPGA邏輯中運行。

Vivado HLS工具非常適用于嵌入式視覺設計。在此流程中,您用C/C++創建您的算法,再用Vivado HLS將算法或算法的一部分編譯為RTL,進而確定哪些函數更適合在FPGA邏輯中運行,哪些函數更適合在ARM處理器上運行。這樣,您的設計團隊就能集中精力打造出最佳性能的基于Zynq SoC的視覺系統。

為了進一步幫助嵌入式視覺開發人員創建Smarter Vision系統,賽靈思在Vivado中增加了對OpenCV計算機視覺算法庫的支持。賽靈思還推出了最新IP Integrator工具和SmartCORE™ IP以支持此類設計(參見封面報道的第8頁)。

OPENCV推廣計算機視覺技術

OpenCV開辟了一條開發智能計算機視覺算法的途徑,而且能預測實時性能。該庫為設計人員提供了用于算法試驗和快速原型設計的環境。

OpenCV設計框架得到多平臺支持。不過在許多情況下,要提高庫對嵌入式產品的效率,就需要在嵌入式平臺上實現,而且該平臺要能夠加速高強度例程,滿足實時性能要求。

雖然OpenCV在設計時就考慮到計算效率問題,不過它源自傳統計算環境,可支持多核處理。這種計算平臺或許對高度強調效率、成本和功耗的嵌入式應用來說并不是最佳選擇。

OPENCV的特性

OpenCV是一款基于BSD許可證授權發行的開源計算機視覺庫,這就意味著它可免費用于學術和商業應用中。它最初設計旨在提高通用多處理系統的計算效率,側重于實時應用。此外,OpenCV還提供C/C++和Python等多種編程接口。

開源項目的優勢在于,用戶能持續改進算法,并將算法擴展用于多種不同應用領域。目前用OpenCV可現實2,500多種功能,其中包括:

• 矩陣數學

• 公用設施和數據結構

• 通用圖像處理功能

• 圖像轉換

• 圖像金字塔

• 幾何描述符函數

• 特性識別、提取和跟蹤

• 圖像分割與擬合

• 攝像頭校準、立體化和3D處理

• 機器學習:檢測、識別

有關OpenCV的更多詳情,敬請訪問以下網址: opencv.org 和 opencv.willowgarage.com 。

用HLS加速OPENCV函數

一旦完成了嵌入式視覺系統架構的分區,找到了計算強度最大的部分,HLS工具就能幫助您加速這些函數,同時仍能繼續使用C++編寫。Vivado HLS用C、C++或SystemC代碼生成高效的RTL實現方案。

此外,以IP為中心的Vivado設計環境提供豐富的處理IP SmartCORE,能簡化到圖像傳感器、網絡及其它必要I/O接口的連接,簡化OpenCV庫中這些函數的實現。這相對于其它實現方案而言是一種明顯的優勢,因為其它方案哪怕是最基本的OpenCV I/O功能都需要加速。

為什么需要高層次綜合?

賽靈思推出的Vivado HLS是一款軟件編譯器,旨在將C、C++或SystemC編寫的算法轉變為針對用戶定義時鐘頻率和賽靈思產品系列器件優化的RTL。在C/C++程序解釋、分析和優化方面,它與x86處理器的編譯器具有相同的核心技術基礎。這種相似性有助于從臺式機開發環境快速移植到FPGA實現。您選擇目標時鐘頻率和器件后,無需用戶輸入,Vivado HLS會默認生成RTL實現。此外,Vivado HLS與其它任何編譯器一樣,也分不同的優化級別。由于算法最終執行目標是定制的微型架構,因此Vivado HLS可實現的優化級別比傳統的編譯器具有更精細的粒度。傳統的針對處理器的軟件設計O1 – O3優化理念被架構探索要求所取代,這些要求與用戶技術相結合,指導Vivado HLS創建盡可能出色的實現方案,滿足特定算法的功耗、面積占用和性能要求。

圖2給出了HLS編譯器的用戶設計流程。從理念上講,用戶提供C/C++/SystemC算法描述,編譯器就能生成RTL實現。程序代碼轉化為RTL的過程分為四大階段:算法規范、微型架構探索、RTL實現和IP封裝。

加速算法C到IP集成

圖2 高層次綜合設計流程

圖2 高層次綜合設計流程

算法規范階段是指將針對FPGA架構的軟件應用開發。該規范可在標準桌面軟件開發環境中,全面利用賽靈思提供的OpenCV等軟件庫進行開發。除了支持以軟件為中心的開發流程外,Vivado HLS還提升了從RTL到C/C++的提取驗證速度。用戶能用原軟件進行全面的算法功能驗證。通過Vivado HLS生成RTL后,生成的設計代碼類似于傳統軟件編譯器生成的處理器匯編代碼。用戶可在匯編代碼級進行調試,但這一步并不是必需的。

雖然Vivado HLS能處理幾乎所有針對其它軟件編譯器的C/C++代碼,但代碼有一個限制。在用Vivado HLS編譯代碼到FPGA過程中,用戶代碼不能包含任何運行時動態存儲器分配。與算法綁定于單個存儲器架構的處理器不同,FPGA實現采用特定算法的存儲器架構。通過分析陣列和變量的使用模式,Vivado HLS能確定哪些物理存儲器布局和存儲器類型最適合算法的存儲和帶寬要求。這種分析工作的唯一要求就是在C/C++代碼中明確描述算法使用的所有存儲器陣列。

從C/C++轉為優化的FPGA實現的第二步就是微型架構探索。在這一階段,您可運用Vivado HLS編譯器優化來測試不同的設計,以找到適當的面積和性能組合。您可在不同性能點實現相同的C/C++代碼,無需修改源代碼。Vivado HLS編譯器優化或要求規定了算法不同部分的性能如何描述。

Vivado HLS編譯器流程的最后兩步就是RTL實現和IP封裝。這是Vivado HLS編譯器中自動進行的兩步,不需要用戶具備RTL方面的知識。針對賽靈思產品組合中不同器件的RTL創建優化細節內置在編譯器中。在此階段,為滿足需求,我們提供了經過全面測試和驗證的按鈕式工具,能生成基于時序和基于FPGA架構的RTL。Vivado HLS編譯器的輸出自動封裝為IP-XACT等其它賽靈思工具能接受的格式,因此無需進行其它操作,就可在Vivado中使用HLS生成的IP核。

賽靈思的OpenCV庫為用Vivado HLS進行設計優化提供了捷徑。這些庫預先特性描述后能提供1080p分辨率的像素處理功能。引導Vivado HLS編譯器進行優化的細節已嵌入在這些庫中。這樣,您就能快速自如地將桌面環境中的OpenCV理念應用迭代為Zynq SoC上運行的OpenCV應用,均可在ARM處理器和FPGA架構上操作。

圖3概述了用OpenCV進行運動檢測應用開發流程。該設計的目的就是通過比較當前幀和前一幀來檢測視頻流中的移動物體。算法的第一階段要檢測前后兩幀的邊緣。數據縮減運算(data-reduction operation)便于分析連續幀之間的相對變化。邊緣信息提取出來后,通過邊緣對比可以檢測出當前圖像中出現而前一圖像中不存在的邊緣。檢測出來的新邊緣則構成運動檢測掩膜圖像。最新邊緣檢測結果在當前圖像上凸顯前,應考慮到圖像傳感器噪聲的影響。各幀的噪聲可能不同,會導致運動檢測掩膜圖像中出現隨機錯誤邊緣。因此我們必須過濾圖像,減少噪聲對算法質量的影響。

圖3 OpenCV算法庫開發的運動檢測應用實例

圖3 OpenCV算法庫開發的運動檢測應用實例

在該應用中,可通過在運動檢測掩膜圖像上采用7x7中值濾波器來降噪。中值濾波器的主要就是取7x7相鄰像素窗口的中值,然后將中值作為窗口中心像素的最終值進行報告。降噪后,運動檢測掩膜圖像結合于實時輸入圖像并用紅色凸顯出運動邊緣。

您可全面實現應用,運行在ARM處理子系統上,采用Zynq SoC源代碼映射,如圖4所示。實現過程中僅有的硬件元素就是cvget-frame和showimage函數。這兩個視頻I/O函數用FPGA架構中的賽靈思視頻I/O子系統實現的。在cvgetframe函數調用時,視頻I/O子系統的輸入端負責處理所有細節,從HDMI接口抓取并解碼視頻流,再把像素數據存入DDR存儲器。Showimage函數調用時,該子系統負責將像素數據從DDR存儲器傳輸到視頻顯示控制器,以驅動電視機或其它符合HDMI標準的視頻顯示設備。

Vivado HLS優化的、支持硬件加速的OpenCV庫能將圖4中的代碼移植到FPGA架構中的60fps實時像素處理流水線上。OpenCV庫為需要硬件加速的OpenCV元素提供基礎功能。如果沒有硬件加速,也就是說如果僅在ARM處理器中運行所有代碼的話,那么該算法吞吐量僅為每13秒1幀(也就是0.076fps)。圖5顯示了Vivado HLS編譯后的應用的新映射。請注意,原系統的視頻I/O映射可重復使用。此前正在ARM處理器上執行的算法的計算內核,現在可編譯到多個Vivado HLS生成的IP模塊中。這些模塊連接至Vivado IP Integrator中的視頻I/O子系統,針對60fps、1080p的視頻處理進行了優化。

圖4 Zynq SoC上采用ARM處理器的運動檢測

圖4 Zynq SoC上采用ARM處理器的運動檢測

圖5 采用可編程架構的Zynq SoC上的運動檢測

圖5 采用可編程架構的Zynq SoC上的運動檢測

Zynq SoC和Vivado設計套件提供的All Programmable環境非常適合以最新高分辨率視頻技術所要求的高數據處理速率運行的嵌入式視覺系統的設計、原型設計和測試。采用OpenCV中的開源庫集是在較短開發時間內實現高標準計算機視覺應用的最佳選擇。由于OpenCV庫用C++編寫,因此我們用Vivado HLS創建的源代碼能高效轉換為Zynq SoC FPGA架構中的硬件RTL,并可用作方便易用的處理加速器,且不影響OpenCV最初設想的設計環境的靈活性。

如需了解如何用Vivado設計套件創建Smarter Vision設計方案的更多信息,敬請訪問以下網址: http://www.xilinx.com/cn/products/design-tools/viva- do/index.htm 。

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
久久深夜福利免费观看| 另类激情亚洲| 久久av红桃一区二区小说| 日韩一区二区精品葵司在线| 在线欧美福利| 国产字幕视频一区二区| 国产精品视频免费| 欧美日韩少妇| 欧美日本精品在线| 欧美顶级大胆免费视频| 久久―日本道色综合久久| 性视频1819p久久| 亚洲欧美日韩高清| 亚洲免费在线观看视频| 亚洲一区二区在| 中日韩高清电影网| 一区二区动漫| 一本一本久久a久久精品综合麻豆 一本一本久久a久久精品牛牛影视 | 欧美日韩免费在线| 欧美久久婷婷综合色| 欧美激情国产精品| 欧美激情一区二区三区| 免费国产自线拍一欧美视频| 欧美chengren| 欧美激情综合五月色丁香| 欧美激情自拍| 欧美视频日韩视频| 欧美亚州韩日在线看免费版国语版| 欧美日韩在线视频首页| 国产精品第三页| 国产精品一区久久| 国产午夜精品久久久久久免费视| 国产日韩欧美视频在线| 国产偷自视频区视频一区二区| 韩国福利一区| 亚洲国产成人久久综合一区| 亚洲精品久久久久中文字幕欢迎你| 亚洲精品一区二区三区不| 一本色道久久88亚洲综合88| 亚洲图片在线| 欧美一区在线视频| 亚洲精品视频免费在线观看| 99精品欧美一区| 亚洲午夜精品| 欧美一区二区三区精品| 久久一综合视频| 欧美日本高清视频| 国产精品久久久久久久免费软件 | 欧美午夜精品理论片a级按摩| 国产精品免费在线| 国产亚洲精品一区二区| 韩国女主播一区二区三区| 亚洲高清电影| 一区二区精品国产| 欧美在线播放一区| 日韩视频一区二区三区在线播放| 亚洲综合日韩| 久久综合久久美利坚合众国| 欧美日韩一二区| 国产一区二区精品久久| 亚洲欧洲日韩综合二区| 亚洲综合欧美| 最新国产拍偷乱拍精品| 亚洲网友自拍| 久久久久综合| 欧美日韩久久| 国产综合在线看| 亚洲美女免费视频| 欧美在线视频不卡| 一区二区三区|亚洲午夜| 久久久精品五月天| 欧美日韩亚洲三区| 国产专区精品视频| 日韩视频―中文字幕| 欧美在线视频导航| 亚洲性色视频| 久久综合狠狠综合久久综青草 | 欧美一区二区观看视频| 日韩亚洲精品视频| 久久成人综合网| 欧美日韩视频在线一区二区| 黑人巨大精品欧美黑白配亚洲| 亚洲免费电影在线观看| 久久国产精品一区二区三区四区| 亚洲天堂av在线免费观看| 美女精品在线| 国产精品自拍在线| 99精品欧美一区二区三区综合在线| 久久精品一本久久99精品| 午夜精品福利视频| 欧美人成在线视频| 狠狠色狠狠色综合日日小说| 亚洲一区三区电影在线观看| 一区二区三区高清在线| 免费av成人在线| 国产日韩欧美在线| 在线一区免费观看| 一本久久a久久精品亚洲| 乱码第一页成人| 国产午夜精品理论片a级探花| 夜夜爽99久久国产综合精品女不卡 | 性高湖久久久久久久久| 一区二区三区视频在线| 蜜桃av一区二区三区| 国产亚洲精品一区二区| 亚洲私人黄色宅男| 99综合电影在线视频| 欧美aaa级| 激情国产一区二区| 午夜精品一区二区三区在线| 夜夜嗨av一区二区三区四季av| 免费成人在线视频网站| 国产在线精品自拍| 午夜精品视频在线| 欧美一区二区三区播放老司机| 国产精品www994| 一区二区三区精品| 中日韩美女免费视频网站在线观看| 欧美精品一区二| 亚洲激情国产| 亚洲精品久久久久久久久| 老牛国产精品一区的观看方式| 国产一区二区高清视频| 欧美在线播放一区| 久久久999成人| 国内精品视频一区| 久久av红桃一区二区小说| 久久久国产一区二区| 国产一区二区三区的电影| 香蕉久久夜色精品| 久久av免费一区| 国产一区二区三区黄| 亚洲第一视频网站| 免费成人av资源网| 亚洲成色777777在线观看影院| 亚洲国产成人在线播放| 蜜臀久久99精品久久久画质超高清 | 欧美日韩四区| 日韩亚洲视频在线| 亚洲一区国产一区| 国产精品影片在线观看| 欧美一区二区精品| 久久视频在线看| 海角社区69精品视频| 亚洲国产免费看| 欧美激情精品久久久久| 日韩视频永久免费| 亚洲亚洲精品在线观看 | 欧美午夜电影在线| 亚洲一区二区三区高清| 欧美一区二区三区在线看| 国产一区二区三区丝袜| 亚洲国产黄色片| 欧美乱妇高清无乱码| 亚洲一区www| 久久久久久久性| 亚洲国产成人tv| 中文亚洲免费| 国产伦精品一区二区三区免费 | 亚洲日本va午夜在线影院| 欧美日本亚洲韩国国产| 亚洲视频在线免费观看| 久久精品中文字幕一区| 亚洲国产国产亚洲一二三| 亚洲一区欧美二区| 国内成人精品视频| 亚洲巨乳在线| 国产精品视屏| 亚洲黑丝一区二区| 国产精品扒开腿做爽爽爽软件| 欧美一区二区三区在线观看| 欧美精品导航| 亚洲欧美一区二区精品久久久| 麻豆久久婷婷| 一区二区三区欧美在线观看| 久久理论片午夜琪琪电影网| 亚洲精品欧美激情| 午夜久久黄色| 亚洲国产日韩综合一区| 亚洲欧美在线播放| 亚洲高清一区二| 欧美伊人久久久久久午夜久久久久| 在线欧美三区| 午夜宅男久久久| 亚洲欧洲精品成人久久奇米网| 欧美一区精品| 亚洲青色在线| 久久国产免费| 日韩午夜av电影| 久久亚洲视频| 亚洲一区二区三区视频播放| 久久全国免费视频| 亚洲视频在线观看一区| 欧美福利一区| 午夜欧美不卡精品aaaaa| 欧美日韩国产电影| 亚洲高清不卡av| 国产女主播一区二区| 一本色道综合亚洲| 在线观看欧美日韩国产|