[PYTHON] Spracherkennung: Genreklassifizierung Part2-Musikgenreklassifizierung CNN

Ziel

Dies ist eine Fortsetzung der Klassifizierung von Musikgenres mit dem Microsoft Cognitive Toolkit (CNTK).

In Teil 2 wird die Klassifizierung des Musikgenres unter Verwendung des in Teil 1 erstellten logarithmischen Mel-Spektrogramms durchgeführt. Es wird davon ausgegangen, dass NVIDIA GPU CUDA installiert ist.

Einführung

In Spracherkennung: Genreklassifizierung Teil 1 - GTZAN-Genresammlungen haben wir Trainingsdaten und Verifizierungsdaten vorbereitet.

In Teil 2 werden wir Musikgenres mithilfe eines Convolutional Neural Network (CNN) klassifizieren.

Faltungs-Neuronales Netz bei der Spracherkennung

Da es sich bei Audiodaten um eindimensionale Wellenformdaten handelt, fällt zunächst ein eindimensionales neuronales Faltungsnetzwerk ein. Dieses Mal verwenden wir jedoch ein zweidimensionales neuronales Faltungsnetzwerk als Graustufenbild mit der Zeit auf der horizontalen Achse und der Frequenz auf der vertikalen Achse. [1]

Die Struktur des Faltungs-Neuronalen Netzwerks wurde wie folgt vereinfacht. [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

Einstellungen im Training

Für den Anfangswert jedes Parameters verwendeten wir die Normalverteilung von He [[3]](# Referenz) für die Faltungsschicht und die gleichmäßige Verteilung von Glorot [[4]](# Referenz) für die vollständig verbundene Schicht.

Die Verlustfunktion verwendete den Kreuzentropiefehler.

Wir haben Stochastic Gradient Decent (SGD) mit Momentum als Optimierungsalgorithmus übernommen. Das Momentum wurde auf 0,9 festgelegt und der L2-Regularisierungswert wurde auf 0,0005 eingestellt.

Die zyklische Lernrate (CLR) [5] wird als Lernrate verwendet, die maximale Lernrate beträgt 1e-3, die Basislernrate beträgt 1e-5, die Schrittgröße beträgt das 10-fache der Anzahl der Epochen. Die Richtlinie wurde auf triangular2 festgelegt.

Als Maßnahme gegen Überlernen wurde Dropout [6] bei 0,5 zwischen den vollständig verbundenen Schichten angewendet.

Das Modelltraining führte 25 Epochen mit einem Mini-Batch-Training der Mini-Batch-Größe 32 durch.

Implementierung

Ausführungsumgebung

Hardware-

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

Software

・ Windows 10 Pro 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

Programm zum Ausführen

Das Schulungsprogramm ist auf [GitHub] verfügbar (https://github.com/sho-watari/SpeechRecognition/tree/master/MGCC).

mgcc_training.py


Ergebnis

Training loss and error Die folgende Abbildung zeigt die Verlustfunktion und die Protokolle der falschen Erkennungsrate während des Trainings. Das Diagramm links zeigt die Verlustfunktion, das Diagramm rechts zeigt die Falscherkennungsrate, die horizontale Achse zeigt die Anzahl der Epochen und die vertikale Achse zeigt den Wert der Verlustfunktion bzw. die Falscherkennungsrate.

gtzan_logging.png

Validation accuracy and confusion matrix Wenn die Leistung unter Verwendung der Testdaten bewertet wurde, die bei der Erstellung der Daten in Teil 1 getrennt wurden, wurden die folgenden Ergebnisse erhalten.

Validation Accuracy 69.00%

Die folgende Abbildung zeigt die gemischte Matrix der Verifizierungsdaten. Die Zeilenrichtung ist die richtige Antwort und die Spaltenrichtung ist die Vorhersage.

confusion_matrix.png

Referenz

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

Spracherkennung: Genreklassifizierung Part2-Musikgenreklassifizierung CNN
Spracherkennung: Genreklassifizierung Teil1 - GTZAN-Genresammlungen
Spracherkennung: Phonemvorhersage Teil 2 - Connectionist Temporal Classification RNN
Spracherkennung mit Python
Grundlagen der CNN 1-Bilderkennung
Spracherkennung durch Python MFCC
CNN (1) zur Bildklassifizierung (für Anfänger)
Anwendung der CNN2-Bilderkennung