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

Roboflow 2.0

Roboflow 2.0 시맨틱 세그멘테이션 모델을 Serverless Hosted API를 통해 사용하세요.

Roboflow 2.0은 DeepLabv3 기반 의미론적 분할 모델입니다. Roboflow 2.0 모델은 Roboflow 플랫폼에서 학습하고 우리의 Serverless Cloud API.

자체 호스팅 배포의 경우 다음을 참조하세요 Roboflow Inference.

코드 예시

1

API 키 받기

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

export ROBOFLOW_API_KEY="your-key-here"
2

의존성 설치

다음을 설치하세요 Inference SDKsupervision:

pip install -U inference-sdk supervision
3

모델 실행

사용자가 학습한 Roboflow 2.0 의미론적 분할 모델에 대해 추론을 실행하고, 픽셀별 클래스 맵을 디코딩한 다음, 주석이 추가된 PNG를 작성합니다. 모델은 그 모델의 {workspace}/{model-slug} ID를 사용하세요(참조: 버전, 학습, 및 모델).

응답에는 하나의 segmentation_mask (base64로 인코딩된 그레이스케일 PNG로, 각 픽셀 값은 클래스 ID이고 0 0은 배경입니다) 그리고 하나의 class_map 클래스 ID를 클래스 이름에 매핑하는 class_map이 있습니다. 스크립트는 이를 하나의 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 를 배포 대상에 맞게:

  • https://serverless.roboflow.com 서버리스 클라우드 API용입니다.

  • http://localhost:9001 로컬 Inference 서버용.

  • 당신의 전용 배포 비공개 엔드포인트용 URL.

마지막 업데이트

도움이 되었나요?