Urban Sound Classification Update

(업데이트)아래 훈련 세트와 테스트 세트를 사용하여 간단한 모델을 만들어 보았습니다. 훈련 데이터에서 62.8%(주피터 노트북 참고), 테스트 세트에서 56.5%(주피터 노트북 참고) 정확도를 얻었습니다. 나중에라도 구글 클라우드를 쓸 기회가 있으면 파라미터 탐색 범위를 늘려서 한번 시도해 보겠습니다. ^^

(업데이트)이 글에서 작업한 훈련 세트와 테스트 세트의 분류가 잘못되었습니다. 테스트 세트와 훈련 세트가 같은 소리의 샘플을 가지고 있습니다(문제점을 찾아주신 최근우님께 감사드립니다). 예를 들면 한 강아지로 부터 몇 개의 소리가 녹음되어 있습니다. 이런 경우에 이 소리가 훈련 세트와 테스트 세트로 나뉘어져 들어가면 정확한 추정이 되지 못합니다. 새로운 데이터는 완전히 새로운 강아지의 목소리일 것이기 때문입니다. 이와 비슷한 경우의 예로는 의료 영상 같은 분야입니다. 한 환자의 영상이 테스트 세트에 섞여 들어가면 과도하게 낙관적인 추정을 얻게됩니다. UrbanSound8K의 사운드 추출 데이터를 레이블이 섞어지 않도록 scikit-learn의 GroupShuffleSplit를 사용하여 훈련 세트와 테스트 세트로 나누어 깃허브에 올려 놓았습니다. 이 데이터셋으로 도전해 보도록 하겠습니다. 🙂

UrbanSound8K 데이터를 이용해 10가지의 소리를 분류하는 Urban Sound Classification의 코드를 텐서플로우 1.1 버전에 맞추어 업데이트했습니다. 이전과 달라진 점은 레이어의 노드를 증가시켰고, 텐서플로우의 매트릭스 연산자를 사용하지 않고 조금 더 상위 API인 dense, softmax_cross_entropy_with_logits 등을 사용한 것과 기본적인 경사 하강법 말고 0.0001의 학습속도로 Adam 옵티마이저를 사용한 점 등입니다. 여러번 하이퍼파라미터 튜닝을 하기 위해 특성 데이터를 훈련용과 테스트용으로 나누어 놓고 작업을 시작했습니다.

urban_sound_train

훈련은 Urban Sound Classification-Train.ipynb 파일에, 테스트는 Urban Sound Classification-Test.ipynb 에 있습니다. 학습 결과는 훈련 데이터에서 92.6%, 테스트 데이터에서 92.8% 입니다. 결과를 보아서는 확실히 언더피팅 상태로 보입니다. 훈련 데이터에서 조금 더 성능을 끌어올릴 여지가 있을 것 같지만 다른 일들 때문에 여기서 일단 멈추었습니다. 나누어진 훈련 데이터와 학습된 파라미터는 깃허브에서 볼 수 있습니다.

Urban Sound Classification Update”에 대한 4개의 생각

  1. keunwoochoi

    혹시 주어진 스플릿이아니라 랜덤으로 따로 돌리셨나요? Urbansound8K는 같은 파일을 여러개로 나누어놓았는데 90%가 넘는 정확도라면 트레이닝/테스트셋에 같은 파일이 섞인것이 아닌가 합니다.
    외부데이터 없이 Data augmentation을 한 경우에 컨브넷의 SoTA가 70+%입니다. 오디오 피쳐를 쓴 경우에도 60-70%로 많이 보고되었구요.

    Liked by 1명

    응답
  2. 김호경

    유익한 강의 잘 보았습니다 🙂

    질문이 하나 있는데요.
    테스트셋 트레인셋 구분 시에 scikit-learn의 GroupShuffleSplit의 split메소드를 사용하신 것 같은데요.
    여기서 그룹 옵션으로 freesoundID를 주셨던데, 이를 통해서 같은 그룹ID을 갖는 경우 트레인셋, 테스트셋으로 서로 섞이지 않는다는 말씀이신거죠?

    다른 uransound 소스를 보면 트레인셋과 테스트셋을 폴더(fold1/fold2)로 구분하여 사용하는데요.
    결과가 보통 accuracy가 70%이상 넘어가지는 않거든요.

    최종 결과를 보면 accuracy가 90%를 넘긴 것 같아서, 의문이 있어 질문 남깁니다.
    folder로 구분해서 시험했을 경우도 같은 결과가 나오는 지 궁금하네요.

    좋아하기

    응답
    1. 로드홈 글의 글쓴이

      네 데이터셋을 나누것은 말씀하신 바가 맞습니다. 하지만 90%는 잘못된 데이터셋으로 만든 결과입니다. 그룹셔플로 나눈 데이터셋으로는 아직 시도를 못해보고 있습니다. ㅜㅜ

      좋아하기

      응답

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

%s에 연결하는 중