close_btn
로그인, 회원가입후 더 많은 혜택을 누리세요 로그인 회원가입 닫기

 

주제 : Convolutional Neural Network를 이용한 얼굴 영상 분석

 

팀 소개 :

 

KakaoTalk_20160928_212216753.jpg

 

우리 얼굴영상인식팀은 다양한 분야에서 오신 총 13명의 팀원으로 구성되어 있습니다.

팀 내에서 나이추정, 표정인식, 성별인식 3그룹으로 팀을 나누어 개발을 진행했습니다.

우리 팀은 일주일에 1번(수요일 저녁 7:30 ~ 10:00 ) 모임을 통해 많은 토론과 세미나, 지식 공유를 통해 인공지능 이론을 공부하고, 많은 실습 시간을 거쳐 본 프로젝트를 진행하고 있습니다.

 

얼굴 영상 분석 기술 :
옥스퍼드 대학에서 개발한 VGGnet을 이용하여 공개된 다양한 데이터셋과 크롤링을 통해 얻은 데이터셋을 학습시켜 사람 얼굴 영상에서 나이와 성별, 표정 정보를 추출하는 기술을 연구했습니다. 13명으로 이루어진 팀에서 3 그룹으로 나누어 각각 그룹에서 나이, 성별, 표정을 인식 하는 알고리즘을 개발했습니다. 

 

VGGnet :

이미지 처리를 하는데 가장 널리 쓰이는 Deep Learning 알고리즘으로 CNN(Convolutional Neural Network)이 있습니다. 이 CNN 알고리즘을 기반한 모델을 옥스퍼드 대학의 Visual Geometry Group이라는 팀에서 설계했다고 하여 VGGnet이라 불립니다. 얼굴 영상에서도 좋은 성능을 보여 이 모델을 기반으로 정보 추정에 활용했습니다.

 

vgg16.png

CNN을 10 layer 이상으로 깊은 구조로 설계되어 Big size의 이미지를 처리하는데 적합하도록 구성되어 있습니다. 

VGGnet에서는 2 Convolution Layer + 1 Pooling Layer가 반복되는 구조를 가진다는 것이 특징입니다. 

 

VGGnet을 사용하므로 이 VGGnet을 공부하기 위해 아래와 같은 논문을 집중적으로 Study 했습니다.

 

 

캡처.JPG

 

VGGnet이 만들어지게 된 논문이며, VGG에 대한 기본적인 이론과, 실험 과정, 최적 결과까지 잘 설명되어 있습니다.

여기서 가장 유심히 보았던 내용은 몇 층의 Layer에서 가장 좋은 성능을 보였나, 다른 형태를 쓰면 어떤 결과가 나올까 하는 문제에 대해 많은 토론을 하였습니다. 아래의 table에서 각각 층의 개수를 다르게 했을 때, 나타나는 퍼포먼스의 차이가 정리되어 있습니다. 

이를 기반으로 저희 팀에서도 학습을 수행하면서 논문에서 제공하는 Insight를 얻어보고자 시도하였습니다.

 

 

캡처.JPG

 

 

 

 

저희 팀에서는 연산자원 문제와 함께 Accuracy를 가장 잘 뽑아주는 D Model을 사용하여 학습시켰습니다. 

파라메터의 수가 크게 차이가 나지 않으면서, E 못지 않은 Accuracy를 볼 수 있고, 가장 효율적인 모델이라는 판단에 위와 같은 모델을 채택하였습니다.

 

개발 진행 :

기본적으로 개발 툴로써 Google 에서 오픈한 Tensorflow를 사용합니다.

모든 Machine Leaning, Deep Learning Algorithm 개발에 활용 할 수 있습니다. 

 

tensorflow.JPG

 

이 프로젝트를 시작하게 된 계기 또한 프로젝트를 통해 Tensorflow 공부를 하는 것이기도 했으며, 이 Tensorflow가 익숙해지고, 예제에 구속되지 않은 우리 팀만의 코드를 개발해보고자 노력했습니다. 논문과 Tensorflow를 병행하며 공부하고, 실습하며, 각 팀에서 만든 Source Code 를 Github를 이용하여 관리하였고, 정기적으로 Code Review, 각자 짜 온 Source 공유 및 토론 식으로 프로젝트를 진행하였습니다.

 

 

code.JPG

 

