本發明專利技術公開了一種視頻分析加速方法,將視頻幀處理任務按先后順序劃分為四級子任務,并劃分到GPU和CPU處理;每一級子任務用一個線程實現,處理完畢后將數據傳遞給下一級子任務所在線程,各線程并行執行;當沒有新的任務或下一級子任務所在線程沒有處理完畢時,就暫停等待;相鄰兩級子任務線程之間使用先進先出FIFO緩沖區隊列傳遞數據;對不存在依賴關系的兩個子任務,利用CUDA的函數異步調用實現CPU和GPU子任務的異步協同并行。本發明專利技術有效利用異構系統中各種計算資源,建立合理的任務調度機制,降低不同處理器之間的通信開銷,以充分發揮各計算資源的計算能力,提高系統效率。
【技術實現步驟摘要】
本專利技術涉及視頻分析領域,更具體的,涉及一種基于線程級流水線的視頻分析加速方法。
技術介紹
視頻分析技術已經廣泛應用于安防領域,視頻分析中存在著大量的圖像數據處理導致效率低下,隨著高清攝像頭的普及,對視頻分析系統進行性能優化很有必要。近年來大多數優化技術都是利用GPU處理視頻分析中的復雜計算,將復雜計算模塊的串行算法轉化為并行算法,利用GPU進行并行計算。然而CPU和GPU是兩種不同架構的處理器,采用單純的GPU優化方法,CPU和GPU由于計算所需時間不同常常相互等待,造成計算資源浪費,無法確保CPU、GPU達到最佳的利用率,無法充分發揮異構平臺的計算能力。
技術實現思路
針對現有加速技術的不足,本專利技術要解決的技術問題是克服現有加速方法對CPU、GPU計算資源利用率不足的缺點,提出一種基于線程級流水線的視頻分析加速方法,有效利用異構系統中各種計算資源,建立合理的任務調度機制,降低不同處理器之間的通信開銷,以充分發揮各計算資源的計算能力,提高系統效率。一種視頻分析加速方法,具體為:將視頻幀處理任務按先后順序劃分為四級子任務,第一級對應視頻幀解碼子任務TC1,第二級對應顏色空間轉換子任務TC2和運動目標檢測及后處理子任務TG1,第三級對應目標提取子任務TC3,第四級對應目標跟蹤與目標識別子任務TC4,其中,運動目標檢測及后處理TG1在GPU處理,其它子任務在CPU處理;每一級子任務用一個線程實現,處理完畢后將數據傳遞給下一級子任務所在線程,各線程并行執行;當沒有新的任務或下一級子任務所在線程沒有處理完畢時,就暫停等待;相鄰兩級子任務線程之間使用先進先出FIFO緩沖區隊列傳遞數據,為每個子任務設有一個輸入隊列InputQueue和一個輸出隊列OutputQueue,本級子任務的InputQueue是上一級子任務的OutputQueue,本級子任務的OutputQueue是下一級子任務的InputQueue;對不存在依賴關系的顏色空間轉換子任務TC2和運動目標檢測及后處理子任務TG1,利用CUDA的函數異步調用實現CPU和GPU子任務的異步協同并行。進一步地,對在GPU上處理的子任務,利用CUDA編程設計實現該子任務的GPU并行處理,GPU中各個核函數產生的中間結果直接存儲在GPU的設備存儲器中,不拷貝到主機內存,僅僅將最終結果拷貝到主機內存,同時利用CUDA的流并行使CPU、GPU間的數據傳輸與核函數執行重疊。進一步地,所述輸入隊列InputQueue和輸出隊列OutputQueue隊列均開辟有兩個空間,分別存儲奇、偶視頻幀的處理后圖像數據,每個子任務線程根據當前視頻幀號的奇偶讀取InputQueue隊列中相應的存儲空間或者向OutputQueue隊列中相應的存儲空間寫數據。本專利技術的有益效果體現在:本專利技術有效利用異構系統中各種計算資源,建立合理的任務調度機制,降低不同處理器之間的通信開銷,以充分發揮各計算資源的計算能力,提高系統效率。應用本專利技術對高清視頻的處理,CPU利用率相對簡單的GPU加速提高了一倍左右,GPU利用率提高了約25%,最終系統的處理速度提高了一倍。1080P的高清視頻處理速度可以達到130幀/s,720P的高清視頻處理速度可以達到240幀/s。附圖說明圖1是視頻分析的處理過程圖;圖2是根據各子任務間的依賴關系構造的DAG圖;圖3是CUDA異步模式下CPU與GPU并行處理流程圖;圖4是線程流水線框架中子任務線程的處理流程圖;圖5是視頻分析的四級流水線示意圖;圖6是視頻分析流水線中子任務線程對緩沖區讀寫流程圖。具體實施方式為了使本專利技術的目的、技術方案及優點更加清楚明白,以下結合附圖及實施例,對本專利技術進行進一步詳細說明。應當理解,此處所描述的具體實施例僅僅用以解釋本專利技術,并不用于限定本專利技術。此外,下面所描述的本專利技術各個實施方式中所涉及到的技術特征只要彼此之間未構成沖突就可以相互組合。圖1是視頻分析的處理過程圖.本專利技術方法包括以下步驟:將視頻分析任務劃分為多個子任務,以TC1TC2TC3TC4表示CPU任務編號,TG1表示GPU任務標號,將系統劃分為以下子任務:TC1:視頻解碼;TC2:顏色空間的轉換;TG1:運動目標檢測及后處理(GPU);TC3:目標提取;TG1:目標跟蹤與目標識別;其中,運動目標檢測及其后處理TG1在GPU上進行計算,其余子任務在CPU上進行處理。運動目標檢測可采用ViBe算法,運動目標后處理的膨脹腐蝕處理可采用VHGW算法,濾波可采用中值濾波。根據各子任務的依賴關系構造DAG圖如圖2所示。圖中虛線部分的兩個分支表示沒有依賴關系的兩個任務分支,也就是說CPU中顏色空間的轉化任務TC2和GPU中的運動目標檢測及其后處理任務TG1可以并行執行。對所得DAG圖中不存在依賴關系的CPU和GPU子任務,CUDA程序中的內存拷貝函數和核函數采用CUDA異步調用模式進行調用,可以在調用內存拷貝函數和GPU核函數后,不等函數執行完成立即返回,從而使得CPU和GPU可以并行工作。CPU、GPU異步并行的執行流程如圖3所示,在CPU解碼得到一幀圖像數據之后,利用CUDA的函數異步調用方式調用數據傳輸函數和核函數,之后函數立馬返回,CPU開始進行顏色空間轉換的計算,同時GPU進行運動目標檢測及其后處理的計算,CPU和GPU都執行完成后,將GPU的計算結果拷貝回主機內存由CPU進行下一步計算。利用CUDA設計實現運動目標檢測及其后處理的GPU并行算法,根據GPU存儲器模型特點、GPU計算特點對CUDA程序進行存儲器優化、指令優化。在該子任務中,各個核函數產生的結果直接存儲在GPU的設備存儲器中,不拷貝到主機內存,僅僅將最終結果拷貝到主機內存,同時利用CUDA的流并行使CPU、GPU間的數據傳輸與核函數執行重疊,達到隱藏數據傳輸延遲的目的。參考指令流水線的架構,本專利技術設計實現線程流水線框架。線程流水線框架包括四個要素:(1)任務(Task)。任務類型相當于指令流水線中的指令,代表流水線系統中需要處理的對象,該對象作為模板參數傳入流水線,之后流水線的處理都是針對這類任務進行的。(2)子任務(SubTask)。每個任務拆分為多個獨立的子任務,每個子任務由一個線程負責,多個子任務線程串行處理同一個任務,錯位并行處理不同的任務。當一個任務在所有的子任務線程中都執行一遍后,才算處理完一個任務。(3)緩沖區隊列(Queue)。用來在各個子任務線程之間傳遞數據的是先進先出(FIFO)緩沖區隊列,每個子任務都有一個InputQueue和OutputQueue,并且其InputQueue是流水線的上一個子任務的OutputQueue,其OutputQueue是流水線的下一個子任務的InputQueue。子任務線程依次從InputQueue獲取數據,進行處理,處理完畢后將生成的數據放入OutputQueue,等待下一個子任務線程處理。當沒有新的任務或后面的線程沒有處理完畢時,就暫停等待。(4)流水線(PipeLine)。一個流水線中有一個或多個子任務線程,各線程可以并行執行,對同一個任務串行處理。當所有的任務執行完成后這個流水線才會結束。每一個子任務用一個線程來實現,把這些線程按照流水線的方式連接,就可以構本文檔來自技高網...

