摘要:基于CANN的多路極致性能目標檢測最佳實踐設計解密,
本文分享自華為云社區《基于CANN的AI推理最佳實踐丨多路極致性能目標檢測應用設計解密》,作者: 昇騰CANN ,
當前人工智能領域,最熱門的無疑是以ChatGPT為代表的各種“新貴”大模型,它們高高在上,讓你無法觸及,但在人們的日常生活中,實際應用需求最大的還是以Yolo模型為代表的目標檢測“豪強”,它們每天都在以各種方式落地、應用于我們日常生活的方方面面,
目標檢測是計算機視覺領域的一項關鍵技術,它的任務是找出影像中所有感興趣的目標,確定它們的類別和位置,隨著人工智能潛移默化地滲入人們的生活中,各行各業競相通過引入目標檢測等技術打開市場空間,關于目標檢測的各類人工智能需求也奔涌而來,比如:
- 在交通領域,目標檢測可以用來檢測道路上的行人、車輛、交通標志等物體,提升行駛安全和通行便利性,
- 在安全領域,目標檢測可以用來檢測關鍵特征、特定行為或者可疑物體,以便快速發現和識別安全威脅,
- 在醫療領域,目標檢測可以用來識別身體部位、病灶、心電圖、CT影像等,以便快速輔助診斷,
- 在生活領域,目標檢測可以用于智能購物、智能家居等場景,提升人們生活的便利性,
但AI應用開發門檻高,周期長,各類AI軟體堆疊理解成本高、AI演算法模型與業務結合難度高、對開發人員的技能要求也較高,如何提升AI推理應用的開發效率,降低開發門檻,是亟需改善的現狀,為此,昇騰CANN技術專家設計和開發了針對目標檢測應用的最佳實踐,讓開發者可以在昇騰平臺上快速部署目標檢測應用,輕松獲得幾十甚至上百路的檢測效果,下面我們就來詳細拆解一下這個實踐的設計思路,
基礎應用分解
我們首先從一個基礎的目標檢測推理應用場景開始,推理流程通常包含如下幾個部分:
GPU AI推理業務流程
- 資料輸入是攝像頭獲取的視頻資料流,一般以H.264格式為主,
- 然后通過FFmpeg軟體,將連續的視頻流進行拆幀和解碼,
- 下一階段是對解碼后的影像進行預處理,通常使用OpenCV對影像進行縮放,得到模型需要的影像規格,
- 模型推理環節,用戶可以選擇的方式比較多,比較典型的是使用TensorRT進行推理應用開發,
- 目標檢測后處理需要進行NMS計算,進行圖片畫框等操作,
- 資料輸出階段,用戶根據需要實作一個結果呈現形式,
推理功能適配
將上面介紹的目標檢測應用遷移到昇騰平臺,開發者僅需關注“推理”環節的適配,包括如下兩個步驟:
- 將推理模型檔案(onnx模型或pb模型)通過ATC工具轉化為昇騰平臺專屬的離線om檔案,
- 使用昇騰AscendCL語言開發模型加載和模型執行的邏輯,
基于CANN的AI推理業務流程
完成如上兩個環節后,推理應用的功能就已經遷移到昇騰平臺了,這時若整體的推理性能未達到理想預期,就需要進入性能優化提升階段,
性能提升方式一:使能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位置
開發者可以通過DVPP對影像進行硬體解碼和處理,提升影像處理效率,另外,DVPP和執行推理的計算單元AI Core是完全獨立的硬體單元,無需擔心使用DVPP后會對推理執行的性能產生影響,
基于CANN的AI推理業務流程——使用DVPP進行資料預處理
性能提升方式二:增加推理前后資料并行,讓推理步驟一刻不停
昇騰平臺采用異構計算架構,所以要充分利用計算核心AI Core的超強能力,就需要保證AI Core計算需要的資料能夠持續不間斷供給,同時能夠無等待輸出,為了實作此能力,可以在資料預處理→模型推理,模型推理→資料后處理模塊間通過佇列的機制,增加推理模塊的并行流水,
基于CANN的AI推理業務流程——通過佇列增加推理并行流水
同理,在FFmpeg視頻拆幀和DVPP處理之間,也可以使用佇列,進一步增加并行情況,但需要注意推理側的佇列資料會消耗硬體記憶體,所以需要要合理設定,
性能提升方式三:多執行緒并發,持續釋放AI Core性能
多執行緒是提升硬體資源利用率的重要手段,通過多執行緒的支持,可以實作多路不同源的視頻輸入;針對服務器多卡的場景,同樣支持多個卡并行執行,充分釋放昇騰軟硬體的性能,
基于CANN的AI推理業務流程——多執行緒并發
基于目標檢測最佳實踐,開發者可輕松實作已有AI推理應用到昇騰平臺的遷移,并輕松達成高性能,開發者也可以參考此實踐快速上手AI開發,玩轉昇騰平臺推理應用,未來,CANN將持續致力于應用開發的易用性提升,不斷滿足開發者的訴求,
點擊Link,獲取多路高性能目標檢測最佳實踐原始碼,
點擊關注,第一時間了解華為云新鮮技術~
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/556785.html
標籤:其他
上一篇:一份保姆級的Stable Diffusion部署教程,開啟你的煉丹之路
下一篇:返回列表
