객체검출 API 란?
지원하는 객체 카테고리 (총 80개)
person, bicycle, car, motorcycle, airplane, bus, train, truck, boat, traffic light,
fire hydrant, stop sign, parking meter, bench, bird, cat, dog, horse, sheep, cow,
elephant, bear, zebra, giraffe, backpack, umbrella, handbag, tie, suitcase, frisbee, skis, snowboard, sports ball, kite, baseball bat, baseball glove, skateboard, surfboard, tennis racket, bottle, wine glass, cup, fork, knife, spoon, bowl, banana, apple, sandwich, orange, broccoli, carrot, hot dog, pizza, donut, cake, chair, couch, potted plant, bed, dining table, toilet, tv, laptop, mouse, remote, keyboard, cell phone, microwave, oven, toaster, sink, refrigerator, book, clock, vase, scissors, teddy, bear, hair drier, toothbrush
API 호출 1일 허용량
기술명 | API명 | 1일 허용량 |
---|---|---|
이미지 인식 기술 | 객체검출 API | 5,000건/일 (60초 이내/건당) |
객체검출 API 사용하기
http://epretx.etri.re.kr:8000/api/ObjectDetect
[HTTP Request Header]
"Authorization" : "YOUR_ACCESS_KEY"
[HTTP Request Body]
{
"request_id": "reserved field",
"argument": {
"file": "BASE64_STRING_IMAGE",
"type": "IMAGE_FILE_TYPE"
}
}
[HTTP Response Header]
Access-Control-Allow-Origin:*
Connection:close
Content-Length:0
Content-Type:application/json; charset=UTF-8
[HTTP Response Body]
{
"request_id": "reserved field",
"result": 0,
"return_type": "com.google.gson.internal.LinkedTreeMap",
"return_object": {객체검출 결과 JSON}
}
구현 예제(Python)
설치에 대한 설명은 https://pypi.python.org/pypi/urllib3 를 참고하시기 바랍니다.
#-*- coding:utf-8 -*-
import urllib3
import json
openApiURL = "http://epretx.etri.re.kr:8000/api/ObjectDetect"
accessKey = "YOUR_ACCESS_KEY"
imageFilePath = "IMAGE_FILE_PATH"
type = "IMAGE_FILE_TYPE"
file = open(imageFilePath, "rb")
imageContents = base64.b64encode(file.read()).decode("utf8")
file.close()
requestJson = {
"argument": {
"type": type,
"file": imageContents
}
}
http = urllib3.PoolManager()
response = http.request(
"POST",
openApiURL,
headers={"Content-Type": "application/json; charset=UTF-8","Authorization" : accessKey},
body=json.dumps(requestJson)
)
print("[responseCode]" + str(response.status))
print("[responBody]")
print(str(response.data,"utf-8"))
객체검출 API 레퍼런스
Field 명 | 타입 | 필수 여부 | 설명 |
---|---|---|---|
access_key | String | O | API 사용을 위해 ETRI에서 발급한 사용자 API Key 입니다. |
argument | Object | O | API 사용 요청 시 분석을 위해 전달할 내용입니다. |
file | String | O | 객체검출 하고자 하는 이미지를 Base64 문자열 변환한 내용 512x512 이하의 저해상도를 갖는 이미지에서는 객체 검출률이 낮아질 수 있습니다. |
type | String | O | 이미지 파일의 확장자 |
구분 | JSON Key 이름 | 설명 |
---|---|---|
객체검출 기본정보 |
data | |
class | 인식 된 객체명 | |
confidence | 신뢰도 | |
x | x 좌표 | |
y | y 좌표 | |
width | 길이 | |
height | 높이 |
JSON Key | 오류 메시지 | 설명 |
---|---|---|
error | This file is not allowed file type | 파일 타입(확장자)이 ‘jpg’, ‘jpeg’, ‘png’, ‘bmp’가 아닐 경우 |
This file is not image contents | 파일 타입(확장자)은 맞지만 입력된 파일이 실제 이미지파일이 아닐 경우 |
http status code | result | reason | 설명 |
---|---|---|---|
403 | -1 | Empty Auth Header | Authorization 헤더가 없는 경우 |
403 | -1 | Invalid Key | KEY
API 키가 없는 경우 |
403 |
-1 | Blocked KEY | API
키가 관리자에 의해서 차단된 경우 |
403 |
-1 | Daily Limit Exceeded | 일간 호출 제한에 걸린 경우 |
403 |
-1 | Monthly
Limit Exceeded |
월간 호출 제한에 걸린 경우 |
403 |
-1 | Yearly
Limit Exceeded |
연간 호출 제한에 걸린 경우 |
403 |
-1 | Too Many Keys | 같은 IP에서 여러 API 키가 사용된 경우 |
403 |
-1 | Too Many IPs | 하나의 API 키를 여러 IP 에서 사용한 경우 |
403 |
-1 | Not Allowed IP | API
호출 가능한 IP 가 아닌경우 (API 설정에서 허용된 IP가 아닌경우) |
403 |
-1 | Not Allowed Subpath | 하위경로 접근 제한이 되어 있는 경우 |
403 | -1 | Invalid
API |
등록되지
않은 API를 요청한 경우 |
408 | -1 |
Request
Timeout |
서버의
요청 대기가 시간을 초과한 경우 |
413 |
-1 | Body
Size Limit Exceeded |
요청
바디가 설정된 값보다 큰 경우 |
429 |
-1 | Concurrent
Limit Exceeded |
연속호출
허용 범위를 넘어서 호출한 경우 |
500 | -1 | Internal Server Error | 내부 오류 발생한 경우 |