상세 컨텐츠

본문 제목

dlib을 이용한 스노우 카메라 만들기(feat. 빵형)

인공지능

by 잘못된 선택 2022. 1. 26. 00:00

본문

dlib이란 '이미지 처리 및 기계 학습, 얼굴인식 등을 할 수 있는 c++ 로 개발된 고성능의 라이브러리'라고 한다.

이미지 처리를 도와주는 opencv와 함께 사용하는 것이 좋다! 

 

https://www.youtube.com/watch?v=tpWVyJqehG4 유튜브 빵형님의 영상을 보고 따라하며 실습해보았다.먼저 환경설정을 하면서 마주한 에러를 살펴보자.

 

1. 콘다 환경에서 pip install로 opencv-phthon이 설치가 안될때conda prompt에서 설치하면 되는데 그 방법보다는 아래 사진에서 보이는 Use Conda Package Manager을 해제하면 된다. 저게 체크되어 있으면 install 안되는 패키지들이 생김

 

2. dlib은 pip install dlib으로 설치하면 에러가 발생!

(향후 64비트 미니콘다에서 다시해봤을때는 설치됨)

 

c++로 개발된 라이브러리이기 때문이라는 얘기가 있다. 해결책은 cmake를 먼저 설치하고 dlib 파일을 직접 다운받는 방법을 많이 하는것 같은데 나는 그 과정에서 cmake 환경변수 때문인지 에러가 또 발생하였고, 다른 방법을 사용하여 해결하였다.

conda prompt에서 아래 순서대로 작성하면 된다.

>>conda update conda

>>conda update anaconda

>>conda create -n env_dlib python=3.6   (dlib을 설치하기 위한 적합한 파이썬 버전들이 있음)

>>conda activate env_dlib

>>conda install -c conda-forge dlib

>>python

>>import dlib

 

 

dlib은 face detection과 face landmark detection 등을 수행할 수 있다. 여기서 face landmark detection은 아래 그림과 같이 얼굴에서 68개의 landmark를 찾아내는 것이다.

facial landmarks

 

동영상을 입력으로 주면 그 영상 안에서 dlib으로 사람 얼굴을 검출하고 그 중심점을 계산하여 스노우 어플과 같이 캐릭터 얼굴로 사람의 얼굴을 가려주는 프로그램이고 결과물은 아래 사진과 같이 나왔다.

 

결과 영상

 

dlib을 사용해보니 사용이 간단하다는 장점이 있지만 체감상 속도는 그렇게 빠르지 못한것 같다. 

이후 웹캠을 구매하고 실시간으로 찍히는 내 얼굴에 적용되도록 코드를 수정해 보았다.

 

웹캠에 적용 결과

다른 프로젝트에서 mediapipe라는 라이브러리를 사용하고 다시 dlib을 보니 dlib의 경우 한번 인식된 결과를 tracking해주는 기능은 없어서 그런지 중간중간 얼굴인식이 끊기는 현상이 보였다. 또한 고개를 정면이 아닌 방향으로 돌리면 인식률이 떨어진다. 반면 mediapipe는 얼굴을 3D로 인식하고 tracking 기능도 있기 때문에 고개를 격하게 흔들어도 잘 잡아주는 모습을 볼 수 있었다.

관련글 더보기

댓글 영역