PABannier/sam3.cpp

Fast state-of-the-art image and video segmentation in portable C/C++

解決的問題

執行先進的影像與影片分割模型(如Meta的SAM系列)通常需要沉重的Python環境、PyTorch以及CUDA GPU。sam3.cpp 提供了一個可攜式、高效率的C++實作,讓這些模型能在CPU與Apple Metal GPU上執行,無需Python執行環境或重型相依性。

工作原理

此專案是基於 ggml 張量庫建構的單一檔案C++函式庫。它實作了多種模型家族的推論,包括SAM 2、SAM 2.1、SAM 3與EdgeTAM。支援4位與8位量化,可大幅減少模型大小與記憶體使用。針對SAM 3,整合了文字編碼器與DETR解碼器,以實現文字提示檢測;其他模型則專注於點與框基礎的分割。此外,還包含一個用於跨影片畫格追蹤物件的記憶體池。

適用對象

需要將高品質影像與影片分割整合至C++應用程式的開發者與研究人員,特別是針對邊緣裝置、macOS(透過Metal)或無法安裝完整Python/PyTorch堆疊的環境。

主要亮點

  • 廣泛模型支援:相容SAM 2、SAM 2.1、SAM 3與EdgeTAM。
  • 文字提示檢測:SAM 3允許使用者僅透過輸入描述(例如「貓」)即可分割物件。
  • 極致可攜性:除 ggmlstb 外無其他相依;使用C++14撰寫,不使用例外或繼承。
  • 硬體加速:完全支援Apple Metal GPU加速,用於骨幹網路與Transformer解碼器。
  • 高效量化:大幅減少模型大小(例如,EdgeTAM縮小至15 MB,SAM 2.1 Tiny縮小至22 MB)。
  • 影片追蹤:透過記憶體池支援跨影片畫格的物件追蹤。

相關

  • 專案
  • 專案
  • 專案
  • 專案