首頁 區(qū)塊鏈 > 正文

AI推理實踐丨多路極致性能目標檢測最佳實踐設計解密

摘要:基于CANN的多路極致性能目標檢測最佳實踐設計解密。

本文分享自華為云社區(qū)《基于CANN的AI推理最佳實踐丨多路極致性能目標檢測應用設計解密》,作者: 昇騰CANN 。


(資料圖片)

當前人工智能領域,最熱門的無疑是以ChatGPT為代表的各種“新貴”大模型,它們高高在上,讓你無法觸及。但在人們的日常生活中,實際應用需求最大的還是以Yolo模型為代表的目標檢測“豪強”,它們每天都在以各種方式落地、應用于我們日常生活的方方面面。

目標檢測是計算機視覺領域的一項關鍵技術,它的任務是找出圖像中所有感興趣的目標,確定它們的類別和位置。隨著人工智能潛移默化地滲入人們的生活中,各行各業(yè)競相通過引入目標檢測等技術打開市場空間,關于目標檢測的各類人工智能需求也奔涌而來,比如:

  • 在交通領域,目標檢測可以用來檢測道路上的行人、車輛、交通標志等物體,提升行駛安全和通行便利性。
  • 在安全領域,目標檢測可以用來檢測關鍵特征、特定行為或者可疑物體,以便快速發(fā)現(xiàn)和識別安全威脅。
  • 在醫(yī)療領域,目標檢測可以用來識別身體部位、病灶、心電圖、CT影像等,以便快速輔助診斷。
  • 在生活領域,目標檢測可以用于智能購物、智能家居等場景,提升人們生活的便利性。

但AI應用開發(fā)門檻高,周期長。各類AI軟件棧理解成本高、AI算法模型與業(yè)務結合難度高、對開發(fā)人員的技能要求也較高。如何提升AI推理應用的開發(fā)效率,降低開發(fā)門檻,是亟需改善的現(xiàn)狀。為此,昇騰CANN技術專家設計和開發(fā)了針對目標檢測應用的最佳實踐,讓開發(fā)者可以在昇騰平臺上快速部署目標檢測應用,輕松獲得幾十甚至上百路的檢測效果。下面我們就來詳細拆解一下這個實踐的設計思路。

基礎應用分解

我們首先從一個基礎的目標檢測推理應用場景開始,推理流程通常包含如下幾個部分:

GPU AI推理業(yè)務流程

  1. 數據輸入是攝像頭獲取的視頻數據流,一般以H.264格式為主。
  2. 然后通過FFmpeg軟件,將連續(xù)的視頻流進行拆幀和解碼。
  3. 下一階段是對解碼后的圖像進行預處理,通常使用OpenCV對圖像進行縮放,得到模型需要的圖像規(guī)格。
  4. 模型推理環(huán)節(jié),用戶可以選擇的方式比較多,比較典型的是使用TensorRT進行推理應用開發(fā)。
  5. 目標檢測后處理需要進行NMS計算,進行圖片畫框等操作。
  6. 數據輸出階段,用戶根據需要實現(xiàn)一個結果呈現(xiàn)形式。

推理功能適配

將上面介紹的目標檢測應用遷移到昇騰平臺,開發(fā)者僅需關注“推理”環(huán)節(jié)的適配,包括如下兩個步驟:

  1. 將推理模型文件(onnx模型或pb模型)通過ATC工具轉化為昇騰平臺專屬的離線om文件。
  2. 使用昇騰AscendCL語言開發(fā)模型加載和模型執(zhí)行的邏輯。

基于CANN的AI推理業(yè)務流程

完成如上兩個環(huán)節(jié)后,推理應用的功能就已經遷移到昇騰平臺了。這時若整體的推理性能未達到理想預期,就需要進入性能優(yōu)化提升階段。

性能提升方式一:使能DVPP硬件的高效編解碼能力

DVPP(Digital Vision Pre-Processing,數字視覺預處理)是昇騰AI處理器內置的圖像處理單元,通過AscendCL媒體數據處理接口提供強大的媒體處理硬加速能力,主要包括以下功能:

  • VPC(Vision Preprocessing Core):處理YUV、RGB等格式的圖片,包括縮放、摳圖、色域轉換等。
  • JPEGD(JPEG Decoder):JPEG壓縮格式→YUV格式的圖片解碼。
  • JPEGE(JPEG Encoder):YUV格式→JPEG壓縮格式的圖片編碼。
  • VDEC(Video Decoder):H264/H265格式→YUV/RGB格式的視頻碼流解碼。
  • VENC(Video Encoder):YUV420SP格式→H264/H265格式的視頻碼流編碼。
  • PNGD(PNG Decoder):PNG格式→RGB格式的圖片解碼。

Ascend 310 AI處理器邏輯架構中DVPP位置

開發(fā)者可以通過DVPP對圖像進行硬件解碼和處理,提升圖像處理效率。另外,DVPP和執(zhí)行推理的計算單元AI Core是完全獨立的硬件單元,無需擔心使用DVPP后會對推理執(zhí)行的性能產生影響。

基于CANN的AI推理業(yè)務流程——使用DVPP進行數據預處理

性能提升方式二:增加推理前后數據并行,讓推理步驟一刻不停

昇騰平臺采用異構計算架構,所以要充分利用計算核心AI Core的超強能力,就需要保證AI Core計算需要的數據能夠持續(xù)不間斷供給,同時能夠無等待輸出。為了實現(xiàn)此能力,可以在數據預處理→模型推理,模型推理→數據后處理模塊間通過隊列的機制,增加推理模塊的并行流水。

基于CANN的AI推理業(yè)務流程——通過隊列增加推理并行流水

同理,在FFmpeg視頻拆幀和DVPP處理之間,也可以使用隊列,進一步增加并行情況。但需要注意推理側的隊列數據會消耗硬件內存,所以需要要合理設置。

性能提升方式三:多線程并發(fā),持續(xù)釋放AI Core性能

多線程是提升硬件資源利用率的重要手段,通過多線程的支持,可以實現(xiàn)多路不同源的視頻輸入;針對服務器多卡的場景,同樣支持多個卡并行執(zhí)行,充分釋放昇騰軟硬件的性能。

基于CANN的AI推理業(yè)務流程——多線程并發(fā)

基于目標檢測最佳實踐,開發(fā)者可輕松實現(xiàn)已有AI推理應用到昇騰平臺的遷移,并輕松達成高性能。開發(fā)者也可以參考此實踐快速上手AI開發(fā),玩轉昇騰平臺推理應用。未來,CANN將持續(xù)致力于應用開發(fā)的易用性提升,不斷滿足開發(fā)者的訴求。

點擊Link,獲取多路高性能目標檢測最佳實踐源碼。

點擊關注,第一時間了解華為云新鮮技術~

關鍵詞:

最近更新

關于本站 管理團隊 版權申明 網站地圖 聯(lián)系合作 招聘信息

Copyright © 2005-2023 創(chuàng)投網 - m.670818.com All rights reserved
聯(lián)系我們:39 60 29 14 2@qq.com
皖ICP備2022009963號-3