SAM 2

SAM 2는 비디오용으로 설계된 스트리밍 메모리 아키텍처로 SAM을 확장하며, 포인트 또는 바운딩 박스 클릭을 객체 마스크로 변환합니다. LibreYOLO는 LibreYOLO() 탐지기 팩토리와 별도의 전용 LibreSAM 팩토리를 통해 이미지 분할 경로를 지원합니다.

작업
instance segmentation
크기
설치
pip install libreyolo
지원 티어
별도 티어, v부터 지원. 자체 팩토리와 계약을 갖춘 별도의 제품 영역입니다.
업스트림
Meta FAIR의 SAM 2, Apache-2.0. 논문, 소스
라이선스
코드 MIT, 가중치 Apache-2.0. 상업적 사용

설치

SAM 2에는 transformerstimm을 가져오는 sam extra가 필요합니다.

bash
pip install "libreyolo[sam]"

예측

LibreSAM(...) 또는 계열별 LibreSAM2(...)LibreYOLO(...)와 별도의 진입점입니다. 여기서는 공간 프롬프트 없이는 순전파가 의미 없으므로 탐지기가 아니라 프롬프트 가능 분할기를 반환합니다. 이 계열에는 libreyolo predict CLI 명령이 없으므로 Python API를 사용합니다. 이미지 분할만 지원하며 SAM 2의 비디오 메모리 추적은 여기서 범위를 벗어납니다.

포인트 및 바운딩 박스 프롬프트
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()로 한 번 실행하면# 이후 모든 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()

포인트 프롬프트는 객체 하나에 [x, y], 여러 객체에 [[x, y], ...] 또는 NumPy 배열을 허용합니다. labels는 각 포인트를 1(전경) 또는 0(배경)으로 표시하며 기본값은 모두 전경입니다. 바운딩 박스 프롬프트는 [x1, y1, x2, y2] 또는 바운딩 박스 목록을 받으며 바운딩 박스마다 마스크 하나를 생성합니다. 두 프롬프트를 모두 생략하면 밀집 그리드로 프롬프트하고 신뢰할 수 있으며 겹치지 않는 마스크를 유지하여 전체 이미지를 분할합니다. 이 "모두 분할" 모드는 참조 자동 마스크 생성기보다 단순화되어 혼잡한 장면을 충분히 분할하지 못할 수 있으므로 실제 포인트 또는 바운딩 박스 프롬프트가 정확한 경로입니다. conf는 탐지 신뢰도가 아니라 예측한 마스크 품질(IoU)을 기준으로 필터링합니다. 모든 후보를 유지하려면 0.0을 전달합니다. multimask=True는 가장 좋은 하나 대신 프롬프트마다 SAM의 전체 객체와 부분 객체 모호성 마스크 3개를 모두 반환합니다. device=는 모델을 이동하며 set_image() 세션이 활성 상태이면 캐시된 임베딩도 이동합니다. 프롬프트 가능 마스크에는 고정 클래스 집합이 없으므로 모든 마스크에는 이름이 "object"인 클래스 ID 0이 지정됩니다. 이 계열에서 train(), val(), export(), track()은 모두 NotImplementedError를 일으킵니다. LibreYOLO는 여기서 이미지 추론을 지원합니다. 소스 유형은 예측을 참조합니다.

변형

Hiera 백본 크기는 tiny, small, base-plus, large 네 가지이며 모두 같은 입력 해상도를 사용합니다. 이 계열의 정확도 또는 지연 시간 벤치마크는 아직 공개되지 않았으므로 크기를 선택하면 인코더 가중치와 마스크 품질이 직접 절충됩니다. tiny의 인코딩이 가장 빠르고 large가 가장 무겁습니다.

체크포인트

이 계열에서 공개된 모든 가중치 파일입니다.

파일입력(px)가중치 라이선스
Instance segmentation
LibreSAM2tiny.ptapache-2.0
LibreSAM2small.ptapache-2.0
LibreSAM2base-plus.ptapache-2.0
LibreSAM2large.ptapache-2.0

위의 모든 파일은 현재 LibreYOLO 조직에 있으며 처음 사용할 때 내려받습니다.

라이선스

내려받는 특정 가중치의 Hugging Face 저장소에서 라이선스를 확인하십시오. LibreYOLO 조직의 모든 체크포인트에는 라이선스가 있으며 한 계열 안에서도 항상 같지는 않습니다. 해당 저장소가 신뢰할 수 있는 기준입니다. 아래 요약은 이 페이지를 마지막으로 검증했을 때 적용된 내용을 설명합니다.

관련 라이선스에 관한 설명이며 법률 자문이 아닙니다. 상업적으로 중요한 사안이라면 라이선스를 직접 읽고 별도의 법률 자문을 받으십시오.

원작
SAM 2, Meta FAIR
업스트림 라이선스
Apache-2.0
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에서 검증되었습니다. 이 페이지의 지원 표, 체크포인트, 벤치마크 수치는 출시된 라이브러리와 공개된 가중치에서 생성되며 수동으로 작성되지 않습니다.