色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

在NVIDIA Holoscan SDK中使用OpenCV構(gòu)建零拷貝AI傳感器處理管線

NVIDIA英偉達企業(yè)解決方案 ? 來源:NVIDIA英偉達企業(yè)解決方案 ? 2024-07-02 11:50 ? 次閱讀

NVIDIA Holoscan 是 NVIDIA 的跨領(lǐng)域多模態(tài)實時 AI 傳感器處理平臺,為開發(fā)者構(gòu)建端到端傳感器處理管線奠定了基礎(chǔ)。NVIDIA Holoscan SDK 的功能包括:

具有低延遲傳感器和網(wǎng)絡(luò)連接的組合硬件系統(tǒng)

專為數(shù)據(jù)處理和 AI 優(yōu)化的庫

靈活部署:邊緣或云端

多種編程語言,例如 PythonC++

Holoscan SDK 可用于為一系列行業(yè)和用例構(gòu)建流式 AI 管線,包括醫(yī)療設(shè)備、邊緣高性能計算和工業(yè)檢測等。欲了解更多信息,請參閱利用 NVIDIA Holoscan 1.0 開發(fā)生產(chǎn)就緒型 AI 傳感器處理應(yīng)用。

Holoscan SDK 利用軟硬件加速流式 AI 應(yīng)用。它可以與 RDMA 技術(shù)配合使用,通過 GPU 加速功能進一步提高端到端管線性能。端到端傳感器處理管線通常包括:

傳感器數(shù)據(jù)輸入

加速計算和 AI 推理

實時可視化、執(zhí)行和數(shù)據(jù)流出口

該管線中的所有數(shù)據(jù)均存儲在 GPU 內(nèi)存中,Holoscan 原生運算符無需進行主機-設(shè)備內(nèi)存?zhèn)鬏敚涂梢灾苯釉L問這些數(shù)據(jù)。

15a89e78-346f-11ef-a4c8-92fbcf53809c.png

圖 1. 超聲波分割應(yīng)用的典型管線

本文將介紹如何通過集成 Holoscan SDK 和開源庫 OpenCV,實現(xiàn)無需額外內(nèi)存?zhèn)鬏數(shù)亩说蕉?GPU 加速工作流。

什么是 OpenCV?

OpenCV(開源計算機視覺庫)是一個綜合全面的開源計算機視覺庫。它包含 2500 多種算法,例如圖像和視頻處理、物體和人臉檢測,以及 OpenCV 深度學(xué)習(xí)模塊等。

OpenCV 支持 GPU 加速功能,包含一個 CUDA 模塊。該模塊提供了一組利用 CUDA 計算能力的類和函數(shù),它通過 NVIDIA CUDA 運行時 API 實現(xiàn),能夠提供各種實用功能、底層視覺原語和高級算法。

借助 OpenCV 提供的綜合全面的 GPU 加速算法和運算符,開發(fā)者可以基于 Holoscan SDK 實現(xiàn)更加復(fù)雜的管線(圖 2)。

15c61188-346f-11ef-a4c8-92fbcf53809c.png

圖 2. 基于 OpenCV 和 Holoscan SDK

的增強型超聲波分割管線

在 Holoscan SDK 管線中

集成 OpenCV 運算符

如要開始在 Holoscan SDK 管線中集成 OpenCV 運算符,您需要滿足以下條件:

OpenCV >= 4.8.0

Holoscan SDK >= v0.6

如要安裝帶有 CUDA 模塊的 OpenCV,請遵循 opencv/opencv_contrib 提供的指南。如要使用 Holoscan SDK 和 OpenCV CUDA 構(gòu)建鏡像,請參閱 nvidia-holoscan/holohub Dockerfile

https://github.com/nvidia-holoscan/holohub/blob/main/applications/endoscopy_depth_estimation/Dockerfile

張量是 Holoscan SDK 中的數(shù)據(jù)類型,它被定義為單一數(shù)據(jù)類型的多維元素數(shù)組。張量類是 DLManagedTensorCtx 結(jié)構(gòu)的包裝器,DLManagedTensorCtx 結(jié)構(gòu)持有 DLManagedTensor 對象。張量類支持 DLPack 和 NumPy 數(shù)組接口(__array_interface__ 和 __cuda_array_interface__),因此可以與其他 Python 庫(如 CuPy、PyTorch、JAX、TensorFlow 和 Numba)一起使用。

