딥러닝 기반 얼굴 이미지 내 랜드마크 추출
관련링크
본문
얼굴 랜드마크는 얼굴 인식, 표정(감정) 인식 또는 개인을 식별하는 데 사용되고 있으며, 얼굴 랜드마크를 검출하기 위한 연구가 활발히 수행되고 있다. 그러나 얼굴의 각도, 가려짐, 조명과 같은 다양한 요인으로 인해 검출 성능이 좋지 않다. 최근 딥 러닝의 출현으로 컴퓨터 비전 분야의 난제들이 해결되고 있다. 얼굴 랜드마크 검출 역시 딥 러닝을 활용하면서 성능이 크게 향상되었다.
딥 러닝을 이용한 얼굴 랜드마크는 일반적으로 5개 혹은 68개의 점으로 표현되며, CNN(Convolutional Neural Networks)을 이용하여 얼굴 이미지의 주요한 특징들을 추출한다. 그러나 이러한 방법은 얼굴 랜드마크의 정확한 모양을 파악하는 데 한계가 있으며, 눈동자, 머리카락 같은 주요한 특징을 검출하지 못한다는 한계가 있다.
본 연구실은 얼굴 랜드마크의 정확한 모양을 검출하기 위해 이미지를 픽셀 단위로 분류하는 딥 러닝 기술 중 하나인 Semantic segmentation을 이용하여 얼굴 랜드마크를 검출하는 연구를 수행한다.
● Semantic segmentation 네트워크 설계
- 그림 1과 같이 Encoder와 Decoder로 구성된 CNN 네트워크를 설계한다.
● Pixel-Annotated 얼굴 랜드마크 데이터셋 구축
- 얼굴 사진을 9개의 클래스 머리카락, 피부, 눈썹, 눈 흰자, 눈동자, 콧구멍, 입술, 입안, 배경으로 정의하고 표 1과 같이 각 클래스에 대해 색상(R, G, B) 값을 부여한다. 다음으로 얼굴 이미지를 수집하고, 수집된 이미지에 각 랜드마크 모양을 추출하고 색상을 입혀 정답 셋을 구축한다.
그림 1 얼굴 랜드마크를 추출하기 위한 Semantic segmentation 네트워크
● 네트워크 학습
- 네트워크의 Overfitting 문제를 방지하기 위해 그림 3과 같이 데이터를 다양한 각도와 크기로 Crop 한다. 또한, 얼굴 랜드마크 데이터셋은 각 클래스(랜드마크) 별 픽셀의 개수가 극도로 불균형하므로, 이를 맞추기 위한 클래스 가중치를 부여한다. 클래스 가중치는 Median frequency balancing을 사용하여 계산하는데, 전체 픽셀의 개수와 특정 클래스가 나타내는 픽셀의 개수를 이용하여 계산한다.
그림 2 얼굴 이미지와 정답 셋 예시
● 결과
- 설계된 네트워크를 구축된 데이터셋과 클래스 가중치를 이용하여 학습하여 얼굴 랜드마크를 검출하는 딥 러닝 모델이 구축된다. 그림 4는 실제로 모델 평가에 사용되는 20장의 이미지와, 이에 대응하는 정답셋 그리고 모델을 통해 추출한 랜드마크를 보여준다.
그림 3 Ground Truth
그림 4 랜드마크 검출 결과