객체 감지

Roboflow에 호스팅된 객체 감지 모델에서 추론을 실행하세요.

Roboflow Hosted API를 사용하여 객체 감지 추론을 실행하는 방법에는 여러 가지가 있습니다. 다양한 SDK 중 하나를 사용하거나, REST 요청을 호스팅된 엔드포인트로 보낼 수 있습니다.

종속성을 설치하려면, pip install inference-sdk.

# inference-sdk 가져오기
from inference_sdk import InferenceHTTPClient

CLIENT = InferenceHTTPClient(
    api_url="https://detect.roboflow.com",
    api_key="API_KEY"
)

result = CLIENT.infer(your_image.jpg, model_id="football-players-detection-3zvbc/12")

API Reference

URL

POST https://detect.roboflow.com/:projectId/:versionNumber

이름
유형
설명

projectId

string

데이터셋 이름의 url-safe 버전입니다. 웹 UI에서 메인 프로젝트 뷰의 URL을 확인하거나, 모델 학습 후 데이터셋 버전의 train 결과 섹션에서 "Get curl command" 버튼을 클릭하여 찾을 수 있습니다.

version

number

데이터셋 버전을 식별하는 버전 번호입니다.

프로젝트 ID와 버전 번호를 얻는 방법 보기 여기.

REST 요청을 통해 Hosted Inference API로 이미지를 보내는 방법은 두 가지가 있습니다:

  • 첨부 base64 인코딩된 이미지를 POST 요청 본문에

  • 이미지 파일의 URL을 사용하여 이미지 URL 쿼리로 전송

    • 예시: https://detect.roboflow.com/:datasetSlug/:versionNumber?image=https://imageurl.com

쿼리 파라미터

이름
유형
설명

이미지

string

추가할 이미지의 URL입니다. 이미지가 외부에 호스팅된 경우 사용하세요. (요청 본문에 base64 인코딩 이미지를 POST하지 않을 때 필수) 참고: URL 인코딩을 잊지 마세요.

classes

string

특정 클래스의 예측만 제한합니다. 콤마로 구분된 문자열로 제공합니다. 예시: dog,cat 기본값: 없음 (모든 클래스 표시)

overlap

number

동일 클래스의 바운딩 박스 예측이 하나의 박스로 합쳐지기 전에 허용되는 최대 중첩 비율(0-100 기준)입니다.

기본값: 30

confidence

number

반환된 예측의 임계값(0-100 기준)입니다. 낮은 숫자는 더 많은 예측을 반환하고, 높은 숫자는 더 적지만 높은 확신의 예측만 반환합니다.

기본값: 40

stroke

number

예측 주위에 표시되는 바운딩 박스의 너비(픽셀 단위)입니다 ( format 일 때만 적용) 이미지).

기본값: 1

labels

boolean

예측에 텍스트 라벨을 표시할지 여부 ( format 일 때만 적용) 이미지).

기본값: false

format

string

옵션:

  • json: JSON 예측 배열을 반환합니다. (응답 형식 탭 참조).

  • image: 주석이 달린 예측이 포함된 이미지를 바이너리 blob으로 반환합니다. Content-Typeimage/jpeg.

기본값: json

api_key

string

API 키 (워크스페이스 API 설정 페이지에서 획득)

요청 본문

유형
설명

string

base64로 인코딩된 이미지입니다. (쿼리 파라미터에 이미지 URL을 전달하지 않을 때 필수)

Content-Type은 application/x-www-form-urlencoded 이어야 하며, 본문은 문자열입니다.

응답 형식

호스팅된 API 추론 엔드포인트와 대부분의 SDK는 JSON 예측 배열이 포함된 객체를 반환합니다. 각 예측에는 다음 속성이 있습니다:

  • x = 감지된 객체의 수평 중심점

  • y = 감지된 객체의 수직 중심점

  • width = 바운딩 박스의 너비

  • height = 바운딩 박스의 높이

  • class = 감지된 객체의 클래스 라벨

  • confidence = 감지된 객체가 올바른 라벨과 위치 좌표를 가질 확률에 대한 모델의 신뢰도

REST API의 예시 응답 객체는 다음과 같습니다:

{
    "predictions": [
        {
            "x": 189.5,
            "y": 100,
            "width": 163,
            "height": 186,
            "class": "helmet",
            "confidence": 0.544
        }
    ],
    "image": {
        "width": 2048,
        "height": 1371
    }
}

해당 이미지 속성에는 추론에 보낸 이미지의 높이와 너비가 포함됩니다. 바운딩 박스 계산에 이 값을 사용할 수 있습니다.

Inference API JSON 출력에서 박스 그리기

바운딩 박스를 렌더링하는 프레임워크와 패키지마다 위치 포맷이 다를 수 있습니다. 응답 JSON 객체의 속성을 이용하면 다음 규칙 조합으로 항상 바운딩 박스를 그릴 수 있습니다:

  • 중심점은 항상 (x,y)

  • 코너 포인트 (x1, y1)(x2, y2) 는 다음과 같이 구할 수 있습니다:

    • x1 = x - (width/2)

    • y1 = y - (height/2)

    • x2 = x + (width/2)

    • y2 = y + (height/2)

코너 포인트 방식은 Pillow 등의 라이브러리에서 흔히 사용됩니다. box 객체를 만들어 바운딩 박스를 Image.

에 렌더링할 때 모든 감지 결과를 반복하는 것을 잊지 마세요. predictions!

# Pillow 라이브러리의 예시 box 객체
for bounding_box in detections:
    x1 = bounding_box['x'] - bounding_box['width'] / 2
    x2 = bounding_box['x'] + bounding_box['width'] / 2
    y1 = bounding_box['y'] - bounding_box['height'] / 2
    y2 = bounding_box['y'] + bounding_box['height'] / 2
    box = (x1, x2, y1, y2)

Last updated

Was this helpful?