$\require{mediawiki-texvc}$

연합인증

연합인증 가입 기관의 연구자들은 소속기관의 인증정보(ID와 암호)를 이용해 다른 대학, 연구기관, 서비스 공급자의 다양한 온라인 자원과 연구 데이터를 이용할 수 있습니다.

이는 여행자가 자국에서 발행 받은 여권으로 세계 각국을 자유롭게 여행할 수 있는 것과 같습니다.

연합인증으로 이용이 가능한 서비스는 NTIS, DataON, Edison, Kafe, Webinar 등이 있습니다.

한번의 인증절차만으로 연합인증 가입 서비스에 추가 로그인 없이 이용이 가능합니다.

다만, 연합인증을 위해서는 최초 1회만 인증 절차가 필요합니다. (회원이 아닐 경우 회원 가입이 필요합니다.)

연합인증 절차는 다음과 같습니다.

최초이용시에는
ScienceON에 로그인 → 연합인증 서비스 접속 → 로그인 (본인 확인 또는 회원가입) → 서비스 이용

그 이후에는
ScienceON 로그인 → 연합인증 서비스 접속 → 서비스 이용

연합인증을 활용하시면 KISTI가 제공하는 다양한 서비스를 편리하게 이용하실 수 있습니다.

딥 러닝 기반 감정인식 시스템 개발
Emotion Recognition System based Deep Learning 원문보기

한국방송공학회 2017년도 추계학술대회, 2017 Nov. 03, 2017년, pp.16 - 18  

이민규 (인하대학교) ,  김대하 (인하대학교) ,  최동윤 (인하대학교) ,  송병철 (인하대학교)

초록
AI-Helper 아이콘AI-Helper

최근 딥 러닝의 발전으로 얼굴인식뿐만 아니라 더 세부적인 기술인 ID식별, 감정인식 등을 분류할 수 있는 알고리즘이 많이 제안되었다. 하지만 딥 러닝은 방대한 연산량을 처리해야 하기 때문에 실시간으로 영상을 구현하는 것은 한계가 있다. 본 논문은 위와 같은 문제를 개선하기 위하여 얼굴인식은 연산량이 비교적 적은 HOG알고리즘을 적용하여 전처리를 진행한다. 그 이후 ID식별 네트워크인 FaceNet과 EmotiW 2017 Challenge의 논문의 감정인식 네트워크를 Multi-Thread 기술을 적용하여 스레드를 분할 연산을 통하여 실시간으로 영상을 출력하는 알고리즘을 제안한다.

AI 본문요약
AI-Helper 아이콘 AI-Helper

* AI 자동 식별 결과로 적합하지 않은 문장이 있을 수 있으니, 이용에 유의하시기 바랍니다.

제안 방법

  • Multi-Thread를 유무에 따른 성능비교를 하기 위해 100 프레임을 처리하는데 걸리는 시간을 측정하여 Frame per second(FPS)를 계산했다. 측정에 이용한 PC사양은 3.
  • 감정인식은 EmotiW 2017 Challenge 논문[3]의 네트워크 구조의 일부인 Semi-supervised learning with 3D autoencoder (S3DAE)와 Convolutional 3D with auxiliary network (C3DA)를 이용한다. 두 구조는 단일 영상이 아닌 비디오 시퀀스의 영상을 가지고 학습하였으며, 얻어진 얼굴의 특징점 벡터를 가지고 감정을 판단한다. 두 네트워크로 얻어지는 각 감정에 해당하는 확률을 가중치 합산을 통하여 사람의 내면 감정을 파악한다.
  • 두 구조는 단일 영상이 아닌 비디오 시퀀스의 영상을 가지고 학습하였으며, 얻어진 얼굴의 특징점 벡터를 가지고 감정을 판단한다. 두 네트워크로 얻어지는 각 감정에 해당하는 확률을 가중치 합산을 통하여 사람의 내면 감정을 파악한다. 구현은 파이썬 기반 딥 러닝 라이브러리인 Keras를 이용했다.
  • 제안하는 알고리즘의 프레임웍은 그림 1과 같다. 먼저, 입력 데이터인 단일 프레임을 ID식별, 감정인식 네트워크의 입력 데이터를 만들기 위해 얼굴인식 알고리즘을 통한 얼굴을 검출한다. 이후 검출 영역만 남도록 이미지를 자르는 전처리를 하고 나서 ID식별 네트워크의 입력으로 넣어 결과를 얻는다.
  • 본 논문에서는 얼굴과 표정을 바탕으로 컴퓨터 비전과 딥 러닝 기술을 종합하여 ID를 식별하고, 감정을 파악하고, 이를 Multi-Thread 기술을 적용하여 서로 다른 스레드에서 병렬 처리하여 실시간으로 출력하는 알고리즘을 제안한다.
  • 본 논문은 얼굴인식, ID식별, 감정인식이라는 3가지를 기술 실시간 영상 출력을 위해 Multi-Thread를 통해 보완하였다. 그러나 얼굴 검출 부분에서 어두운 영상의 경우에는 전처리 단계에서 얼굴을 못 찾는 경우가 있었고, 감정인식 알고리즘 부분에서 시퀀스 정보가 처리되어야 하기 때문에 결과를 출력하기까지 많은 시간이 소요되었다.
  • 이 모듈을 이용하면 서브 스레드를 객체화하여 조작할 수 있다. 서브 스레드 객체 내에 프레임웍 구현 알고리즘을 포함시켜 ID와 감정을 추론한다. 또한, 모듈 내 start함수로 스레드를 적절한 시점에 동작할 수 있다.
  • 실험을 위해 10명의 인물의 이미지 데이터를 바탕으로 FaceNet을 적용하여 ID식별을 위한 학습을 진행했다. 이 때 연산의 효율성을 위하여 720x1280 크기를 갖는 원본 프레임을 0.
  • 실험을 위해 10명의 인물의 이미지 데이터를 바탕으로 FaceNet을 적용하여 ID식별을 위한 학습을 진행했다. 이 때 연산의 효율성을 위하여 720x1280 크기를 갖는 원본 프레임을 0.25배로 축소하여 얼굴인식을 하여 전처리를 진행하고, FaceNet을 적용한다. 같은 방식으로 감정인식 네트워크에서 원본 프레임을 축소한 후 전처리를 하지만 각네트워크의 정해진 입력 형태를 고려하여 영상의 크기를 재조정한다.
  • 이 네트워크의 출력은 128 차원의 특징점 벡터로 이루어지는데, 얼굴과 같은 원시 데이터를 N차원의 특징점 벡터로 수치화하는 것을 embedding이라 한다. 이러한 방법으로 미리 학습된 최적의 가중치를 적용하여 특징점 벡터를 얻은 후 Support Vector Machine(SVM)을 통해 분류한다.

