For the complete documentation index, see llms.txt. This page is also available as Markdown.

Segment Anything (SAM)

Meta의 원래 Segment Anything 모델을 Dedicated Deployment 또는 자체 호스팅 Inference에서 사용하세요.

Segment Anything Meta의 원조 프롬프트 기반 이미지 분할 모델입니다. 객체 안의 한 점(또는 박스)을 지정하면, 해당 객체의 정확한 경계를 표시하는 마스크를 반환합니다.

SAM은 두 단계로 작동합니다:

  1. 이미지에 대한 임베딩을 생성합니다.

  2. 분할하려는 객체의 좌표로 모델에 프롬프트를 입력합니다.

임베딩은 다음에 의해 캐시됩니다 image_id이므로, 한 번 이미지가 임베딩되면 다시 인코딩하지 않고도 그 이미지에 대해 여러 프롬프트를 보낼 수 있습니다.

새 프로젝트의 경우 다음을 사용하는 것이 좋습니다 SAM2 (더 빠르고, 마스크 품질이 더 좋으며, 비디오 지원) 또는 SAM3 (텍스트 프롬프트에서 개념의 모든 인스턴스를 분할합니다). SAM v1은 기존 통합을 위해 여기에서 문서화되어 있습니다.

SAM은 Serverless Cloud API에서 사용할 수 없습니다. 다음에서 실행하세요: 전용 배포 또는 자가 호스팅 추론.

코드 예시

1

API 키 받기

Roboflow 계정을 만들고, 다음에서 키를 찾으세요. Roboflow API 설정 페이지 에서 다음과 같이 셸에서 사용할 수 있도록 합니다:

export ROBOFLOW_API_KEY="your-key-here"
2

의존성 설치

pip install requests
3

이미지 임베딩

임베딩은 이미지의 수치 표현입니다. SAM은 이를 사용해 객체 위치를 계산합니다. 다음을 설정하세요 base_url 전용 배포 URL 또는 로컬 Inference 서버로.

import os
import requests

base_url = "http://localhost:9001"
api_key = os.environ["ROBOFLOW_API_KEY"]

payload = {
    "image": {"type": "url", "value": "https://media.roboflow.com/quickstart/traffic.jpg"},
    "image_id": "example_image_id",
}

response = requests.post(
    f"{base_url}/sam/embed_image?api_key={api_key}",
    json=payload,
)
embeddings = response.json()["embeddings"]

해당 image_id 임베딩을 캐시하므로 이후 동일 이미지에 대한 분할 요청에서 다시 보낼 필요가 없습니다.

4

객체 분할

객체 위에 있는 점을 적어도 하나 사용해 모델에 프롬프트를 입력합니다. point_labels 각 점을 양성(1, 포함) 또는 음성(0, 제외)으로 표시합니다.

payload = {
    "image": {"type": "url", "value": "https://media.roboflow.com/quickstart/traffic.jpg"},
    "point_coords": [[380, 350]],
    "point_labels": [1],
    "image_id": "example_image_id",
}

response = requests.post(
    f"{base_url}/sam/segment_image?api_key={api_key}",
    json=payload,
)
masks = response.json()["masks"]

응답에는 관심 객체에 대한 분할 마스크가 포함됩니다.

테스트 이미지의 점 좌표를 찾으려면 다음에 업로드하세요 PolygonZone 웹 도구 그리고 객체 위에 마우스를 올리세요. 파이프라인에서는 먼저 객체 탐지기를 실행하고 각 박스의 중심점을 SAM 프롬프트로 사용하는 것이 일반적인 패턴입니다.

설정 base_url 를 배포 대상에 맞게:

추가 읽을거리

마지막 업데이트

도움이 되었나요?