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

Roboflow 2.0

हमारी Serverless Hosted API के माध्यम से Roboflow 2.0 सिमैंटिक सेगमेंटेशन मॉडल का उपयोग करें

Roboflow 2.0 एक DeepLabv3-आधारित सिमेंटिक सेगमेंटेशन मॉडल है। आप Roboflow प्लेटफ़ॉर्म पर Roboflow 2.0 मॉडल को प्रशिक्षित करते हैं और उन्हें हमारे माध्यम से परिनियोजित करते हैं सर्वरलेस क्लाउड API के माध्यम से समर्थित करते हैं.

स्व-होस्टेड परिनियोजन के लिए देखें Roboflow Inference.

कोड नमूना

1

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

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

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

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

इंस्टॉल करें Inference SDK और supervision:

pip install -U inference-sdk supervision
3

मॉडल चलाएँ

अपने द्वारा प्रशिक्षित Roboflow 2.0 सिमेंटिक सेगमेंटेशन मॉडल पर इन्फ़रेंस चलाएँ, प्रति-पिक्सेल क्लास मैप को डिकोड करें, और एक एनोटेटेड PNG लिखें। अपने मॉडल को इसके {workspace}/{model-slug} ID में बदलें (देखें संस्करण, प्रशिक्षण और मॉडल).

प्रतिक्रिया में एक segmentation_mask (base64-एन्कोडेड ग्रेस्केल PNG, जहाँ प्रत्येक पिक्सेल मान एक क्लास ID है और 0 पृष्ठभूमि है) और एक class_map क्लास ID को क्लास नामों से मैप करने वाला। स्क्रिप्ट इसे एक sv.Detections प्रति क्लास एक पंक्ति, ताकि sv.MaskAnnotator मास्क को स्रोत छवि पर ओवरले कर सके।

import base64
import os
import cv2
import numpy as np
import supervision as sv
from inference_sdk import InferenceHTTPClient

image = sv.load_image_from_url("https://media.roboflow.com/quickstart/traffic.jpg")

client = InferenceHTTPClient(
    api_url="https://serverless.roboflow.com",
    api_key=os.environ["ROBOFLOW_API_KEY"],
)
# कोई पूर्व-प्रशिक्षित उपनाम नहीं: अपना मॉडल प्रशिक्षित करें और "your-project/1" को अपने मॉडल ID से बदलें।
result = client.infer(image, model_id="your-project/1")
predictions = result["predictions"]

mask_bytes = base64.b64decode(predictions["segmentation_mask"])
class_map = predictions.get("class_map", {})
class_mask = cv2.imdecode(np.frombuffer(mask_bytes, np.uint8), cv2.IMREAD_GRAYSCALE)
class_mask = cv2.resize(class_mask, (image.shape[1], image.shape[0]), interpolation=cv2.INTER_NEAREST)

class_ids = [cid for cid in np.unique(class_mask).tolist() if cid != 0]
if class_ids:
    masks, xyxy, names = [], [], []
    for cid in class_ids:
        binary = class_mask == cid
        rows = np.where(np.any(binary, axis=1))[0]
        cols = np.where(np.any(binary, axis=0))[0]
        xyxy.append([cols[0], rows[0], cols[-1], rows[-1]])
        masks.append(binary)
        names.append(class_map.get(str(cid), str(cid)))

    detections = sv.Detections(
        xyxy=np.array(xyxy, dtype=np.float64),
        mask=np.array(masks),
        class_id=np.array(class_ids),
        data={"class_name": np.array(names)},
    )
    annotated = sv.MaskAnnotator().annotate(image.copy(), detections)
    annotated = sv.LabelAnnotator().annotate(annotated, detections)
else:
    annotated = image

cv2.imwrite("annotated.png", annotated)
print("annotated.png सहेजा गया")

सेट करें api_url को अपने डिप्लॉयमेंट लक्ष्य से मिलाएँ:

अंतिम अपडेट

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