過去兩個月團隊一直在忙着將基於后端分析的技術方案移植到前端設備,由於都是英偉達的硬件平台,遷移過程還算順利。下面分享一下什么是后端分析、什么是前端分析、什么又是邊緣分析,當然叫后端計算、前端計算、邊緣計算也行。下面這個動圖就是我們采用前端分析方案的效果,具體硬件是Jetson Xavier NX 嵌入式板子,算法用的是YoloV4 FP16,一路高清視頻實時分析完全沒問題,勉強可以做到2路。
后端分析
后端分析中的“后端”,其實跟我們Web/App開發過程中提到的前端/后端差不多,意思就是在后台服務器上做數據分析。如果數據是視頻,那么就是先把視頻接入到后台服務器(可能是一個視頻管理平台),然后再從該服務器上取視頻數據進行分析,比如做一些視頻結構化的處理。
前端分析
前端分析中的“前端”,跟后端是對應的,不需要先把數據搞到后台服務器上,數據在哪里被采集的就可以在哪里被分析,如果采集數據的是視頻攝像機,那么分析的過程直接在攝像機內部完成即可,然后將分析結果上傳到中心服務器(分析結果可能是json格式)。注意這里跟后端分析有一個非常明顯的區別就是,原始需要被分析的數據(這里的視頻)不用先上傳到后台。
邊緣分析
那么什么是邊緣分析呢?其實邊緣分析介於后端分析和前端分析之間。后端分析需要將原始數據上傳到后台服務器,前端分析中原始數據在采集的地方就可以被分析,而邊緣分析要求先將一個小范圍的待分析數據傳到一個局部中心(可以是一個小型嵌入式服務器,但是規模比后端分析中的服務器小得多),然后再在該局部中心做數據分析,局部中心分析完后再將結果上傳到更上層的中心平台。
優劣勢
1、后端分析:
后台分析算力可以集中管理,靈活調配,直接從已有后台服務器取數據,數據的來源對於算法來講相對透明,技術也相對成熟。缺點是原始數據可能上傳不及時,比如視頻數據,先要上傳到后台服務器再做分析,這樣延時更大、需要更多的帶寬;另外,后台算力比較集中、功耗大,對機房管理/電耗要求比較高。
2、前端分析:
前端分析基本采用嵌入式方案,一個板子/芯片處理單個數據來源,比如視頻數據,一個嵌入式的板子/芯片基本只對一路攝像機負責,被分析的視頻數據無需長距離傳輸,采集時馬上就可以被算法分析,相對來講比較及時。缺點也很明顯,不是每個數據采集終端默認都帶有算法分析功能,大部分時候需要更換原有數據采集設備(比如傳統監控攝像機),使其具備智能分析功能(比如智能攝像機),一般設備工作環境還比較惡劣,設備穩定性要受得住考驗。
3、邊緣分析:
邊緣分析中和了后端分析和前端分析的優缺點,可以相對緩解后端分析中數據傳輸的延時問題、對機房硬性要求高的問題,同時也能相對緩解前端分析中需要替換數據采集終端的問題。
三種分析模式各有所長,具體場景可以采用不同的技術方案。
后面一段時間,團隊開始研究華為昇騰310平台技術方案,跟英偉達類似,他們也提供一站式解決方案,從前端分析、邊緣分析到后端分析,都有對應的型號硬件和軟件配套來使用。目前這種國際形勢之下,盡快適配華為平台方案還是非常有必要的。看官方資料介紹,性價比還是比較高的,但是具體還是需要實踐一下,比如官方提到一張Atlas300的AI加速卡(包含4個昇騰310芯片,售價1.5w左右,跟Tesla T4差不多)可以做到64路高清視頻實時分析,但是據我們側面了解,這個數據並不是特別可靠,因為並沒有交代視頻分析基於的算法模型,如果只是非常簡單的圖像分類模型或者基於簡單backbone的目標檢測模型,即使能做到64路,實際工程上意義也不大。當然,這塊卡的編解碼性能還不錯,經過測試,一塊Atlas 300的卡做50路1080P以上高清解碼、D1編碼還是非常穩定的。等有結果了再給大家分享華為技術方案。