Segment Anything 2

FSA·2024년 10월 6일
0

segmentation

목록 보기
13/14

1. 기초 설명 (roboflow)

  • 비디오에서 특정 points를 제공하여 여러 프레임에 걸쳐 추적되는 segmentation mask를 생성할 수 있습니다.

1.1. Segment Anything 2란?

  • SAM 2를 실행하는 방법은 두 가지가 있습니다:
      1. 자동 마스크 생성기를 사용하여 이미지 또는 비디오의 모든 객체를 세분화하고 해당 마스크를 생성하는 방법.
      1. point 프롬프트를 사용하는 방법.
  • 자동 마스크 생성기는 모든 객체를 세분화하려는 경우에 이상적
  • 반면, 프롬프트를 사용하면 세분화를 보다 구체적으로 할 수 있습니다.

  • 객체의 위치를 식별하려면 "프롬프트"를 제공해야 합니다.
  • 프롬프트는 다음과 같은 형태일 수 있습니다:
    • 세분화하려는 객체와 대응되는 특정 지점 또는 일련의 지점.
    • 세분화하려는 객체를 둘러싸는 상자.
  • 이러한 프롬프트는 이미지 또는 비디오에 제공될 수 있습니다.
  • SAM 2는 CUDA가 지원되는 GPU 장치에서만 실행됩니다.

1.2. Segment Anything 2 데이터셋

  • SAM 2는 Segment Anything Video 데이터셋(SA-V)에서 학습되었습니다.
  • 이 데이터셋은 51,000개의 비디오와 643,000개의 세분화 마스크를 포함하고 있습니다.
  • SA-V 데이터셋은 CC 4.0 라이선스 하에 제공됩니다.
  • SA-V는 기존의 가장 큰 비디오 세분화 데이터셋보다 약 53배 더 많은 주석을 포함하고 있습니다.

  • 이 데이터셋은 사람이 개입하는 방식으로 레이블링되었습니다.
  • SAM 2는 인간 레이블러가 비디오를 상호작용하면서 주석을 달 수 있도록 사용되었습니다.
  • 이 주석 데이터는 이후 SAM 2 모델의 성능을 개선하는 데 사용되었습니다.

  • SAM 2의 발표에서 Meta AI는 이러한 접근 방식이 레이블링 속도를 크게 개선하는 데 기여했다고 언급했습니다:

    "우리의 도구와 SAM 2를 활용한 주석 달기는 프레임당 SAM을 사용할 때보다 약 8.4배 더 빠르며, SAM과 기존의 추적기를 결합한 방법보다도 훨씬 빠릅니다."

1.3. Segment Anything 2 모델 버전 및 성능

  • SAM 2에는 네 가지 버전이 있습니다:
    • Tiny (149 MB)
    • Small (176 MB)
    • Base Plus(b+) (309 MB)
    • Large (856 MB)
  • 모델이 클수록 결과는 더 정확하지만, 실행 속도가 느려질 수 있습니다.
  • SAM 2는 모델 크기에 따라 속도와 정확도가 달라지며, 가장 큰 모델을 제외한 모든 모델은 실시간(30+ FPS) 성능을 달성할 수 있습니다.

  • 벤치마킹 실험은 “PyTorch 2.3.1 및 CUDA 12.1을 사용한 단일A100 GPU”에서 자동 혼합 정밀도와 bfloat16을 적용하여 수행되었습니다.
  • FPS 측정은 이미지 작업에서는 배치 크기 10개로, 비디오 작업에서는 배치 크기 1개로 진행되었습니다.

1.4. Segment Anything 2를 이미지 세분화에 사용하는 방법

  • Segment Anything 2는 GitHub 리포지토리로 배포되며, 이를 소스에서 설치하여 비전 프로젝트에 사용할 수 있습니다.
  • 다음 코드를 사용하여 SAM 2를 설치할 수 있습니다:
git clone https://github.com/facebookresearch/segment-anything-2
cd segment-anything-2
pip3 install -e .
  • 다음 명령어를 사용하여 모델 체크포인트(4가지 전부)를 다운로드할 수 있습니다:
cd checkpoints
./download_ckpts.sh
  • 자동 마스크 생성기를 사용하여, 이미지의 모든 객체에 대한 마스크를 생성하는 추론을 실행해 봅시다.
  • 새 Python 파일을 생성하고 다음 코드를 추가하세요:
import torch
from sam2.build_sam import build_sam2
from sam2.automatic_mask_generator import SAM2AutomaticMaskGenerator
from PIL import Image
import numpy as np

