<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>
"); //-->

博客專(zhuān)欄

EEPW首頁(yè) > 博客 > DSP 的 CV 算子調用

DSP 的 CV 算子調用

發(fā)布人:地平線(xiàn)開(kāi)發(fā)者 時(shí)間:2024-12-08 來(lái)源:工程師 發(fā)布文章

01 前言


DSP 是 征程 5 上的數字信號處理器,專(zhuān)用于處理視覺(jué)、圖像等信息。在 OE 包的 ddk/samples/vdsp_rpc_sample 路徑下,提供了 DSP 使用示例,包括 nn 和 CV 兩部分。


nn 示例涵蓋了深度學(xué)習模型的相關(guān)算子,包括量化、反量化、Softmax 和雷達點(diǎn)云預處理;CV 示例展示了如何調用地平線(xiàn)基于 DSP 封裝的圖像處理算子,目前已支持 25 個(gè),并且仍在持續擴充當中。



在正式閱讀前,希望您已經(jīng)對 DSP 的軟硬件特點(diǎn)、編程思路和板端運行方法有基本的了解,關(guān)于這方面的內容可以閱讀原文跳轉社區搜索文章《DSP 開(kāi)發(fā)快速上手》。



02 CV 算子支持列表


截止 J5 OE v1.1.62,DSP 已經(jīng)支持了 25 個(gè) CV 算子:


圖片


CV 算子相關(guān)的數據類(lèi)型、數據結構、配置參數、圖片約束等信息,可以查看 征程 5 工具鏈手冊的《DSP 運行時(shí) API 手冊》。我們正在持續擴充 DSP 支持的 CV 算子數量,同時(shí)也在讓已有的 CV 算子能支持更多的輸入數據類(lèi)型。



03 CV 示例文件介紹


OE 包的 ddk/samples/vdsp_rpc_sample 目錄包含了大量的 CV 示例,文件結構如下:


+---vdsp_rpc_sample
│── arm                                          # arm側
│   ├── cv
│   │   ├── build_arm.sh                         # arm側構建腳本
│   │   ├── CMakeLists.txt
│   │   ├── main.cc                              # main函數
│   │   └── src                                  # cv算子示例源文件目錄
│   └── nn
├── dsp
│   ├── build_dsp.sh                             # dsp側構建腳本
│   ├── CMakeLists.txt
│   ├── src                                      # dsp算子實(shí)現目錄
│   └── main.cc                                  # 編譯dsp鏡像的源碼
├── script
│   ├── cv
│   │   ├── run_cv_test.sh                       # 運行示例腳本
│   │   ├── bin                                  # 可執行程序目錄
│   │   └── data                                 # 圖像目錄
│   ├── nn
│   ├── image
│   └── lib
├── deps
└── README.md


  • arm:arm 側示例,封裝了常用 api,主要負責發(fā)起 RPC 調用,接收 dsp 處理結果。


    • cv:cv 示例,包含了圖片處理的 cv 算子示例。

    • nn:nn 示例,包含 quantize 和 dequantize api,自定義算子 softmax 以及 pointpillar 前處理。

  • dsp:dsp 側示例,實(shí)現了 dsp 算子功能,主要負責接收 arm 側發(fā)來(lái)的任務(wù),完成 softmax 等算子的計算,將結果發(fā)送給 arm。


    • src:包含 quantize 和 dequantize api,以及自定義算子 softmax 以及 pointpillar 前處理的 dsp 側實(shí)現。

  • script:示例的生成文件及腳本目錄。


    • cv:包含 cv 示例的可執行文件、輸入數據及執行腳本。

    • nn:包含 nn 示例的可執行文件、輸入數據、模型及執行腳本。

    • image: DSP 鏡像目錄。

    • lib: 可執行程序的依賴(lài)庫目錄。

  • deps:所有示例的依賴(lài)文件目錄。


    • aarch64:arm 側的依賴(lài)目錄。

    • vdsp:dsp 側的依賴(lài)目錄。


+---arm/cv
   ├── CMakeLists.txt
   ├── build_arm.sh
   ├── main.cc
   └── src
       ├── common.h
       ├── img_util.cc
       ├── img_util.h
       ├── test_bilateral_filter.cc
       ├── test_box_filter.cc
       ├── test_canny.cc
       ├── test_corner_harris.cc
       ├── test_cvt_color.cc
       ├── test_dilate.cc
       ├── test_equalize_hist.cc
       ├── test_erode.cc
       ├── test_filter2D.cc
       ├── test_flip.cc
       ├── test_gaussian_blur.cc
       ├── test_integral.cc
       ├── test_median_blur.cc
       ├── test_pyr_down.cc
       ├── test_pyr_up.cc
       ├── test_remap.cc
       ├── test_resize.cc
       ├── test_roi_resize.cc
       ├── test_rotate.cc
       ├── test_sep_filter2D.cc
       ├── test_sobel.cc
       ├── test_threshold.cc
       ├── test_transpose.cc
       ├── test_warp_affine.cc
       └── test_warp_perspective.cc


