DLib는 machine learning algorithms 을 가지고 있는 툴킷이다. (http://dlib.net/ ) 이 자체는 CPP 라이브러리이나 파이썬으로 해당 라이브러리를 이용할 수 있다. 기본적으로 많은 기능이 제공되는데 이 중, 내가 가장 흥미를 느낀 기능은 face landmark 추출 기능이다. face landmark 는 얼굴의 특정지점을 추출하는 기능이다. DLib 가 기본적으로 제공하는 기능은 눈썹, 눈, 코, 입, 얼굴 아래형태이다. 해당 라이브러를 이용하면
이 처럼 얼굴의 위치를 잡아준다. 물론 오차는 약간 있다. 직접 학습을 하게 만들 수 있지만 학습데이터를 만드는 것도 많은 작업이 필요한지라 기존 데이터를 이용하는게 더 편하다.
해당 라이브러리를 이용해 특정 지점에 스티커를 놓는 기능을 만들어 보았다. https://github.com/yiunsr/imglst 에서 소스를 확인 할 수 있고 http://imglst.labstoo.com/demo/landmark 에서 테스트 해 볼 수 있다. 기능이 라는게 별거 없는데, 얼굴 추출 기능은 http://dlib.net/face_landmark_detection.py.html 에 있는 기능을 이용했다. 이 기능은 원래 비디오 인데 적당히 사진을 이용할 수 있도록 수정했다.
대부분은 작업은 HTML5 Canvas 작업들이 더 힘들었다. dlib 는 이미지 위치만 잡아 주지 저렇게 점 까지 찍어 주지 못한다. 점까지 찍어 주고 숫자 출력하는게 더 힘들었다.
이 이외에 face morhping(http://imglst.labstoo.com/demo/morhping) 하는 기능도 샘플로 넣었다. 이 기능은 (https://github.com/alyssaq/face_morpher ) 의 기능을 이용했다. 두 얼굴을 합쳐서 중간 얼굴을 만드는 기능이다. 결과적으로 하고 싶은 것은 저 중간 얼굴을 실제 사진에 넣는 것이다. ( https://www.learnopencv.com/face-swap-using-opencv-c-python/ 이 기능 처럼 face swap 을 잘 적용하면 될 것 같은 느낌이다. ). 이 부분은 좀 더 공부가 필요할 것 같다.