<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 電源與新能源 > 設計應用 > FPGA的系統設計實(shí)現方案

FPGA的系統設計實(shí)現方案

作者: 時(shí)間:2017-10-20 來(lái)源:網(wǎng)絡(luò ) 收藏

  人群的監控與監測已經(jīng)成為當前的一個(gè)重要領(lǐng)域。政府和安全部門(mén)都已經(jīng)開(kāi)始尋求在公共場(chǎng)所智能監測人群的更先進(jìn)的方式,從而避免在來(lái)不及采取行動(dòng)之前檢測到任何異?;顒?dòng)。但是在有效達成這一目的之前還需要克服一些障礙。例如,如果需要一天 24 小時(shí)同時(shí)監測整個(gè)城市里所有可能的人群活動(dòng),僅靠全人工監測是不可能的,尤其在安裝有數千部 CCTV 攝像頭的情況下更是如此。

本文引用地址:http://dyxdggzs.com/article/201710/366534.htm

  這個(gè)問(wèn)題的解決方案在于開(kāi)發(fā)全新的或視覺(jué)系統,借助先進(jìn)的視頻分析技術(shù)自動(dòng)監測人群的活動(dòng),從而能夠立即向中央控制站報告任何異常事件。

  設計這種/視覺(jué)系統不僅需要標準的成像和光學(xué)設備,還需要高性能視頻處理器來(lái)執行視頻分析工作。使用這種功能強大的板載視頻處理器的原因在于先進(jìn)視頻分析技術(shù)具有較高的處理要求,大多數此類(lèi)技術(shù)通常會(huì )使用計算密集型視頻處理算法。

   非常適合于此類(lèi)高性能要求的應用。借助Vivado Design Suite 中高層次綜合 (HLS) 功能實(shí)現的 UltraFast 設計方法,現在可以為 輕松創(chuàng )建理想的高性能設計。此外, MicroBlaze等嵌入式處理器與 可重配置邏輯的完美融合,讓用戶(hù)現在能夠將具有復雜控制流的應用方便地移植到 FPGA 上。

  鑒于這種情況,我們使用 Vivado HLS、嵌入式開(kāi)發(fā)套件 (EDK) 和 ISE Design Suite 中基于軟件的EDA工具,設計出一種用于人群運動(dòng)分類(lèi)和監測系統的原型。這種設計方法基于我們所認為的軟件控制和硬件加速架構。我們的設計采用低成本的賽靈思 Spartan-6 LX45 FPGA。我們在較短時(shí)間內即完成了總體系統設計,其在設計的實(shí)時(shí)性能、低成本和高靈活性方面均展現出頗有前景的結果。

  系統設計

  總體系統設計分兩個(gè)階段完成。第一階段是開(kāi)發(fā)人群運動(dòng)分類(lèi)算法。在這個(gè)算法的驗證完成后,接下來(lái)是把它實(shí)現到 FPGA 中。在開(kāi)發(fā)的第二階段,我們主要關(guān)注基于 FPGA 的實(shí)時(shí)視頻處理應用的架構設計方面。具體工作包括開(kāi)發(fā)實(shí)時(shí)視頻流水線(xiàn)、開(kāi)發(fā)硬件加速器,最后將二者集成并實(shí)現到算法控制和數據流中,從而完成系統設計。

  下面介紹每個(gè)開(kāi)發(fā)階段,首先從簡(jiǎn)要介紹算法設計開(kāi)始,然后詳細介紹如何將算法實(shí)現到 FPGA 平臺上。

  算法設計

  就人群監視和監控而言,文獻中提出了多種算法。大多數此類(lèi)算法從在人群場(chǎng)景中檢測(或布置)特征點(diǎn)

  開(kāi)始,然后隨時(shí)間推移跟蹤這些特征點(diǎn),采集運動(dòng)統計數據。隨后把這些運動(dòng)統計數據投射到一些之前預先計算好的運動(dòng)模型上,用來(lái)預測任何異?;顒?dòng) 。進(jìn)一步改進(jìn)包括聚集特征點(diǎn),跟蹤這些集群而非單獨的特征點(diǎn)。

  本文的人群運動(dòng)分類(lèi)算法基于相同的概念,除了我們優(yōu)先使用模板匹配方法進(jìn)行運動(dòng)估計,而不是采用 Kanade-Lucas- Tomasi (KLT) 特征跟蹤器等傳統方法。該模板匹配方法經(jīng)驗證表明,增加一些計算量能顯著(zhù)改善低對比度或對比度不斷變化情況下的運動(dòng)估計。

  為將這一方法用于運動(dòng)估計,我們將視頻幀劃分為更小矩形貼片組成的網(wǎng)格,然后使用基于加權絕對差之和 (SWAD) 的方法對每個(gè)貼片的當前圖像和之前圖像進(jìn)行運動(dòng)計算。每個(gè)貼片相應地提供一個(gè)運動(dòng)向量,用于說(shuō)明該特定位置兩幀之間的運動(dòng)范圍和方向。結果就是需要在整個(gè)圖像上計算超過(guò) 900 個(gè)運動(dòng)向量。計算這些運動(dòng)向量涉及的具體步驟如圖1所示。

  

  圖1:計算運動(dòng)向量的步驟,從圖像采集開(kāi)始(上)

  此外,我們使用加權高斯內核實(shí)現圖像中遮擋區和零對比度區的可靠性。而且,用于計算一個(gè)運動(dòng)向量的一個(gè)貼片處理工作獨立于其它貼片的處理工作,因此該方法非常適合使用 FPGA 上的并行實(shí)現方案。

  在計算完整個(gè)圖像上的運動(dòng)向量后,該算法隨即計算它們的統計屬性。這些屬性包括平均運動(dòng)向量長(cháng)度、運動(dòng)向量數量、運動(dòng)的主導方向和類(lèi)似指標。

  另外我們還計算了運動(dòng)向量方向的 360 度柱狀圖,進(jìn)一步分析其標準偏差、平均偏差和偏差系數等屬性。這些統計屬性隨后被投射到預先計算好的運動(dòng)模型上,從而將當前運動(dòng)分類(lèi)到幾大類(lèi)別之一。隨后我們運用多個(gè)幀來(lái)解釋這些統計屬性,從而確認分類(lèi)結果。

  預先計算好的運動(dòng)模型采用加權決策樹(shù)分類(lèi)器的形式構建,其充分考慮了這些統計屬性來(lái)對所觀(guān)察到的運動(dòng)進(jìn)行分類(lèi)。例如,如果觀(guān)察到運動(dòng)速度快而且場(chǎng)景中有動(dòng)量突變,同時(shí)運動(dòng)方向隨機或超出圖像平面,就可以分類(lèi)為可能的恐慌情況。該算法的開(kāi)發(fā)工作使用微軟 Visual C++ 配合 OpenCV 庫完成。算法的完整演示請參閱本文文末提供的 Web 鏈接。

  FPGA 實(shí)現方案

  系統設計的第二階段是該算法的 FPGA 實(shí)現過(guò)程。這一步實(shí)現工作有自己的設計難題,例如 FPGA 設計現在要包括視頻輸入/輸出和幀緩存。此外,有限的資源和可用性能可能需要必要的設計優(yōu)化。

  鑒于這些設計特點(diǎn)和其它架構考慮,整個(gè) FPGA 實(shí)現方案被分為三個(gè)部分。第一部分是在 FPGA 上開(kāi)發(fā)通用的實(shí)時(shí)視頻流水線(xiàn),用于處理必要的視頻輸入/輸出和幀緩存。第二部分是開(kāi)發(fā)算法專(zhuān)用硬件加速器。最后在設計的第三階段,我們把它們集成到一起,實(shí)現算法控制和數據流。這就完成了整個(gè)基于 FPGA 的系統設計。

  下面對這個(gè)過(guò)程的每一階段進(jìn)行更詳細的介紹。

  實(shí)時(shí)視頻流水線(xiàn)

  在為 FPGA 平臺開(kāi)發(fā)任何視頻處理應用時(shí),實(shí)時(shí)視頻流水線(xiàn)都是最重要的構建模塊。這個(gè)流水線(xiàn)對用戶(hù)隱藏了視頻輸入/輸出和幀緩存相關(guān)的復雜存儲器管理工作,而是提供了簡(jiǎn)單的訪(fǎng)問(wèn)界面以供用戶(hù)處理視頻幀數據。

  雖然在這方面目前有幾種先進(jìn)的、商業(yè)許可的視頻流水線(xiàn),我們選擇構建針對這個(gè)用途的定制視頻流水線(xiàn)。我們基于賽靈思 EDK 構建該流水線(xiàn),使用定制視頻采集/顯示端口處理視頻輸入/輸出數據。這個(gè)流水線(xiàn)也可以方便地進(jìn)行配置,從而用于其它賽靈思 FPGA 系列。

  視頻采集端口負責解碼來(lái)自視頻 ADC 的輸入視頻流數據并在本地緩存。隨后該數據被轉發(fā)至主存儲器,用于創(chuàng )建視頻幀。與此類(lèi)似,視頻顯示端口負責對本地緩存中存儲的視頻幀數據進(jìn)行編碼,然后將其轉發(fā)到視頻 DAC 中供顯示使用。視頻輸入輸出端口連接到 MicroBlaze 主機處理器的主外設總線(xiàn),該處理器負責處理與主存儲器之間的視頻數據流量。

  視頻端口能夠生成中斷,以通知 MicroBlaze 處理器在視頻輸入端口有可用的新數據或視頻輸入端口需要新數據。兩種視頻端口采用“往復式”緩存管理方案,這樣即使是 MicroBlaze 處理器都無(wú)法立即響應視頻端口,也不會(huì )發(fā)生緩存溢出或欠載。圖2所示是視頻端口與 MicroBlaze 處理器之間的互聯(lián)。

  

  圖2:視頻端口及其互聯(lián)

  視頻端口設計用于檢測和生成視頻行數量、場(chǎng) ID(如果是隔行視頻)和視頻輸入/輸出流中的其它控制信息。當有足夠數量的視頻數據被視頻輸入端口緩存,或當視頻顯示端口請求的數據達到足夠數量時(shí),該信息就會(huì )通過(guò)視頻端口的中斷服務(wù)例程 (ISR) 傳遞給 MicroBlaze 處理器。這些服務(wù)例程相應地通過(guò) DMA 完成視頻端口本地存儲器和主存儲器之間的視頻數據傳輸。

  除了視頻端口 ISR,還有我們稱(chēng)之為“視頻幀隊列 API”的一套高級視頻幀隊列管理功能在這些 ISR 和用戶(hù)層應用之間工作。該 API 負責維持多個(gè)采集幀和顯示幀的隊列,以支持雙幀或三幀緩存方案。在MicroBlaze上運行的用戶(hù)應用能輕松獲得視頻采集幀,或利用“視頻幀隊列 API”功能提供視頻顯示幀。圖 3 顯示了在層級結構中各級別的相關(guān)功能。

  

  圖3:視頻端口 ISR 和視頻幀隊列 API 功能

  將 MicroBlaze 用作主機處理器以連接系統中的各個(gè)構建模塊能產(chǎn)生眾多優(yōu)勢。例如我們可以使用 MicroBlaze 方便地連接各種外部存儲器(SRAM、SDRAM 等),加載或存儲來(lái)自視頻端口的視頻幀數據。類(lèi)似地,我們可以使用 EDK 中的 DMA 控制器,在視頻端口和主存儲器之間傳輸視頻數據。此外,我們還可用 MicroBlaze 處理器以同樣方式連接定制硬件加速器。

  這些“視頻幀隊列 API”功能加上視頻端口 ISR 和視頻輸入輸出端口讓設計中的視頻處理流水線(xiàn)的構造更加完善。圖 4 所示的是使用 FPGA 上的本視頻流水線(xiàn)采集、處理和顯示實(shí)際的視頻幀。它還顯示了通過(guò)計算出的運動(dòng)向量縮小視圖實(shí)現的畫(huà)中畫(huà)功能。

  

  圖4:右下被運動(dòng)向量網(wǎng)格覆蓋的、經(jīng)過(guò) FPGA 處理后的實(shí)際幀

  基于 Vivado HLS 的硬件加速器

  在前文介紹的人群運動(dòng)分類(lèi)算法中,最為耗時(shí)、計算最密集的工作是計算運動(dòng)向量。另一項系統工作——進(jìn)行分類(lèi)——因不涉及像素級的處理,非常簡(jiǎn)單而且易于實(shí)現。注意到設計的這個(gè)方面,我們?yōu)橛嬎氵\動(dòng)向量構建了一個(gè)硬件加速器。我們借助賽靈思 Vivado HLS,用 C/C++ 語(yǔ)言在 RTL 中對該加速器進(jìn)行了設計、測試和綜合。

  Vivado 生成的 RTL 代碼的關(guān)鍵特征之一是其在很大程度上已經(jīng)過(guò)了精心優(yōu)化。Vivado HSL 把陣列存?。ɡ绱鎯υ陉嚵兄械南袼財祿┚C合到存儲器接口中,通過(guò)分析代碼自動(dòng)生成所需的地址。Vivado HSL 還可分析預先計算好的偏移和常量,從而非??焖俚貓绦兴^的“跨步式”存儲器訪(fǎng)問(wèn)??绮绞酱鎯ζ髟L(fǎng)問(wèn)從圖像的多行數據訪(fǎng)問(wèn)開(kāi)始(就如同在 2D 卷積中)。

  設計基于 Vivado 的加速器的主要考慮因素是并行處理運動(dòng)向量的計算,最大限度地提高從主存儲器中的數據讀取。為此目的,我們使用八個(gè) Block RAM 并行加載和存儲視頻幀數據。硬件加速器的內核能夠并行計算四個(gè)運動(dòng)向量,而且在計算中它會(huì )用到所有八個(gè) Block RAM。從主存儲器傳輸到這些 Block RAM 的數據由 MicroBlaze 通過(guò) DMA 加以控制。

  Vivado HLS 生成的硬件加速器具有部分自動(dòng)生成的握手信號,這些信號對于啟停硬件加速器必不可少。這些握手信號包含“啟動(dòng)”、“繁忙”、“閑置”、“完成”等標志。這些標志通過(guò) GPIO 傳送到 MicroBlaze 處理器以完成握手。圖 5 所示為該硬件加速器、八個(gè) Block RAM 和 MicroBlaze 處理器主外設總線(xiàn)之間的互聯(lián)。

  

  圖5:基于 Vivado HLS 的硬件加速器及其互聯(lián)

  圖 5 中分別被命名為 SA1、TA1 到 SA4、TA4 的這些 Block RAM,每個(gè)的容量為 16KB。每對 SA1、TA1 到 SA4、TA4 能夠保存計算一個(gè)完整行的運動(dòng)向量所需的數據。因此硬件加速器在完成運行后,會(huì )輸出四行運動(dòng)向量寫(xiě)回到相同的 Block RAM 存儲器中。這些計算完的運動(dòng)向量隨即由 MicroBlaze 處理器讀回,然后把結果以運動(dòng)向量網(wǎng)格的形式復制到自己的主存儲器中。(圖 4 所示的是被硬件加速器計算出的運動(dòng)向量網(wǎng)格覆蓋的實(shí)際幀)。該硬件加速器在 200MHz 頻率下工作,計算整個(gè)圖像的運動(dòng)向量所需的全部處理任務(wù)能夠在不足 10 毫秒內完成,包括與存儲器之間的所有數據往來(lái)傳輸。

  算法控制和數據流

  在視頻流水線(xiàn)和硬件加速器開(kāi)發(fā)就緒后,完成該系統的最后一步是把這兩個(gè)單元與 MicroBlaze 主機處理器集成,并使用賽靈思軟件開(kāi)發(fā)套件 (SDK_,用 C/C++ 實(shí)現用戶(hù)層應用的算法控制和數據流。在賽靈思 SDK 中實(shí)現算法控制和數據流能為設計帶來(lái)極大的靈活性。這是因為用戶(hù)可以用相同的方式設計和集成新的硬件加速器,同時(shí)還可以修改必要的控制和數據流以集成新的硬件加速器。最終得到的就是一種軟件控制、硬件加速的設計,其靈活度可媲美純軟件實(shí)現方案,同時(shí)其性能可媲美純硬件實(shí)現方案。

  本文介紹的人群運動(dòng)分類(lèi)算法的控制和數據流從通過(guò)視頻幀隊列 API 功能采集視頻幀開(kāi)始。當視頻幀獲取完畢,用戶(hù)應用把當前的和之前的視頻幀數據傳輸到硬件加速器,完成運動(dòng)向量的計算。

  此時(shí)系統在軟件中計算運動(dòng)向量的統計屬性和分類(lèi)結果。這樣做的原因是這些步驟不涉及任何像素級處理,只會(huì )增加很少的處理開(kāi)銷(xiāo)。當分類(lèi)結果計算完成時(shí),用屏幕顯示(OSD)功能把結果和運動(dòng)向量顯示在處理后的幀上。這些屏幕顯示功能也是在賽靈思 SDK 中用 C/C++ 語(yǔ)言實(shí)現的。

  這些構建模塊(實(shí)時(shí)視頻流水線(xiàn)、硬件加速器和算法控制/數據流)全部就緒后,總體系統設計即告完成。隨后我們對基于 FPGA 的實(shí)現方案進(jìn)行了測試,并與之前的桌面 PC 型實(shí)現方案比較結果的準確性。兩個(gè)結果是完全一致的。我們使用來(lái)自明尼蘇達大學(xué)數據庫(http://mha.cs.umn.edu /proj_recognition.sht-ml)和來(lái)自www.gettyimages.com的各種測試視頻對本系統進(jìn)行了測試。

  實(shí)現方案結果

  整個(gè)設計只使用了 Spartan-6-LX45 FPGA 上 30% 的Slice LUT、60% 的 BRAM和12% 的 DSP48E 乘法器資源。圖 6 所示是硬件設置(上)和實(shí)際系統輸出。硬件設置由 Digilent Atlys Spartan 6 FPGA 板和定制視頻接口卡組成,利用視頻 ADC 和 DAC 可為 FPGA 提供視頻輸入/輸出功能。

  

  圖6:硬件設置(上)和把場(chǎng)景分類(lèi)為驚恐的實(shí)際 FPGA 處理后的幀

  巨大的未來(lái)潛力

  FPGA 是面向實(shí)時(shí)視頻處理等需要高性能的應用的理想平臺。開(kāi)發(fā)這種應用要求進(jìn)行一定的架構考量,以充分發(fā)揮所選 FPGA 的性能優(yōu)勢。此外使用 EDK 和 Vivado HLS 等先進(jìn)工具,能夠以比過(guò)去高得多的效率和更短的開(kāi)發(fā)時(shí)間實(shí)現總體系統設計。

  因此正如我們在本文中所展示的,利用上述工具在 FPGA 上實(shí)現性能關(guān)鍵型應用有著(zhù)巨大的潛力。有這樣成功運行的平臺作為先例,我們期望把這一成果推廣用于解決更多的技術(shù)問(wèn)題,例如自動(dòng)化交通監測、醫院中的自動(dòng)病患觀(guān)察等更多的應用。



評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>