sam2_checkpoint = "checkpoints/sam2_hiera_large.pt"
model_cfg = "sam2_hiera_l.yaml"

sam2 = build_sam2(model_cfg, sam2_checkpoint, device ='cuda', apply_postprocessing=False)

mask_generator = SAM2AutomaticMaskGenerator(sam2)

image = np.array(Image.open('image.jpeg').convert("RGB"))
masks = mask_generator.generate(image)
  • 이 코드는 이미지의 모든 객체에 대해 마스크를 생성합니다.
  • 위 코드에서:
    • image.jpeg는 추론을 실행하려는 이미지 이름으로 대체하세요.
    • sam2_hiera_large.pt는 사용할 가중치 파일 이름으로 대체하세요.
    • sam2_hiera_l는 사용할 체크포인트 이름으로 대체하세요.
  • 다음 코드를 사용하여 마스크를 불러와서 플롯할 수 있습니다:
import supervision as sv

mask_annotator = sv.MaskAnnotator()
detections = sv.Detections.from_sam(masks)
detections.class_id = [i for i in range(len(detections))]
annotated_image = mask_annotator.annotate(image, detections)

sv.plot_image(image=annotated_image, size=(8, 8))
  • 위 코드를 실행하면 이미지에서 다른 영역, 예를 들어 배낭, 모자, 강아지에 대한 세분화 마스크가 생성됩니다.

1.5. Grounding 모델과 Segment Anything 2 사용

  • Segment Anything 2는 객체 주변의 특정 영역을 식별할 수 있지만, 해당 객체가 무엇인지에 대한 정보는 없습니다.
  • 이미지에서 특정 객체를 식별하고 세분화 마스크를 생성하려면 SAM 2를 grounding 모델과 결합해야 합니다.
  • Florence-2는 뛰어난 제로샷 객체 탐지 기능을 갖춘 멀티모달 비전 모델로, SAM 2와 함께 사용하기에 적합한 grounding 모델입니다.
  • Florence-2와 SAM-2를 사용하면 텍스트 프롬프트를 제공하고 해당 영역에 대한 세분화 마스크를 생성할 수 있습니다.
  • 예를 들어, "dog"라고 입력하면 이미지에서 강아지에 해당하는 세분화 마스크를 얻을 수 있습니다.
  • Autodistill Grounded SAM 2 패키지를 사용하여 SAM을 grounding과 함께 사용할 수 있습니다.
  • 이 패키지를 설치하려면 다음 명령어를 실행하세요:
pip install autodistill-grounded-sam-2
  • 그런 다음 새 Python 파일을 생성하고 다음 코드를 추가하세요:
from autodistill_grounded_sam_2 import GroundedSAM2
from autodistill.detection import CaptionOntology
from autodistill.utils import plot
import cv2
import supervision as sv

# 캡션을 Grounded SAM 2 프롬프트에 매핑하기 위한 온톨로지 정의
base_model = GroundedSAM2(
	ontology=CaptionOntology(
    	{
        	"dog": "dog"
    	}
)
)
  • 위 코드에서 Grounded SAM 2를 로드하고 "dog"라는 프롬프트를 제공합니다.
  • 그런 다음 다음 코드를 사용하여 이미지에서 추론을 실행할 수 있습니다:
# 이미지에서 추론 실행
results = base_model.predict("dog.jpeg")

