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

지금까지 다양한 방식의 얼굴인식 솔루션을 알아 봤습니다. 사실 얼굴인식이라는게 최근에 나온 기술은 아닙니다. 수년 전 피쳐폰에도 이미 제가 만든 콧수염과 유사한 앱들과 게임이 있었습니다. 하지만 모든 기술은 시기와 또 다른 기술들의 조화로 인해 어떻게 성장 할 지 예측 할 수 없는 것 같습니다. 얼굴인식 또한 그런 것 같습니다. 강력한 성능의 스마트폰과 클라우드 거기에 빅데이터 라는 개념등이 유기적으로 작용하여 이전에는 상상못한 재미난 것들이 만들어 질 수 있을 것 같습니다.
]]>
키넥트를 구입하고 관련 글을 너무 올리고 싶었는데 차일피일 미루다가 이제서야 하나 올립니다. 사실 키넥트를 구입하고 나서 관련 공부를 많이 하지는 못했습니다. 사람이란게 참 이상한게 키넥트가 없을때는 그렇게 하고 싶더만 막상 사고 나니까 손이 안가네요;;;
테스트 파일의 베이스 파일은 https://github.com/silviopaganini/openKinect-as3-experiments 여기서 다운 받을 수 있습니다. 구조는 살짝 복잡한데 키넥트와 실제로 직접 연결되는 TuioKinect, TuioKinect와 플래시를 연결 해 줄 udp-flashlc-bridge 그리고 플래시 클라이언트가 있습니다. 구조는 조금 복잡하지만 TuioKinect 의 경우 다른 드라이버 설치 필요없이 바로 키넥트와 연결되므로 사용하기는 편리합니다. 현재 여러종류의 키넥트 클라이언트가 있지만 실제로 테스트 해 본 건 몇개 없습니다. 조만간 M$에서 공식 SDK 를 출시 한다니 아마 그게 나오면 통합되지 않을가 싶네요.
흥미로운게 하나 더 있는데 바로 udp-flashlc-bridge 입니다. port 를 지정하는 것으로 봐서는 분명 소켓통신 같은데 기존의 자바소켓서버들과는 다르게 매우 안정적이고 잘 돌아 갑니다. 그리고 보통 클라이언트는 지속적으로 재접속이 되어도 키넥트를 재시동하면 서버도 재시동 해줘야 하는데 이건 그런게 없네요. 그냥 잘 됨;;; 사실 그간 자바서버의 유효성 문제 때문에 늘 서버가 고민이였는데 이 서버는 매우 안정적인게 확실히 뭔가 다릅니다. 다만 소스가 없어서 정확히 어떻게 돌아가는건지를 모르겠네요. 여튼 이건 제대로 파헤쳐야할 한 꼭지!
플래시 클라이언트는 키넥트 UI 를 한번 만들어봤습니다. 키넥트는 다른 콘트롤러와 다르게 버튼이 없기 때문에 제스처나 시간등을 이용해서 버튼을 구성해야 합니다. 처음으로 만들어 본 건 슬라이드 버튼입니다. 특정 위치에서 손을 슬라이드 해서 선택합니다. 처음 시작 할 때는 그닥 어렵지 않을 것 같았는데 만들다 보니 기존과 완전 다른 문제가 생겼습니다. 그건 바로 마우스가 복수라는 겁니다;;;; 위치비교를 하려면 이전 마우스위치와 현재 마우스위치를 계속 비교해야 되는데 아무 생각 없이 단수용으로 만들고 나니 여러개의 마우스를 처리하는게 완전 곤욕이었습니다.
이 키넥트 UI 의 대표적인 특징은 클릭이 없다는 겁니다. 그래서 생각한 건데 장애우나 접근성이 떨어지는 사용자들을 위한 UI로 써도 좋을 것 같습니다. 샘플 플래시는 너무 급하게 만들었더니 눈에 띄는 버그가 엄청 많네요. 고치기 귀잖아요~ 양해바랍니다.^^ 스크린 트랜지션의 경우 많이 쓰는 기능이고 나름 추상해놓은 클래스 레이어가 있음에도 불구하고 매번 다시 작성하게 되네요. 아~ 내공부족 ㅠㅠ 작동하는 버튼은 START, GALLERY, BACK 입니다.
[button link=”https://sewonist.com/wp-content/uploads/2011/03/TuioKinect0.1.zip”]Download – TuioKinect0.1[/button]
]]>The company is to release a software development kit in the spring, which will give developers access to the secrets behind the technology.
….
http://www.bbc.co.uk/news/business-12531127
키넥트SDK 에 관한 뉴스가 또 올라왔군요. 확실히 봄쯤에는 SDK 가 나올 것 같습니다. 근데 M$에서 SDK 가 나오면 어차피 윈도우 전용이려나???? 그럼 저 처럼 맥에서 작업하는 사람은 무용지물인뎅… 그래도 SDK가 공개되면 오픈소스 진영에도 좀 더 활기가 생기지 않을까요?
]]>