數(shù)字視覺預(yù)處理模塊作為昇騰AI軟件棧中的編解碼和圖像轉(zhuǎn)換模塊,為神經(jīng)網(wǎng)絡(luò)發(fā)揮著預(yù)處理輔助功能。當(dāng)來自系統(tǒng)內(nèi)存和網(wǎng)絡(luò)的視頻或圖像數(shù)據(jù)進(jìn)入昇騰AI處理器的計算資源中運算之前,由于Davinci架構(gòu)對輸入數(shù)據(jù)有固定的格式要求,如果數(shù)據(jù)未滿足架構(gòu)規(guī)定的輸入格式、分辨率等要求,就需要調(diào)用數(shù)字視覺處理模塊進(jìn)行格式的轉(zhuǎn)換,才可以進(jìn)行后續(xù)的神經(jīng)網(wǎng)絡(luò)計算步驟。
數(shù)字視覺預(yù)處理模塊功能架構(gòu)
數(shù)字視覺預(yù)處理對外提供6個模塊,分別為視頻解碼(VDEC)模塊、視頻編碼(VENC)模塊、JPEG解碼(JPEGD)模塊、JPEG編碼(JPEGE)模塊、PNG解碼(PNGD)模塊和視覺預(yù)處理(VPC)模塊。
-VDEC模塊提供H.264/H.265的視頻解碼功能,對輸入的視頻碼流進(jìn)行解碼輸出圖像,用于視頻識別等場景的前處理。
-VENC模塊提供輸出視頻的編碼功能。對于視覺預(yù)處理模塊的輸出數(shù)據(jù)或原始輸入的YUV格式數(shù)據(jù),視頻編碼模塊進(jìn)行編碼輸出H.264/H.265視頻,便于直接進(jìn)行視頻的播放和顯示。
-JPEGD模塊對JPEG格式的圖片進(jìn)行解碼,將原始輸入的JPEG圖片轉(zhuǎn)換成YUV數(shù)據(jù),對神經(jīng)網(wǎng)絡(luò)的推理輸入數(shù)據(jù)進(jìn)行預(yù)處理。
-JPEG圖片處理完成后,需要用JPEGE編碼模塊對處理后的數(shù)據(jù)進(jìn)行JPEG格式還原,用于神經(jīng)網(wǎng)絡(luò)的推理輸出數(shù)據(jù)的后處理。
-當(dāng)輸入圖片格式為PNG時,需要調(diào)用PNGD解碼模塊進(jìn)行解碼,將PNG圖片以RGB格式進(jìn)行數(shù)據(jù)輸出給昇騰AI處理器進(jìn)行推理計算。
-VPC模塊提供對圖片和視頻其它方面的處理功能,如格式轉(zhuǎn)換(例如YUV/RGB格式到Y(jié)UV420格式轉(zhuǎn)換)、大小縮放、裁剪等功能。
數(shù)字視覺處理(DVPP)模塊的執(zhí)行流程如圖所示,需要由Matrix、DVPP、DVPP驅(qū)動和DVPP硬件模塊共同協(xié)作完成。

-位于框架最上層是Matrix,負(fù)責(zé)調(diào)度DVPP中的功能模塊進(jìn)行相應(yīng)處理以及管理數(shù)據(jù)流。
-DVPP位于功能架構(gòu)的中上層,為Matrix提供調(diào)用視頻圖形處理模塊的編程接口,通過這些接口可以配置編解碼和視覺預(yù)處理模塊的相關(guān)參數(shù)。
-DVPP驅(qū)動位于功能架構(gòu)的中下層,最貼近于DVPP的硬件模塊,主要負(fù)責(zé)設(shè)備管理、引擎管理和引擎模組的驅(qū)動。驅(qū)動會根據(jù)DVPP下發(fā)的任務(wù)分配對應(yīng)的DVPP硬件引擎,同時還對硬件模塊中的寄存器進(jìn)行讀寫,完成其他一些硬件初始化工作。
-最底層的是真實的硬件計算資源DVPP模塊組,是一個獨立于昇騰AI處理器中其他模塊的單獨專用加速器,專門負(fù)責(zé)執(zhí)行與圖像和視頻相對應(yīng)的編解碼和預(yù)處理任務(wù)。