--- tags: - music --- # CNN 기반 음악 감정 분류기 🎵 ## 개요 이 모델은 음악이 전달하는 감정을 Convolutional Neural Network (CNN) 아키텍처를 사용하여 분류합니다. 모델은 음악 샘플로 구성된 데이터셋에서 감정 범주(Angry, Fear, Happy, Tender, Sad) 중 하나로 라벨링된 데이터를 학습했습니다. 모델은 오디오 데이터를 Mel-spectrogram으로 변환한 후, CNN 레이어를 통해 음악에서 감정 상태와 관련된 패턴을 학습합니다. ### 주요 기능: - **입력**: Mel-spectrogram으로 변환된 5초 길이의 오디오 세그먼트 - **출력**: 다음 감정 중 하나 - Angry (0) - Fear (1) - Happy (2) - Tender (3) - Sad (4) - **아키텍처**: 3개의 컨볼루션 레이어와 완전 연결층으로 구성된 CNN 모델 ## 데이터셋 이 모델은 두 가지 데이터셋을 사용하여 학습되었습니다: 1. **MER_audio_taffc_dataset**: 이 데이터셋은 특정 사분면(Q1~Q4)에 따라 라벨링된 음악 파일로 구성됩니다. 2. **OSF_IO Dataset**: 또 다른 음악 파일 및 감정 라벨로 구성된 데이터셋입니다. ### 데이터 전처리: - 각 오디오 파일을 5초 단위로 분할 - 분할된 오디오 세그먼트를 Mel-spectrogram으로 변환 - 두 데이터셋을 섞어서 학습 및 검증용으로 병합 ## 모델 상세 정보 ### 아키텍처: - **컨볼루션 레이어**: - Conv1: 32개의 필터, 커널 크기 3x3 - Conv2: 64개의 필터, 커널 크기 3x3 - Conv3: 128개의 필터, 커널 크기 3x3 - **풀링**: 각 컨볼루션 후 MaxPooling 레이어를 사용하여 차원을 축소 - **드롭아웃**: 드롭아웃 정규화를 사용하여 오버피팅 방지 (확률 0.5) - **완전 연결층**: - 첫 번째 FC 레이어: 256 유닛 - 출력 레이어: 5개의 유닛 (5개의 감정 범주) ### 손실 함수: - **CrossEntropyLoss**: 다중 클래스 분류를 처리하는 데 사용 ### 옵티마이저: - **Adam**: 학습률 1e-4로 설정 ## 학습 이 모델은 병합된 데이터셋을 사용하여 10 에폭 동안 학습되었습니다. 학습과 검증 데이터 비율은 80:20으로 나누어 모델 성능을 평가했습니다. 검증 정확도를 기준으로 가장 성능이 좋은 모델 체크포인트를 선택하여 저장하였습니다. ## 성능 - 검증 데이터에 대해 약 47% 정확도 ## 사용 방법 자신의 음악 데이터를 감정 분류하는 데 이 모델을 사용하려면 Hugging Face Hub에서 직접 로드할 수 있습니다: ```python from transformers import AutoModel model = AutoModel.from_pretrained("rkdaldus/music_sent5_classification") ```