SAM

SAM(Segment Anything)은 포인트 또는 바운딩 박스 클릭을 객체 마스크로 변환합니다. 프롬프트 가능 모델에는 다른 호출 형식이 필요하므로 LibreYOLO는 LibreYOLO() 탐지기 팩토리와 별도의 전용 LibreSAM 팩토리로 이를 불러옵니다.

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

설치

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

bash
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()로 한 번 실행하면# 이후 모든 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에서 SAM은 예측 전용이며 비디오 추적은 범위를 벗어납니다. 소스 유형은 예측을 참조합니다.

변형

ViT 이미지 인코더 크기는 base, large, huge 세 가지이며 모두 고정 1024 px 입력을 사용합니다. 이 계열의 정확도 또는 지연 시간 벤치마크는 아직 공개되지 않았으므로 크기를 선택하면 인코더 가중치와 마스크 품질이 직접 절충됩니다. base의 인코딩이 가장 빠르고 huge가 가장 무겁습니다.

라이선스

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

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

원작
SAM (Segment Anything), Meta AI Research (FAIR)
업스트림 라이선스
Apache-2.0
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에 있는 저자의 인용 블록에서 복사했습니다.

LibreYOLO v1.5.0에서 검증되었습니다. 이 페이지의 지원 표, 체크포인트, 벤치마크 수치는 출시된 라이브러리와 공개된 가중치에서 생성되며 수동으로 작성되지 않습니다.