SAM 2.1
보다 정확한 SAM2.1 모델에 대한 지원이 추가되었습니다. 꼭 사용해 보세요!
SAM 2: 무엇이든 세그먼트 모델 2
SAM 2는 이미지와 동영상 모두에서 포괄적인 객체 분할을 위해 설계된 최첨단 도구로, 메타의 Segment Anything Model(SAM)의 후속 버전입니다. 실시간 처리와 제로 샷 일반화를 지원하는 통합적이고 신속한 모델 아키텍처를 통해 복잡한 시각 데이터를 처리하는 데 탁월합니다.
주요 기능
Watch: 메타를 사용하여 추론을 실행하는 방법 SAM2 Ultralytics | 단계별 가이드 🎉
통합 모델 아키텍처
SAM 2는 이미지 및 비디오 세분화 기능을 단일 모델에 결합합니다. 이러한 통합으로 배포가 간소화되고 다양한 미디어 유형에서 일관된 성능을 제공할 수 있습니다. 유연한 프롬프트 기반 인터페이스를 활용하여 사용자가 포인트, 경계 상자 또는 마스크와 같은 다양한 프롬프트 유형을 통해 관심 있는 개체를 지정할 수 있습니다.
실시간 성능
이 모델은 초당 약 44프레임을 처리하는 실시간 추론 속도를 달성합니다. 따라서 SAM 2는 비디오 편집 및 증강 현실과 같이 즉각적인 피드백이 필요한 애플리케이션에 적합합니다.
제로 샷 일반화
SAM 2는 이전에 본 적이 없는 물체를 세분화하여 강력한 제로 샷 일반화를 보여줄 수 있습니다. 이는 사전 정의된 카테고리가 가능한 모든 객체를 포괄하지 못할 수 있는 다양하거나 진화하는 시각적 영역에서 특히 유용합니다.
대화형 개선
사용자는 추가 프롬프트를 제공하여 세분화 결과를 반복적으로 세분화할 수 있으므로 출력을 정밀하게 제어할 수 있습니다. 이러한 상호작용 기능은 비디오 주석이나 의료 영상과 같은 애플리케이션에서 결과를 미세 조정하는 데 필수적입니다.
시각적 과제에 대한 고급 처리
SAM 2에는 오브젝트 오클루전 및 재출현과 같은 일반적인 비디오 분할 문제를 관리할 수 있는 메커니즘이 포함되어 있습니다. 정교한 메모리 메커니즘을 사용하여 여러 프레임에 걸쳐 객체를 추적함으로써 객체가 일시적으로 가려지거나 장면에서 빠져나갔다가 다시 들어오는 경우에도 연속성을 보장합니다.
SAM 2의 아키텍처와 기능에 대해 자세히 알아보려면 SAM 2 연구 논문을 참조하세요.
성능 및 기술 세부 정보
SAM 2는 다양한 지표에서 이전 모델을 능가하는 새로운 벤치마크를 제시합니다:
Metric | SAM 2 | 이전 SOTA |
---|---|---|
인터랙티브 비디오 세분화 | 최고 | - |
사람과의 상호작용 필요 | 3배 더 적은 | 기준선 |
이미지 세분화 정확도 | 개선됨 | SAM |
추론 속도 | 6배 빠른 속도 | SAM |
모델 아키텍처
핵심 구성 요소
- 이미지 및 비디오 인코더: 트랜스포머 기반 아키텍처를 활용하여 이미지와 비디오 프레임 모두에서 높은 수준의 특징을 추출합니다. 이 구성 요소는 각 타임스텝에서 시각적 콘텐츠를 이해하는 역할을 담당합니다.
- 프롬프트 인코더: 사용자가 제공한 프롬프트(점, 상자, 마스크)를 처리하여 세분화 작업을 안내합니다. 이를 통해 SAM 2는 사용자 입력에 적응하고 장면 내의 특정 개체를 대상으로 지정할 수 있습니다.
- 메모리 메커니즘: 메모리 인코더, 메모리 뱅크, 메모리 주의 모듈이 포함됩니다. 이러한 구성 요소는 과거 프레임의 정보를 종합적으로 저장하고 활용하여 모델이 시간이 지나도 일관된 객체 추적을 유지할 수 있도록 합니다.
- 마스크 디코더: 인코딩된 이미지 특징과 프롬프트를 기반으로 최종 세그먼테이션 마스크를 생성합니다. 비디오에서는 메모리 컨텍스트를 사용하여 프레임 전체에 걸쳐 정확한 추적을 보장합니다.
메모리 메커니즘 및 오클루전 처리
메모리 메커니즘을 통해 SAM 2는 비디오 데이터의 시간적 종속성과 오클루전을 처리할 수 있습니다. 객체가 움직이고 상호 작용할 때 SAM 2는 객체의 특징을 메모리 뱅크에 기록합니다. 오브젝트가 가려지면 모델은 이 메모리를 사용하여 다시 나타날 때의 위치와 모양을 예측할 수 있습니다. 오클루전 헤드는 특히 오브젝트가 보이지 않는 시나리오를 처리하여 오브젝트가 가려질 가능성을 예측합니다.
멀티 마스크 모호성 해결
물체가 겹치는 등 모호한 상황에서는 SAM 2에서 여러 개의 마스크 예측을 생성할 수 있습니다. 이 기능은 단일 마스크로 장면의 뉘앙스를 충분히 설명하지 못할 수 있는 복잡한 장면을 정확하게 표현하는 데 매우 중요합니다.
SA-V 데이터 세트
SAM 2의 교육을 위해 개발된 SA-V 데이터 세트는 가장 크고 다양한 비디오 세분화 데이터 세트 중 하나입니다. 여기에는 다음이 포함됩니다:
- 51,000개 이상의 동영상: 47개국에서 촬영하여 다양한 실제 시나리오를 제공합니다.
- 600,000개 이상의 마스크 주석: '마스크 릿'이라고 하는 상세한 시공간 마스크 주석으로 전체 오브젝트와 부품을 포괄합니다.
- 데이터 세트 규모: 이전 최대 데이터 세트보다 4.5배 더 많은 동영상과 53배 더 많은 주석이 포함되어 있어 전례 없는 다양성과 복잡성을 제공합니다.
벤치마크
비디오 오브젝트 세분화
SAM 2는 주요 비디오 세분화 벤치마크에서 우수한 성능을 입증했습니다:
데이터 세트 | J&F | J | F |
---|---|---|---|
DAVIS 2017 | 82.5 | 79.8 | 85.2 |
YouTube-VOS | 81.2 | 78.9 | 83.5 |
대화형 세분화
대화형 세분화 작업에서 SAM 2는 상당한 효율성과 정확성을 보여줍니다:
데이터 세트 | NoC@90 | AUC |
---|---|---|
데이비스 인터랙티브 | 1.54 | 0.872 |
설치
SAM 2를 설치하려면 다음 명령을 사용합니다. 모든 SAM 2 모델은 처음 사용할 때 자동으로 다운로드됩니다.
사용 방법 SAM 2: 이미지 및 동영상 세분화의 다양성
다음 표에서는 사용 가능한 SAM 2 모델, 사전 학습된 가중치, 지원되는 작업, 추론, 검증, 학습, 내보내기 등 다양한 운영 모드와의 호환성에 대해 자세히 설명합니다.
모델 유형 | 사전 학습된 가중치 | 지원되는 작업 | 추론 | 유효성 검사 | 교육 | 내보내기 |
---|---|---|---|---|---|---|
SAM 2 작은 | sam2_t.pt | 인스턴스 세분화 | ✅ | ❌ | ❌ | ❌ |
SAM 2 작은 | sam2_s.pt | 인스턴스 세분화 | ✅ | ❌ | ❌ | ❌ |
SAM 2 베이스 | sam2_b.pt | 인스턴스 세분화 | ✅ | ❌ | ❌ | ❌ |
SAM 대형 2개 | sam2_l.pt | 인스턴스 세분화 | ✅ | ❌ | ❌ | ❌ |
SAM 2.1 작은 | sam2.1_t.pt | 인스턴스 세분화 | ✅ | ❌ | ❌ | ❌ |
SAM 2.1 작은 | sam2.1_s.pt | 인스턴스 세분화 | ✅ | ❌ | ❌ | ❌ |
SAM 2.1 기본 | sam2.1_b.pt | 인스턴스 세분화 | ✅ | ❌ | ❌ | ❌ |
SAM 2.1 대형 | sam2.1_l.pt | 인스턴스 세분화 | ✅ | ❌ | ❌ | ❌ |
SAM 2 예측 예시
SAM 2는 실시간 비디오 편집, 의료 영상, 자율 시스템 등 다양한 작업에서 활용할 수 있습니다. 정적 및 동적 시각 데이터를 모두 세분화할 수 있어 연구자와 개발자를 위한 다용도 도구로 활용할 수 있습니다.
프롬프트가 있는 세그먼트
프롬프트가 있는 세그먼트
프롬프트를 사용하여 이미지 또는 동영상에서 특정 개체를 분할할 수 있습니다.
from ultralytics import SAM
# Load a model
model = SAM("sam2.1_b.pt")
# Display model information (optional)
model.info()
# Run inference with bboxes prompt
results = model("path/to/image.jpg", bboxes=[100, 100, 200, 200])
# Run inference with single point
results = model(points=[900, 370], labels=[1])
# Run inference with multiple points
results = model(points=[[400, 370], [900, 370]], labels=[1, 1])
# Run inference with multiple points prompt per object
results = model(points=[[[400, 370], [900, 370]]], labels=[[1, 1]])
# Run inference with negative points prompt
results = model(points=[[[400, 370], [900, 370]]], labels=[[1, 0]])
모든 것을 세분화
모든 것을 세분화
특정 프롬프트 없이 전체 이미지 또는 동영상 콘텐츠를 세그먼트화합니다.
비디오 분할 및 개체 추적
세그먼트 비디오
특정 프롬프트를 사용하여 전체 동영상 콘텐츠를 세분화하고 개체를 추적합니다.
from ultralytics.models.sam import SAM2VideoPredictor
# Create SAM2VideoPredictor
overrides = dict(conf=0.25, task="segment", mode="predict", imgsz=1024, model="sam2_b.pt")
predictor = SAM2VideoPredictor(overrides=overrides)
# Run inference with single point
results = predictor(source="test.mp4", points=[920, 470], labels=[1])
# Run inference with multiple points
results = predictor(source="test.mp4", points=[[920, 470], [909, 138]], labels=[1, 1])
# Run inference with multiple points prompt per object
results = predictor(source="test.mp4", points=[[[920, 470], [909, 138]]], labels=[[1, 1]])
# Run inference with negative points prompt
results = predictor(source="test.mp4", points=[[[920, 470], [909, 138]]], labels=[[1, 0]])
- 이 예는 프롬프트(b박스/포인트/마스크)가 제공되지 않은 경우 SAM 2를 사용하여 이미지 또는 동영상의 전체 콘텐츠를 세그먼트화하는 방법을 보여줍니다.
SAM 2와 YOLO 비교
여기에서는 가장 작은 SAM2 변형을 포함한 Meta의 SAM 2 모델과 가장 작은 세분화 모델인 YOLO11n-seg를 비교합니다:
모델 | 크기 (MB) |
매개변수 (M) |
속도 (CPU) (ms/im) |
---|---|---|---|
메타 SAM-b | 375 | 93.7 | 49401 |
메타 SAM2-b | 162 | 80.8 | 31901 |
메타 SAM2-t | 78.1 | 38.9 | 25997 |
MobileSAM | 40.7 | 10.1 | 25381 |
YOLOv8 백본이 포함된 FastSAM | 23.7 | 11.8 | 55.9 |
Ultralytics YOLOv8n-seg | 6.7 (11.7배 작아짐) | 3.4 (11.4배 감소) | 24.5 (1061배 빨라짐) |
Ultralytics YOLO11n-seg | 5.9 (13.2배 작아짐) | 2.9 (13.4배 감소) | 30.1 (864배 빨라짐) |
이 비교는 SAM 변형과 YOLO 세분화 모델 간의 모델 크기와 속도에 상당한 차이가 있음을 보여줍니다. SAM 고유한 자동 세분화 기능을 제공하는 반면, YOLO 모델, 특히 YOLOv8n YOLO11n-seg는 훨씬 더 작고 빠르며 계산 효율이 높습니다.
테스트는 24GB RAM이 장착된 2025 Apple M4 Pro에서 다음을 사용하여 실행되었습니다. torch==2.6.0
그리고 ultralytics==8.3.90
. 이 테스트를 재현하려면:
예
from ultralytics import ASSETS, SAM, YOLO, FastSAM
# Profile SAM2-t, SAM2-b, SAM-b, MobileSAM
for file in ["sam_b.pt", "sam2_b.pt", "sam2_t.pt", "mobile_sam.pt"]:
model = SAM(file)
model.info()
model(ASSETS)
# Profile FastSAM-s
model = FastSAM("FastSAM-s.pt")
model.info()
model(ASSETS)
# Profile YOLO models
for file_name in ["yolov8n-seg.pt", "yolo11n-seg.pt"]:
model = YOLO(file_name)
model.info()
model(ASSETS)
자동 주석: 효율적인 데이터 집합 생성
자동 주석은 SAM 2의 강력한 기능으로, 사용자는 사전 학습된 모델을 활용하여 빠르고 정확하게 세분화 데이터 세트를 생성할 수 있습니다. 이 기능은 많은 수작업 없이 대규모의 고품질 데이터 세트를 생성하는 데 특히 유용합니다.
SAM 2로 자동 주석을 다는 방법
Watch: Ultralytics | 데이터 라벨링을 사용하여 메타의 Segment Anything 2 모델로 자동 주석 달기
SAM 2를 사용하여 데이터 집합에 자동 주석을 달려면 이 예제를 따르세요:
자동 주석 예시
인수 | 유형 | 기본값 | 설명 |
---|---|---|---|
data |
str |
필수 | 주석 또는 세분화를 위한 대상 이미지가 포함된 디렉터리 경로입니다. |
det_model |
str |
'yolo11x.pt' |
YOLO 초기 오브젝트 감지를 위한 감지 모델 경로를 설정합니다. |
sam_model |
str |
'sam_b.pt' |
세분화를 위한 SAM 모델 경로( SAM, SAM2 변형 및 mobile_sam 모델 지원). |
device |
str |
'' |
계산 장치(예: 'cuda:0', 'cpu' 또는 ''(자동 장치 감지용)). |
conf |
float |
0.25 |
YOLO 약한 탐지를 필터링하기 위한 탐지 신뢰도 임계값입니다. |
iou |
float |
0.45 |
겹치는 상자를 필터링하는 비 최대 억제에 대한 IoU 임계값입니다. |
imgsz |
int |
640 |
이미지 크기 조정을 위한 입력 크기(32의 배수여야 함). |
max_det |
int |
300 |
메모리 효율성을 위해 이미지당 최대 감지 횟수를 제한합니다. |
classes |
list[int] |
None |
감지할 클래스 인덱스 목록(예, [0, 1] 사람 및 자전거용). |
output_dir |
str |
None |
주석을 저장할 디렉터리(기본값은 데이터 경로를 기준으로 './레이블'입니다). |
이 기능을 사용하면 고품질의 세분화 데이터 세트를 빠르게 생성할 수 있어 프로젝트 속도를 높이려는 연구자와 개발자에게 이상적입니다.
제한 사항
이러한 장점에도 불구하고 SAM 2에는 몇 가지 한계가 있습니다:
- 추적 안정성: SAM 2는 시퀀스가 확장되거나 시점이 크게 변경되는 동안 오브젝트를 추적하지 못할 수 있습니다.
- 오브젝트 혼동: 특히 혼잡한 장면에서 모델이 비슷한 모양의 물체를 혼동하는 경우가 있습니다.
- 여러 개체를 사용한 효율성: 여러 개체를 동시에 처리할 경우 개체 간 통신이 부족하기 때문에 세분화 효율성이 떨어집니다.
- 디테일 정확도: 특히 빠르게 움직이는 물체의 경우 미세한 디테일을 놓칠 수 있습니다. 추가 프롬프트를 사용하면 이 문제를 부분적으로 해결할 수 있지만 시간적 부드러움이 보장되지는 않습니다.
인용 및 감사
SAM 2가 연구 또는 개발 작업의 중요한 부분인 경우 다음 참조를 사용하여 인용해 주세요:
@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},
year={2024}
}
이 획기적인 모델과 데이터 세트를 통해 AI 커뮤니티에 기여한 Meta AI에 감사의 마음을 전합니다.
자주 묻는 질문
SAM 2는 무엇이며 기존 Segment Anything 모델(SAM)을 어떻게 개선했나요?
SAM 2는 이미지와 동영상 모두에서 포괄적인 객체 분할을 위해 설계된 최첨단 도구로, 메타의 Segment Anything Model(SAM)의 후속 버전입니다. 실시간 처리와 제로 샷 일반화를 지원하는 통합적이고 신속한 모델 아키텍처를 통해 복잡한 시각 데이터를 처리하는 데 탁월합니다. SAM 2는 기존 버전( SAM)에 비해 다음과 같은 몇 가지 개선 사항을 제공합니다:
- 통합 모델 아키텍처: 이미지 및 비디오 세분화 기능을 단일 모델에 결합합니다.
- 실시간 성능: 초당 약 44프레임을 처리하므로 즉각적인 피드백이 필요한 애플리케이션에 적합합니다.
- 제로 샷 일반화: 다양한 시각적 영역에서 유용한, 이전에 접한 적이 없는 객체를 세그먼트화합니다.
- 대화형 세분화: 추가 프롬프트를 제공하여 사용자가 세분화 결과를 반복적으로 구체화할 수 있습니다.
- 고급 시각적 문제 처리: 오브젝트 오클루전 및 다시 나타나기 같은 일반적인 비디오 분할 문제를 관리합니다.
SAM 2의 아키텍처 및 기능에 대한 자세한 내용은 SAM 2 연구 논문을 참조하세요.
실시간 동영상 분할에 SAM 2를 사용하려면 어떻게 해야 하나요?
SAM 2의 프롬프트 가능한 인터페이스와 실시간 추론 기능을 활용하여 실시간 동영상 분할에 활용할 수 있습니다. 다음은 기본적인 예시입니다:
프롬프트가 있는 세그먼트
프롬프트를 사용하여 이미지 또는 동영상에서 특정 개체를 분할할 수 있습니다.
from ultralytics import SAM
# Load a model
model = SAM("sam2_b.pt")
# Display model information (optional)
model.info()
# Segment with bounding box prompt
results = model("path/to/image.jpg", bboxes=[100, 100, 200, 200])
# Segment with point prompt
results = model("path/to/image.jpg", points=[150, 150], labels=[1])
보다 자세한 사용 방법은 SAM 2 섹션을 참조하세요.
SAM 2를 학습시키는 데 어떤 데이터 세트가 사용되며, 어떻게 성능을 향상시키나요?
SAM 2는 가장 크고 다양한 비디오 세분화 데이터 세트 중 하나인 SA-V 데이터 세트를 기반으로 학습되었습니다. SA-V 데이터 세트에는 다음이 포함됩니다:
- 51,000개 이상의 동영상: 47개국에서 촬영하여 다양한 실제 시나리오를 제공합니다.
- 600,000개 이상의 마스크 주석: '마스크 릿'이라고 하는 상세한 시공간 마스크 주석으로 전체 오브젝트와 부품을 포괄합니다.
- 데이터 세트 규모: 이전 최대 데이터 세트보다 4.5배 더 많은 동영상과 53배 더 많은 주석이 포함되어 있어 전례 없는 다양성과 복잡성을 제공합니다.
이 광범위한 데이터 세트를 통해 SAM 2는 주요 비디오 세분화 벤치마크에서 우수한 성능을 달성하고 제로 샷 일반화 기능을 향상시킬 수 있습니다. 자세한 내용은 SA-V 데이터 세트 섹션을 참조하세요.
SAM 2는 비디오 분할에서 오클루전 및 오브젝트 재출현을 어떻게 처리하나요?
SAM 2에는 비디오 데이터의 시간적 종속성과 오클루전을 관리하기 위한 정교한 메모리 메커니즘이 포함되어 있습니다. 메모리 메커니즘은 다음과 같이 구성됩니다:
- 메모리 인코더 및 메모리 뱅크: 지난 프레임의 기능을 저장합니다.
- 메모리 주의 모듈: 저장된 정보를 활용하여 시간이 지나도 일관된 개체 추적을 유지합니다.
- 오클루전 헤드: 오브젝트가 보이지 않는 시나리오를 구체적으로 처리하여 오브젝트가 가려질 가능성을 예측합니다.
이 메커니즘은 오브젝트가 일시적으로 가려지거나 씬에서 나갔다가 다시 들어오는 경우에도 연속성을 보장합니다. 자세한 내용은 메모리 메커니즘 및 오클루전 처리 섹션을 참조하십시오.
SAM 2는 YOLO11 같은 다른 세분화 모델과 어떻게 비교되나요?
Meta의 SAM2 및 SAM2 같은 SAM 2 모델은 강력한 제로 샷 세그먼트 기능을 제공하지만 YOLO11 모델에 비해 훨씬 더 크고 느립니다. 예를 들어, YOLO11n-seg는 SAM2 약 13배 작고 860배 이상 빠릅니다. SAM 2는 다목적, 프롬프트 기반, 제로샷 세분화 시나리오에 탁월한 반면, YOLO11 속도, 효율성, 실시간 애플리케이션에 최적화되어 있어 리소스가 제한된 환경에 배포하는 데 더 적합합니다.