- 프로젝트 진행기간: 10월 9일 ~ 11월 25일 (약 47일)
- 참여 인원: 4명
- 머신러닝 피처 추출, 발표 자료 제작
- 결과: WCRC data conetst 딥러닝부문 4위
프로젝트 내용
목표: 다양한 전처리를 통한 보다 객관적인 퍼스널 컬러 진단 모델 제작
역할: 머신러닝 피처 추출, 발표 자료 제작
사용기술: Python, Dlib, OpenCV
딥러닝을 활용해 다양한 시도를 해보는 것이 이 공모전의 목적이었던 거 같다.
데이터 수집·크롤링
논문을 참고해 봄웜, 여름쿨, 가을웜, 겨울쿨 4가지 퍼스널 컬러를 설정했다.
여러 가지 블로그를 참고해 공통적으로 등장하는 퍼스널 컬러별 대표 연예인 이미지를 구글에서 각 컬러별로 2000개씩 크롤링했다.(사실 4000개 정도 크롤링하고 반은 정제해서 버렸다고 봐야 한다. 열심을 강조하는 한 문장!)
처음에는 직접 이미지를 보면서 정제했는데, 문득 아주 오랜 시간이 걸릴 것 같다는 느낌이 강렬하게 다가왔다.
시간 절약을 위해 미디어 파이프로 1차 정제를 했다.
우리의 목표 퍼스널 컬러 연예인 한 명만 있는 사진을 위해 얼굴 인식이 안되거나, 여러명 인식되는 사진을 제거했다.
40% 지워졌고, 다른 인물 한 명 있는 경우는 분리하지 못했을것이라 생각해 수작업을 추가로 진행했다. 결국 데이터의 반을 정제했다. 그래도 모든 데이터를 다 보지 않아서 얼마나 다행이었는지 모르겠다^^
머신러닝 피처 추출
딥러닝 모델인 MobileNetV2로 다중분류를 해본 결과 정확도 50%가 나왔다.
(나중에 심사위원 분들이 4개중에 1개면 25% 일수도 있는데 50%라니 꽤 흥미롭지 않냐고 하셨다.)
정확도 50% 판단이 된다고 볼 수 없는 숫자였다.
정확도를 높이기 위해 머신러닝으로 다중분류를 진행했다.
퍼스널 컬러는 색채이니 피부, 눈동자, 입술 RGB값을 피처로 추출했다.
Dlib패키지를 활용해 눈, 입술, 얼굴을 인식해 RGB값을 추출했다. 눈동자와 입술 색상은 사진과 유사하게 추출되었다.
그러나 피부는 여러가지 요소가 섞여 온전한 색상값을 추출하지 못했다. 보편적인 피부 RGB값을 사용했기 때문인데,
나는 10개의 표본을 픽셀 단위로 나눠 피부만 있는 픽셀의 RGB값을 추출해, 추출한 결과 평균값을 바탕으로 상한, 하한을 정해 범위 내에서 피부색이 추출되도록 했다.
추출한 RGB값을 피처로 다중로지스틱회귀분석, 랜덤포레스트 다중분류 결과 정확도 53%로 3% 상승했다.
프로젝트 회고
다른 팀원들은 조명 전처리도 해보고, 립스틱 색깔로 재 분류도 해봤다. 나는 왜 이렇게 정확도가 낮을까 생각했다.
RGB값을 계절별로 시각화 해본 결과 RGB값이 크게 다르지 않았다. 봄과 여름의 값이 다른 계절보다 차이가 있어 그나마 50%의 정확도를 달성하지 않았을까 싶다.
또한 메이크업, 보정 방법, 조명에 따라 크게 바뀌는 연예인을 크롤링해서 모델링을 한 것도 문제가 됐을 것 같다.
ex) 여름 쿨톤 대표 연예인: 손예진 이면, 크롤링 검색어로 '손예진', '손예진 얼굴' , '손예진 생얼' 을 사용했기 때문이다.
공모전 시간이 부족해 다시 해보진 못했지만, AI허브의 일반인 안면인식 데이터를 사용하고, 절댓값 기준으로 단순 라벨링이 아닌 클러스터링을 통해 유사한 색상끼리 묶은 뒤에 라벨링을 한다면 정확도가 더 올라갈 것 같다.
데이터는 정말 중요하다. 별표
'Data > 데이터분석' 카테고리의 다른 글
데이터 활용 공모전 (0) | 2023.06.28 |
---|