[PYTHON] Reconnaissance vocale: Classification des genres Part2-Classification des genres musicaux CNN

Cible

Il s'agit d'une continuation de la classification des genres musicaux à l'aide du Microsoft Cognitive Toolkit (CNTK).

Dans la partie 2, la classification des genres musicaux sera effectuée en utilisant l'image logarithmique du spectrogramme mel préparée dans la partie 1. On suppose que NVIDIA GPU CUDA est installé.

introduction

Dans Reconnaissance vocale: Classification de genre Part1 --GTZAN Genre Collections, nous avons préparé des données d'entraînement et des données de vérification.

Dans la partie 2, nous classerons les genres musicaux à l'aide d'un réseau neuronal convolutif (CNN).

Réseau neuronal convolutif en reconnaissance vocale

Étant donné que les données audio sont des données de forme d'onde unidimensionnelle, un réseau neuronal convolutif unidimensionnel vient à l'esprit en premier, mais cette fois, nous utiliserons un réseau neuronal convolutif bidimensionnel comme une image en niveaux de gris avec le temps sur l'axe horizontal et la fréquence sur l'axe vertical. [1]

La structure du réseau neuronal convolutif a été simplifiée comme suit. [2]

Layer Filters Size/Stride Input Output
Convolution2D 64 3x3/1 1x128x128 64x128x128
MaxPooling2D 3x3/2 64x128x128 64x64x64
Convolution2D 128 3x3/1 64x64x64 128x64x64
MaxPooling2D 3x3/2 128x64x64 128x32x32
Convolution2D 256 3x3/1 128x32x32 256x32x32
Dense 512 256x32x32 512
Dense 512 512 512
Dense 10 512 10
Softmax 10 10

Paramètres en formation

Pour la valeur initiale de chaque paramètre, nous avons utilisé la distribution normale de He [[3]](# reference) pour la couche convolutive et la distribution uniforme de Glorot [[4]](# reference) pour la couche entièrement connectée.

La fonction de perte a utilisé l'erreur d'entropie croisée.

Nous avons adopté Stochastic Gradient Decent (SGD) avec Momentum comme algorithme d'optimisation. L'élan a été fixé à 0,9 et la valeur de régularisation L2 a été fixée à 0,0005.

Le taux d'apprentissage cyclique (CLR) [5] est adopté comme taux d'apprentissage, le taux d'apprentissage maximal est de 1e-3, le taux d'apprentissage de base est de 1e-5, la taille du pas est 10 fois le nombre d'époques, La politique a été définie sur triangulaire2.

Comme mesure contre le surapprentissage, Dropout [6] a été appliqué à 0,5 entre les couches entièrement connectées.

La formation du modèle a effectué 25 Epoch avec une formation en mini-lot de taille mini-lot 32.

la mise en oeuvre

Environnement d'exécution

Matériel

・ Processeur Intel (R) Core (TM) i7-6700K 4,00 GHz ・ GPU NVIDIA GeForce GTX 1060 6 Go

Logiciel

・ Windows 10 Professionnel 1909 ・ CUDA 10.0 ・ CuDNN 7.6 ・ Python 3.6.6 ・ Cntk-gpu 2.7 ・ Cntkx 0.1.53 ・ Matplotlib 3.3.1 ・ Numpy 1.19.2 ・ Pandas 1.1.2 ・ Scikit-learn 0.23.2

Programme à exécuter

Le programme de formation est disponible sur GitHub.

mgcc_training.py


résultat

Training loss and error La figure ci-dessous est une visualisation de la fonction de perte et des journaux de taux de fausse reconnaissance pendant l'entraînement. Le graphique de gauche montre la fonction de perte, le graphique de droite montre le taux de fausse reconnaissance, l'axe horizontal montre le nombre d'époques et l'axe vertical montre la valeur et le taux de fausse reconnaissance de la fonction de perte, respectivement.

gtzan_logging.png

Validation accuracy and confusion matrix Lorsque les performances ont été évaluées à l'aide des données de test qui ont été séparées lors de la préparation des données de la partie 1, les résultats suivants ont été obtenus.

Validation Accuracy 69.00%

La figure ci-dessous est une visualisation de la matrice mixte des données de vérification. La direction de ligne est la bonne réponse et la direction de colonne est la prédiction.

confusion_matrix.png

référence

Speech Recognition : Genre Classification Part1 - GTZAN Genre Collections

  1. Tom LH. Li, Antoni B. Chan, and Andy HW. Chun. "Automatic Musical Pattern Feature Extraction Using Convolutional Neural Network", Genre 10 (2010).
  2. Weibin Zhang, Wenkang Lei, Xiangmin Xu, and Xiaofeng Xing. "Improved Music Genre Classification with Convolutional Neural Networks", Interspeech. 2016, p. 3304-3308.
  3. Kaiming He, Xiangyu Zhang, Shaoqing Ren, and Jian Sun. "Delving Deep into Rectifiers: Surpassing Human-Level Performance on ImageNet Classification", The IEEE International Conference on Computer Vision (ICCV). 2015, p. 1026-1034.
  4. Xaiver Glorot and Yoshua Bengio. "Understanding the difficulty of training deep feedforward neural networks", Proceedings of the Thirteenth International Conference on Artificial Intelligence and Statistics. 2010, p. 249-256.
  5. Leslie N. Smith. "Cyclical Learning Rates for Training Neural Networks", 2017 IEEE Winter Conference on Applications of Computer Vision. 2017, p. 464-472.
  6. Nitish Srivastava, Geoffrey Hinton, Alex Krizhevshky, Ilya Sutskever, and Ruslan Salakhutdinov. "Dropout: A Simple Way to Prevent Neural Networks from Overfitting", The Journal of Machine Learning Research 15.1 (2014) p. 1929-1958.

Recommended Posts

Reconnaissance vocale: Classification des genres Part2-Classification des genres musicaux CNN
Reconnaissance vocale: Classification des genres - Partie 1 - Collections de genres du GTZAN
Reconnaissance vocale: Prédiction phonémique Partie 2 - Classification temporelle connectionniste RNN
Reconnaissance vocale avec Python
Principes de base de la reconnaissance d'image CNN 1
Reconnaissance vocale par Python MFCC
CNN (1) pour la classification des images (pour les débutants)
Application de la reconnaissance d'image CNN2