PicoSAM3

PicoSAM3はSAM 2.1とSAM 3から蒸留された小型CNNで、Sony IMX500のようなセンサー上のボックスプロンプト指定ROIセグメンテーション向けに構築されています。LibreYOLOはLibreYOLO()検出器ファクトリーとは別の専用LibreSAMファクトリーを通じて、ボックスプロンプトだけに対応します。

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

インストール

PicoSAM3には sam 追加パッケージが必要です。推論はネイティブの非 transformers CNNで実行されますが、LibreYOLO独自の重みのダウンロードには引き続き transformers のHugging Faceツールを使用します。

bash
pip install "libreyolo[sam]"

推論

LibreSAM(...)(またはファミリー固有の LibrePicoSAM3(...))は LibreYOLO(...) とは別のエントリポイントです。プロンプトがなければここでの順伝播に意味がないため、検出器ではなくプロンプト指定可能なセグメンターを返します。このファミリーには libreyolo predict CLIコマンドがありません。Python APIを使用してください。

ボックスプロンプト
from libreyolo import LibreSAM, SAMPLE_IMAGE # PicoSAM3のサイズはpicoのみで他の別名は不要model = LibreSAM("picosam3") # bboxes=は唯一対応するプロンプト [x1, y1, x2, y2]またはボックス一覧で# ボックスごとに1マスク 各ボックスを10%拡大して正方形にし画像内に収め# CNN実行前に96x96へリサイズresult = model.predict(SAMPLE_IMAGE, bboxes=[300, 200, 900, 700])print(result.masks.xy)      # マスクごとのポリゴンprint(result.boxes.xyxy)    # マスクから得た外接ボックス
1回エンコードして複数回プロンプトを指定
from libreyolo import LibrePicoSAM3, SAMPLE_IMAGE model = LibrePicoSAM3() # set_image()は元画像をキャッシュ PicoSAM3はボックスごとにCNN全体を順伝播# するため他のSAMファミリーのようにエンコーダー経路ではなく# 画像の読み込みとデコードを省略model.set_image(SAMPLE_IMAGE)a = model.predict(bboxes=[300, 200, 900, 700])b = model.predict(bboxes=[100, 100, 400, 400])model.reset_image()

PicoSAM3は bboxes= だけを受け付けます。points=labels=masks=text=multimask=True を渡す場合や、ボックスを省略してすべてをセグメンテーションする場合は、明確な ValueError が発生します。これらのモードはアップストリームモデルに存在しないためです。conf は検出信頼度ではなく、予測されたマスク品質(IoU)でフィルタリングし、0.0 から 1.0 の範囲である必要があります。すべてのマスクは "object" という名前のクラスID 0 を持ちます。train()val()track()NotImplementedError を発生させます。点、テキスト、マスク、すべてをセグメンテーションするプロンプトにはLibreSAM2またはLibreSAM3を使用してください。ソースの種類については、推論を参照してください。

バリアント

サイズはpicoの1つで、固定の96 px ROI入力です。PicoSAM3は画像全体を1回だけエンコードする代わりに、ボックスごとにCNN全体を1回順伝播します。

エクスポート

タスクONNXTorchScriptExecuTorchTensorRTOpenVINOPaddleMNNRKNNncnnTFLiteCoreMLCore AI
Instance segmentationInstance segmentation to ONNX:対応Instance segmentation to TorchScript:非対応Instance segmentation to ExecuTorch:非対応Instance segmentation to TensorRT:非対応Instance segmentation to OpenVINO:非対応Instance segmentation to Paddle:非対応Instance segmentation to MNN:非対応Instance segmentation to RKNN:非対応Instance segmentation to ncnn:非対応Instance segmentation to TFLite:非対応Instance segmentation to CoreML:非対応Instance segmentation to Core AI:非対応

PicoSAM3はSAM階層でエクスポートできる唯一のファミリーです。未処理の96x96 ROI CNNを roi_image -> mask_logits としてONNXへ出力し、NMSやマスクの後処理は組み込みません。その他のSAMファミリーでは、エンコーダーとデコーダーの分割に定義済みのランタイムエクスポート契約がないため、export()NotImplementedError を発生させます。エクスポート済みPicoSAM3グラフは LibreYOLO() から再度読み込めません。onnxruntime などのランタイムで直接実行し、上で示したものと同じ10%パディング付き正方形ROI前処理を適用してください。

Python
from libreyolo import LibrePicoSAM3 model = LibrePicoSAM3()model.export(format="onnx", output_path="LibrePicoSAM3pico.onnx") # opsetはデフォルト13でdynamicはデフォルトTrueかつバッチ軸のみ# このファミリーが受け付けるエクスポート引数はこの2つだけ
エクスポートしたファイルを使う
import numpy as npimport onnxruntime as ort # PicoSAM3は未処理の96x96 ROI CNNをエクスポート# roi_image -> mask_logits LibreYOLO側に再利用できる前処理と後処理はなく# 検出器チェックポイントと異なりexport()はLibreYOLO()へ戻されないsession = ort.InferenceSession("LibrePicoSAM3pico.onnx")name = session.get_inputs()[0].nameoutputs = session.run(None, {name: np.zeros((1, 3, 96, 96), dtype=np.float32)}) for meta, array in zip(session.get_outputs(), outputs):    print(meta.name, array.shape)

チェックポイント

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

ファイル入力(px)重みのライセンス
Instance segmentation
LibrePicoSAM3.ptapache-2.0

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

ライセンス

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

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

原著作物
PicoSAM3, ETH Zurich
アップストリームのライセンス
Apache-2.0
アップストリームのソース
github.com/pbonazzi/picosam3
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 carries a native port of the compact ROI CNN rather than vendoring upstream files unmodified, and downloads LibrePicoSAM3pico.pt from the LibreYOLO Hugging Face org, converted with unchanged tensor values from the pinned pietrobonazzi/picosam3 revision af49e4322b6b7cf448499fee5c073d4576f59444 and tagged Apache-2.0 there. PicoSAM3 is distilled from SAM 2.1 and SAM 3 as teacher models; LibreYOLO does not vendor or redistribute either teacher's code or weights in this family.

PicoSAM3はSAM 2.1とSAM 3を教師モデルとして蒸留されています。LibreYOLOはこのファミリーでどちらの教師のコードや重みも組み込みまたは再配布しません。小型の生徒CNNと変換済みチェックポイントだけを提供します。

引用

@article{picosam3_2026,
      title={PicoSAM3: Real-Time In-Sensor Region-of-Interest Segmentation}, 
      author={Pietro Bonazzi and Nicola Farronato and Stefan Zihlmann and Haotong Qin and Michele Magno},
      journal={IEEE Sensors Journal},
      year={2026}
}

著者によるgithub.com/pbonazzi/picosam3#readmeの引用ブロックからコピーしています。

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