DeepStream 库 (开发者预览)#

DeepStream 库提供 CVCUDANvImageCodecPyNvVideoCodec 模块作为 Python API,以便轻松集成到自定义框架中。开发人员可以使用完全加速的组件,利用直观的 Python API 构建完整的 Python 应用程序。大多数 DeepStream 库构建块及其 Python API 现在都以独立软件包的形式提供。DeepStream 库为 Python 开发人员提供了一种使用单个安装程序安装这些软件包的方法。所有这些软件包都基于相同的 CUDA 版本构建,并已通过指定的驱动程序版本验证。提供了参考应用程序来演示 Python API 的用法。

DeepStream 库安装#

  1. 从 NGC 下载 DeepStream 库 wheel 文件。

  • 从此 NGC 链接 下载 wheel 文件

  1. 安装 DeepStream 库软件包。

$ pip3 install deepstream_libraries-1.1-cp310-cp310-linux_x86_64.whl

DeepStream 库存储库设置#

要运行 示例应用程序,请按照以下步骤操作

  1. 克隆 DeepStream 库存储库。

$ git clone https://github.com/NVIDIA-AI-IOT/deepstream_libraries.git
$ cd deepstream_libraries
  1. 安装依赖项。

安装示例应用程序所需的所有依赖软件包

$ sudo sh scripts/install_dependencies.sh
  1. 下载测试文件

下载图像/视频以运行示例应用程序

$ sh scripts/download_data.sh

DeepStream 库 API 入门#

我们可以使用 DeepStream 库 API 来创建应用程序。

考虑以下参考示例

  • 使用 NvImageCodec 从给定的文件路径读取图像

  • 使用 CVCUDA 和指定尺寸和三次插值方法调整图像大小

  • 使用 NvImageCodec 保存调整大小后的图像

    # Import necessary libraries
    import cvcuda
    from nvidia import nvimgcodec
    
    # Create Decoder
    decoder = nvimgcodec.Decoder()
    
    # Read image with nvImageCodec
    inputImage = decoder.read("path/to/image.jpg")
    
    # Pass it to cvcuda using as_tensor
    nvcvInputTensor = cvcuda.as_tensor(inputImage, "HWC")
    
    # Resize with cvcuda to 320x240
    cvcuda_stream = cvcuda.Stream()
    with cvcuda_stream:
        nvcvResizeTensor = cvcuda.resize(nvcvInputTensor, (320, 240, 3), cvcuda.Interp.CUBIC)
        nvcvResizeTensor.cuda().__cuda_array_interface__
    
    # Write with nvImageCodec
    encoder = nvimgcodec.Encoder()
    output_image_path = "output.jpg"
    encoder.write(output_image_path, nvimgcodec.as_image(nvcvResizeTensor.cuda(), cuda_stream = cvcuda_stream.handle))
    

示例应用程序#

DeepStream 库示例应用程序#

应用程序

描述

分类

一个 CUDA 加速的图像和视频分类管道,集成了 PyTorch 或 TensorRT,可在 NVIDIA GPU 上实现高效处理

对象检测

使用带有 TensorFlow 或 TensorRT 的 CV-CUDA 库进行 GPU 加速对象检测

分割

通过利用带有 PyTorch 或 TensorRT 的 CV-CUDA 库实现 GPU 加速语义分割

调整图像大小

一个示例应用程序,使用 CVCUDA 和 NvImageCodec Python API 解码、调整大小和编码图像

解码视频

使用 PyNvVideoCodec 解码 API 解码编码的比特流

编码视频

使用 PyNvVideoCodec 编码 API 编码原始 YUV 文件

转码视频

使用 PyNvVideoCodec API 转码视频文件

其他参考资料和应用程序#

有关更多参考资料和应用程序,请参阅以下链接