인공지능기반의 식물인식 기술

인공지능기반 식물인식 기술 API

인공지능기반의 식물인식 기술 API 란?

자연생태 전자 도감에 인공지능 기반의 식물인식 기술을 연동하여 입력된 식물에 대한 정보를 제공합니다. 인공지능기반의 식물인식 기술 API는 HTTP 기반의 REST API 인터페이스로 JSON 포맷 기반의 입력 및 출력을 지원하며 ETRI에서 제공하는 Access Key 인증을 통해 사용할 수 있는 Open API 입니다.

 

사전 준비 사항

인공지능기반의 식물인식 기술 API를 사용하려면 ETRI 인공지능 Open API 서비스에서 개발자 계정 등록을 해야 합니다. 개발자 계정 등록 이후 API 사용 신청을 통해 API 사용시 필요한 인증 정보를 획득해야 합니다.

  1. “ETRI AI” 홈페이지의 [Open API 사용신청] 페이지로 이동합니다.
  2. [Open API 사용신청] 페이지의 키 발급 신청하기 버튼을 클릭합니다.
  3. Open API의 Access Key 발급에 필요한 사용 신청 정보를 입력 후 등록하기 버튼을 클릭합니다.
    (등록된 사용 신청은 “ETRI AI” 관리자에 의해서 승인이 필요합니다.)
  4. [Open API 사용신청] 페이지의 키 발급 신청확인 버튼을 클릭합니다.
  5. 키 발급 신청에 입력한 “이메일”와 “패스워드”를 입력 후 API KEY 확인하기 버튼을 클릭합니다.
  6. 발급된 Open API의 Access Key를 확인합니다.

 

인공지능기반 식물인식 기술 API 사용하기

인공지능기반 식물인식 기술 API는 REST API이며, 인식할 식물 데이터를 HTTP 통신으로 ETRI Open API 서버에 전달하면 됩니다. 서버가 제공하는 REST API의 URI는 다음과 같으며 POST 방식으로 호출해야 합니다.

식물인식 서버: http://221.146.210.206:5000/upload

 

HTTP 요청으로 식물 인식을 요청할 때 사전 준비 사항에서 발급받은 Access key 정보를 요청하는 본문에 포함시켜야 합니다. 다음은 HTTP 요청 메시지 예입니다.

 

[HTTP Request Body]

{

    "request_id": "reserved field",

    "access_key": “YOUR_ACCESS_KEY”,

    "argument": {

        "image": “YOUR_WORD”

    }

}

 

위와 같은 HTTP 요청을 ETRI Open API 서버로 전달하면 서버는 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": {식물인식 추론 결과 JSON}

}

 

구현 예제

  1. Python

Python 3.5을 기준으로 작성되었습니다.

HTTP 통신을 위해 urllib 라이브러리를 사용하여 제공하고 있습니다. Python 3.0 이상의 버전에서 예제를 실행하기 위해서는 별도의 urllib 의 설치가 불필요합니다.

from PIL import Image
import os
import sys
import requests
import io
import base64
import urllib.request

client_id = "YOUR_ACCESS_ID"
client_secret = "YOUR_ACCESS_KEY"
url = "http://221.146.210.206:5000/upload"
img_url = "http://cfile212.uf.daum.net/image/2633CB415399781A14BBA6"
# 1. url 이미지를 불러와서 API사용(진행중)
if img_url:
    save_loc = "C:/Users/Admin/Desktop/flower_test/test10.jpg"
    urllib.request.urlretrieve(img_url,save_loc)
    uploadFile = {'image': open(save_loc, "rb")}
else:
# 2. local 이미지를 사용하여 API사용
    filename = "C:/Users/Admin/Desktop/flower_test/test4.jpg"
    uploadFile = {'image': open(filename, "rb")}

headers = {'X-Client-Id': client_id, 'X-Client-Secret': client_secret}
response = requests.post(url,  files=uploadFile, headers=headers)

rescode = response.status_code
if(rescode==200):
    print(response.text)
else:
    print("Error Code:" + rescode)