Deep Learning - CNN을 이용한 Face Expression 파악하기 Part2
데이터 출처 : www.kaggle.com/jonathanoheix/face-expression-recognition-dataset
Face expression recognition dataset
www.kaggle.com
github 주소 : github.com/sangHa0411/DataScience/blob/main/Face%20Expression%20Part1.ipynbgithub.com/sangHa0411/DataScience/blob/main/Face%20Expression%20Part2.ipynb
sangHa0411/DataScience
Contribute to sangHa0411/DataScience development by creating an account on GitHub.
github.com
Part1 에서는 데이터를 이용해서 Face Expression을 파악할 수 있는 CNN 모델을 만들고 훈련을 시켰습니다. 그리고 해당 모델을 바탕으로해서 사진에서의 얼굴 표정을 파악을 해보았습니다.
이번 Part2 포스팅에서는 이를 비디오 (실시간 처리로) 확장하여서 다루어보도록 하겠습니다.
먼저 각 label에 해당되는 표정의 이름을 dictionary 자료구조에 저장합니다.
그리고 비디오에서 얼굴을 분석할 opencv 라이브러리를 불러옵니다.
여기에 추가적으로 앞서서 훈련했던 keras의 모델을 불러옵니다.
이제 실시간 처리를 위해서 opencv의 VideoCapture 라이브러리를 불러옵니다.
Video_Capture에서의 높이는 960 , 너비는 640으로 지정하고 동영상 촬영을 하면서 사용할 코덱은 mp4v를 이용하였습니다.
함수는 길고 복잡해보이지만 과정은 매우 간단합니다.
먼저 frame을 좌우 반전합니다.
그리고 frame에서 얼굴 위치 파악 및 표정 분석하기 위해서 grayscale로 변환합니다.
그리고 opencv 라이브러리를 이용해서 얼굴 위치를 파악합니다,
파악된 얼굴이 1개 이상 존재한다면 해당 얼굴에 사각형을 씌웁니다.
그리고 그 얼굴 사이즈를 앞서 불러온 CNN 모델에 학습시키기 위해서 (64 , 64) 크기로 줄이고 shape을 변형 및 255로 나누어줌으로써 전처리를 진행합니다.
이렇게 전처리된 얼굴 부분을 CNN에 모델에 입력함으로써 label을 파악하고 화면에 표기하도록합니다.
전체 코드는 위 github 주소에 가시면 확인하실 수 있습니다.
아래는 최종적으로 만든 동영상입니다.