키포인트 감지(Keypoint Detection)

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

Python을 사용하여 호스팅된 API를 통해 추론하려면 roboflow Python 패키지:

from roboflow import Roboflow
rf = Roboflow(api_key="API_KEY")
project = rf.workspace().project("MODEL_ENDPOINT")
model = project.version(VERSION).model

# 로컬 이미지에서 추론
print(model.predict("your_image.jpg", confidence=40, overlap=30).json())

# 예측 시각화
# model.predict("your_image.jpg", confidence=40, overlap=30).save("prediction.jpg")

# 외부에 호스팅된 이미지에서 추론
# print(model.predict("URL_OF_YOUR_IMAGE", hosted=True, confidence=40, overlap=30).json())

응답 객체 형식

호스팅된 API 추론 경로는 다음을 반환합니다 JSON 예측 배열을 포함하는 객체입니다. 각 예측은 다음 속성을 가집니다:

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

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

  • width = 바운딩 박스의 너비

  • height = 바운딩 박스의 높이

  • class = 감지된 객체의 클래스 레이블

  • confidence = 감지된 객체가 올바른 레이블과 위치 좌표를 가질 확률(모델의 신뢰도)

  • 관절점 = 관절점 예측들의 배열

    • x = 관절점의 수평 중심(이미지 왼쪽 상단을 기준으로)

    • y = 관절점의 수직 중심(이미지 왼쪽 상단을 기준으로)

    • 클래스_이름 = 관절점의 이름

    • 클래스_id = 관절점의 id, 스켈레톤에 매핑됨 정점들 정점 색상과 스켈레톤 엣지를 매핑하려면 버전 레코드에, 프로젝트 버전 보기

    • confidence = 관절점이 올바른 위치에 있고 보이는(가려지지 않았거나 삭제되지 않음) 확신도

다음은 REST API의 예시 응답 객체입니다:

{
    "predictions": [
        {
            "x": 189.5,
            "y": 100,
            "width": 163,
            "height": 186,
            "class": "helmet",
            "confidence": 0.544,
            "keypoints": [
                {
                    "x": 189, 
                    "y": 20,
                    "class_name": "top",
                    "class_id": 0,
                    "confidence": 0.91
                },
                {
                    "x": 188, 
                    "y": 180,
                    "class_name": "bottom",
                    "class_id": 1,
                    "confidence": 0.93
                }
            ]
        }
    ],
    "image": {
        "width": 2048,
        "height": 1371
    }
}

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

추론 API 매개변수

Inference API 사용

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

base64로 인코딩된 이미지를 모델 엔드포인트로 직접 POST할 수 있습니다. 또는 이미지가 이미 다른 곳에 호스팅되어 있다면 URL을 쿼리 문자열의 매개변수에 대해 입력 이미지를 선택하세요. 예측에는 모델 결과를 선택하세요. 선택적 구성 속성을 사용하여 경계 상자의 색상과 크기를 변경할 수 있습니다. 매개변수로 전달할 수 있습니다.

경로 매개변수

이름
유형
설명

datasetSlug

string

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

version

number

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

쿼리 매개변수

이름
유형
설명

매개변수에 대해 입력 이미지를 선택하세요. 예측에는 모델 결과를 선택하세요. 선택적 구성 속성을 사용하여 경계 상자의 색상과 크기를 변경할 수 있습니다.

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 예측 배열을 반환합니다. (응답 형식 탭 참조). 매개변수에 대해 입력 이미지를 선택하세요. 예측에는 모델 결과를 선택하세요. 선택적 구성 속성을 사용하여 경계 상자의 색상과 크기를 변경할 수 있습니다. - 주석된 예측이 포함된 이미지를 바이너리 블롭으로 반환합니다. Content-Typeimage/jpeg. image_and_json - base64로 인코딩된 시각화 필드를 포함한 JSON 예측 배열을 반환합니다. 기본값: json

api_key

string

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

요청 본문

이름
유형
설명

string

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

{
    "predictions": [{
        "x": 234.0,
        "y": 363.5,
        "width": 160,
        "height": 197,
        "class": "hand",
        "confidence": 0.943
    }, {
        "x": 504.5,
        "y": 363.0,
        "width": 215,
        "height": 172,
        "class": "hand",
        "confidence": 0.917
    }, {
        "x": 1112.5,
        "y": 691.0,
        "width": 139,
        "height": 52,
        "class": "hand",
        "confidence": 0.87
    }, {
        "x": 78.5,
        "y": 700.0,
        "width": 139,
        "height": 34,
        "class": "hand",
        "confidence": 0.404
    }]
}

Last updated

Was this helpful?