SAM
SAM(Segment Anything)は点またはボックスのクリックを物体マスクに変換します。プロンプト可能なモデルには異なる呼び出し形式が必要なため、LibreYOLOはLibreYOLO()検出器ファクトリとは別の専用LibreSAMファクトリから読み込みます。
- タスク
- instance segmentation
- サイズ
- base, large, huge at 1024 px
- インストール
pip install libreyolo- サポートティア
- 姉妹ティア、v以降。独自のファクトリと契約を持つ、独立した製品インターフェースです。
- ライセンス
- コード:MIT、重み:Apache-2.0。商用利用
インストール
SAMにはsam追加パッケージが必要で、transformersとtimmがインストールされます。
pip install "libreyolo[sam]"推論
LibreSAM(...)はLibreYOLO(...)とは別のエントリポイントです。空間プロンプトなしの
順伝播には意味がないため、検出器ではなくプロンプト可能なセグメンターを返します。この
ファミリーにlibreyolo predict CLIコマンドはありません。Python APIを使ってください。
from libreyolo import LibreSAM, SAMPLE_IMAGE # "base"は初回使用時にfacebook/sam-vit-baseを自動ダウンロード# ほかのサイズ: "large", "huge"("b"/"l"/"h"も使用可能)model = LibreSAM("base") # 点プロンプト。[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 LibreSAM, SAMPLE_IMAGE model = LibreSAM("base") # 画像エンコーダーは計算負荷が高い部分。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のSAMは推論専用で、動画追跡は対象外です。
入力ソースの種類については推論を参照してください。
バリアント
ViT画像エンコーダーのサイズはbase、large、hugeの3種類で、すべて固定1024 px入力です。 このファミリーでは精度またはレイテンシのベンチマークがまだ公開されていないため、サイズの選択は エンコーダーの重さとマスク品質の直接的なトレードオフになります。baseはエンコードが最も速く、 hugeが最も重いモデルです。
ライセンス
ダウンロードする特定の重みについて、Hugging Faceリポジトリのライセンスを確認してください。LibreYOLO orgの各チェックポイントにはライセンスが付与されており、同じファミリー内でも常に同一とは限りません。そのリポジトリが正式な情報源です。以下の概要は、このページを最後に検証した時点で適用されていた内容を示します。
これは関連するライセンスの説明であり、法的助言ではありません。商用上重要な場合は、自分でライセンスを読み、専門家の助言を受けてください。
- 原著作物
- SAM (Segment Anything), Meta AI Research (FAIR)
- アップストリームのライセンス
- Apache-2.0
- アップストリームのソース
- github.com/facebookresearch/segment-anything
- LibreYOLOのコード
- MIT
- 重み
- Apache-2.0、著者が配布。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 does not mirror SAM-1 weights on its own Hugging Face org: LibreSAM downloads the base, large and huge checkpoints directly from Meta's own facebook/sam-vit-base, facebook/sam-vit-large and facebook/sam-vit-huge repositories, each tagged Apache-2.0 there as well.
LibreYOLOはSAM-1の重みの独自コピーをホストしません。LibreSAM("base")、"large"、
"huge"は、Meta自身のHugging Faceリポジトリfacebook/sam-vit-base、
facebook/sam-vit-large、facebook/sam-vit-hugeから直接ダウンロードします。それぞれが
LibreYOLOとは独立してApache-2.0と明記されています。
引用
@article{kirillov2023segany,
title={Segment Anything},
author={Kirillov, Alexander and Mintun, Eric and Ravi, Nikhila and Mao, Hanzi and Rolland, Chloe and Gustafson, Laura and Xiao, Tete and Whitehead, Spencer and Berg, Alexander C. and Lo, Wan-Yen and Doll{\'a}r, Piotr and Girshick, Ross},
journal={arXiv:2304.02643},
year={2023}
}著者によるgithub.com/facebookresearch/segment-anything#citing-segment-anythingの引用ブロックからコピーしています。