2019. 11. 22. 13:50ㆍ카테고리 없음
이번 프로젝트는 머신러닝을 활용하여 사진 속 사용자 얼굴의 관상을 봐주는 어플리케이션 서비스입니다.
이 어플리케이션은 내부에서 얼굴을 이목구비 별로 부분적으로 나눠 각 부위에 맞는 관상 정보를 제공합니다.
1. 기획 배경
프로젝트 주제를 "관상"으로 선정한 이유는 이전부터 동아시아권에만 해당하는 관상 문화가
매우 신선한 소재라고 생각하고 있었습니다.
또 인터넷과 SNS에서 관상과 관련하여 재밌는 포스팅 글과 사진들이 존재하는데
보다 보면 꽤 그럴듯한 내용들이 많았습니다.
물론 관상학은 비과학적이며 신뢰할 수 없는 학문이자 이론입니다.
하지만 데이터를 꾸준히 모아 관상 모델을 꾸준히 다듬는다면
사용자들이 재미있어 할 결과를 낼 수 있다고 생각하여 시작하게 되었습니다.
2. 학습 원리
학습방법을 논하기에 앞서, 우리 팀은 어떤 특징을 갖는 영상 데이터들을 모아야
가장 효과적인 모델을 만들 수 있는지에 대해서 생각해봐야 했습니다.
현존하는 얼굴인식(Face Recognition) 기술은 말 그대로 영상 속에서 사람들의 얼굴을 찾는 기술이라서
우리 프로젝트와 비슷하나 차이가 있었습니다. 왜냐하면 얼굴을 찾은 후에 얼굴에서 눈썹, 눈, 코, 입을 찾아야 했습니다.
그래서 우리 팀은 영상 속에서 인식한 얼굴을 이목구비별로 분리하는 모듈(recognition_and_split)과
분리한 영상을 토대로 평가하는 모듈(Image_Classification_Eyebrow...)이 필요할 것이라 생각했습니다.
윗 사진처럼 이목구비 중에 특징을 갖는 연예인의 사진을 많이 모은 후에,
분리 모듈에 넣어 눈썹, 눈, 코, 입을 갖는 영상들을 추출했습니다.
그리고 비슷한 특징을 갖는 영상을 모아놓은 폴더에 관상DB에 맞는 인덱스 번호를 입력한 후
모델별로 학습을 진행하였습니다.
학습 관련 진행은 euhyejipark님의 사이트를 참고하였습니다.
(https://euhyeji.blogspot.com/search/label/Tensorflow%201.9?&max-results=10)
3. 기능 설명
어플리케이션 내 기능은 두 가지입니다.
관상 관련 정보를 볼 수 있는 관상 사전과 사진을 토대로 보는 관상보기입니다.
상단의 이목구비 버튼을 이용하여 이목구비별로 관상 정보를 확인할 수 있습니다.
물론 이 정보를 기반으로 하여 사용자의 얼굴을 분석합니다.
이목구비 버튼을 누르면 부분 영상마다 점을 찍어 인식된 부분을 나타내 줍니다.
또 인식한 부분을 학습한 모델 가중치와 비교하여 가장 근접한 관상 정보를 나타냅니다.
.
.
.
이번 어이 관상가 양반 프로젝트는 올해, 2019년 들어 가장 마지막으로 진행한 프로젝트이면서
제일 재밌었고 기억에 오래 남을 개발이었습니다.
제일 힘들었던 점은 기획을 하고서 이 프로젝트를 주어진 기한 안에
구현할 수 있을지에 대한 끝없는 의문과 스트레스였습니다.
왜냐하면 텐서 플로, 하이브리드 앱과 장고, 그리고 인식 모듈 등
모든 것들이 우리 팀에게는 처음이었기 때문입니다.
하지만 결국 모든 팀원들의 노력 끝에 제법 완성도가 높은 결과가 나왔습니다.
뿐만 아니라 교육과정에서 실시한 시상식에서 입상하는 쾌거를 이룰 수 있었습니다.
아쉬운 점과 보완할 점이 있다면 분석 기능을 사용하기 위한 실행시간이 길다는 것입니다.
이를 해결하기 위한 유지보수 작업을 못한 것이 아쉬웠고
분석 후에 얻은 사진들을 데이터로 누적해나가는 기능을 구현하지 못한 것이 아쉬웠습니다.
그래서 연말~ 연초 때 리팩토링 및 유지보수를 진행해볼 계획입니다.
감사합니다.