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まで)。
- 動画追跡: メモリバンクを使用して、動画フレーム間でのオブジェクト追跡をサポート。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト