This project is a part of the mercy-project.
이 프로젝트의 목적은 딥러닝 컴퓨터 비전 기술을 이용해서 사진에서 사람의 감정을 추출하는 것입니다.
- OpenCV Haar cascade
- Dlib HOG(Histogram of Oriented Gradients) based
- Simple version of XCEPTION (https://github.com/oarriaga/face_classification)
- tf.keras 2.x
데이터 소스: AIHUB(http://www.aihub.or.kr/)
- inputs:
- 태깅파일: ~_interpolation.json
- 이미지파일: ~KM_0000000000.jpg
- 감정종류: 8가지 ('happiness', 'afraid', 'neutral', 'surprise', 'sadness', 'contempt', 'anger', 'disgust')
- 예시: {'happiness': 0, 'afraid': 0, 'neutral': 10, 'surprise': 0, 'sadness': 0, 'contempt': 0, 'anger': 0, 'disgust': 0} 일 경우 'neutral'이 선정
- 최종 CSV dataset file 생성
- 태깅데이터에서 얼굴 검출 되는 이미지만 추출
1. face detection
2. emotion detection
3. tflite 변환 테스팅
- OpenCV Haar cascade 방식
- 사용이유: CPU 상 검출 시간이 빠르고, 적용하기 용이함
- 버전: haarcascade_frontalface_alt2
- 설명 내용 출처: https://thebook.io/006939/ch13/02/ 캐스케이드 구조 1단계에서는 얼굴 검출에 가장 유용한 유사-하르 필터 하나를 사용하여, 얼굴이 아니라고 판단되면 이후의 유사-하르 필터 계산은 수행하지 않습니다. 1단계를 통과하면 2단계에서 유사-하르 필터 다섯 개를 사용하여 얼굴이 아닌지를 검사하고, 얼굴이 아니라고 판단되면 이후 단계의 검사는 수행하지 않습니다.
- Dlib HOG(Histogram of Oriented Gradients) based 방식
- 사용이유: CPU 상 OpenCV Haar cascade 방식보다 성능이 좋음, 적용하기 용이
- 설명 내용 출처: https://medium.com/@jongdae.lim/기계-학습-machine-learning-은-즐겁다-part-4-63ed781eee3c
- 검출방식 비교: https://seongkyun.github.io/study/2019/03/25/face_detection/
- mini_XCEPTION 모델
- 사용이유: 인식시간이 빠르고, 모델이 가볍기에 온디바이스에 적용가능
- 학습내용:
- 학습데이터: AIhub 멀티모달 데이터(http://www.aihub.or.kr/content/555)로 학습
- 클래스 밸런싱된 48 x 48 gray scale image 128,499만여개에서 샘플링하여 사용
- 학습된 모델을 tflite로 변환
- 학습데이터: AIhub 멀티모달 데이터(http://www.aihub.or.kr/content/555)로 학습
- 모델출처: https://github.com/oarriaga/face_classification
- Install packages
python >= 3.6
pandas
ipywidgets
matplotlib
opencv-python
statistics
h5py
numpy
tensorflow-gpu
ray # for preprocessing
- Download Raw data from AIhub(http://www.aihub.or.kr/content/555)
- Preprocessing with codes
- Training the model
$ python src/train_emotion_kor_multi_modal_classifier.py
- Inference