본문 바로가기

Theory/DataScience

카카오 얼굴 및 상품 인식 API 사용해보기

얼마전.. 바로 직전 포스팅에서 네이버 API를 사용해서 얼굴 인식하는 이야기를 했었는데요. 그걸 데리고 놀다가 내친김에 그냥 카카오에서 제공하는 비슷한 API도 테스트를 해보았습니다. 뭐 그냥 등록하고, 사용하면 되니까요^^

카카오 개발자 사이트인데요. 정말 많은 개발자용 플랫폼을 제공하는 군요. 그러나 모바일에서만 접근 가능한 아이들이 많아서 다 테스트는 안되더군요. 전 음성을 테스트해보고 싶었는데 그건 모바일에서만 가능한 듯 했습니다. 전 그중에 비전이라는 아이로 들어갔습니다.~

비전에서는 얼굴 검출이나

상품 검출 기능을 제공하고 있었는데요.

개발자 가이드에 들어가보면 자세한 안내를 받을 수 있습니다. 일단 접근 URL과 헤더 정보를 알 수 있습니다. 네이버때와 같이 등록하고, 키를 받는 과정을 거치면 됩니다.

뭐~~ 심플한 던지기와 받기(^^)입니다.

얼굴 인식에서 받은 결과의 각 필드에 대한 설명도 꽤 상세히 잘 되어 있습니다.

삼품 검출도 ~ 이제.. 시작해보죠~

import requests

url = "https://kapi.kakao.com/v1/vision/face/detect"
MYAPP_KEY = '**************************************'
headers = {'Authorization': 'KakaoAK {}'.format(MYAPP_KEY)}

filename = './face_detection_test_MR.jpg'
files = { 'file' : open(filename, 'rb')}

response = requests.post(url, headers=headers, files=files)

import matplotlib.pyplot as plt
import matplotlib.image as mpimg
import matplotlib.patches as patches
%matplotlib inline

result = response.json()
faces = result['result']['faces'][0]
facial_points = faces['facial_points']
fig_w, fig_h = result['result']['width'], result['result']['height']

img = mpimg.imread('face_detection_test_MR.jpg')
fig,ax = plt.subplots(figsize=(10,10))

target_obj = ['right_eyebrow', 'left_eyebrow', 'jaw', 'right_eye', 'left_eye']
for each_obj in target_obj:
    for each in facial_points[each_obj]:
        rect_face = patches.Circle((each[0]*fig_w, each[1]*fig_h),
                                   linewidth=3, edgecolor='c')
        ax.add_patch(rect_face)
    
ax.imshow(img)
plt.show()

코드는 네이버 API 사용과 크게 다를게 없습니다. 단 그 결과에서 얼굴 박스는 네이버때도 했으니 넘어가고, 이번에는 네이버 얼굴 검출이 주지 낳는 facial_points라는 값을 화면에 뿌려 보았습니다.

ㅎㅎ 오늘도 출연하신 우리 아가 미바뤼의 돌 쯔음~ 사진입니다. 아.. 얼굴 형상에 대해 알려주네요.. 재미있습니다.

url = "https://kapi.kakao.com/v1/vision/product/detect"
headers = {'Authorization': 'KakaoAK {}'.format(MYAPP_KEY)}

filename = './face_detection_test_PW.jpg'
files = { 'file' : open(filename, 'rb')}

response = requests.post(url, headers=headers, files=files)

result = response.json()
fig_w, fig_h = result['result']['width'], result['result']['height']

img = mpimg.imread('./face_detection_test_PW.jpg')
fig,ax = plt.subplots(figsize=(10,10))

for each in result['result']['objects']:
    x, y = each['x1']*fig_w, each['y1']*fig_h
    w, h = each['x2']*fig_w - x, each['y2']*fig_h - y
    rect = patches.Rectangle((x, y), w, h, lw=5, edgecolor='c', facecolor='none')
    ax.add_patch(rect)
    plt.text(x,y-10, each['class'], size=18, color='red')
    
ax.imshow(img)
plt.show()

이번에는 사물 인식에 도전합니다. 역시 네이버때 등장했던 제 사진.ㅠㅠ. 으로^^

우와.. 안경과 티셔츠를 맞추네요.. 신기합니다. 그런데.. 한가지.. 카카오 API의 정식 명칭이 상품검색입니다. 그래서인지.. 옷이나 신발 등과 같은 상품에 대해 잘 검색하고 나머지는 안하는 것 같습니다.^^

왜냐면.. 저 쉬운 책은 알려주지 않고, 원피스와 신발은 잘 찾아주거든요. ㅎㅎ 저기는 우리 아가 미바뤼는 뜬금 없는 곳에서 책을 보곤 한답니다.^^

그다음은.. 역시 우리 가족의 최애~ 플레이스인 괌입니다. 아웃리거 호텔이죠^^. 아무튼 여기서도, 모자, 원피스, 신발은 잘 찾아주네요^^ 네이버와 카카오의 얼굴아나 상품 등, 이미지 관련 API를 테스트해 볼 수 있었습니다. 다음은 구글 API로 도전해보면 좋겠네요^^

반응형