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允许用户仅通过输入描述(例如“猫”)即可分割对象。
- 极致便携性:除
ggml和stb外无其他依赖;使用C++14编写,不使用异常或继承。 - 硬件加速:完全支持Apple Metal GPU加速,用于骨干网络和Transformer解码器。
- 高效量化:大幅减少模型大小(例如,EdgeTAM缩小至15 MB,SAM 2.1 Tiny缩小至22 MB)。
- 视频跟踪:通过内存池支持跨视频帧的对象跟踪。
相关
- 项目
- 项目
- 项目
- 项目