當輸入數(shù)據(jù)進入數(shù)據(jù)引擎時,引擎一旦檢查發(fā)現(xiàn)數(shù)據(jù)格式不滿足后續(xù)AI Core的處理需求,則可開啟數(shù)字視覺預處理模塊進行數(shù)據(jù)預處理。如圖所示的數(shù)據(jù)流所示,以圖片預處理為例:
1、首先Matrix會將數(shù)據(jù)從內(nèi)存搬運到DVPP的緩沖區(qū)進行緩存。
2、根據(jù)具體數(shù)據(jù)的格式,預處理引擎通過DVPP提供的編程接口來完成參數(shù)配置和數(shù)據(jù)傳輸。
3、編程接口啟動后,DVPP將配置參數(shù)和原始數(shù)據(jù)傳遞給驅(qū)動程序,由DVPP驅(qū)動調(diào)用PNG或JPEG解碼模塊進行初始化和任務下發(fā)。
4、DVPP專用硬件中的PNG或JPEG解碼模塊啟動實際操作來完成圖片的解碼,得到Y(jié)UV或者RGB格式的數(shù)據(jù),滿足后續(xù)處理的需要。
5、解碼完成后,Matrix以同樣機制繼續(xù)調(diào)用VPC進一步把圖片轉(zhuǎn)化成YUV420SP格式,因為YUV420SP格式數(shù)據(jù)存儲效率高且占用帶寬小,所以同等帶寬下可以傳輸更多數(shù)據(jù)來滿足AI Core強大計算吞吐量的需求。同時DVPP也可以完成圖像的裁剪與縮放。
上圖展示了一種典型改變圖像尺寸的裁剪和補零操作,VPC在原圖像中取出的待處理圖像部分,再將這部分進行補零操作,在卷積神經(jīng)網(wǎng)絡計算過程中保留邊緣的特征信息。補零操作需要用到上、下、左、右四個填充尺寸,在補零區(qū)域中進行圖像邊緣擴充,最后得到可以直接計算的補零后圖像。
6、經(jīng)過一系列的預處理后的圖像數(shù)據(jù)有以下兩種處理方式:
-圖像數(shù)據(jù)可以根據(jù)模型要求經(jīng)過AIPP進行進一步預處理(可選,若DVPP輸出的數(shù)據(jù)滿足圖像要求,則可以不經(jīng)過AIPP的處理),然后將滿足要求的圖像數(shù)據(jù)在AI CPU的控制下進入AI Core進行所需的神經(jīng)網(wǎng)絡計算。
-將輸出的圖像數(shù)據(jù)統(tǒng)一通過JPEG編碼模塊進行編碼,完成編碼后處理,將數(shù)據(jù)放入DVPP的緩沖器中,最終由Matrix取出數(shù)據(jù)進行后續(xù)操作,同時也會釋放DVPP的計算資源并回收緩存。
整個預處理過程中,Matrix完成不同模塊的功能調(diào)用。DVPP作為定制化的數(shù)據(jù)補給模塊,采用了異構(gòu)或?qū)S玫奶幚矸绞絹韺D像數(shù)據(jù)進行快速變換,為AI Core提供了充足的數(shù)據(jù)源,從而滿足了神經(jīng)網(wǎng)絡計算中 大數(shù)據(jù) 量、大帶寬的需求。