PicoSAM3
PicoSAM3는 SAM 2.1과 SAM 3에서 증류된 소형 CNN으로, Sony IMX500 같은 센서의 바운딩 박스 프롬프트 관심 영역 분할을 위해 설계되었습니다. LibreYOLO는 LibreYOLO() 탐지기 팩토리와 별도의 전용 LibreSAM 팩토리로 이를 지원하며 바운딩 박스 프롬프트만 사용할 수 있습니다.
- 작업
- instance segmentation
- 크기
- pico at 96 px
- 설치
pip install libreyolo- 지원 티어
- 별도 티어, v부터 지원. 자체 팩토리와 계약을 갖춘 별도의 제품 영역입니다.
- 라이선스
- 코드 Apache-2.0, 가중치 Apache-2.0. 상업적 사용
설치
PicoSAM3에는 sam extra가 필요합니다. 추론은 네이티브 비 transformers CNN에서
실행하지만 LibreYOLO 자체 가중치 내려받기는 여전히 transformers의 Hugging Face
도구를 사용합니다.
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] 또는 바운딩 박스 목록이며# 바운딩 박스마다 마스크 하나를 생성합니다. 각 바운딩 박스는 10% 확장하고# 정사각형으로 만든 뒤 이미지에 맞춰 자르고 CNN 실행 전 96x96으로 조정합니다.result = model.predict(SAMPLE_IMAGE, bboxes=[300, 200, 900, 700])print(result.masks.xy) # 마스크별 폴리곤print(result.boxes.xyxy) # 마스크에서 파생된 꼭 맞는 바운딩 박스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를 사용합니다. 소스 유형은 예측을 참조합니다.
변형
고정 96 px ROI 입력을 사용하는 pico 한 크기만 있습니다. PicoSAM3는 전체 이미지를 한 번 인코딩하는 대신 바운딩 박스마다 전체 CNN 순전파를 실행합니다.
내보내기
| 작업 | ONNX | TorchScript | ExecuTorch | TensorRT | OpenVINO | Paddle | MNN | RKNN | ncnn | TFLite | CoreML | Core AI |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Instance segmentation | Instance 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 계층에서 내보낼 수 있는 유일한 계열입니다. NMS나 마스크 후처리를
포함하지 않고 원시 96x96 ROI CNN을 roi_image -> mask_logits 형식의 ONNX로
내보냅니다. 다른 SAM 계열은 인코더와 디코더 분할에 정의된 런타임 내보내기 계약이
아직 없으므로 export()에서 NotImplementedError를 일으킵니다. 내보낸 PicoSAM3
그래프는 LibreYOLO()로 다시 불러오지 않습니다. 위에 표시된 것과 같은 10% 패딩
정사각형 ROI 전처리를 적용하고 onnxruntime 같은 런타임으로 직접 실행합니다.
from libreyolo import LibrePicoSAM3 model = LibrePicoSAM3()model.export(format="onnx", output_path="LibrePicoSAM3pico.onnx") # 이 계열이 허용하는 내보내기 인수는 opset(기본값 13)과# dynamic(기본값 True, 배치 축만)뿐입니다.import numpy as npimport onnxruntime as ort # PicoSAM3는 원시 96x96 ROI CNN을 내보냅니다: roi_image -> mask_logits.# 탐지기 체크포인트처럼 export()가 LibreYOLO()로 다시 라우팅되지 않으므로# 여기서 재사용할 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.pt | apache-2.0 | |
위의 모든 파일은 현재 LibreYOLO 조직에 있으며 처음 사용할 때 내려받습니다.
라이선스
내려받는 특정 가중치의 Hugging Face 저장소에서 라이선스를 확인하십시오. LibreYOLO 조직의 모든 체크포인트에는 라이선스가 있으며 한 계열 안에서도 항상 같지는 않습니다. 해당 저장소가 신뢰할 수 있는 기준입니다. 아래 요약은 이 페이지를 마지막으로 검증했을 때 적용된 내용을 설명합니다.
관련 라이선스에 관한 설명이며 법률 자문이 아닙니다. 상업적으로 중요한 사안이라면 라이선스를 직접 읽고 별도의 법률 자문을 받으십시오.
- 원작
- 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에 있는 저자의 인용 블록에서 복사했습니다.