객체 감지(Object Detection)

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 참조

URL

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

이름
유형
설명

projectId

string

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

version

number

데이터셋 버전을 식별하는 버전 번호

프로젝트 ID와 버전 번호를 얻는 방법 보기 확인하세요.

Hosted Inference API로 이미지를 REST 요청으로 전송하는 방법은 두 가지가 있습니다:

  • 첨부하기: 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: 주석이 달린 예측이 포함된 이미지를 이진 블롭으로 반환하며 Content-Typeimage/jpeg.

기본값: json

api_key

string

워크스페이스 API 설정 페이지에서 얻은 API 키

요청 본문

유형
설명

string

base64로 인코딩된 이미지. (쿼리 매개변수로 이미지 URL을 전달하지 않을 때 필요합니다).

콘텐츠 유형은 다음과 같아야 합니다 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
    }
}

The 매개변수에 대해 입력 이미지를 선택하세요. 예측에는 모델 결과를 선택하세요. 선택적 구성 속성을 사용하여 경계 상자의 색상과 크기를 변경할 수 있습니다. 속성은 추론을 위해 전송된 이미지의 높이와 너비를 포함합니다. 바운딩 박스 계산에 이 값을 사용해야 할 수 있습니다.

추론 API JSON 출력에서 박스 그리기

바운딩 박스를 렌더링하는 프레임워크와 패키지는 위치 형식이 다를 수 있습니다. 응답 JSON 객체의 속성을 고려하면, 다음 규칙들의 조합을 사용해 항상 바운딩 박스를 그릴 수 있습니다:

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

  • 모서리 점들 (x1, y1) 이제 GPU TRT 컨테이너가 Docker에서 실행 중입니다. 다른 Ubuntu 터미널을 열어 Docker 컨테이너로 추론 데이터를 보낼 준비를 합니다. 다음을 사용하세요: (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?