표정인식 기술 API란?
표정인식 기술은 이미지에서 사람의 표정을 인식하고 행복, 분노, 역겨움, 공포, 슬픔, 놀람, 중립, 졸림, 싫음, 평안의 10가지 표정으로 분류하는 기술입니다.
다양한 연령대와 성별을 고려하여 한국인을 대상으로 데이터를 구축하고 학습한 결과입니다.
분류 가능한 표정(10가지)
행복,분노,역겨움,공포,슬픔,놀람,중립,졸림,싫음,평안
API 호출 1일 허용량
| 기술명 | API명 | 1일 허용량 |
|---|---|---|
| 표정 인식 기술 | 표정인식 API | 250건/일 |
표정인식 API 사용하기
표정인식 API는 REST API이며, 다의어 조회의 대상 어휘 데이터를 HTTP 통신으로 ETRI Open API 서버에 전달하면 됩니다. 서버가 제공하는 REST API의 URI는 다음과 같으며 POST 방식으로 호출해야 합니다.
http://epretx.etri.re.kr:8000/api/FacialExpression
[HTTP Request Header]
"Authorization" : "YOUR_ACCESS_KEY"
[HTTP Request Body]
{
"request_id": "reserved field",
"argument": {
"file": "{이미지 base64 인코딩}"
"type": "{이미지 파일 확장자}",
"person_mode": 1
}
위와 같은 HTTP 요청을 e-PreTX 서버로 전달하면 서버는 JSON 형태의
Text 데이터를 HTTP 응답 메시지로 반환합니다. 다음은 HTTP 응답 예제 입니다.
[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": {표정인식 API 결과 JSON}
}
구현 예제(Python)
python 3.0을 기준으로 작성되었습니다.
HTTP 통신을 위해 urllib3 라이브러리를 사용하여 제공하고 있습니다. Python 3.0 이하의 버전에서
예제를 실행하기 위해서는 별도로 urllib3의 설치가 필요합니다.
설치에 대한 설명은 https://pypi.python.org/pypi/urllib3 를 참고하시기 바랍니다.
설치에 대한 설명은 https://pypi.python.org/pypi/urllib3 를 참고하시기 바랍니다.
urllib3 라이브러리에 대한 자세한 설명은 https://urllib3.readthedocs.io/en/latest/
에서 확인 하실 수 있습니다.
#-*- coding:utf-8 -*-
import urllib3
import json
openApiURL = "http://epretx.etri.re.kr:8000/api/FacialExpression"
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,
"person_mode": 1
}
}
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"))