在 arm/cv/src 文件夾內,包含了當前的 25 個(gè) CV 算子在 ARM 側調用的示例,這些示例以 test_開(kāi)頭,其余的 common.h、img_util.cc、img_util.h 是示例運行的必備組件。


CV 文件夾的 main.cc 集成了調用 25 個(gè) CV 算子的完整功能,CMakeLists.txt 是編譯必備的配置文件,執行 build_arm.sh 后,即可編譯出可上板運行的可執行文件即相關(guān)依賴(lài),這些生成的文件會(huì )自動(dòng)存放進(jìn) script 目錄中。我們已提供了編譯好的上述文件,無(wú)需用戶(hù)重復編譯。


├── deps
|   ├── aarch64
|   └── vdsp  
└── dsp
   ├── CMakeLists.txt
   ├── build_dsp.sh
   ├── main.cc
   └── src


CV 算子的 DSP 實(shí)現源碼是非開(kāi)源的,地平線(xiàn)封裝成了 .a 文件以庫的形式提供,存放在 deps/vdsp 相關(guān)目錄下。dsp 目錄下的 src 文件夾只包含 NN 算子的實(shí)現源碼。main.cc 主要用于注冊編寫(xiě)的 DSP 算子,CMakeLists.txt 是編譯必備的配置文件,執行 build_dsp.sh 后,即可編譯出可以在板端配置的 vdsp0 和 vdsp1 鏡像,這兩個(gè)鏡像文件還會(huì )自動(dòng)存放進(jìn) script/image 目錄中。我們提供了已經(jīng)編譯好的鏡像文件,無(wú)需用戶(hù)重復編譯。



04 CV 算子使用說(shuō)明


由于 ARM 側和 DSP 側所有需要編譯的文件都已經(jīng)包括在了 OE 包當中,因此用戶(hù)可以跳過(guò)編譯這一步,直接將 script 文件夾復制到 征程 5 開(kāi)發(fā)板上的可寫(xiě)路徑下,如/userdata 目錄。


此時(shí)我們可以編寫(xiě)一個(gè) deploy.sh 腳本并執行,用于在 征程 5 開(kāi)發(fā)板上部署 DSP 鏡像:

echo stop > /sys/class/remoteproc/remoteproc1/state
echo stop > /sys/class/remoteproc/remoteproc2/state
echo -n "/userdata/script/image" > /sys/module/firmware_class/parameters/path
echo vdsp0 > /sys/class/remoteproc/remoteproc1/firmware
echo vdsp1 > /sys/class/remoteproc/remoteproc2/firmware
echo start > /sys/class/remoteproc/remoteproc1/state
echo start > /sys/class/remoteproc/remoteproc2/state


之后執行以下命令,給予 dsp_relay_server 和 test_cv 文件可執行權限:

chmod 777 /userdata/script/lib/dsp_relay_server
chmod 777 /userdata/script/cv/bin/test_cv


最后進(jìn)入 script/cv 文件夾,執行以下命令即可運行全部 25 個(gè) CV 算子示例:

sh run_cv_test.sh


用戶(hù)也可以通過(guò)追加參數的形式指定需要執行的算子,如:

sh run_cv_test.sh roiResize


可以通過(guò)在腳本中追加參數 help 來(lái)顯示所有可執行算子。


以 roiResize 為例,該算子的執行結果如下圖所示:


圖片


此時(shí),在/userdata/script/cv/目錄下會(huì )生成一個(gè) output 文件夾,保存了圖像處理結果,roiResize 算子的輸出文件名為 roi_resize_output.480x380.yuv,原始輸入圖像為/userdata/script/cv/data/500x480.lena.yuv。


我們可以使用 YUV 可視化工具 YUView 查看圖片的處理效果,該工具的下載地址為:https://github.com/IENT/YUView/releases


原始數據和處理結果的可視化效果圖如下所示:


圖片


圖片


關(guān)于 RoiResize 算子的執行過(guò)程分析,以及詳細的 ARM 側調用代碼解讀,可以參考社區文章《在 J5 上使用 DSP 進(jìn)行 RoiResize》。


*博客內容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀(guān)點(diǎn),如有侵權請聯(lián)系工作人員刪除。




相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>