본문 바로가기

Theory/DataScience

네이버 얼굴 인식 API 사용해보기 - 유명인 인식, 얼굴 인식

요즘 이미지를 가지고 노는데 푹 빠져 있습니다. 또 요즘은 진로에 대해서도 고민 중이랍니다. 뭔가 좀 더 아름다운 미래를 꿈꾸고 싶기도 하구요^^.뭐 아무튼 그런 와중에 최근 저는 OpenCV를 활용한 몇몇 학습을 진행했었는데요. 그 중에는 OpenCV를 이용한 얼굴인식도 있었고, CNN에서 학습된 모델을 활용한 필기 숫자 인식과 같은 것도 있었지요. 뭐 그리고 그 다음 단계를 넘어가려고 하다가~~~ 잠시 문득 생각나서 뒤져봤다니, 역시나 네이버가 얼굴 인식관련 서비스를 하고 있네요^^ 또 안해볼 수 없죠^^ 네이버는 CFR API라는 이름으로 서비스를 하고 있습니다. Clova Face Recognition API입니다.  네이버의 CFR API 가이드를 참조하시면 더더욱 안정적으로 서비스를 이요하실 수 있겠죠^^

아무튼.. 저기로 가서... 이용 신청을 해야합니다.^^ 무료 사용의 경우인지 (혹은 유료에서는 더 확장될 수 있는지는 모르겠습니다.) 아무튼 하루 1000건, 한 파일당 2M로 제한 되어 있습니다.

간단한 사용신청 양식을 입력하시구요... 흔히 말하는 인증키를 받게 됩니다.

뭐~~~ 끝났어용^^

출처 : 나의 아저씨... 정말 재미있게 봤습니다. 공학적 의도와 드라마의 화이팅을 기원하는 측면에서 저작권은 용서를 ...ㅠㅠ.

제가 요즘 너무나도 푹 빠져서 봤던 나의 아저씨에서 아이유님의 등장 장면을 테스트해보겠습니다.

import os
import sys
import requests
client_id = "------------"
client_secret = "----------"
url = "https://openapi.naver.com/v1/vision/celebrity" # 유명인 얼굴인식
files = {'image': open('face_detection_test_IU.jpg', 'rb')}
headers = {'X-Naver-Client-Id': client_id, 'X-Naver-Client-Secret': client_secret }
response = requests.post(url,  files=files, headers=headers)
rescode = response.status_code
if(rescode==200):
    print (response.text)
else:
    print("Error Code:" + rescode)

이 코드는 네이버 가이드에서 제공하는 코드입니다. 위 코드로 사진파일을 열고... 결과가 잘 나타나면...

위와 같은 결과가 나타납니다. 허.. 아이유라고 맞추네요.. 56.15%의 신뢰도입니다.^^ 위의 url 부분을 바꾸면 얼굴 인식이 됩니다.

url = "https://openapi.naver.com/v1/vision/face" # 얼굴감지
files = {'image': open('face_detection_test_IU.jpg', 'rb')}
headers = {'X-Naver-Client-Id': client_id, 'X-Naver-Client-Secret': client_secret }
response = requests.post(url, files=files, headers=headers)
rescode = response.status_code
if(rescode==200):
    print (response.text)
else:
    print("Error Code:" + rescode)

이렇게요~

이런 결과를 던져주네요. 잘 읽어보면, 얼굴이 하나 검출되었고, 여성이고, 등등의 정보가 엄청 많이 나오네요...

import matplotlib.pyplot as plt
import matplotlib.image as mpimg
import matplotlib.patches as patches
import numpy as np
import json
detect_result = json.loads(response.text)
detect_result

이렇게 json으로 받고... 또 몇몇 그림그리는데 필요한 아이들도 import하구요~

이렇게 이쁘게 받은 다음~~~

detect_summary = detect_result['faces'][0]
x, y, w, h = detect_summary['roi'].values()
gender, gen_confidence = detect_summary['gender'].values()
emotion, emotion_confidence = detect_summary['emotion'].values()
age, age_confidence = detect_summary['age'].values()

fig,ax = plt.subplots(figsize=(10,10))
ax.imshow(img)
rect_face = patches.Rectangle((x,y),w,h,
                              linewidth=5,
                              edgecolor='r',
                              facecolor='none')
ax.add_patch(rect_face)

annotation = gender + ' : ' + str(gen_confidence) + \
                '\n' + emotion + ' : ' + str(emotion_confidence) + \
                '\n' + age + ' : ' + str(age_confidence)
plt.figtext(0.15, 0.17 , annotation, wrap=True, fontsize=17, color='white')
plt.show()

이렇게 살짝꿍 만져주면....

헉... 아이유님이 좀 동안이긴 하지만, 17~21세로 보고 있군요... 여성임을 맞췄고... 저 표정은 그냥 neutral 하다는 군요^^

히히. 저의 풋풋(^^)했던 젊은날 사진으로 도전~

ㅎㅎㅎ 잘 나오네요.. 저 때가 6년전이라, 30대 후반인데... 24~28세로 봐주다니.. 저거 때문에 얼굴을 노출했습니다.ㅠㅠ. 여기서 더~~~

엽기 발랄한 우리 딸~~~ 아기 미바뤼.. 도전해야죠...

ㅎㅎㅎㅎㅎ. 저때가 돌 근처일때인데요.. ㅎㅎㅎ 0~2세, 놀람, 어린이..라고 맞추네요 ㅎㅎㅎ

반응형