객체 감지
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
데이터셋 버전을 식별하는 버전 번호입니다.
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-Type
는image/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?