但 OpenCV 的數(shù)據(jù)類型是 GpuMat,它既沒有實現(xiàn) __cuda_array_interface_,也沒有實現(xiàn)標準 DLPack。如要實現(xiàn)端到端 GPU 加速管線或應(yīng)用,需要實現(xiàn)兩個函數(shù)來將 GpuMat 轉(zhuǎn)換為 CuPy 數(shù)組,后者可以直接使用 Holoscan Tensor 訪問,反之亦然。

從 GpuMat 到 CuPy

數(shù)組的無縫零拷貝

OpenCV Python 綁定的 GpuMat 對象提供了一個 cudaPtr 方法,該方法可用于訪問 GpuMat 對象的 GPU 內(nèi)存地址。該內(nèi)存指針可用于直接初始化 CuPy 數(shù)組,從而避免主機和設(shè)備之間發(fā)生不必要的數(shù)據(jù)傳輸,實現(xiàn)高效率的數(shù)據(jù)處理。

下面的函數(shù)用于從 GpuMat 創(chuàng)建 CuPy 數(shù)組。HoloHub 內(nèi)窺鏡深度估計應(yīng)用提供了源代碼。

importcv2
import cupy as cp 
  
def?gpumat_to_cupy(gpu_mat:?cv2.cuda.GpuMat)?->?cp.ndarray: 
????w,?h?=?gpu_mat.size() 
????size_in_bytes?=?gpu_mat.step?*?w 
????shapes = (h, w, gpu_mat.channels()) 
????assert?gpu_mat.channels()?<=3,?"Unsupported?GpuMat?channels"
  
????dtype?=?None
????if?gpu_mat.type()?in?[cv2.CV_8U,cv2.CV_8UC1,cv2.CV_8UC2,cv2.CV_8UC3]: 
????????dtype?=?cp.uint8 
????elif?gpu_mat.type()?==?cv2.CV_8S: 
????????dtype?=?cp.int8 
????elif?gpu_mat.type()?==?cv2.CV_16U: 
????????dtype?=?cp.uint16 
????elif?gpu_mat.type()?==?cv2.CV_16S: 
????????dtype?=?cp.int16 
????elif?gpu_mat.type()?==?cv2.CV_32S: 
????????dtype?=?cp.int32 
????elif?gpu_mat.type()?==?cv2.CV_32F: 
????????dtype?=?cp.float32 
????elif?gpu_mat.type()?==?cv2.CV_64F: 
????????dtype?=?cp.float64? 
  
assert?dtype?is?not?None,?"Unsupported?GpuMat?type"
???? 
????mem?=?cp.cuda.UnownedMemory(gpu_mat.cudaPtr(),?size_in_bytes,?owner=gpu_mat) 
????memptr?=?cp.cuda.MemoryPointer(mem,?offset=0) 
????cp_out = cp.ndarray( 
        shapes, 
        dtype=dtype, 
        memptr=memptr, 
        strides=(gpu_mat.step, gpu_mat.elemSize(), gpu_mat.elemSize1()), 
    ) 
????return?cp_out

請注意,我們在此函數(shù)中使用了非自有內(nèi)存 API 創(chuàng)建 CuPy 數(shù)組。在某些情況下,OpenCV 運算符會創(chuàng)建一個需要由 CuPy 處理的新設(shè)備內(nèi)存,其生命周期不限于一個運算符,而是整個管線。在這種情況下,從 GpuMat 啟動的 CuPy 數(shù)組會知道所有者并保留對對象的引用。更多詳情,請參閱 CuPy 互操作性文檔

https://docs.cupy.dev/en/stable/user_guide/interoperability.html#device-memory-pointers

從 Holoscan Tensor 到

GpuMat 的無縫零拷貝

隨著 OpenCV 4.8 的發(fā)布,OpenCV 的 Python 綁定現(xiàn)在支持直接從 GPU 內(nèi)存指針初始化 GpuMat 對象。這一功能通過與 GPU 駐留數(shù)據(jù)直接交互,來提高數(shù)據(jù)整合和處理效率,避免了主機和設(shè)備內(nèi)存之間的數(shù)據(jù)傳輸。

在基于 Holoscan SDK 的管線應(yīng)用中,可以通過 CuPy 數(shù)組提供的 __cuda_array_interface__ 獲取 GPU 內(nèi)存指針。請參考下面概述的函數(shù),了解如何利用 CuPy 數(shù)組創(chuàng)建 GpuMat 對象。有關(guān)實現(xiàn)詳情,請參見HoloHub 內(nèi)窺鏡深度估計應(yīng)用中提供的源代碼

