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

Segment Anything (SAM)

समर्पित डिप्लॉयमेंट या स्व-होस्टेड Inference पर Meta के मूल Segment Anything मॉडल का उपयोग करें

सेगमेंट एनीथिंग यह Meta का मूल प्रॉम्प्टेबल इमेज सेगमेंटेशन मॉडल है। आप इसे किसी ऑब्जेक्ट के भीतर एक बिंदु (या एक बॉक्स) देते हैं, और यह उस ऑब्जेक्ट की सटीक सीमा को चिह्नित करने वाला एक मास्क लौटाता है।

SAM दो चरणों में काम करता है:

  1. छवि के लिए एक एम्बेडिंग बनाएं।

  2. जिस ऑब्जेक्ट को आप सेगमेंट करना चाहते हैं, उसके निर्देशांकों के साथ मॉडल को प्रॉम्प्ट करें।

एम्बेडिंग्स को द्वारा कैश किया जाता है image_id , इसलिए एक बार छवि एम्बेड हो जाने पर आप उसे दोबारा एन्कोड किए बिना उस पर कई प्रॉम्प्ट भेज सकते हैं।

नई परियोजनाओं के लिए, इसे प्राथमिकता दें SAM2 (तेज़, बेहतर मास्क, वीडियो सपोर्ट) या SAM3 (टेक्स्ट प्रॉम्प्ट से किसी अवधारणा के हर उदाहरण को सेगमेंट करता है)। SAM v1 मौजूदा इंटीग्रेशनों के लिए यहाँ दस्तावेज़ित है।

SAM Serverless Cloud API पर उपलब्ध नहीं है। इसे किसी पर चलाएँ समर्पित डिप्लॉयमेंट या स्व-होस्टेड Inference.

कोड नमूना

1

अपनी API कुंजी प्राप्त करें

एक Roboflow खाता बनाएँ, अपनी कुंजी यहाँ ढूँढें Roboflow API सेटिंग्स पेज और इसे अपने शेल में उपलब्ध कराएँ:

export ROBOFLOW_API_KEY="आपकी-कुंजी-यहाँ"
2

निर्भरताएँ इंस्टॉल करें

pip install requests
3

एक छवि एम्बेड करें

एम्बेडिंग छवि का एक संख्यात्मक प्रतिनिधित्व है। SAM इसका उपयोग ऑब्जेक्ट की स्थितियों की गणना करने के लिए करता है। सेट करें base_url को अपने Dedicated Deployment 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 को अपने डिप्लॉयमेंट लक्ष्य से मिलाएँ:

अधिक पढ़ें

अंतिम अपडेट

क्या यह उपयोगी था?