SAM 2

SAM 2は動画向けに構築されたstreaming-memoryアーキテクチャでSAMを拡張し、点またはボックスのクリックを物体マスクに変換します。LibreYOLOはLibreYOLO()検出器ファクトリとは別の専用LibreSAMファクトリを通じて、その画像セグメンテーション経路に対応します。

タスク
instance segmentation
サイズ
インストール
pip install libreyolo
サポートティア
姉妹ティア、v以降。独自のファクトリと契約を持つ、独立した製品インターフェースです。
アップストリーム
Meta FAIRのSAM 2、Apache-2.0。論文ソース
ライセンス
コード:MIT、重み:Apache-2.0。商用利用

インストール

SAM 2にはsam追加パッケージが必要で、transformerstimmがインストールされます。

bash
pip install "libreyolo[sam]"

推論

LibreSAM(...)(またはファミリー固有のLibreSAM2(...))はLibreYOLO(...)とは別の エントリポイントです。空間プロンプトなしの順伝播には意味がないため、検出器ではなく プロンプト可能なセグメンターを返します。このファミリーにlibreyolo predict CLIコマンドは ありません。Python APIを使ってください。対応するのは画像セグメンテーションだけで、SAM 2の video-memory追跡はここでは対象外です。

点とボックスのプロンプト
from libreyolo import LibreSAM, SAMPLE_IMAGE # サイズの別名: "sam2-tiny", "sam2-small", "sam2-base-plus",# "sam2-large"(短縮形"sam2-t"/"sam2-s"/"sam2-bp"/"sam2-l"も使用可能)model = LibreSAM("sam2-large") # 点プロンプト。[x, y]はピクセル座標、ラベル1は前景result = model.predict(SAMPLE_IMAGE, points=[640, 420], labels=[1])print(result.masks.xy)      # マスクごとのポリゴンprint(result.boxes.xyxy)    # マスクから導出した外接ボックス # 点の代わりにボックスプロンプトresult = model.predict(SAMPLE_IMAGE, bboxes=[300, 200, 900, 700]) # プロンプトなしでは画像全体をセグメンテーション(簡略化された自動# マスク生成器であり、網羅的な参照実装ではない)result = model.predict(SAMPLE_IMAGE)
1回エンコードして複数回プロンプト
from libreyolo import LibreSAM2, SAMPLE_IMAGE # ファミリー固有クラスには"sam2-"接頭辞なしでサイズを指定model = LibreSAM2("large") # 画像エンコーダーは計算負荷が高い部分。set_image()で1回実行し# 以後のpredict()呼び出しはキャッシュ済み埋め込みベクトルを再利用model.set_image(SAMPLE_IMAGE)a = model.predict(points=[640, 420], labels=[1])b = model.predict(bboxes=[300, 200, 900, 700])model.reset_image()

点プロンプトは1個の物体に[x, y]、複数の物体に[[x, y], ...]、またはnumpy配列を 受け付けます。labelsは各点を1(前景)または0(背景)として示し、デフォルトでは すべて前景です。ボックスプロンプトは[x1, y1, x2, y2]またはボックスのリストを受け取り、 ボックスごとに1個のマスクを生成します。両方のプロンプトを省略すると、密なグリッドを プロンプトとして画像全体をセグメンテーションし、信頼度が高く重複しないマスクを維持します。 この「すべてをセグメンテーション」モードは参照用の自動マスク生成器より簡略化されており、 混雑した場面ではセグメンテーションが不足する可能性があります。そのため、実際の点または ボックスプロンプトを使う経路が正確です。confは物体検出の信頼度ではなく、予測マスクの品質 (IoU)で絞り込みます。すべての候補を維持するには0.0を渡します。multimask=Trueは、 最良の1個だけでなく、プロンプトごとにSAMの全体と部分の曖昧性を表す3個のマスクをすべて返します。 device=はモデルを移動し、set_image()セッションが有効ならキャッシュ済み埋め込みベクトルも 移動します。プロンプト可能なマスクには固定クラスセットがないため、すべてのマスクのクラスIDは 0、名前は"object"です。train()val()export()track()はすべて、このファミリーでは NotImplementedErrorを発生させます。ここでLibreYOLOが対応するのは画像推論です。 入力ソースの種類については推論を参照してください。

バリアント

Hieraバックボーンのサイズはtiny、small、base-plus、largeの4種類で、すべて同じ入力解像度です。 このファミリーでは精度またはレイテンシのベンチマークがまだ公開されていないため、サイズの選択は エンコーダーの重さとマスク品質の直接的なトレードオフになります。tinyはエンコードが最も速く、 largeが最も重いモデルです。

チェックポイント

このファミリーで公開されているすべての重みファイルです。

ファイル入力(px)重みのライセンス
Instance segmentation
LibreSAM2tiny.ptapache-2.0
LibreSAM2small.ptapache-2.0
LibreSAM2base-plus.ptapache-2.0
LibreSAM2large.ptapache-2.0

上記のすべてのファイルは現在LibreYOLO orgにあり、初回使用時にダウンロードされます。

ライセンス

ダウンロードする特定の重みについて、Hugging Faceリポジトリのライセンスを確認してください。LibreYOLO orgの各チェックポイントにはライセンスが付与されており、同じファミリー内でも常に同一とは限りません。そのリポジトリが正式な情報源です。以下の概要は、このページを最後に検証した時点で適用されていた内容を示します。

これは関連するライセンスの説明であり、法的助言ではありません。商用上重要な場合は、自分でライセンスを読み、専門家の助言を受けてください。

原著作物
SAM 2, Meta FAIR
アップストリームのライセンス
Apache-2.0
アップストリームのソース
github.com/facebookresearch/sam2
LibreYOLOのコード
MIT
重み
Apache-2.0、huggingface.co/LibreYOLOで再公開
解釈
Apache-2.0 is a permissive license, so this code and these weights can be used in commercial and closed-source products. It asks you to keep the license text and attribution notices with any copy you redistribute, and it grants a patent license. LibreYOLO loads SAM 2 through the Apache-2.0 Transformers implementation and republishes Transformers-compatible snapshots of the tiny, small, base-plus and large checkpoints on its own Hugging Face org, tagged Apache-2.0 there as well. LibreYOLO ships image inference only; SAM 2's video-memory tracking is out of scope for this family.

引用

@article{ravi2024sam2,
  title={SAM 2: Segment Anything in Images and Videos},
  author={Ravi, Nikhila and Gabeur, Valentin and Hu, Yuan-Ting and Hu, Ronghang and Ryali, Chaitanya and Ma, Tengyu and Khedr, Haitham and R{\"a}dle, Roman and Rolland, Chloe and Gustafson, Laura and Mintun, Eric and Pan, Junting and Alwala, Kalyan Vasudev and Carion, Nicolas and Wu, Chao-Yuan and Girshick, Ross and Doll{\'a}r, Piotr and Feichtenhofer, Christoph},
  journal={arXiv preprint arXiv:2408.00714},
  url={https://arxiv.org/abs/2408.00714},
  year={2024}
}

著者によるgithub.com/facebookresearch/sam2#citing-sam-2の引用ブロックからコピーしています。

LibreYOLO v1.5.0で検証済みです。このページのサポート表、チェックポイント、ベンチマーク値は手作業で記述したものではなく、リリース済みライブラリと公開済みの重みから生成されています。