SAM 2
SAM 2は動画向けに構築されたstreaming-memoryアーキテクチャでSAMを拡張し、点またはボックスのクリックを物体マスクに変換します。LibreYOLOはLibreYOLO()検出器ファクトリとは別の専用LibreSAMファクトリを通じて、その画像セグメンテーション経路に対応します。
- タスク
- instance segmentation
- サイズ
- インストール
pip install libreyolo- サポートティア
- 姉妹ティア、v以降。独自のファクトリと契約を持つ、独立した製品インターフェースです。
- ライセンス
- コード:MIT、重み:Apache-2.0。商用利用
インストール
SAM 2にはsam追加パッケージが必要で、transformersとtimmがインストールされます。
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)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.pt | apache-2.0 | |
| LibreSAM2small.pt | apache-2.0 | |
| LibreSAM2base-plus.pt | apache-2.0 | |
| LibreSAM2large.pt | apache-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の引用ブロックからコピーしています。