위의 코드는 감정인식 팀의 코드 일부를 보여주고 있으며, 여기서는 Tensorflow를 한단계 더 Package한 tflearn 모듈을 사용하고 있습니다. tensorflow를 더욱 쉽게 사용할 수 있는 툴로써, 개발시간 단축을 위해 채택하여 사용하고 있으며, 경우에따라 직접 low coding하는 경우도 있습니다. 

 

위와같이 VGGnet을 구성하고, train 객체를 통해 학습을 진행하게 됩니다 (tflearn에서는 fit 메소드)

 

 

결과 Test :

현재 코드 통합 작업 중에 있으며, Test는 코드 내부에서 하나하나의 이미지를 불러와 인식률만 보는 정도로 테스트 해보았습니다.

Test Data에 대해서 Accuracy는 Crawling이 충분히 되어 많은 이미지에서 테스트가 가능 할 때, 측정이 가능 할 것으로 보입니다. 

 

기존에 가지고 있는 데이터 상에서 각각의 인식율은 나이 60%, 표정 70%, 성별 85% 정도의 인식율을 보였습니다. 

 

 

 

test_image_1.png  

 

test_image_8.jpg

 

test_image_28.jpg

 

위의 결과를 분석해보면 주로 동양인의 경우 나이대가 낮게 나오는 경향이 있었고, 서양인의 경우 나이대가 높게 나오는 경우가 많습니다. 여기서 학습상 충돌이 일어나 Accuracy가 상대적으로 낮게 나오는 경우가 많을 것으로 예상되어 학습 데이터의 비율을 조절해보는 ( 나이대에 따라 학습 데이터 양 조절 ) 시도를 해보고자 합니다. 

 

성별의 경우 얼굴 윤곽을 잘 잡으면 대부분 잘 맞추는 좋은 성능을 보였고, Emotion의 경우도 나이와 마찬가지로 서양인과 동양인의 얼굴 윤곽이나 특징의 차이가 큰 이유로 Accuracy가 상대적으로 떨어지는 양상을 보입니다. 

 

이러한 약간의 학습 Data Balance Tuning이 이루어진 후, 동양인의 인식률을 높이는 방향으로 Training을 진행한다면 조금 더 좋은 결과를 기대해볼 수 있습니다. 

 

이러한 보완이 이루어지면 이 얼굴 정보를 이용한 메시지 출력 작업을 마지막으로 프로젝트를 마무리 하게 되겠습니다.

 

번호 제목 글쓴이 날짜 조회 수
36 [자율주행 장난감] 160928 모두의연구소 2017.07.11 90
» [영상인식팀] 관상 프로젝트 제작 과정 정리 모두의연구소 2017.07.11 71
34 [자율주행 장난감] 160921 모두의연구소 2017.07.11 35
33 [영상인식팀] 2016.8.24 11회 모임 [1] 모두의연구소 2017.07.11 24
32 [EDU3기] 9/9일 연구노트 (여덟번째 모임) 모두의연구소 2017.07.11 28
31 [자율주행 장난감] 160907 모두의연구소 2017.07.11 8
30 [영상인식팀] 2016.8.24 8회 모임 [1] 모두의연구소 2017.07.11 8
29 [자율주행 장난감] 160824 [1] 모두의연구소 2017.07.11 6
28 [논문반] 160823 회의록 [1] 모두의연구소 2017.07.11 16
27 [자율주행 장난감] 160817 [1] 모두의연구소 2017.07.11 10
26 [영상인식팀] 2016.8.17 7회 모임 모두의연구소 2017.07.11 10
25 [딥러닝 수요반]발표 순서 [1] 모두의연구소 2017.07.11 15
24 [영상인식팀] 2016.8.10 6회 모임 모두의연구소 2017.07.11 2
23 [논문반] 160808 회의록 [2] 모두의연구소 2017.07.11 18
22 [자율주행 장난감] 160720_다섯 번째 모임 [1] 모두의연구소 2017.07.11 7
21 [영상인식팀] 2016.8.4 5회 모임 [1] 모두의연구소 2017.07.11 8
20 [논문반] 20160808 회의록 모두의연구소 2017.07.11 12
19 [실전반] 7/28일 4번째 모임 모두의연구소 2017.07.11 3
18 [중급반] 20160725 회의록 모두의연구소 2017.07.11 7
17 [영상인식팀] 2016.7.27 4회 모임 [1] 모두의연구소 2017.07.11 6