最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

【2023 · CANN訓(xùn)練營第一季】數(shù)據(jù)預(yù)處理-JPEG數(shù)據(jù)解碼

2023-05-14 21:59 作者:白子不擺爛版  | 我要投稿

【2023 · CANN訓(xùn)練營第一季】數(shù)據(jù)預(yù)處理-JPEG數(shù)據(jù)解碼

文檔參考:CANN文檔社區(qū)版: 6.0.RC1.alpha001

我們的模型輸入是固定的圖片格式、大小,但是實際上我們的想要進行推理的圖片是各種各樣的,在應(yīng)用中,我們常使用NV12的圖片作為模型的輸入。如果輸入是僅有Y分量的灰度圖,我們便可以通過將UV分量的部分補充為灰色而滿足我們的使用,但是如果我們的輸入為JPEG圖片,我們需要使用到ACL提供的媒體數(shù)據(jù)處理了相關(guān)API,對我們的圖片進行預(yù)處理,把jpg圖片進行解碼成YUV格式的內(nèi)容,并且獲得其圖片信息。

一、媒體數(shù)據(jù)處理API的V1

note:媒體數(shù)據(jù)處理V1版本與媒體數(shù)據(jù)處理V2版本的接口功能范圍相同,都是描述處理媒體數(shù)據(jù)的接口,用于實現(xiàn)摳圖、圖片縮放、格式轉(zhuǎn)換等功能,但兩套接口不能混用

在Device側(cè),我們對要進行媒體數(shù)據(jù)處理的相關(guān)數(shù)據(jù)的內(nèi)存的申請和釋放,就不可以簡單的使用malloc,new或者aclrtmalloc等申請的內(nèi)存了,我們需要使用dvpp接口。并且,從性能角度,為了減少拷貝,媒體數(shù)據(jù)處理的輸出作為模型推理的輸入,實現(xiàn)內(nèi)存復(fù)用。我們盡量申請足夠大的內(nèi)存進行反復(fù)使用,盡可能避免反復(fù)使用dvpp的接口申請內(nèi)存和釋放,造成一定的性能損耗。

1.dvpp內(nèi)存和通道

(1)內(nèi)存申請與釋放

note:調(diào)用該接口申請大頁內(nèi)存失敗,僅表示系統(tǒng)內(nèi)的大頁內(nèi)存不夠

(2)通道的創(chuàng)建與釋放

2.JPEGD相關(guān)接口

性能指標(biāo):

JPEGD性能指標(biāo)是基于硬件解碼的性能,JPEGD硬件解碼不支持3個SOS的圖片解碼,對于硬件不支持的格式,會使用軟件解碼,軟件解碼性能參考為1080P 15fps。JPEGD解碼的輸出圖片如果涉及旋轉(zhuǎn),則性能指標(biāo)低于軟件解碼的參考值,例如對于1080P的圖片,性能指標(biāo)低于15fps。

以下性能數(shù)據(jù),是基于一個stream上下發(fā)1個異步媒體數(shù)據(jù)處理任務(wù)后,執(zhí)行一次aclrtSynchronizeStream接口。

在我們代碼使用的過程中,其實最先需要了解的是我們所用的接口的性能,這直接影響到我們的使用方案,可以防止我們的代碼設(shè)計直接超越了模塊處理的性能。實際和官方標(biāo)量有的時候會有一點實測的出入,不過最好還是按照手冊中的描述進行預(yù)先規(guī)劃,以下為手冊中的指標(biāo):


功能說明:

  • JPEGD在解碼圖片時,支持對圖片進行旋轉(zhuǎn)。

  • JPEGD在解碼圖片時,支持按源圖片格式解碼。

圖片分辨率約束:

  • 輸入圖片分辨率:最大分辨率:8192x8192,最小分辨率:32x32。

  • 輸出圖片分辨率:JPEGD只對圖片解碼,不會改變圖片分辨率,因此輸出與輸入的圖片分辨率保持一致。

輸出的寬高對齊:

這里我僅寫出了我們下方代碼輸出的yuv420SP(NV12 8bit)的情況

寬stride為寬128對齊后的值。

高stride為高16對齊后的值。

內(nèi)存大?。▎挝籅yte)≥ 寬stride * 高stride * 3/2

接口說明:

二、代碼驗證與學(xué)習(xí)

代碼思路:

1.初始化好后,讀取一個jpg圖片并獲得其圖像信息,存入aclrtMalloc存入的內(nèi)存中

2.創(chuàng)建dvpp通道,并將其解碼為獲取到的圖像信息大小的yuv圖片

3.按照次序銷毀相關(guān)創(chuàng)建

好啦!讓我們編譯它!

有報錯,查看錯誤代碼,和該處代碼:

發(fā)現(xiàn)是銷毀時銷毀順序有問題,把Device和context都銷毀了,才銷毀通道。

所以,一定要注意銷毀順序?。。≈耙蔡岬竭^了,先創(chuàng)建->后銷毀,后創(chuàng)建->先銷毀?。?!

修改后:

代碼:

附上調(diào)試好的正確的代碼:

runDecode.cpp(主函數(shù)文件)

dvpp_decode.cpp(decode處理文件)


dvpp_decode.h

cmakelist可以參考我之前的文章里有。

到這里就結(jié)束啦,想要存下來看看結(jié)果的同學(xué)也可以存成.yuv文件用yuvplayer打開看看哦!

ps:該文僅是為了記錄CANN訓(xùn)練營的學(xué)習(xí)過程所用,不參與任何商業(yè)用途,有任何代碼問題可以和我一起討論修改


【2023 · CANN訓(xùn)練營第一季】數(shù)據(jù)預(yù)處理-JPEG數(shù)據(jù)解碼的評論 (共 條)

分享到微博請遵守國家法律
固安县| 龙江县| 武汉市| 邹平县| 亚东县| 永和县| 平泉县| 互助| 白水县| 岳池县| 册亨县| 丰顺县| 麟游县| 安仁县| 忻城县| 犍为县| 九江县| 青州市| 奉节县| 伊春市| 安平县| 雅江县| 日照市| 永春县| 延吉市| 固阳县| 宜宾市| 温州市| 鞍山市| 海口市| 舞钢市| 萝北县| 呼玛县| 温泉县| 玉环县| 玉树县| 三门县| 峨边| 五大连池市| 那曲县| 庐江县|