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.pswp.cn/diannao/70374.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/70374.shtml
英文地址,請注明出處:http://en.pswp.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…