- 목표 : 음성 멜-스펙트럼 데이터를 이용한 음성 질환 진단 및 분류
- Task : 6-class classification
[ Normal, Cancer, Cyst_and_Polyp, Nodules, Functional_dysphonia, Paralysis ]
- Task : 6-class classification
- 데이터 : 음성 멜-스펙트로그램 데이터(csv)
- CSV파일은 2차원 배열이며, row(y)값은 128로 고정됨
- column(x)값은 발화음성의 길이에 따라 달라짐.
- meta-data인 JSON 파일에는 각 음절 구간(x)의 시작 및 종료 값, 질환 분류가 기록됨.
- Train/Validation 데이터: 639건(명), Label 공개
- Test 데이터: 164건(명), Label 비공개
- 평가지표 : Macro F1-score
- 대회기간 : 21.10.29 - 21.11.16
- 주최 : 과학기술정보통신부, NIA 한국지능정보사회진흥원
- 주관 : 서울대학교병원, EPI LAB
대회 성적 link
rank : 1/43 🏆️.
score : 0.5759 (Macro F1-score)
- 학습모델 / 학습 방법 / 추론 방법
- Leader : thomas11809
- Ph.D. student at Seoul National University (SNU). /B.S. in Department of ECE, SNU.
- Role : data analysis, paper search, data processing, modeling, model test.
- Follower : papari1123
- M.S. in Department of Human ICT convergence in SKKU. / B.S. in Department of Information Display, KHU.
- Role: paper search, modeling, model test, data processing support.
- librosa
- json
- PIL
- cv2
- numpys
- pandas
- torch
- torchvision
- matplotlib
- small dataset
- class imbalance problem
class | Normal | Cancer | Cyst & Polyp | Nodules | Functional dysphonia | Paralysis |
---|---|---|---|---|---|---|
sample | 301 | 27 | 110 | 49 | 50 | 102 |
ratio | 47.1% | 4.2% | 17.2% | 7.7% | 7.8% | 16.0% |
-
Meta-data
- 성별, 나이, 진단명
-
Annotation data
- 토큰 정보, 토큰 스킵 여부 / 발음 정확성 / 해당 구간 Frame 정보
-
분석에 따른 개선 방안
- 각 melspectrom을 토큰별로 나눠서 학습시킴.
- Focal Loss를 도입해 학습 효율/성능을 높임.
- 클래스를 더 분화하여 모델에게 학습.
-
Class 세부 분화 : 성별/나이에 따라 기존 6개 -> 분화 후 21개
-
Data Random Augmentation
- input width 맞추기 위해, 길이 64 pixel 고정 -길이가 64보다 작은 경우는 zero-padding
- 길이가 64보다 큰 경우 랜덤으로 64인 구간 선택, 매 epoch마다 구간이 랜덤하게 선택되어 모델의 일반화 성능이 개선됨.
-
Using Meta-data as Auxiliary input
- 성별, 나이 데이터를 모델 입력으로 사용
- "mini-ResNet" : Robust CNN model as a backbone
- Main input : [Batch, 1, mel=256, time=64]
- Auxiliary input: [Batch, sex, normalized age] e.g., [32, 1, 0.4]
- Training, validation split tokenizing을 통해 augmentation을 하더라도, 데이터의 personal pool이 한정되어 characteristic diversity는 기존과 동일.
- 따라서, 모델의 일반화 능력을 최대한 끌어올리기 위해 validation 비율은 5%(528 token)로 낮게 설정
- Multi-Class Supervised Learning
- 지도 학습 데이터의 Class 수를 늘릴수록 분류 성능은 좋아짐.
- Optimizer는 Adam Optimizer를 사용.
- Initial learning rate는 1e-3로 하되, scheduler로 ReduceLROnPlateau를 사용.
- CNN Kernel size는 Voice Pathology 예측 논문에 사용된 ResNet34 참고하여 유사하게 결정.
- CNN channels size는 사용된 class 개수가 21개로 많은 편으로, 최소 128개 이상으로 하되 1.5배수씩 조정해가며 최적값 설정
- FC input size는 Auxiliary input을 이어 붙였을때 적절한 mutual information loss를 가지는 하이퍼파라미터로 구성.
parameter | Value |
---|---|
Learning rate | 0.001 |
Epoch | 100 (max) |
Batch size | 32(training), 16(testing) |
Optimizer | Adam |
Scheduler | ReduceLROnPlateau (lr decay rate = 0.3, patience = 5) |
CNN kernel size | first Conv = 7x7, other = 3x3 |
CNN channels size | first Conv = 128, 1st residual block = 192, 2nd residual block = 256 |
FC input size | first FC = 64, second FC = 32 |
- 대회에서 지원받은 GPU 기준으로 1 epoch 당 약 89 sec (training 88 sec, validation 1sec)
- 학습 시 100 epoch = 100x89 = 8900 sec = 약 2시간 28분.
- General
- time stretch (0.8, 1.2배), gaussian noise 추가
- 11073명 분의 오디오 데이터를 사용.
- SpecAugment
- speech masking (mel-frequency, time masking)
- 적용 결과
- 학습성능 개선 효과가 없었음.
- 639명 분의 오디오 데이터를 학습에 사용해 personal characteristic diversity가 상대적으로 적음.
- 학습 데이터가 더 다양하면 성능 개선이 클 것으로 사료됨.
- 학습이 진행됨에 따라
- Training Focal loss는 0에 가까워짐
- Macro F1 score는 1에 가까워짐
- 45 epoch 이후로
- validation Focal loss는 0.57 에서 수렴함
- F1 score는 0.74 에서 수렴함
- Overfitting 방지를 위해
- early stopping 방법 사용.
- 추론은 47 epoch weight 사용
47 epoch | Training | Vaildation |
---|---|---|
CEloss | 0.0694 | 0.5732 |
F1 score | 0.9478 | 0.7346 |
-
1 person = 1 batch = 16 token
- 추론 과정에서는 환자 단위로 질병 예측
- 각 token 별 maximum logit 값을 기준으로 가장 많이 voting된 클래스를 해당 환자의 질병 예측 결과로 함.
- token 길이가 64보다 길 경우, token의 시작지점을 시드 기반 무작위 추출.
-
Label masking (sex, age)
- 최종 테스트 결과로 Micro-F1 score = 0.5759의 정확도를 보임.
- 경량 CNN모델인 Mini-ResNet을 써도, 아래와 같이 제안한 방법들을 통해 최고 성능을 낼 수 있었음.
- 토큰 구간별 데이터 증강 (tokenization)
- 메타데이터 기반 Class 세부 분화
- Focal Loss 사용
- Label masking
- 학습 데이터가 더 많으면, 사전 학습된 복잡도 큰 모델을 사용하여 더 높은 정확도와 개선된 일반화 성능을 보일 것으로 사료됨.
-
모델링 - 이론적 배경
- Resnet34 기반 voice pathology detection model
- Mohammed MA, Abdulkareem KH, Mostafa SA, Khanapi Abd Ghani M, Maashi MS, Garcia-Zapirain B, Oleagordia I, Alhakami H, AL-Dhief FT. Voice Pathology Detection and Classification Using Convolutional Neural Network Model. Applied Sciences. 2020; 10(11):3723. https://doi.org/10.3390/app10113723
- Alexnet기반 speech emotion recongition model
- Zhang H, Gou R, Shang J, Shen F, Wu Y, Dai G. Pre-trained Deep Convolution Neural Network Model With Attention for Speech Emotion Recognition. Front Physiol. 2021;12:643202. Published 2021 Mar 2. doi:10.3389/fphys.2021.643202
- Resnet34 기반 voice pathology detection model
-
모델링 - 모델구조
- mini-resnet 모델 코드 (일부 사용)
-
학습 방법 - 학습 전략
- Focal Loss
- TY Lin et al. Focal Loss for Dense Object Detection. Proceedings of the IEEE International Conference on Computer Vision (ICCV), 2017, pp.2980-2988; https://arxiv.org/pdf/1708.02002.pdf
- Multi-Class Supervised-Learning
- SJ Lee, NI Cho. A Study on the Performance Improvement of X-ray Foreign Matter Classification Neural Networks Using Multi-scale CAM. Proceedings of the Korean Society of Broadcast Engineers Conference. 2021; https://www.koreascience.or.kr/article/CFKO202130759684597.page
- Focal Loss
-
학습 방법 - 하이퍼파라미터 튜닝
- Plateau 그림 출처
- Information Bottleneck 그림 출처
-
학습 방법 - 시도한 방법
- augmentation method review
- ei, Shengyun & Zou, Shun & Liao, Feifan & Lang, Weimin. (2020). A Comparison on Data Augmentation Methods Based on Deep Learning for Audio Classification. Journal of Physics: Conference Series. 1453. 012085. 10.1088/1742-6596/1453/1/012085.
- spec-augment
- Park, D. S., Chan, W., Zhang, Y., Chiu, C. C., Zoph, B., Cubuk, E. D., & Le, Q. V. (2019) Specaugment: A simple data augmentation method for automatic speech recognition.arXiv preprint arXiv:1904.08779.
- augmentation method review