image = cv2.imread("dog.jpeg

")

mask_annotator = sv.MaskAnnotator()

annotated_image = mask_annotator.annotate(
	image.copy(), detections=results
)

sv.plot_image(image=annotated_image, size=(8, 8))
  • 위 코드를 실행하면 Florence-2가 강아지의 위치를 성공적으로 식별한 후, SAM 2가 해당 강아지에 해당하는 세분화 마스크를 생성한 것을 확인할 수 있습니다.

2. ultralytics의 설명

  • SAM 2는 Meta의 Segment Anything Model(SAM)의 후속 모델로, 이미지와 비디오에서 객체 분할을 수행하는 최첨단 도구이다.
  • 이 모델은 실시간 처리제로샷 일반화(Zero-Shot Generalization)를 지원하는 통합된 프롬프트 기반 모델 아키텍처를 통해 복잡한 시각적 데이터를 처리하는 데 뛰어나다.

2.1. 통합된 모델 아키텍처

  • SAM 2는 이미지와 비디오 분할 기능을 단일 모델로 통합했다.
  • 이를 통해 배포가 간소화되며, 다양한 미디어 유형에서 일관된 성능을 제공한다.
  • 유연한 프롬프트 기반 인터페이스를 활용해, 사용자들이 포인트, 바운딩 박스, 마스크와 같은 다양한 프롬프트를 사용하여 관심 객체를 지정할 수 있다.

2.2. 실시간 성능

  • 이 모델은 초당 약 44 프레임의 실시간 추론 속도를 달성하여,
    • 비디오 편집 및 증강 현실과 같은 즉각적인 피드백이 필요한 애플리케이션에 적합

2.3. 제로샷 일반화

  • SAM 2는 이전에 본 적이 없는 객체도 분할할 수 있는 강력한 제로샷 일반화를 제공
  • 이는 사전 정의된 범주가 모든 객체를 포괄할 수 없는 다양한 시각적 환경에서 매우 유용

2.4. 상호작용적인 세분화

  • 사용자는 추가적인 프롬프트를 제공하여 분할 결과를 반복적으로 세분화할 수 있어, 결과물에 대한 정밀한 제어가 가능
  • 이는 비디오 주석이나 의료 영상과 같은 애플리케이션에서 세밀한 조정에 필수적이다.

2.5. 복잡한 시각적 문제 처리

  • SAM 2는 객체 가림(occlusion) 및 재등장과 같은 비디오 분할에서 흔히 발생하는 문제들을 처리할 수 있는 메커니즘을 포함하고 있다.
  • 이 메커니즘은 객체가 일시적으로 가려지거나 장면에서 사라지고 다시 등장할 때도 일관된 추적을 유지한다.
  • SAM 2의 아키텍처 및 기능에 대한 더 깊은 이해를 원한다면, SAM 2 연구 논문을 참조하라.

2.6. 성능 및 기술 세부 사항

  • SAM 2는 다양한 메트릭에서 이전 모델을 능가하는 새로운 기준을 세웠다:
메트릭SAM 2이전 SOTA
상호작용 비디오 분할최고-
필요 상호작용 수3배 적음기본값
이미지 분할 정확도개선됨SAM
추론 속도6배 빠름SAM

2.7. 모델 아키텍처

2.7.1. 핵심 구성 요소

  • 이미지 및 비디오 인코더: Transformer 기반 아키텍처를 사용하여 이미지와 비디오 프레임에서 고수준 특징을 추출한다. 이 구성 요소는 각 시간 단계의 시각적 콘텐츠를 이해하는 역할을 한다.
  • 프롬프트 인코더: 사용자가 제공한 프롬프트(포인트, 바운딩 박스, 마스크)를 처리하여 분할 작업을 안내한다. 이를 통해 SAM 2는 사용자 입력에 적응하고 장면 내 특정 객체를 타겟팅할 수 있다.
  • 메모리 메커니즘: 메모리 인코더, 메모리 뱅크, 메모리 어텐션 모듈로 구성되어 있으며, 이들은 과거 프레임의 정보를 저장하고 활용하여 객체의 일관된 추적을 가능하게 한다.
  • 마스크 디코더: 인코딩된 이미지 특징 및 프롬프트를 바탕으로 최종 분할 마스크를 생성한다. 비디오의 경우 메모리 컨텍스트를 사용하여 프레임 간의 정확한 추적을 보장한다.

2.8. 메모리 메커니즘과 가림 처리

  • SAM 2의 메모리 메커니즘은 시간적 종속성비디오 데이터에서의 가림 문제를 처리할 수 있도록 설계됨
  • 객체가 움직이고 상호작용할 때, SAM 2는 메모리 뱅크에 해당 객체의 특징을 기록
  • 객체가 가려지면, 모델은 이 메모리에 의존하여 재등장할 때 객체의 위치와 외형을 예측
  • 가림 헤드는 객체가 보이지 않는 상황을 처리하며, 객체가 가려질 가능성을 예측한다.

2.9. 다중 마스크 모호성 해소

중복된 객체가 있는 복잡한 장면에서는 단일 마스크로는 충분하지 않을 수 있다. SAM 2는 이러한 모호한 상황에서 다중 마스크 예측을 생성할 수 있어 복잡한 장면을 정확하게 표현한다.

2.10. SA-V 데이터셋

SAM 2는 가장 크고 다양한 비디오 분할 데이터셋 중 하나인 SA-V 데이터셋을 학습에 사용한다. 이 데이터셋에는 다음이 포함된다:

  • 51,000개 이상의 비디오: 47개국에서 촬영된 다양한 현실 상황을 제공한다.
  • 600,000개 이상의 마스크 주석: 객체 전체 및 부분을 다루는 자세한 공간-시간적 마스크 주석을 포함한다.
  • 데이터셋 규모: 이전에 가장 큰 데이터셋보다 4.5배 더 많은 비디오와 53배 더 많은 주석을 제공하여 전례 없는 다양성과 복잡성을 자랑한다.

2.11. 벤치마크

2.11.1. 비디오 객체 분할

SAM 2는 주요 비디오 분할 벤치마크에서 뛰어난 성능을 보였다:

데이터셋J&FJF
DAVIS 201782.579.885.2
YouTube-VOS81.278.983.5

2.11.2. 상호작용적 분할

상호작용적 분할 작업에서 SAM 2는 효율성과 정확성을 입증했다:

데이터셋NoC@90AUC
DAVIS Interactive1.540.872

2.12. 설치

SAM 2를 설치하려면 아래 명령어를 사용하라. SAM 2 모델은 처음 사용할 때 자동으로 다운로드된다.

pip install ultralytics

2.13. SAM 2 사용 방법: 이미지 및 비디오 분할의 다양성

다음 표는 SAM 2 모델과 사전 학습된 가중치, 지원되는 작업, 호환되는 운영 모드(추론, 검증, 학습, 내보내기)를 설명한다.

모델 타입사전 학습된 가중치지원되는 작업추론검증학습내보내기
SAM 2 tinysam2_t.pt인스턴스 분할
SAM 2 smallsam2_s.pt인스턴스 분할
SAM 2 basesam2_b.pt인스턴스 분할
SAM 2 largesam2_l.pt인스턴스 분할

SAM 2는 비디오 편집, 의료 영상, 자율 시스템과 같은 다양한 작업에서 사용할 수 있다. 정적 및 동적 시각 데이터를 분할할 수 있는 능력 덕분에 연구자와 개발자에게 다재다능한 도구로 자리 잡고 있다.

2.14. 프롬프트로 분할하기

  • 프롬프트로 분할하기
    • 이미지나 비디오에서 특정 객체를 분할하는 프롬프트 사용 방법 예제이다.
from ultralytics import SAM

# 모델 로드
model = SAM("sam2_b.pt")

# 모델 정보 표시(선택 사항)
model.info()

# 바운딩 박스 프롬프트로 분할
results = model("path/to/image.jpg", bboxes=[100, 100, 200, 200])

# 포인트 프롬프트로 분할
results = model("path/to/image.jpg", points=[150, 150], labels=[1])

2.15. 전체 분할하기

  • 프롬프트 없이 이미지나 비디오의 전체 콘텐츠를 분할할 수도 있다.
from ultralytics import SAM

# 모델 로드
model = SAM("sam2_b.pt")

# 모델 정보 표시(선택 사항)
model.info()

# 추론 실행
model("path/to/video

.mp4")
  • 이 예제는 프롬프트(bboxes/points/masks)를 제공하지 않을 때, 이미지나 비디오 전체 콘텐츠를 어떻게 분할할 수 있는지 보여준다.

2.16. SAM 2와 YOLOv8 비교

  • Meta의 가장 작은 SAM 2 모델인 SAM2-t와 Ultralytics의 가장 작은 분할 모델인 YOLOv8n-seg를 비교한다:
모델크기 (MB)파라미터 (M)속도 (CPU) (ms/im)
Meta SAM-b37593.7161440
Meta SAM2-b16280.8121923
Meta SAM2-t78.138.985155
MobileSAM40.710.198543
FastSAM-s YOLOv823.711.8140
YOLOv8n-seg6.7 (11.7x 더 작음)3.4 (11.4x 적음)79.5 (1071x 더 빠름)
  • 이 비교는 모델 크기와 속도에서 차이가 나는 것을 보여준다.
  • SAM 모델은 자동 분할에 대한 고유한 기능을 제공하지만, YOLOv8 세그먼트 모델처럼 크기와 속도에서 효율성을 추구하지 않는다.

2.16.1. 자동 주석: 효율적인 데이터셋 생성

  • SAM 2의 자동 주석 기능은 사전 학습된 모델을 활용하여 분할 데이터셋을 빠르고 정확하게 생성할 수 있게 한다.
  • 이를 통해 연구자와 개발자가 대규모 고품질 데이터셋을 손쉽게 생성할 수 있다.

2.17. SAM 2로 자동 주석하는 방법

from ultralytics.data.annotator import auto_annotate

auto_annotate(data="path/to/images", det_model="yolov8x.pt", sam_model="sam2_b.pt")

2.18. SAM 2의 한계

  • SAM 2는 많은 장점을 가지고 있지만 몇 가지 한계도 존재한다:
    • 추적 안정성: 긴 시퀀스나 시점 변화가 큰 경우, SAM 2는 객체 추적을 놓칠 수 있다.
    • 객체 혼동: 복잡한 장면에서는 비슷하게 생긴 객체를 혼동할 수 있다.
    • 다수 객체 처리 효율성: 여러 객체를 동시에 처리할 때 세그먼트 효율이 떨어진다.
    • 세부 정확도: 빠르게 움직이는 객체에서 세부적인 부분을 놓칠 수 있다.

3. 검증사항

  • 풋살 비디오에 대한 tracking 성능
  • fps 얼마나 나오는지
  • 자동 주석을 하면 어떻게 되는지?

4. github

4.1. 최신 업데이트

2024년 9월 30일 - SAM 2.1 개발자 스위트 (새 체크포인트, 훈련 코드, 웹 데모) 출시

  • 개선된 모델 체크포인트(SAM 2.1로 표기됨) 세트가 새로 출시되었습니다. 자세한 내용은 모델 설명을 참조하세요.
  • 훈련(및 미세 조정) 코드가 공개되었습니다. 시작 방법은 training/README.md에서 확인하세요.
  • SAM 2 웹 데모를 위한 프론트엔드 및 백엔드 코드가 공개되었습니다. demo/README.md에서 자세한 내용을 확인하세요.

4.2. 설치

  • SAM 2는 사용하기 전에 설치해야 합니다. 이 코드는 python>=3.10, torch>=2.3.1, torchvision>=0.18.1을 필요로 합니다. PyTorch 및 TorchVision 종속성 설치 지침을 따르세요. SAM 2를 GPU 환경에 설치하려면 다음 명령을 사용하세요:
git clone https://github.com/facebookresearch/sam2.git && cd sam2
pip install -e .

SAM 2 예측기를 사용하고 예시 노트북을 실행하려면 jupytermatplotlib가 필요하며, 다음 명령으로 설치할 수 있습니다:

pip install -e ".[notebooks]"

참고:

  • Anaconda로 새로운 Python 환경을 생성한 후 설치하는 것이 권장되며, PyTorch 2.3.1(또는 그 이상)을 pip로 설치하세요. 현재 환경에서 PyTorch 버전이 2.3.1보다 낮다면, 위 설치 명령은 pip를 통해 최신 PyTorch 버전으로 업그레이드합니다.
  • 위 단계는 nvcc 컴파일러로 맞춤 CUDA 커널을 컴파일하는 작업을 필요로 합니다. 만약 컴퓨터에 이미 CUDA 툴킷이 설치되어 있지 않다면, PyTorch CUDA 버전에 맞는 CUDA 툴킷을 설치하세요.
  • 설치 중 "SAM 2 CUDA 확장을 빌드하지 못했습니다"와 같은 메시지가 보이면 무시하고 계속 사용하세요. 일부 후처리 기능이 제한될 수 있지만, 대부분의 경우 결과에 영향을 주지 않습니다.

설치 중 발생할 수 있는 문제와 해결책에 대해서는 INSTALL.md에서 자주 묻는 질문을 확인하세요.

4.2. 시작하기

4.2.1. 체크포인트 다운로드

먼저, 모델 체크포인트를 다운로드해야 합니다. 모든 모델 체크포인트는 다음 명령으로 다운로드할 수 있습니다:

cd checkpoints && \
./download_ckpts.sh && \
cd ..

또는 개별적으로 다운로드할 수 있습니다:

  • sam2.1_hiera_tiny.pt
  • sam2.1_hiera_small.pt
  • sam2.1_hiera_base_plus.pt
  • sam2.1_hiera_large.pt

(이들은 SAM 2.1로 표시된 개선된 체크포인트입니다. 자세한 내용은 모델 설명을 참조하세요.)

이후 SAM 2는 이미지와 비디오 예측에 다음과 같이 간단하게 사용할 수 있습니다.

이미지 예측

SAM 2는 정적 이미지에 대한 SAM의 모든 기능을 가지고 있으며, 이미지 사용 사례를 위해 SAM과 유사한 이미지 예측 API를 제공합니다. SAM2ImagePredictor 클래스는 이미지 프롬프트를 위한 쉬운 인터페이스를 제공합니다.

import torch
from sam2.build_sam import build_sam2
from sam2.sam2_image_predictor import SAM2ImagePredictor

checkpoint = "./checkpoints/sam2.1_hiera_large.pt"
model_cfg = "configs/sam2.1/sam2.1_hiera_l.yaml"
predictor = SAM2ImagePredictor(build_sam2(model_cfg, checkpoint))

with torch.inference_mode(), torch.autocast("cuda", dtype=torch.bfloat16):
    predictor.set_image(<your_image>)
    masks, _, _ = predictor.predict(<input_prompts>)

정적 이미지 사용 사례에 대해서는 image_predictor_example.ipynb (또는 Colab에서) 예시를 참조하세요.

SAM 2는 또한 이미지에서 자동 마스크 생성을 지원합니다. 자동 마스크 생성을 위한 automatic_mask_generator_example.ipynb (또는 Colab에서) 예시를 참조하세요.

4.3 비디오 예측

  • 비디오에서 프롬프트를 사용한 세분화 및 추적을 위해, 우리는 비디오 예측기를 제공하며,
  • 프롬프트를 추가하고 비디오 전반에 마스크를 전파하는 API를 제공합니다.
  • SAM 2는 여러 객체에 대한 비디오 추론을 지원하며, 각 비디오에서 상호작용을 추적하는 추론 상태를 유지합니다.
import torch
from sam2.build_sam import build_sam2_video_predictor

checkpoint = "./checkpoints/sam2.1_hiera_large.pt"
model_cfg = "configs/sam2.1/sam2.1_hiera_l.yaml"
predictor = build_sam2_video_predictor(model_cfg, checkpoint)

with torch.inference_mode(), torch.autocast("cuda", dtype=torch.bfloat16):
    state = predictor.init_state(<your_video>)

    # 새 프롬프트를 추가하고 같은 프레임에서 바로 결과 얻기
    frame_idx, object_ids, masks = predictor.add_new_points_or_box(state, <your_prompts>):

    # 프롬프트를 전파하여 비디오 전반에 마스크 생성
    for frame_idx, object_ids, masks in predictor.propagate_in_video(state):
        ...
  • 비디오 추적에 대해서는 video_predictor_example.ipynb (또는 Colab에서) 예시를 참조하세요.

Hugging Face에서 불러오기

대안적으로, 모델은 Hugging Face에서 불러올 수 있습니다 (pip install huggingface_hub 필요).

이미지 예측:

import torch
from sam2.sam2_image_predictor import SAM2ImagePredictor

predictor = SAM2ImagePredictor.from_pretrained("facebook/sam2-hiera-large")

with torch.inference_mode(), torch.autocast("cuda", dtype=torch.bfloat16):
    predictor.set_image(<your_image>)
    masks, _, _ = predictor.predict(<input_prompts>)

비디오 예측:

import torch
from sam2.sam2_video_predictor import SAM2VideoPredictor

predictor = SAM2VideoPredictor.from_pretrained("facebook/sam2-hiera-large")

with torch.inference_mode(), torch.autocast("cuda", dtype=torch.bfloat16):
    state = predictor.init_state(<your_video>)

    # 새 프롬프트를 추가하고 같은 프레임에서 바로 결과 얻기
    frame_idx, object_ids, masks = predictor.add_new_points_or_box(state, <your_prompts>):

    # 프롬프트를 전파하여 비디오 전반에 마스크 생성
    for frame_idx, object_ids, masks in predictor.propagate_in_video(state):
        ...

모델 설명

SAM 2.1 체크포인트

아래 표는 2024년 9월 29일에 출시된 SAM 2.1 체크포인트의 성능을 나타냅니다.

모델크기 (M)속도 (FPS)SA-V 테스트 (J&F)MOSE val (J&F)LVOS v2 (J&F)
sam2.1_hiera_tiny38.947.276.571.877.3
sam2.1_hiera_small4643.3 (53.0 컴파일*)76.673.578.3
sam2.1_hiera_base_plus80.834.8 (43.8 컴파일*)78.273.778.2
sam2.1_hiera_large224.424.2 (30.2 컴파일*)79.574.6-
profile
모든 의사 결정 과정을 지나칠 정도로 모두 기록하고, 나중에 스스로 피드백 하는 것

0개의 댓글