메타의 AI, FAIR
Nikhila Ravi, Valentin Gabeur, Yuan-Ting Hu, Ronghang Hu, Chaitanya Ryali, Tengyu Ma, Haitham Khedr, Roman Rädle, Chloe Rolland, Laura Gustafson, Eric Mintun, Junting Pan, Kalyan Vasudev Alwala, Nicolas Carion, Chao-Yuan Wu, 로스 기르쉬크, 피오트르 달러르, 크리스토프 파이히텐호퍼
[ Paper
] [ Project
] [ Demo
] [ Dataset
] [ Blog
] [ BibTeX
]
SAM 2(Segment Anything Model 2) 는 이미지와 비디오의 신속한 시각적 분할 문제를 해결하기 위한 기반 모델입니다. 이미지를 단일 프레임의 비디오로 간주하여 SAM을 비디오로 확장합니다. 모델 설계는 실시간 비디오 처리를 위한 스트리밍 메모리를 갖춘 간단한 변환기 아키텍처입니다. 우리는 현재까지 가장 큰 비디오 분할 데이터 세트인 SA-V 데이터 세트를 수집하기 위해 사용자 상호 작용을 통해 모델과 데이터를 개선하는 Model-in-the-Loop 데이터 엔진을 구축합니다. 데이터를 기반으로 훈련된 SAM 2는 광범위한 작업 및 시각적 영역에서 강력한 성능을 제공합니다.
2024년 9월 30일 -- SAM 2.1 개발자 제품군(새로운 체크포인트, 교육 코드, 웹 데모) 출시
pip uninstall SAM-2
통해 이전 버전을 제거하고 이 리포지토리에서 최신 코드를 가져온 다음( git pull
사용) 아래 설치에 따라 리포지토리를 다시 설치하세요.training/README.md
참조하세요.demo/README.md
참조하세요. SAM 2를 사용하기 전에 먼저 설치해야 합니다. 코드에는 python>=3.10
과 torch>=2.3.1
및 torchvision>=0.18.1
필요합니다. PyTorch 및 TorchVision 종속성을 모두 설치하려면 여기 지침을 따르십시오. 다음을 사용하여 GPU 시스템에 SAM 2를 설치할 수 있습니다.
git clone https://github.com/facebookresearch/sam2.git && cd sam2
pip install -e .
Windows에 설치하는 경우 Ubuntu와 함께 WSL(Linux용 Windows 하위 시스템)을 사용하는 것이 좋습니다.
SAM 2 예측기를 사용하고 예제 노트북을 실행하려면 jupyter
및 matplotlib
필요하며 다음을 통해 설치할 수 있습니다.
pip install -e " .[notebooks] "
메모:
pip
통해 PyTorch 2.3.1(또는 그 이상)을 설치하는 것이 좋습니다. 현재 환경에 2.3.1보다 낮은 PyTorch 버전이 있는 경우 위의 설치 명령은 pip
사용하여 최신 PyTorch 버전으로 업그레이드하려고 시도합니다.nvcc
컴파일러를 사용하여 사용자 정의 CUDA 커널을 컴파일해야 합니다. 귀하의 컴퓨터에서 아직 사용할 수 없는 경우 PyTorch CUDA 버전과 일치하는 버전으로 CUDA 툴킷을 설치하십시오.Failed to build the SAM 2 CUDA extension
와 같은 메시지가 표시되면 이를 무시하고 계속 SAM 2를 사용할 수 있습니다(일부 후처리 기능은 제한될 수 있지만 대부분의 경우 결과에는 영향을 미치지 않습니다). 잠재적인 문제와 해결 방법에 대한 FAQ는 INSTALL.md
참조하세요.
먼저 모델 체크포인트를 다운로드해야 합니다. 모든 모델 체크포인트는 다음을 실행하여 다운로드할 수 있습니다.
cd checkpoints &&
./download_ckpts.sh &&
cd ..
또는 다음에서 개별적으로:
(이는 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는 또한 SAM과 마찬가지로 이미지에 대한 자동 마스크 생성을 지원합니다. 이미지의 자동 마스크 생성에 대해서는 automatic_mask_generator_example.ipynb(여기서는 Colab에도 있음)를 참조하세요.
비디오의 신속한 분할 및 추적을 위해 예를 들어 프롬프트를 추가하고 비디오 전체에 마스크렛을 전파하는 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 > ) # add new prompts and instantly get the output on the same frame frame_idx , object_ids , masks = predictor . add_new_points_or_box ( state , < your_prompts > ): # propagate the prompts to get masklets throughout the video for frame_idx , object_ids , masks in predictor . propagate_in_video ( state ): ...
클릭 또는 상자 프롬프트를 추가하고, 개선하고, 동영상에서 여러 개체를 추적하는 방법에 대한 자세한 내용은 video_predictor_example.ipynb(여기서는 Colab에도 있음)의 예를 참조하세요.
또는 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 > ) # add new prompts and instantly get the output on the same frame frame_idx , object_ids , masks = predictor . add_new_points_or_box ( state , < your_prompts > ): # propagate the prompts to get masklets throughout the video for frame_idx , object_ids , masks in predictor . propagate_in_video ( state ): ...
아래 표는 2024년 9월 29일에 출시된 향상된 SAM 2.1 체크포인트를 보여줍니다.
모델 | 사이즈(M) | 속도(FPS) | SA-V 테스트(J&F) | 모세발(J&F) | LVOS v2(J&F) |
---|---|---|---|---|---|
sam2.1_hiera_tiny (구성, 체크포인트) | 38.9 | 47.2 | 76.5 | 71.8 | 77.3 |
sam2.1_hiera_small (구성, 체크포인트) | 46 | 43.3(53.0 컴파일*) | 76.6 | 73.5 | 78.3 |
sam2.1_hiera_base_plus (구성, 체크포인트) | 80.8 | 34.8(43.8 컴파일*) | 78.2 | 73.7 | 78.2 |
sam2.1_hiera_large (구성, 체크포인트) | 224.4 | 24.2(30.2 컴파일*) | 79.5 | 74.6 | 80.6 |
2024년 7월 29일에 출시된 이전 SAM 2 체크포인트는 다음과 같이 확인할 수 있습니다.
모델 | 사이즈(M) | 속도(FPS) | SA-V 테스트(J&F) | 모세발(J&F) | LVOS v2(J&F) |
---|---|---|---|---|---|
sam2_hiera_tiny (구성, 체크포인트) | 38.9 | 47.2 | 75.0 | 70.9 | 75.3 |
sam2_hiera_small (구성, 체크포인트) | 46 | 43.3(53.0 컴파일*) | 74.9 | 71.5 | 76.4 |
sam2_hiera_base_plus (구성, 체크포인트) | 80.8 | 34.8(43.8 컴파일*) | 74.7 | 72.8 | 75.8 |
sam2_hiera_large (구성, 체크포인트) | 224.4 | 24.2(30.2 컴파일*) | 76.0 | 74.6 | 79.8 |
* 구성에서 compile_image_encoder: True
설정하여 모델을 컴파일합니다.
자세한 내용은 sav_dataset/README.md를 참조하세요.
이미지, 비디오 또는 둘 다의 사용자 정의 데이터 세트에서 SAM 2를 훈련하거나 미세 조정할 수 있습니다. 시작하는 방법에 대한 교육 README를 확인하세요.
SAM 2 웹 데모(https://sam2.metademolab.com/demo와 유사한 로컬 배포 가능 버전)를 위한 프런트엔드 + 백엔드 코드를 출시했습니다. 자세한 내용은 웹 데모 README를 참조하세요.
SAM 2 모델 체크포인트, SAM 2 데모 코드(프런트엔드 및 백엔드) 및 SAM 2 교육 코드는 Apache 2.0에서 라이센스가 부여되지만 SAM 2 데모 코드에 사용되는 Inter Font 및 Noto Color Emoji는 Apache 2.0에서 사용할 수 있습니다. SIL 오픈 글꼴 라이선스, 버전 1.1.
기여 및 행동 강령을 참조하세요.
SAM 2 프로젝트는 많은 기여자들의 도움으로 가능해졌습니다(알파벳순).
Karen Bergan, Daniel Bolya, Alex Bosenberg, Kai Brown, Vispi Cassod, Christopher Chedeau, Ida Cheng, Luc Dahlin, Shoubhik Debnath, Rene Martinez Doehner, Grant Gardner, Sahir Gomez, Rishi Godugu, Baishan Guo, Caleb Ho, Andrew Huang, Somya Jain, Bob Kamma, Amanda Kallet, Jake Kinney, Alexander Kirillov, Shiva Koduvayur, Devansh Kukreja, Robert Kuo, Aohan Lin, Parth Malani, Jitendra Malik, Mallika Malhotra, Miguel Martin, Alexander Miller, Sasha Mitts, William Ngan, George Orlin, 조엘 피노, 케이트 샌코, 로드릭 셰퍼드, 아지타 쇼크푸어, 데이비드 수피안, 조나단 토레스, 제니 트엉, 사가르 베이즈, 멩 왕, 클로데트 워드, 펑추안 장.
타사 코드: 마스크 예측을 위한 선택적 후처리 단계로 cc_torch
( LICENSE_cctorch
의 라이선스 포함)에서 채택된 GPU 기반 연결 구성 요소 알고리즘을 사용합니다.
연구에 SAM 2 또는 SA-V 데이터 세트를 사용하는 경우 다음 BibTeX 항목을 사용하십시오.
@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 }
}