PABannier/sam3.cpp
Fast state-of-the-art image and video segmentation in portable C/C++
해결하는 문제
Meta의 SAM 시리즈와 같은 최첨단 이미지 및 비디오 세그멘테이션 모델을 실행하려면 일반적으로 무거운 Python 환경, PyTorch, CUDA GPU가 필요합니다. sam3.cpp는 Python 런타임이나 무거운 종속성 없이 CPU 및 Apple Metal GPU에서 이러한 모델을 실행할 수 있는 포터블하고 고성능 C++ 구현을 제공합니다.
작동 방식
이 프로젝트는 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 가속을 완전히 지원합니다.
- 효율적인 양자화: 모델 크기를 극적으로 줄입니다 (예: EdgeTAM은 15MB로, SAM 2.1 Tiny는 22MB로).
- 비디오 추적: 메모리 백을 사용하여 동영상 프레임 간 객체 추적을 지원합니다.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트