DeepFace를 활용한 안면 인식 시스템 구축 과정에 관하여
[INDEX]
1. DeepFace 구조
2. 오류 발견과 해결책
3. DeepFace 활용 사내 안면 인식 시스템 프로세스
4. 마무리
안녕하세요. 투비소프트 융합기술개발팀 이동희입니다.
저희는 사내 인공지능(AI) 기술을 연구하는 팀으로 이미지나 영상 데이터에서 특징을 이해하는 컴퓨터 비전(Computer Vision) 분야, 인간의 언어를 이해하기 위한 자연어 처리(NLP) 분야, 텍스트나 수치 데이터 등에서 인사이트를 도출하는 데이터 사이언스(Data Science) 분야를 연구하고 있습니다.
지난 2018년 여름, 사내 안면 인식 시스템을 구축했습니다. 안면 인식 시스템은 디지털 이미지를 통해 각 사람을 자동으로 식별하는 컴퓨터 지원 응용 프로그램을 가리킵니다.
특별히 저희 팀은 DeepFace라는 안면 인식 오픈 소스 딥러닝 모델을 활용했는데, 이번 글에서 DeepFace 모델을 활용하여 안면 인식 시스템을 구축한 과정에 대한 이야기를 소개합니다. 그리고 구축 과정에서 직면한 문제 및 해결 과정, 안면 인식 시스템의 동작 프로세스를 공유합니다.
단, 이번 글에서는 초상권의 우려가 있으므로, 남녀 영화배우 안면을 인식하는 과정으로 작성했음을 참고 부탁드립니다.
DeepFace는 이미지 또는 영상에서 안면 영역 및 눈썹, 눈, 코, 입, 턱선의 68개 특징점(landmark)을 검출(Detection)하고, 검출한 안면 영역 및 특징점을 비교군과 비교하여 인증(Recognition)하는 방식으로 동작하는 딥러닝 모델입니다. 즉, DeepFace는 안면 영역과 68개 특징점을 검출하는 detector(검출기)와 안면을 인증하는 recognizer(인증기)을 포함하고 있습니다.
이러한 DeepFace는 총 3가지의 안면 detector(dlib / SSD Inception_v2 / SSD mobilenet_v2)와 2가지의 안면 recognizer(VGG / ResNet) pre-trained 모델을 제공합니다. 이 3가지 detector와 2가지 recognizer를 조합하여 pre-trained 모델 테스트를 진행한 결과에 의하면, 가장 좋은 성능은 안면 detector로 SSD mobilenet_v2를 사용하고, 안면 recognizer로 ResNet를 사용한 경우였습니다. 따라서 저희 팀도 동일하게 SSD mobilenet_v2와 ResNet pre-trained 모델을 사용하여 사내 안면 인식 시스템을 구축하였습니다.
사내에 특정 몇 분들은 비슷한 안면 특징을 가지신 다른 인원으로 잘못 인증되는 경우가 있었습니다. Bouning Box와 특징점은 올바로 검출했기 때문에 처음에는 안면을 인증하는 recognizer의 문제라고 추측했습니다. 한편, 안면을 인증하기 위한 최소 recognizer score 임계치가 존재하는데, 비슷한 안면 특징을 가진 다른 인원으로 잘못 인증되는 원인이 설정한 score 임계치 값이 작아서 발생한 것이라 생각했습니다. 이에 임계치 값을 올려봤지만, 개선 정도가 크지 않았습니다.
결론적으로, 해당 문제의 원인은 비교군 '데이터'였습니다. 인증 오류가 발생한 분들은 공통적으로 비교군 이미지 내부에 안면 영역의 크기가 전체 이미지 사이즈에 비해 작았습니다. 때문에 특징점 비교를 정확하게 수행할 수 없었고, 카메라를 통해 인식된 안면의 특징이 자신의 비교군 이미지의 안면 특징보다 다른 사람의 비교군 이미지의 안면 특징과 더 비슷해서 발생한 문제였습니다.
이번 문제에 대응하면서 딥러닝 영역에서 데이터의 중요성을 또다시 경험할 수 있었습니다. 데이터 형태, 구조를 파악하고, 적절한 데이터를 학습하는 습관이 모델의 성능을 좌우할 수 있는 중요한 key point로 작용할 것입니다.
안면 인식 시스템을 통해 안면을 인증하기 위해서는 시스템에 등록할 인원의 안면 이미지를 사전에 저장해야 합니다. 이를 비교군 안면 이미지로 부르겠습니다. 최초 안면 인식 시스템을 실행하면, 비교군 안면 이미지에서 특징 값을 추출하여 한 개의 파일로 저장해 놓습니다. 이는 카메라를 통해 안면이 인식되면 특징 값 차이가 가장 작은 사람을 도출하여 인증하기 위함입니다.
카메라를 통해 안면이 인식되면, 해당 안면의 특징 값을 추출하고, 비교군 안면 이미지 특징 값과 하나씩 비교하여 특징 값 차이가 가장 작은 사람을 도출합니다. 이후 최종 도출한 사람이 인증되었음을 고객에게 알려줍니다.
카메라를 통해 인식된 안면의 recognize score가 특정 임계치 이상일 경우에는 안면을 이미지 파일로 저장합니다. 이렇게 확보한 이미지 데이터로 추가 학습을 수행하면, 더욱 다양한 안면 각도에서 인증 확률을 높일 수 있을 것입니다.
지금까지 융합기술개발팀이 사내에서 구축한 안면 인식 시스템의 DeepFace 딥러닝 모델, 시스템 구축 과정에서 직면한 문제와 해결방법, 안면 인식 시스템 동작 프로세스에 관해 소개했습니다.
'DeepFace'라는 오픈 소스 모델을 빌려왔지만, 사내 환경에 맞춰서 높은 인식 정확도 구현을 위해 다양한 시도와 노력을 기울였고, 시스템 구축을 완료할 수 있었습니다.
현재 안면 인식 기술은 눈, 코, 입, 턱선 등 안면의 윤곽 특징점을 추출하는 방식 이외에 적외선 카메라로 안면의 혈류에 생기는 열점을 인식하여 안면을 인증하는 기술도 사용되고 있습니다. 또 범죄 용의자 식별, 출입문 통과 인증, 금융 결제 및 송금, 수험생 신분 확인, 뷰티 테크 등 다양한 활용 범위를 가지고 있습니다. 미래에는 시간, 장소 등에 따라 안면 변화를 예측하는 기술을 통해 범죄자의 이동 경로 및 위치 추적 등으로 활용 범위를 확장할 수 있을 것입니다.
진화하는 안면 인식 기술은 세상을 더욱 아름답고, 편리하게 만들 수 있는 충분한 가치가 있다고 느껴집니다!