SAM C++ TensorRT(实时图像分割)

SPEED SAM C++ TENSORRT

在这里插入图片描述

🌐 1、概述

用于SAM(segment anything model分割一切模型)的TensorRTCUDA优化的高表现C++实现,特别适用于实时图像分割任务。

📢 更新

  • 模型转换:从ONNX模型构建TensorRT引擎以加速推理。
  • 点和边界框分割:通过选定的点或边界框轻松分割图像。
  • FP16精度:在速度与精度之间进行选择,支持FP16和FP32。
  • 动态形状支持:利用优化配置文件高效处理可变输入大小。
  • CUDA优化:利用CUDA进行预处理和有效的内存管理。

📢2、性能

2.1 推理时间

组件SpeedSAM
图像编码器
参数5M
速度8ms
掩码解码器
参数3.876M
速度4ms
完整流程(编码+解码)
参数9.66M
速度12ms

2.2 结果

在这里插入图片描述

📂 3、项目结构

SPEED-SAM-CPP-TENSORRT/
├── include
│   ├── config.h          # 模型配置和宏定义
│   ├── cuda_utils.h      # CUDA工具宏
│   ├── engineTRT.h       # TensorRT引擎管理
│   ├── logging.h         # 日志实用工具
│   ├── macros.h          # API导出/导入宏
│   ├── speedSam.h        # SpeedSam类定义
│   └── utils.h           # 图像处理实用函数
├── src
│   ├── engineTRT.cpp     # TensorRT引擎实现
│   ├── main.cpp          # 主入口点
│   └── speedSam.cpp      # SpeedSam类实现
└── CMakeLists.txt        # CMake配置

🚀 4、编译运行

准备工作

git clone https://github.com/hamdiboukamcha/SPEED-SAM-C-TENSORRT.git
cd SPEED-SAM-CPP-TENSORRT# 创建构建目录并编译
mkdir build && cd build
cmake ..
make -j$(nproc)

注意:根据需要更新CMakeLists.txt中的TensorRT和OpenCV正确路径。

📦 依赖项

  • CUDA:NVIDIA的并行计算平台
  • TensorRT:高性能深度学习推理
  • OpenCV:图像处理库
  • C++17:编译所需的最低标准

🔍 代码概览

主要组件

  • SpeedSam 类 (speedSam.h):管理图像编码和掩码解码。
  • EngineTRT 类 (engineTRT.h):TensorRT引擎创建和推理。
  • CUDA 工具 (cuda_utils.h):CUDA错误处理宏。
  • 配置 (config.h):定义模型参数和精度设置。

关键函数

  • EngineTRT::build:从ONNX模型构建TensorRT引擎。
  • EngineTRT::infer:对提供的输入数据运行推理。
  • SpeedSam::predict:使用输入点或边界框分割图像。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/70374.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【LLAMA】羊驼从LLAMA1到LLAMA3梳理

every blog every motto: Although the world is full of suffering, it is full also of the overcoming of it 0. 前言 LLAMA 1到3梳理 1. LLAMA 1 论文: LLaMA: Open and Efficient Foundation Language Models 时间: 2023.02 1.1 前言…

什么是网络安全?网络安全防范技术包括哪些?

伴随着互联网的发展,它已经成为我们生活中不可或缺的存在,无论是个人还是企业,都离不开互联网。正因为互联网得到了重视,网络安全问题也随之加剧,给我们的信息安全造成严重威胁,而想要有效规避这些风险&…

【从0做项目】Java搜索引擎(7) web模块

阿华代码,不是逆风,就是我疯 你们的点赞收藏是我前进最大的动力!! 希望本文内容能够帮助到你!! 目录 文章导读 零:项目结果展示 一:后端web模块 1:思路 2&#xff1a…

Visual Studio Code 集成 Baidu Comate

文章目录 安装Baidu Comate插件 安装Baidu Comate插件 从左主侧栏中 点击 【扩展】这个图标,然后在上方输入栏中输入 baidu comate —>选中列出的Bai Comate —>点击 【安装】按钮,等待安装完毕…

WeMos D1+PIR+Android 的小场景制作

最近在做一个有趣的小场景功能,其实已经有成熟产品,但是考虑到没法实现场景扩展,所以自己开始动手做。 场景描述:玄关人体感应,有人进门,致欢迎词,有人离开,致欢送词。 硬件设备&a…

Android ListPreference使用

Android ListPreference使用 参考 添加链接描述 导入 androidx.preference.ListPreferenceListPreference是Android中的一个Preference子类,用于显示一个可选择的列表,并且可以保存用户所选择的值。它继承自DialogPreference,可以在用户点击时弹出一个对话框,显示可选择的…

Spring Security实现记住我功能的实战指南

在现代Web应用中,"记住我"功能是提升用户体验的重要特性之一。用户无需在每次访问时重新登录,这不仅方便,还能增强用户对应用的粘性。今天,我们将通过一个具体的实例,详细探讨如何在Spring Security中实现&q…

