머신러닝_성별분류_프로젝트 (1)

임정민·2022년 12월 30일
2

프로젝트

목록 보기
6/33
post-thumbnail

음성데이터/이미지데이터를 활용한 머신러닝 성별분류 프로젝트입니다.

  • 이번 프로젝트는 머신러닝을 활용하여 남/녀의 음성데이터와 이미지데이터를 각각 학습시켜 두가지 방법으로 남/녀 성별 분류를 하고자 하였습니다.

프로젝트 계획서

  • 프로젝트 계획서입니다. 총 5명의 조원이 협업했습니다.🙋‍♂️🙋‍♂️🙋‍♂️

  • 프로젝트 진행 기간은 2022-11-28 ~ 2022-11-07 열흘 소요되었습니다.

  • 주제선정 - 데이터 수집/전처리 - Model 학습 및 강화 - 결과 Report 순으로 진행하였습니다.🧐🧐🧐

프로젝트 내용

  • 주제 선정 : 성별 이진 분류

  • 데이터 수집 및 전처리

  1. 음성데이터(학습)

    1) 3168개의 음성데이터 데이터프레임
    (출처: https://www.kaggle.com/datasets/primaryobjects/voicegender)
    2) Null or 0 인 값 전처리

  2. 음성데이터(검증) : 20개의 강의장 학생들/강사님 실제 음성 데이터 스마트폰 녹음

  3. 이미지데이터 (학습 및 검증)

    1) 3735장의 남/녀 사진 수집
    2) 사진에서 얼굴만 추출하여 100x100 크기로 변환
    3) RGB값들을 평균값 처리하여 Grayscale로 변환


  • 도메인 지식 습득 :파이썬 librosa 라이브러리의 다양한 주파수 그래프/개념 파악

  • 머신러닝 모델 학습/ GridSearchCv 하이퍼 파라미터 튜닝

  1. 음성 분류 모델 학습

    1) XGBoost : 97.3% 학습 정확도
    2) LightGBM : 97.6% 학습 정확도

  1. 음성 분류 모델 검증(실제 측정 데이터)
    1) 스마폰으로 녹음한 음성데이터를 R언어 waveR 라이브러리 활용하여 벡터화
    2) 벡터화 시킨 데이터들을 학습한 데이터 형식에 맞게 Dataframe으로 정리
    3) XGBoost : 60.0% 검증 정확도
    4) LightGBM : 65.0% 검증 정확도
    5) 낮은 정확도의 원인: 실제로 데이터를 수집하는 장비 및 환경이 전문적이지 못하여 잡음이 추가되었고 평균 주파수가 높이 측정됌, 일반적으로 비교적 낮은 평균 주파수를 갖는 남성들이 높은 평균 주파수로 측정되었고 확인 결과 남성이지만 평균 주파수가 높은 여성으로 분류하여 틀린경우가 대부분임. 또한 검증용 실제 데이터 수집 건수가 20개 밖에 되지 않아 정확한 test가 어려웠음

  2. 이미지 분류 모델 학습
    1) LR : 76.7% 정확도
    2) SGD : 59.9% 정확도
    3) KNN : 71.8% 정확도
    4) SVM : 80.6% 정확도
    5) DecisionTree : 70.1% 정확도

  • 결론 및 한계점
  1. 음성 성별 분류
    1) 컴퓨터는 음성 데이터의 성별을 머신러닝을 활용하여 높은 정확도로 분류할 수 있다.
    2) 남녀간 음성데이터의 가장 큰 차이점은 평균주파수,분위간 범위 등이다.
    3) 이는 일반적으로 생각하는 '남녀 목소리의 가장 큰 차이는 음의 높이이다'라는 주장을 뒷받침한다.

  2. 이미지 성별 분류
    1) 본 프로젝트에서는 이미지 학습을 위해 머신러닝 모델을 활용하였다.보편적으로 인공지능 이미지 학습은 딥러닝 모델을 활용한다. 머신러닝은 픽셀 위치별 RGB or grayscale 값만 비교해서 분류한다면 딥러닝은 더 나아가 픽셀의 집합들인 미간,코와 입간의 관계 등 까지 학습하여 더 높은 정확도를 가진다. 이번 프로젝트는 머신러닝만을 활용하였을 때는 이미지 분류 정확도가 얼마나 되는지 알아보고자 하였고 딥러닝 모델을 활용한다면 훨씬 높은 성능을 가진 모델을 만들수 있을 것이라고 생각한다.
    2) 여장을 한 남자, 숏컷을 한 여자 그리고 장발을 한 남자 등 사람이 보기에도 구별하기 어려운 경우는 인공지능도 분류하기가 어렵다.

감사합니다.🐸🐸🐸

참고

코드 설명은 머신러닝성별분류프로젝트 (2)을 참고하시면 되겠습니다.

profile
https://github.com/min731

0개의 댓글