https://github.com/nvidia-holoscan/holohub/blob/main/applications/endoscopy_depth_estimation/endoscopy_depth_estimation.py#L28

import?cv2 
import?cupy?as?cp 
  
def?gpumat_from_cp_array(arr:?cp.ndarray)?->?cv2.cuda.GpuMat: 
????assert?len(arr.shape)?in?(2,?3),?"CuPy?array?must?have?2?or?3?dimensions?to?be?a?valid?GpuMat"
????type_map?=?{ 
????????cp.dtype('uint8'):?cv2.CV_8U, 
????????cp.dtype('int8'):?cv2.CV_8S, 
????????cp.dtype('uint16'):?cv2.CV_16U, 
????????cp.dtype('int16'):?cv2.CV_16S, 
????????cp.dtype('int32'):?cv2.CV_32S, 
????????cp.dtype('float32'):?cv2.CV_32F, 
????????cp.dtype('float64'):?cv2.CV_64F 
????} 
????depth?=?type_map.get(arr.dtype) 
????assert?depth?is?not?None,?"Unsupported?CuPy?array?dtype"
????channels?=?1?if?len(arr.shape)?==?2?else?arr.shape[2] 
????mat_type?=?depth?+?((channels?-?1)?<

整合 OpenCV 運算符

有了上述兩個函數(shù),您就可以在基于 Holoscan SDK 的管線中進行任何 OpenCV-CUDA 操作,而無需進行內(nèi)存?zhèn)鬏敗崿F(xiàn)步驟如下:

在調(diào)用 OpenCV 運算符的位置創(chuàng)建自定義運算符。詳情參見 Holoscan SDK 示例文檔

https://docs.nvidia.com/holoscan/sdk-user-guide/holoscan_create_operator.html#creating-a-custom-operator-python

在運算符的計算函數(shù)中:

a.接收前一個運算符的信息,并從HoloscanTensor創(chuàng)建一個CuPy 數(shù)組

b.調(diào)用gpumat_from_cp_array以創(chuàng)建GpuMat

c.使用自定義OpenCV運算符進行處理

d.調(diào)用gpumat_to_cupy,從GpuMat創(chuàng)建CuPy數(shù)組

請看下面的演示代碼。完整的源代碼請參見 HoloHub 內(nèi)窺鏡深度估計應(yīng)用

https://github.com/nvidia-holoscan/holohub/blob/main/applications/endoscopy_depth_estimation/endoscopy_depth_estimation.py#L161

defcompute(self,op_input,op_output,context):
        stream = cv2.cuda_Stream() 
        message = op_input.receive("in") 
  
        cp_frame = cp.asarray(message.get(""))  # CuPy array 
        cv_frame = gpumat_from_cp_array(cp_frame)  # GPU OpenCV mat 
  
        ## Call OpenCV Operator  
        cv_frame = cv2.cuda.XXX(hsv_merge, cv2.COLOR_HSV2RGB) 
  
        cp_frame = gpumat_to_cupy(cv_frame) 
        cp_frame = cp.ascontiguousarray(cp_frame) 
  
        out_message = Entity(context) 
        out_message.add(hs.as_tensor(cp_frame), "") 
op_output.emit(out_message,"out")

總結(jié)

要將 OpenCV CUDA 運算符集成到基于 Holoscan SDK 構(gòu)建的應(yīng)用中,只需要實現(xiàn)兩個函數(shù)即可促成 OpenCV GpuMat 和 CuPy 數(shù)組間的轉(zhuǎn)換。借助這兩個函數(shù),您可以在自定義運算符中直接訪問 Holoscan Tensors。通過調(diào)用這些函數(shù),您可以無縫創(chuàng)建端到端 GPU 加速應(yīng)用,而不再需要通過內(nèi)存?zhèn)鬏攣硖岣咝阅堋?/p>

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 傳感器
    +關(guān)注

    關(guān)注

    2561

    文章

    52198

    瀏覽量

    761645
  • NVIDIA
    +關(guān)注

    關(guān)注

    14

    文章

    5188

    瀏覽量

    105413
  • OpenCV
    +關(guān)注

    關(guān)注

    31

    文章

    642

    瀏覽量

    42230

原文標題:在 NVIDIA Holoscan SDK 中使用 OpenCV 構(gòu)建零拷貝 AI 傳感器處理管線