用命令模式设计一个JSBridge用于JavaScript与Android交互通信

用命令模式设计一个JSBridge用于JavaScript与Android交互通信 在开发APP的过程中,通常会遇到Android需要与H5页面互相传递数据的情况,而Android与H5交互的容器就是WebView。 因此要想设计一个高可用的 J S B r i d g e JSBridge JSBridge,不…

ModuleNotFoundError: No module named ‘timm.optim.novogr两种解决方法

运行报错 from timm.optim.novograd import NovoGradModuleNotFoundError: No module named ‘timm.optim.novograd’。 问题原因 timm版本过高,novograd函数已被抛弃。 解决办法 方法1:安装更低版本的timm pip install timm0.4.12方法2&#xff1a…

DeepSeek 本地部署指南:从零开始搭建 AI 搜索工具

1. 引言 背景介绍 DeepSeek 是一款基于 AI 的搜索工具,能够高效处理海量数据,提供精准的搜索结果。它结合了 Ollama 的模型管理能力,使得部署更加便捷。 为什么选择本地部署 本地部署可以确保数据隐私,避免云端传输的风险&…

昇腾DeepSeek模型部署优秀实践及FAQ

2024年12月26日,DeepSeek-V3横空出世,以其卓越性能备受瞩目。该模型发布即支持昇腾,用户可在昇腾硬件和MindIE推理引擎上实现高效推理,但在实际操作中,部署流程与常见问题困扰着不少开发者。本文将为你详细阐述昇腾 De…

vscode复制到下一行

linux中默认快捷键是ctrl shift alt down/up 但是在vscode中无法使用,应该是被其他的东西绑定了,经测试,可以使用windows下的快捷键shift alt down/up { “key”: “shiftaltdown”, “command”: “editor.action.copyLinesDownAction”…

网络爬虫学习:借助DeepSeek完善爬虫软件,实现模拟鼠标右键点击,将链接另存为本地文件

一、前言 最近几个月里,我一直在学习网络爬虫方面的知识,每有收获都会将所得整理成文发布,不知不觉已经发了7篇日志了: 网络爬虫学习:从百度搜索结果抓取标题、链接、内容,并保存到xlsx文件中 网络爬虫学…

Arduino 第十六章:pir红外人体传感器练习

Arduino 第十六章:PIR 传感器练习 一、引言 在 Arduino 的众多有趣项目中,传感器的应用是非常重要的一部分。今天我们要学习的主角是 PIR(被动红外)传感器。PIR 传感器能够检测人体发出的红外线,常用于安防系统、自动…

CV -- YOLOv8 图像分割(GPU环境)

目录 参考视频: 标注 JSON转为TXT 训练 验证 参考视频: 使用 Yolov8 自定义数据集进行图像分割_哔哩哔哩_bilibili 标注 数据集: 我使用的是一些苹果数据集,可以在我的csdn资源中下载: https://download.csdn.net/do…

深入理解 lua_KFunction 和 lua_CFunction

在 Lua C API 中,lua_KFunction 和 lua_CFunction 是两个核心概念,尤其在处理协程和 C 函数扩展时扮演着至关重要的角色。lua_CFunction 作为一种 C 函数类型,允许开发者将 C 函数注册到 Lua 环境中,使得这些 C 函数可以在 Lua 脚本中被调用,进而实现 Lua 的功能扩展。而 …

基于微信小程序的电影院订票选座系统的设计与实现,SSM+Vue+毕业论文+开题报告+任务书+指导搭建视频

本系统包含用户、管理员两个角色。 用户角色:注册登录、查看首页电影信息推荐、查看电影详情并进行收藏预定、查看电影资讯、在线客服、管理个人订单等。 管理员角色:登录后台、管理电影类型、管理放映厅信息、管理电影信息、管理用户信息、管理订单等。…

【Linux网络编程】应用层协议HTTP(请求方法,状态码,重定向,cookie,session)

🎁个人主页:我们的五年 🔍系列专栏:Linux网络编程 🌷追光的人,终会万丈光芒 🎉欢迎大家点赞👍评论📝收藏⭐文章 ​ Linux网络编程笔记: https://blog.cs…

Vue3 打造 Windows 桌面个性高效组件工具

软件介绍 Widgets 这款基于 Vue3 构建的开源 Windows 桌面小部件工具超实用。 其多样化组件库涵盖超 20 种,从倒计时、打工进度等实用工具,到抖音热榜等实时资讯组件应有尽有,各组件独立运行,满足多场景需求。 高度自定义布局支持…

Tailwind CSS 和 UnoCSS简单比较

一、Tailwind CSS 和 UnoCSS简介 Tailwind CSS 和 UnoCSS 都是流行的原子化 CSS 框架,它们有很多相似之处,但也存在一些明显的区别,以下从多个方面对它们进行比较: 1. 基本概念和原理 Tailwind CSS 是最早提出并推动原子化 CSS…