BiRefNet C++ TensorRT (二分类图像分割)

BiRefNet C++ TensorRT 二分类图像分割
部署运行你感兴趣的模型镜像

BiRefNet C++ TensorRT (二分类图像分割)

利用TensorRTCUDA的双边参考网络(BiRefNet)的高性能c++实现,针对实时高分辨率二分类图像分割进行了优化。
在这里插入图片描述


BiRefNet c++ TENSORRT旨在有效地在GPU上运行双边参考分割任务。通过利用TensorRT的优化和CUDA内核,它旨在以最小的延迟提供最先进的性能。

主要特性

  • TensorRT 加速:使用序列化的 TRT 引擎加速分割任务的推理过程。
  • CUDA 集成:全面基于 GPU 的预处理、后处理及内存管理。
  • 高分辨率支持:开箱即用,能够处理高分辨率图像(例如 1024x1024)。
  • 易于集成:采用 C++17 编码,便于集成到现有的流程中。

📢 最新动态

  • 增强的双边参考:通过利用双重参考指导,提升二分法分割输出的质量。
  • 改进的内存占用:针对大批次或高分辨率工作负载优化了 GPU 分配。
  • 可配置精度:支持 FP16FP32 模式(需要支持半精度的 GPU)。

📂 项目结构

BiRefNet/ 
├── include 
│ └── birefnet.h # Main BiRefNet class definition
├── src 
│ └── birefnet.cpp # Implementation of the BiRefNet class
├── CMakeLists.txt # CMake configuration 
└── main.cpp #
  • include/birefnet.h
    头文件,定义了 BiRefNet 类,该类负责 TensorRT 引擎的创建、执行和内存缓冲区管理。

  • src/birefnet.cpp
    源代码实现,包括加载序列化引擎、运行推理及处理输出后处理。

  • CMakeLists.txt
    使用 CMake 构建项目的配置文件。根据需要调整 TensorRT、CUDA 和 OpenCV 的路径。

  • main.cpp
    一个最小示例,演示了如何加载模型、对图像或视频进行推理并将结果保存。

🚀 安装步骤

  1. 克隆仓库

    git clone https://github.com/hamdiboukamcha/BiRefNet-Cpp-TensorRT.git
    cd BiRefNet-Cpp-TensorRT
    mkdir build && cd build
    cmake ..
    make -j$(nproc)
    

📦 依赖项

  • CUDA
    用于 GPU 加速和内核启动(例如,CUDA 11.x 或更新版本)。

  • TensorRT
    高性能深度学习推理库(推荐使用 v8.x 或更新版本)。

  • OpenCV
    用于图像加载、预处理和基本可视化。

  • C++17
    本项目使用现代 C++ 特性。请确保您的编译器支持 C++17 或更高版本。

🔍 代码概览

主要组件

  • BiRefNet 类

    • 从给定的引擎/模型路径初始化 TensorRT 引擎。
    • 处理预处理(图像大小调整、均值/标准差归一化等)。
    • 运行推理并将输出后处理为分割图。
    • 管理 CUDA 资源和流。
  • Logger 类(在 main.cpp 中)

    • 实现 TensorRT 的 ILogger 接口以进行自定义日志记录。

主要函数

  • BiRefNet::BiRefNet(…)
    构造函数,将 .trt(序列化的 TensorRT)引擎加载到内存中。

  • BiRefNet::predict(cv::Mat& image)
    主要推理函数:接受一个 OpenCV cv::Mat 作为输入,返回分割结果作为 cv::Mat。

  • BiRefNet::preprocess(…)
    将图像转换为归一化的浮点数(均值减法、除以标准差等)。

  • BiRefNet::postprocess(…)
    将原始输出重塑为有意义的图像数据,通常是一个 8 位或 32 位矩阵用于分割。

🎬 使用方法

准备TensorRT推理引擎:

  1. 将模型转换为 ONNX 格式,然后构建一个 TensorRT 引擎(例如,使用 trtexec 或自定义构建工具)。选择使用BiRefNet的预训练模型

    trtexec --onnx=BiRefNet-general-resolution_512x512-fp16-epoch_216.onnx --saveEngine=BiRefNet-tiny.engine --fp16
    

    在这里插入图片描述

  2. 推理结果

    ./BiRefNetTRT
    Loading model from BiRefNet-tiny.engine...
    The model has been successfully loaded!
    Folder already exists!
    [Info] Processing time: 2452 ms for 1693479941020.jpg
    [Info] Saving result to: results/1693479941020.jpg
    [Info] Processing finished.
    

您可能感兴趣的与本文相关的镜像

PyTorch 2.5

PyTorch 2.5

PyTorch
Cuda

PyTorch 是一个开源的 Python 机器学习库,基于 Torch 库,底层由 C++ 实现,应用于人工智能领域,如计算机视觉和自然语言处理

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值