文章出處:【微信號:NVIDIA-Enterprise,微信公眾號:NVIDIA英偉達企業(yè)解決方案】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 0人收藏

    評論

    相關(guān)推薦

    如何使用SDK獨立模式下的OpenCV應(yīng)用程序

    嗨,大家好,我是新手SDK用戶。我使用vivado hls來合成一個簡單的圖像處理算法,并構(gòu)建了我現(xiàn)在使用sdk的硬件平臺,我想使用sdk
    發(fā)表于 05-04 17:09

    NVIDIA Jetson的相關(guān)資料分享

    。Jetson是以機器學(xué)習(xí)應(yīng)用為目的而設(shè)計的,具有GPU的并行處理用的嵌入式計算板,用于高速執(zhí)行圖像識別、機器學(xué)習(xí)和自動駕駛等。爆炸式增長的AI模型的復(fù)雜性近年來,由于傳感器技術(shù)的革新,IoT設(shè)備比以往發(fā)揮
    發(fā)表于 11-09 08:26

    MFC中使OpenCV的教程下載

    MFC中使OpenCV的教程下載
    發(fā)表于 06-26 14:35 ?2次下載

    NVIDIA DRIVE OS 5.2.6 Linux SDK發(fā)布 為加速計算和AI而設(shè)計

    DRIVE SDK的基礎(chǔ),NVIDIA DRIVE OS專為加速計算和AI而設(shè)計。它包括用于高效并行計算的NVIDIA CUDA、用于實時AI
    的頭像 發(fā)表于 09-03 15:03 ?7492次閱讀

    NVIDIA 發(fā)布適用于醫(yī)療設(shè)備和計算傳感系統(tǒng)的 AI 計算平臺

    Clara Holoscan MGX 醫(yī)療級平臺配備 NVIDIA Orin 系統(tǒng)和 NVIDIA AI 軟件棧,為嵌入式計算領(lǐng)域的領(lǐng)先企業(yè)所構(gòu)建
    發(fā)表于 03-23 11:36 ?2085次閱讀
    <b class='flag-5'>NVIDIA</b> 發(fā)布適用于醫(yī)療設(shè)備和計算<b class='flag-5'>傳感</b>系統(tǒng)的 <b class='flag-5'>AI</b> 計算平臺

    NVIDIA發(fā)布Clara Holoscan MGX醫(yī)療級平臺

    Clara Holoscan MGX 醫(yī)療級平臺配備 NVIDIA Orin 系統(tǒng)和 NVIDIA AI 軟件棧,為嵌入式計算領(lǐng)域的領(lǐng)先企業(yè)所構(gòu)建
    的頭像 發(fā)表于 03-28 09:13 ?1747次閱讀

    使用Clara Holoscan SDK增強AI醫(yī)療設(shè)備流式處理工作流

      NVIDIA JetPack SDK 包含 Clara Holoscan SDK 的基本操作系統(tǒng)。對于版本 0.2 , JetPack SDK
    的頭像 發(fā)表于 08-15 14:50 ?1524次閱讀
    使用Clara <b class='flag-5'>Holoscan</b> <b class='flag-5'>SDK</b>增強<b class='flag-5'>AI</b>醫(yī)療設(shè)備流式<b class='flag-5'>處理</b>工作流

    使用 NVIDIA DeepStream SDK 6.2 順利開發(fā)視覺 AI 應(yīng)用

    NVIDIA 宣布用于構(gòu)建高性能視頻分析和流式傳輸應(yīng)用的人工智能(AI)分析工具套件? NVIDIADeepStream SDK 6.2 全面上市。此次更新增加了新的功能,包括改進后的
    的頭像 發(fā)表于 02-11 10:25 ?1140次閱讀

    使用NVIDIA Holoscan for Media構(gòu)建下一代直播媒體應(yīng)用

    NVIDIA Holoscan for Media 現(xiàn)已向所有希望完全可重復(fù)使用的集群上構(gòu)建下一代直播媒體應(yīng)用的開發(fā)者開放。
    的頭像 發(fā)表于 04-16 14:04 ?930次閱讀

    利用NVIDIA Holoscan 1.0開發(fā)生產(chǎn)就緒型AI傳感器處理應(yīng)用

    邊緣 AI 開發(fā)者正在構(gòu)建用于安全關(guān)鍵型和受監(jiān)管用例的 AI 應(yīng)用和產(chǎn)品。借助 NVIDIA Holoscan 1.0,這些應(yīng)用可在幾毫秒內(nèi)
    的頭像 發(fā)表于 04-25 09:58 ?657次閱讀

    NVIDIA發(fā)布DeepStream 7.0,助力下一代視覺AI開發(fā)

    NVIDIA DeepStream 是一款功能強大的 SDK,能夠提供用于構(gòu)建端到端視覺 AI 管線的 GPU 加速
    的頭像 發(fā)表于 05-23 10:09 ?1028次閱讀
    <b class='flag-5'>NVIDIA</b>發(fā)布DeepStream 7.0,助力下一代視覺<b class='flag-5'>AI</b>開發(fā)

    NVIDIA 通過 HoloscanNVIDIA IGX 提供企業(yè)軟件支持,實現(xiàn)邊緣實時醫(yī)療、工業(yè)和科學(xué) AI 應(yīng)用

    美敦力、SETI協(xié)會以及領(lǐng)先的制造商正在構(gòu)建? NVIDIA IGX 系統(tǒng), 為 ?AI 工業(yè)邊緣賦能 ? ? COMPUTEX — 2024 年 6 月 2 日 —
    發(fā)表于 06-03 09:48 ?430次閱讀
      <b class='flag-5'>NVIDIA</b> 通過 <b class='flag-5'>Holoscan</b> 為 <b class='flag-5'>NVIDIA</b> IGX 提供企業(yè)軟件支持,實現(xiàn)邊緣實時醫(yī)療、工業(yè)和科學(xué) <b class='flag-5'>AI</b> 應(yīng)用

    NVIDIA 通過 HoloscanNVIDIA IGX 提供企業(yè)軟件支持

    美敦力、SETI 協(xié)會以及領(lǐng)先制造商正在構(gòu)建 NVIDIA IGX 系統(tǒng),為 AI 工業(yè)邊緣賦能。 ? NVIDIA 于6月2日宣布,集成
    的頭像 發(fā)表于 06-04 10:21 ?715次閱讀

    Microchip PolarFire? FPGA以太網(wǎng)傳感器橋與NVIDIA Holoscan傳感器處理平臺兼容的人工智能(AI)驅(qū)動的傳感器處理系統(tǒng)

    Microchip Technology推出了PolarFire? FPGA以太網(wǎng)傳感器橋,以幫助開發(fā)人員創(chuàng)建與NVIDIA Holoscan傳感器
    的頭像 發(fā)表于 11-19 09:29 ?1021次閱讀

    Microchip發(fā)布PolarFire FPGA以太網(wǎng)傳感器橋接器

    為了幫助開發(fā)人員構(gòu)建人工智能(AI)驅(qū)動的傳感器處理系統(tǒng),Microchip Technology Inc.(微芯科技公司)發(fā)布了支持NVIDIA
    的頭像 發(fā)表于 11-25 16:43 ?707次閱讀
    主站蜘蛛池模板: 久久99国产视频 | 国产精品成人A蜜柚在线观看 | 亚洲精品在线免费 | aaaaaaa一级毛片 | 久久国产欧美 | 入室强伦女教师被学生 | 手机看片国产免费 | 亚洲午夜精品久久久久久抢 | 二色AV天堂在线 | jiizzyou欧美喷液 | 免费三级现频在线观看 | 麻豆精品人妻一区二区三区蜜桃 | 亚洲精品免费在线 | 男人团apk | 毛片TV网站无套内射TV网站 | thermo脱色摇床安卓下载 | 老师的快感电影完整版 | 麻花豆传媒剧国产免费mv观看 | 制服国产欧美亚洲日韩 | 欧美四虎精品二区免费 | 亚洲日本乱码中文论理在线电影 | 亚洲精品m在线观看 | 国产亚洲美女在线视频视频 | 色色色999 | 91精品视频网站 | 日韩 国产 欧美视频二区 | 国产精品单位女同事在线 | 国产一区二区无码蜜芽精品 | 热热久久这里只有精品 | 嗯别插太快好深再深点 | 日韩丰满少妇无码内射 | 美女被爆插 | 挺进老师的紧窄小肉六电影完整版 | 总攻催眠受的高h巨肉np | 欧美另类老少配hd | 一日本道伊人久久综合影 | 成人天堂资源WWW在线 | 不用播放器的黄 | 色欲久久精品AV无码 | 国产高潮久久精品AV无码 | 99热精品一区 |

    電子發(fā)燒友

    中國電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會員交流學(xué)習(xí)
    • 獲取您個性化的科技前沿技術(shù)信息
    • 參加活動獲取豐厚的禮品