본문 바로가기
Deep Learning/Computer Vision

[Image Classification] 치어리더 3대장 얼굴 분류기 만들기_개요, 데이터 수집, 전처리 Cheer leading Troika Face Classification

by 춘춘주모 2021. 7. 12.
반응형

 지난 학기 [딥러닝 응용] 수업에서 개인 프로젝트 과제로 수행했던 내용입니다. 다른 분들은 개인적으로 하고들 계신 연구를 가져와서 발표도 하고 하시던데 저는 그냥 재밌게 진행할 수 있는 주제로 선택해서 발표하고 소논문도 작성했었던 기억이 나네요. 프로젝트의 처음부터 끝까지 어떻게 진행했었는지 돌아보며, 관련 작업을 하시는 분들에게 참고가 되도록 작성해보겠습니다. 감사합니다.  

1. 개요

  Computer Vision Tasks 중에서 이미지 분류, 얼굴 분류 등은 이미 고도로 발전되어 추가로 정확도 측면의 발전 여지가 많지는 않은 것으로 알고 있습니다.

 본 포스팅은 이미지 인식 및 분류를 위한 새 알고리즘을 제시한다기보다는 개인 공부를 위한 토이 프로젝트 개념에서 접근하였습니다. 직접 이미지를 수집하고 전처리를 수행, 모델을 만드는데 의의가 있습니다.

 

 분류 대상은 '치어리더 3대장' 입니다. 요즘 치어리딩계에서 인기 있는 3명의 치어리더 분들을 의미하는데요, 사진에서 순서대로 '안지현', '서현숙', '이나경' 치어리더입니다.

 각 개인을 구분하는 특징은 얼굴에서 가장 두드러지게 드러난다고 판단했고, 얼굴 분류를 목표로 하게 되었습니다. 따라서 일단 이미지를 수집하고, 얼굴만 떼어내는 전처리 작업이 필요합니다. 

치어리더 3대장

2. 데이터 수집

 데이터는 크롤링을 통해 수집했습니다. 코딩을 잘해두신 분들이 계셔서 수월하게 했는데요, 각각 네이버와 구글의 이미지 탭에서 각 치어리더의 이름을 키워드로 검색한 결과를 크롤러를 통해 자동 다운로드했습니다. 하지만 이나경 치어리더의 경우, '이나경'으로만 검색했을 때는 동명이인 때문에 원하는 결과를 얻을 수 없어, '이나경 치어리더'의 검색어로 수집했습니다.

 수집 결과 : 안지현 873장, 이나경 989장, 서현숙 955장

 하지만 동명이인, 중복 이미지, 얼굴이 없는 이미지 등은 추후에 제거했고 그 결과

 안지현 : 766, 이나경 : 896, 서현숙 : 798 개의 데이터를 가지고 분석을 수행했습니다. 그리고 train, valid, test split은 7 : 1 : 2로 나눴습니다.

 일단 클래스별 데이터 수가 절대적으로 많지 않다는 점이 가장 큰 문제점이라고 할 수 있습니다. 과대 적합 등의 문제가 예상되는데요, 이를 극복하기 위한 여러 가지 방법들을 뒤에서 적용할 예정입니다. 

3. 이미지 전처리

  얼굴 인식 및 분류를 위한 전처리는 크게 다음의 4개의 과정으로 이뤄집니다.

1. 얼굴 검출 2. 얼굴 정렬 3. 정규화 4. 자르기 

 이미지에서 '얼굴' 부위에 해당하는 부분을 box로 감지합니다. 그리고 얼굴의 요소 눈, 코, 입 등을 감지하는데요, 이를 기준으로 얼굴을 정렬해 정면을 바라보게 하는 정규화를 수행합니다. 그리고 정규화된 영역을 잘라내서 따로 저장하면 전처리가 마무리됩니다. 

 위의 이미지를 처리하는 부분은 dlib, cv2, face-recognition, PIL 등의 패키지를 이용해서 수행했습니다. 하지만 전처리를 수행하는 과정에서 다소 버벅거리고 잘 처리가 되지 않아 다른 패키지로 전처리를 수행했습니다.

 

3.1 deepface

 전체적인 전처리는 deepface 패키지를 사용해 수행했습니다. 얼굴검출 관련 함수가 잘 정의되어 있어 몇 줄만의 코드만으로 간단히 처리 가능하다는 점이 큰 장점입니다. 이 패키지에서는 기본적으로 224*224의 size로 처리해줍니다. 

 전처리 관련해 간단한 example을 실행해봤는데요, 얼굴 검출-정렬-crop은 물론 추가적으로 얼굴을 분석해 나이 등 여러 가지 정보도 제공해주는 것을 볼 수 있습니다. 사실 현숙 누나가 28살인데 30살로 나오네요 하하하.

 전처리 결과는 다음과 같습니다. 세 명의 사진들에 대해서 얼굴 부분만 검출해 정렬한 결과입니다. 

3.2 Data Augmentation

 전체적으로 이미지가 적기 때문에 trainset에 대해서 증강 기법을 이용했습니다. 적용한 방법은 다음 3가지입니다. 가능한 얼굴 이미지의 특성을 해치지 않는다고 판단한 방법만 적용한 것이 특징입니다. 그리고 증강 예시는 다음 이미지와 같습니다.

  •  horizontal flip, random zoom, random rotation

서현숙 * 9

 이번 포스팅 분량은 여기까지 입니다. 치어리더 삼대장 얼굴 분류 2편에서는 모델 구축, 결과 분석 등의 내용으로 진행하겠습니다. 오늘도 감사합니다^^ 

 궁금하시거나 의견이 있으시면 언제든지 댓글로 부탁드립니다. 

반응형

댓글