【技術保護點】
一種視頻分析加速方法,其特征在于,具體為:將視頻幀處理任務按先后順序劃分為四級子任務,第一級對應視頻幀解碼子任務TC1,第二級對應顏色空間轉換子任務TC2和運動目標檢測及后處理子任務TG1,第三級對應目標提取子任務TC3,第四級對應目標跟蹤與目標識別子任務TC4,其中,運動目標檢測及后處理TG1在GPU處理,其它子任務在CPU處理;每一級子任務用一個線程實現,處理完畢后將數據傳遞給下一級子任務所在線程,各線程并行執行;當沒有新的任務或下一級子任務所在線程沒有處理完畢時,就暫停等待;相鄰兩級子任務線程之間使用先進先出FIFO緩沖區隊列傳遞數據,為每個子任務設有一個輸入隊列InputQueue和一個輸出隊列OutputQueue,本級子任務的InputQueue是上一級子任務的OutputQueue,本級子任務的OutputQueue是下一級子任務的InputQueue;對不存在依賴關系的顏色空間轉換子任務TC2和運動目標檢測及后處理子任務TG1,利用CUDA的函數異步調用實現CPU和GPU子任務的異步協同并行。
【技術特征摘要】
1.一種視頻分析加速方法,其特征在于,具體為:將視頻幀處理任務按先后順序劃分為四級子任務,第一級對應視頻幀解碼子任務TC1,第二級對應顏色空間轉換子任務TC2和運動目標檢測及后處理子任務TG1,第三級對應目標提取子任務TC3,第四級對應目標跟蹤與目標識別子任務TC4,其中,運動目標檢測及后處理TG1在GPU處理,其它子任務在CPU處理;每一級子任務用一個線程實現,處理完畢后將數據傳遞給下一級子任務所在線程,各線程并行執行;當沒有新的任務或下一級子任務所在線程沒有處理完畢時,就暫停等待;相鄰兩級子任務線程之間使用先進先出FIFO緩沖區隊列傳遞數據,為每個子任務設有一個輸入隊列InputQueue和一個輸出隊列OutputQueue,本級子任務的InputQueue是上一級子任務的OutputQueue,本級子任務的OutputQueue是下一級子任務的InputQueu...
【專利技術屬性】
技術研發人員:凌賀飛,李深,唐堃,
申請(專利權)人:華中科技大學,
類型:發明
國別省市:湖北;42
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。