실시간 마케팅 등에 활용되는 표정기반 감정분석 안녕하세요, 구독자님.
오늘은 어떤 기분이시고 어떤 표정을 하고 이 글을 보고 계신가요?
이 글을 쓰고 있는 저는 글을 읽게 되실 구독자님 개개인의 표정을 볼 순 없습니다. 단방향 소통을 하는 메일이라는 한계 때문이죠. 하지만 언젠가 메일이 진화해서 실시간 SNS처럼 상호작용할 수 있는 때가 온다면 어떻게 될까요? 댓글이나 피드백을 위한 설문조사 등이 아니라 글을 읽으시는 구독자님의 표정이나 행동반응 등을 분석해서 글쓴이에게 다시 피드백을 줄 수 있다면 말입니다. 그런 피드백 하나하나는 많은 정보를 담을 수는 없을지라도, 이런 것들이 모이면 구독자님들이 원하는 취향을 좀 더 잘 알 수 있게 되고 그에 맞춰 좀 더 알맞은 소재, 알맞은 내용으로 다가갈 수 있지 않을까요?
다소 뜬금없는 얘기이긴 했죠? 사실 이메일 등이 아닌 카메라 영상을 이용해서 고객 표정을 분석해서 실시간 마케팅 등에 활용하는 것은 실 생활에서 이미 적용되고 있는 분야이고 그 뒷단에는 머신러닝을 포함한 인공지능 기술이 큰 역할을 하고 있습니다.
그래서 오늘은 사람의 표정을 분석해서 활용하는 분야에 대해 간단하게 알아볼까 합니다. |
|
|
얼굴표정인식(Facial Expression Recognition, FER) |
|
|
얼굴표정인식이 뭔가요?
얼굴표정인식(이하 표정인식)이란 사람의 얼굴(주로 사진이나 영상)에서의 표정 분석을 통해 감정상태 등과 같은 것을 판별하는 것을 말합니다.
표정인식 연구는 언제부터 시작되었나요?
얼굴 표정을 분석하는 것은 우리가 '관상'이라는 것으로 잘 알고 있듯이 아주 오래 전부터 연구가 되어 왔습니다. 다만, 분석 기계나 소프트웨어 등을 이용하는 방법에 대한 것은 그리 오래 되진 않았을 것 같습니다. 인터넷 검색을 해 보니 1960년대에도 DARPA(미 국방 고등 연구 프로젝트기관)에서 얼굴표정의 보편성 연구 등을 수행한 적이 있다고 하더군요. ( 관련 기사) 컴퓨터의 등장과 소프트웨어 발전의 역사를 생각하면 그 비슷한 시기 정도부터이지 않을까 싶은데... 사실 정확한 것은 찾질 못했습니다. ^^;
인공지능으로 분석하는 감정에는 어떤 것이 있나요?
인간이 가질 수 있는 감정의 종류는 다양합니다. 대표적인 것으로 기쁨, 분노, 놀람, 두려움, 슬픔, 증오, 호기심 같은 7가지 기본 감정과 이들이 섞여 있는 수십가지 이상의 복합감정들이 있다고들 합니다. 연구자들에 따라서 이 기본 감정의 수와 종류도 제 각각 다르죠. 여기서는 그런 학술적인 부분까지는 들어가지 않겠습니다.
인공지능으로 분류하는 표정분석에서는 주로 잘 알려진 데이터셋을 기반으로 연구가 진행됩니다. 즉, 데이터셋 내에 표정 이미지 별로 미리 분류가 되어 있다는 거죠. 이 또한 데이터셋에 따라 달라질 수는 있겠지만 분노(angry), 경멸(disgusting), 두려움/공포(fear), 기쁨(happy), 슬픔(sad), 놀람(surprised), 중립(neutral) 이렇게 총 7개로 분류된 것이 많습니다. 인공지능 모델들도 이를 기준으로 분류를 하게 되는 것이죠.
인공지능에겐 표정인식이 어려운가요?
사람들은 대화를 할 때 얼굴 표정이나 손, 발과 기타 몸짓, 말소리의 떨림 등 순간적으로 다양한 신체적인 변화를 감지해서 상대방의 감정이나 상태를 파악합니다. 슈퍼컴보다 훨씬 뛰어난 사람의 뇌가 5가지 감각기관을 통해 들어온 정보를 순식간에 종합하고 거기에 약간의 '촉'을 가미해서 판단을 내리기 때문에 정확도가 상대적으로 높은 편이죠. 하지만, 사람도 표정만 보고는 정확한 판단을 내리기 힘든 경우는 많이 있습니다.
인공지능은 주로 영상과 소리, 글 혹은 뇌파 등 신체신호를 이용해서 감정분석을 하게 되는데 표정인식에는 사진이나 영상이 사용됩니다. 제한된 정보를 가지고 하는 분석이다 보니 아무래도 정확한 판단을 내리는 것은 어려움이 많겠죠. 사람은 인종이나 문화, 개인적인 차이 등에 따라 표정의 의미가 다를 수 있고 모델 학습을 위해 필요한 데이터가 특정한 민족이나 성별, 나이대에 치중되어 있을 가능성도 있으므로 정확도는 더 떨어질 수 있습니다. 또한 학습에 사용하는 데이터셋에는 감정 별 분류 분포가 불균형하거나 손이나 안경 등으로 가려져 있는 이미지도 많고 심지어는 사진이 아닌 얼굴 그림이 포함되어 있는 경우도 있다고 하네요. 그래서, 더 높은 정확도를 달성하기 위해서는 모델의 데이터 학습 전에 다양한 전처리 작업이 필요하기도 합니다.
|
|
|
FER2013 dataset에 있는 샘플 이미지 ( 출처) |
|
|
표정분석의 결과를 어디에 어떻게 사용하느냐에 따라 달라질 것 같습니다. 통계학적으로 분석하는 경우라면 정밀하지는 않더라도 비슷한 분석 결과를 가진 그룹으로 클러스터링을 할 수 있고 결과를 해석할 때 감안할 수 있는 것들이 있을 겁니다.
반면에 분석 결과를 추후 해석할 수 있는 '여유'가 없이 그 값을 즉시 사용해서 특정한 사람들에게 세세한 대응을 해야 하는 분야에서는 좀 더 문제가 될 수 있는 소지가 있습니다. 예를 들어 화가 나 있는 사람인데 표정을 보고 행복하다고 판단하여 인공지능이 농담을 한다거나, 외모에 민감한 젊은 사람들에게 나이들어 보인다는 피드백을 주는 그런 상황이면 흠... 얼른 자리를 피해야겠죠... ^^;
실제로 2022년 Microsoft는 클라우드에서 SaaS로 제공하던 얼굴인식 기능 가운데 감정/성별/나이 등을 예측하는 기능의 서비스를 중단키로 했습니다. 이는 단순하게 표정 이미지만으로 분석하는데 있어 과학적 근거의 부족과 사회적 편경,오남용 등의 문제가 발생할 수 있다는 의견 때문이었다고 합니다. ( 관련 기사) 하지만, 다양한 기업들은 도전을 멈추지 않고 추가적인 자체 알고리즘으로 이런 부분들을 보완하는 노력을 하고 있고 그 결과물을 서비스로 제공하고 있습니다. ( VARISON 사례)
인공지능은 표정인식을 어떻게 하나요?
인공지능 모델을 이용해서 사람 얼굴이 들어 있는 사진에서 표정인식을 하는 방식은 CNN (Convolutional Neural Network) 기반의 분류 모델과 CNN과 LSTM을 이용해서 시간적인 변화상을 추가 반영하는 경우가 대부분입니다. 최근에는 이런 것들을 Visual Transformer 기반으로 접근하는 케이스도 있습니다.
인식과정을 보면 사진 속에서 사람의 얼굴영역을 먼저 감지 후 이를 추출(crop)합니다. 이후에 분류 모델이 요구하는 입력 이미지 크기에 따라 추출된 영역의 크기를 조정(resize)한 후 분류 모델을 돌리는 방식이죠. 대부분은 이런 과정을 따르고 있습니다. Tensorflow를 이용하여 기존 모델을 전이학습을 통해 감정분석을 수행하는 과정을 설명하는 영상이 있으니 참고하세요.
표정인식을 자동으로 해 주는 카메라가 있나요?
스마트폰 카메라 앱 중에 웃으면 자동으로 촬영해주는 기능이 제공되기도 하는데 여기에 표정인식 기술이 적용되어 있다고 보시면 됩니다.
CCTV 카메라로는 음... 저는 아직 상용 제품으로 그렇게 나온 것은 못 봤습니다. 사람이나 차량객체 감지나 화재감지 등을 하는 제품들은 봤지만 아무래도 표정인식을 하는 것을 SoC 칩으로 만들어서 소형카메라 내에 내장하는 것이 상업적인 용도로 채산성이 맞지 않다고 판단되어 그럴 것 같긴 합니다. 하려고만 한다면 현재의 기술수준으로는 가능하기 때문이죠.
약간은 다른 접근이긴 하지만, KAIST에서 한번의 촬영으로 초점, 심도 등을 변경해서 찍을 수 있는 라이트필드 카메라를 이용해서 얼굴표정 인식의 정확도를 높인 사례가 기사에 소개되기도 했었죠. (참고로 라이트필드 카메라로 잘 알려진 Lytro Illum이라는 것이 있었습니다. 처음 봤을 땐 얼마나 신기했는지... ^^;)
이 기술들은 어떤 곳에 활용할 수 있나요?
표정인식 기술은 제대로만 된다면 다음과 같은 다양한 분야에서 사용될 수 있습니다. 적용되는 방식이나 대상이 되는 사람에 따라서는 거부감이 들수도 있는 영역이긴 하지만 고령화, 비대면이 대세가 되고 있는 트랜드로 보면 이런 영역이 앞으로는 점차 증가하게 되지 않을까 하는 생각이 듭니다.
- 학생들의 반응을 관찰해서 실제/가상 학습에서의 학생들의 참여도 식별 - 면접 혹은 인터뷰에서의 면접자 반응 평가 - 상담자 감정 판별 (우울증 환자, 피해학생 등등) - 실시간 마케팅 (영화관, 마켓, 키오스크 등에서의 광고) - 채팅로봇 (상담)
- 비디오 영상 (드라마, 영화) 내 감성분석
- 차량 내 운전자 상태 파악
- 사용자 반응형 게임
|
|
|
얼굴감정인식 기능을 제공하는 소프트웨어에 대해 알아보겠습니다. 비전 쪽 라이브러리(예:OpenCV 등)에 적용되어 있는 머신러닝 알고리즘도 있고 딥러닝 모델이나 이를 기반으로 만들어진 Library나 패키지 등이 있을텐데 이 글에서는 후자의 사례를 몇가지만 들겠습니다. 참고로 이런 모델이나 패키지들은 기본 기술에 해당하며 이를 활용해서 상용 어플리케이션이나 서비스에 적용하기 위해서는 수많은 튜닝과 엔지니어링 작업이 필요합니다.
표정인식을 지원하는 AI 모델
github을 검색해 보면 아주 다양한 모델들이 보입니다. 그 가운데 몇가지만 소개해 보겠습니다. 하나는 얼굴 이미지 기반 분류모델을 이용한 것이고 두번째 것은 얼굴이미지에서의 랜드마크 기반으로 분류모델을 이용한 것입니다. 후자의 github 저장소 글을 보면 랜드마크 정보가 없는 경우보다 정확도 측면에서 더 나았다고 되어 있네요.
해당 분야의 더 많은 AI 모델들은 이곳을 참고하세요. |
|
|
Python library 이용
python에서 손쉽게 사용해 볼 수 있는 패키지 가운데 잘 알려진 것으로 아래의 2가지가 있습니다. (이 외에도 다수가 있지만 여기서는 2가지만 알아봅니다)
이 가운데 Deepface의 경우는 안면영역 감지,안면식별, 표정분석 등등 다양한 기능을 제공합니다. Deepface 패키지 내부에는 Keras, Mediapipe 등을 기반으로 한 다양한 모델이 선택적으로 사용될 수 있도록 되어 있죠. 사용하기에 따라 간단한 데모용 프로그램 등을 만들기에 아주 좋습니다.
반면에 Fer의 경우에는 표정분석 기능만 제공되지만 사용법이 간단해서 5~7줄로 된 코드 (아래 예 참조) 만으로 원하는 작업을 할 수 있습니다. 내부적으로는 Tensorflow로 개발된 모델이 사용됩니다.
|
|
|
from fer import FER
from fer.utils import draw_annotations
import cv2
img = cv2.imread("gildong.jpg") # 이미지 읽기
detector = FER(mtcnn=True) # 모델 로딩. 기본값 대신 mtcnn 모델 이용하는 것으로 설정
emotion = detector.detect_emotions(img) # 감정분석.
img = draw_annotations(img, emotions) # 화면 그리기
|
|
|
위의 코드를 이용해서 테스트를 해 보면 결과는 다음과 같이 나옵니다. (사진은 오래 전 미국 드라마인 Friends의 한 장면입니다.) 얼굴 아래에 표시된 감정 별 confidence 값 (0~1)이 표시되어 있으니 구분이 가능할 겁니다. |
|
|
표정분석에 대한 추가적인 정보는 어떤 것이 있나요?
인터넷 상에서 제가 찾아본 것들은 다음과 같습니다. 더 많은 내용들이 있으니 관심이 있으시면 발품 한번 팔아보시기 바랍니다. ^^
- Deepface : 안면 식별 및 정보 추출을 위한 경량 framewok
|
|
|
인공지능 서비스의 배포와 운영 시 도움이 필요하신가요?
(주)소이넷은 인공지능 서비스를 제공하는 기업들 가운데 서비스 배포와 운영에서 어려움을 겪고 계신 곳에 도움을 드릴 수 있습니다.
혹시 구독자님의 회사는 다음과 같은 어려움을 겪고 계시지 않나요?
- AI 모델을 개발하고 학습 후 서비스를 위한 성능 (Accuracy)는 달성했는데, 정작 최적화 엔지니어가 없어서 어플리케이션, 서비스로의 배포를 위한 실행최적화를 못하고 있어요!
- AI 서비스를 이미 제공하고 있지만, 비싼 클라우드 GPU 서버 인스턴스 사용료가 부담이 되네요. 흠... 경비를 절감할 수 있는 방안이 없을까?
- 서비스에 적합한 공개 SOTA 모델이 있지만 그대로 가져다 쓰기에는 우리 쪽 어플리케이션에 접목하기도 어렵고 운영 비용도 많이 들 것 같은데 어쩌지?
그렇다면 언제든 아래 연락처로 문의 주세요. 함께 해결책을 고민해 드리겠습니다.
- 메일 : support@soynet.io또는 sales@soynet.io
|
|
|
오늘의 뉴스레터는 여기까지 구독자님, 며칠 후면 겨울이 시작되는 11월로 접어듭니다.
생활의 작은 부분들에서도
변화하는 계절처럼 심기일전(心機一轉) 하셔서
뜻하시는 바를 꼭 성취하시길 바랄게요.
새롭고 재미난 소식으로 다시 찾아뵙겠습니다. |
|
|
구독해 주시면 좋은 소식, 정보로 보답하겠습니다. |
|
|
주식회사 소이넷 sales@soynet.io 경기 성남시 분당구 성남대로331번길 8 (킨스타워) 1503호
대표전화 : 031-8039-5377
|
|
|
|
|