openface docker를 이용하여 얼굴사진의 눈코입을 중앙에 오도록 하는 법.

라즈베리파이를 이용한 프로젝트를 진행하던 중 인물의 정면사진이 필요하게 되었다.

이 과정에서 알게된 인물의 정면사진 얻는 법을 포스팅 하도록 하겠다.



이번 포스팅은 openface docker가 우분투에 이미 설치되었다는 가정하에 시작한다.






이번 포스팅에서 진행하는 과정은 아래 사진의 Input Image ~ Crop 까지이다.

(정확히는 Crop한 사진을 Ubuntu에 저장하는 것까지)




(source : https://cmusatyalab.github.io/openface/)







1. docker로 raw image dataset 이동시키기




가장 먼저 이전 포스팅을 참고하여 Ubuntu에서 openface docker로 

정면사진을 얻고자 하는 raw image 폴더를 이동시켜 준다. 

참고 : http://jayharvey.tistory.com/9





나의 경우 openface 디렉토리는 위와같이 구성되어 있고

/openface/KangHoDong 폴더 내에는 위와 같이 30여장의 사진을 복사시켜 놓았다.





그런 다음 raw image를 변환시켜 얻은 aligned image를 저장할 Kang2라는 폴더를 만든다.

/openface/Kang2/







2. openface script를 이용하여 aligned image dataset 얻기





openface usage에 따라 다음과 같은 명령을 입력한다.






명령어를 간단히 까보면 다음과 같다.


./util/align-dlib.py ./KangHoDong/. align outerEyesAndNose ./Kang2/ --size 96



./util/align-dlib.py   ==> . 은 현재 디렉토리(openface) 내의 util/align-dlib.py를 실행한다는 의미.

./KangHoDong/.  ==>  앞의 . 은 현재디렉토리를 의미하고 뒤의 . 은 KangHoDong 폴더 내의 "모든 이미지 파일들"을 의미.

./Kang2/  ==>  . 은 현재 디렉토리를 의미하고 Kang2는 aligned images를 저장할 폴더를 의미.



확인해보면 다음과 같이 Kang2 폴더에 aligned images가 저장된 것을 확인할 수 있다.





docker내에서 aligned images를 까보고 싶어서 다음과 같이 여러 명령을 실행하였지만 듣지를 않는다.

찾아보니 docker내에서는 image파일들을 열어볼 수 없는듯 하다.



eog -f User.1.1.png

feh User.1.1.png

등등 여러명령어를 실행해봤지만 다 안먹힘....;

아시는 분은 댓글 부탁드립니다 ㅠ







3. openface docker 내의 폴더를 host ubuntu로 옮기기





docker 내에서 image 파일들을 열어볼 수 없어 ubuntu로 옮겨서 확인해보기로 한다.


1. 에서 실행한 명령어를 위치만 바꿔주어 실행하면 된다.

(단, docker내에서가 아닌 ubuntu terminal에서 실행해야 함)


이전 포스팅 참고 : http://jayharvey.tistory.com/9






우분투에서 이미지 폴더를 열어본 결과이다.

내가 뭘 잘못한 것일수도 있으나 원본사진이 측면을 바라보고 있는 얼굴 사진의 경우

100% 정면으로 위치하도록 할 수는 없나보다.



(중간 중간 이미지 전처리를 잘못하여 송지효, 유민상의 얼굴도 보인다..;)




openface의 자세한 원리는 공식 document를 참조하길 바람.


https://cmusatyalab.github.io/openface/




더보기

댓글,

jayharvey

머신러닝/딥러닝 관련 글을 포스팅할 예정입니다 :)