대상 데이터

  • 같은 방식으로 감정인식 네트워크에서 원본 프레임을 축소한 후 전처리를 하지만 각네트워크의 정해진 입력 형태를 고려하여 영상의 크기를 재조정한다. 여기서, S3DAE는 112x112이고, C3DA는 224x224로 보간법으로 영상을 재조정한다. 그림 3에서의 결과를 통해 학습된 인물 중 하나로 ID 식별이 출력됨을 알 수 있다.
  • Multi-Thread를 유무에 따른 성능비교를 하기 위해 100 프레임을 처리하는데 걸리는 시간을 측정하여 Frame per second(FPS)를 계산했다. 측정에 이용한 PC사양은 3.2GHz i5-3470, 12GB RAM, Geforce GTX 1060 GPU이며, 측정 결과는 표1과 같이 멀티 스레드가 싱글 스레드보다 3배의 속도 차이가 난다. 싱글 스레드는 ID식별과 감정인식을 순차적으로 진행하기 때문에 프레임 주사 속도를 감소시킨다.

데이터처리

  • 반면, 멀티 스레드는 병렬 처리를 통해 프레임 주사 속도를 일정하게 유지할 수 있다. 이 결과를 Multi-Thread를 통해 실시간성을 확인했다.

이론/모형

  • ID식별은 FaceNet 기반으로 만들어진 파이썬 오픈소스 라이브러리인 Openface를 이용한다[2]. FaceNet은 Deep Convolutional Neural Network(CNN) 구조를 이루고 있다.
  • 두 네트워크로 얻어지는 각 감정에 해당하는 확률을 가중치 합산을 통하여 사람의 내면 감정을 파악한다. 구현은 파이썬 기반 딥 러닝 라이브러리인 Keras를 이용했다.
  • 얼굴인식은 HOG(Histogram of Gradients)를이용한다[1]. HOG는 해당 영상의 영역을 일정 크기의 셀로 분할하고, 각 셀마다 에지 픽셀의 방향에 대한 히스토그램을 구한 후 이들 히스토그램 bin 값들을 일렬로 연결한 벡터를 만든 특징점 기술자이다.
  • 위 프레임웍을 실시간으로 처리하기에는 많은 시간이 소요되므로 Multi-Thread 기술을 이용하며 구현은 그림 2과 같다. 우선, 메인 스레드에서는 실시간 영상 출력과 동시에 단일 프레임을 서브 스레드로 보낸다.
  • 하지만 ID식별 및 감정인식 어플리케이션 구현 시 표정의 변화를 고려하는 비디오 시퀀스 정보가 필요하고, 뿐만 아니라딥 러닝 네트워크 자체의 방대한 연산을 해야 하기 때문에 실시간 구현에는 한계가 있다. 이를 해결하기 위해 MultiThread 기술을 이용한다. 이 기술은 CPU 프로세스 내에 같은 메모리 공간을 공유하는 다수의 스레드를 생성할 수 있기 때문에 메모리를 적게 사용하고 병렬 처리해서 실시간 구현을 가능하게 한다.
본문요약 정보가 도움이 되었나요?
섹션별 컨텐츠 바로가기

AI-Helper ※ AI-Helper는 오픈소스 모델을 사용합니다.

AI-Helper 아이콘
AI-Helper
안녕하세요, AI-Helper입니다. 좌측 "선택된 텍스트"에서 텍스트를 선택하여 요약, 번역, 용어설명을 실행하세요.
※ AI-Helper는 부적절한 답변을 할 수 있습니다.

선택된 텍스트

맨위로