사진을 찍을 때 카메라가 알아서 얼굴을 찾아주고 자기와 닮은 연예인을 찾아주며 얼굴에 자동으로 콧수염을 붙여주는 이런 것들은 어떻게 가능 할까요?
이런 일련의 기능들은 바로 얼굴인식기술 (Face Recognition)로 구현 하는 것들입니다. 저는 작년부터 이 얼굴인식을 지속적으로 연구하고 있는데요. Friendly Robot 도 이와 관련 된 프로토타입 입니다. 오늘은 그동안 알아본 것들은 정리해 보도록 하겠습니다.
왜 얼굴 인식인가?
사실 이미지를 통해 무엇인가를 인식하는 기술들은 상당히 다양하게 많습니다. 예를 들어 QR코드라든가 증강현실을 처리하기위한 마커 등이 모두 여기에 속합니다. 기본적으로 구현되는 방식은 매우 흡사합니다. 또한 학습을 통해서 얼굴 이 외에 것들도 인식하게 만들 수 있습니다. 예를들어 곰인형이라든가 자동차라든가 등등을 인식 할 수 있습니다. 하지만 인간의 얼굴은 이러한 것들과는 차원이 다른 정보를 줄 수 있습니다. 성별, 나이, 표정 등등 최근의 얼굴인식 기술은 매우 발달하여 한장의 사진에서 매우 높은 정확도로 정보를 알아내고 있습니다. 또한 개개인을 구분하여 개인화 서비스 또한 가능하게 합니다. 그리고 개인적으로 가장 중요하게 생각하는건 인간이 기본적으로 얼굴에 매우 높은 관심을 보이고 있다는 점입니다. 이러한 이유들 때문에 여러업체에서 다양한 방법으로 얼굴인식 기술을 개발하고 적용 하고 있습니다.
얼굴인식 솔루션
OpenCV
일반적으로 얼굴검출/인식에 가장 많이 사용되는 라이브러리 입니다. OpenCV는 소스가 완전히 공개된 Computer Vision 라이브러리 입니다. 현재 버전은 2.4.2로 거의 대부분의 플랫폼으로 포팅 되어 있습니다. 얼굴인식 방법으로 하르 분류기(haar classifiers)를 사용하고 있습니다. 이는 기계 학습의 일종으로 다양한 샘플로 분류기를 훈련시켜 얼굴을 검출합니다. 같은 방법으로 특징이 있는 다른 물체도 검출 할 수 있습니다.
여튼 소스가 공개되어 있는 OpenCV를 통한 얼굴 검출 방법이 현재로서는 가장 현실성 있습니다. 다만 분류기 샘플에 따라 검출 정확도가 상당히 차이를 보인다는 단점이 있습니다. 또한 OpenCV에서는 가장 기본적인 검출만 제공하므로 더 다양한 기능을 제공하기 위해서는 대부분의 기능을 구현해야 합니다.
OpenFramework
제가 Friendly Robot에 사용한 방식입니다. 실제로 이 방식또한 OpenCV를 이용한다는 점은 동일하지만 OpenFramework 으로 좀더 쉽게 개발 할 수 있으며 추가된 기능을 사용 할 수 있습니다. 다만 실제로 트래킹을 하는 본체인 tracker.cc 파일은 공개된 파일이 아니라 제작자에게 직접 파일을 요청해야 한다는 단점이 있습니다.
ofxFacetracker
tracker.cc (메일을 보내 tracker.cc 파일을 요청해야 합니다.)
Kinect
Kinect 는 원래 동작인식을 위해서 개발되었지만 훌륭한 얼굴인식기를 포함하고 있습니다. 특히 다른 솔루션들과는 다르게 특수한 하드웨어를 사용함으로서 얼굴의 실제 3D공간 좌표를 얻어 올 수 있습니다. 기본적으로 얼굴인식을 통해 개개인을 구분 할 수 있습니다. 단점은 역시 Kinect라는 특수한 장비가 있어야 한다는 점이군요. 또한 아직까지 표정이나 성별, 연령등은 알 수 없습니다.
CoreImage – iOS5
CoreImage 는 iOS에 있는 이미지 처리 기술입니다. iOS가 5로 업그레이드 되면서 이 CoreImage에 Face Detector 기능이 추가되었습니다. 아마 추측컨데 iPhone4s 의 카메라에 얼굴인식 기능이 추가되면서 함께 추가된게 아닌가 싶습니다. 여튼 이미 프레임웍에 들어가 있는 기능이라 정말 쉽게 사용할 수 있다는 점과 iOS에서 발군의 성능을 보여준다는게 장점입니다. 단점은 역으로 iOS전용이라는 것 입니다.
Web Service
최근에는 웹상에서 바로 얼굴인식을 제공하는 서비스들도 생겨나고 있습니다. 특히 몇몇 서비스는 정말 놀라울 정도로 높은 정확도와 편리한 사용성, 성능을 보여 주고 있습니다. 그중 최고는 역시 face.com 입니다. 이미지를 서비스 서버로 전달하면 검출된 데이터를 돌려주는 방식으로 이 API를 이용하여 만든게 바로 Your Mustache 입니다. 온라인 상에서의 서비스에 이용하기에는 매우 좋은 솔루션입니다. 단점은 위에 소개한 것들과는 다르게 실시간 검출을 할 수는 없습니다.
- face.com : 빠르고 쉬우면서도 매우 다양한 정보를 얻을 수 있습니다. 현재 페이스북에 인수 중이라 조만간 서비스가 중단된다는군요.
- BioID Web Service : 얼굴 과 소리 검출로 개인 인증 서비스를 제공합니다.
- Betaface Web API : 얼굴 검출/인식 서비스를 제공 합니다. 비상용에 한해서 무료로 API 를 사용 할 수 있으며 실버라이트 데모 클라이언트로 테스트 해 볼 수도 있습니다. 특히 즉석에서 얼굴합성 및 표정을 바꿀 수 있습니다.
정리
지금까지 다양한 방식의 얼굴인식 솔루션을 알아 봤습니다. 사실 얼굴인식이라는게 최근에 나온 기술은 아닙니다. 수년 전 피쳐폰에도 이미 제가 만든 콧수염과 유사한 앱들과 게임이 있었습니다. 하지만 모든 기술은 시기와 또 다른 기술들의 조화로 인해 어떻게 성장 할 지 예측 할 수 없는 것 같습니다. 얼굴인식 또한 그런 것 같습니다. 강력한 성능의 스마트폰과 클라우드 거기에 빅데이터 라는 개념등이 유기적으로 작용하여 이전에는 상상못한 재미난 것들이 만들어 질 수 있을 것 같습니다.