Wolfram Language

Ein Netz zur Erkennung von Schallereignissen trainieren

In einigen Fällen möchten Sie ein Netzwerk trainieren, um Schallereignisse in einer Aufzeichnung zu lokalisieren, aber Sie haben nur Zugriff auf "spärlich beschriftete" Daten, bei denen die Beschriftungen nur angeben, ob ein bestimmtes Ereignis in einer Aufzeichnung vorhanden war, aber nicht wo. Trotz der Einschränkung der Daten ist es möglich, gute Ergebnisse bei der Lokalisierung von Schallereignissen durch Training mit schwach beschrifteten Daten zu erzielen.

Beziehen Sie den Audio Cats and Dogs-Datensatz aus dem Wolfram Data Repository.

Der Datensatz besteht aus kommentierten Aufzeichnungen von Katzen und Hunden.

Die Dauer der Aufnahmen variiert zwischen einer und 18 Sekunden.

Sie können den Datensatz in ein Format umwandeln, das für das Training eines neuronalen Netzes geeignet ist, und ihn in ein Trainings- und ein Testset aufteilen.

Überprüfen Sie die kumulierte Dauer der Trainingsdaten.

Und der Testdaten.

Mit dem Encoder "AudioMelSpectrogram" wird das Audiosignal in das Netzwerk eingespeist. Da die Datenmenge relativ gering ist, können Sie Datenerweiterungen durchführen, um das Training effektiver zu gestalten.

Das Netz selbst basiert auf einem Stapel von rekurrenten Schichten (GatedRecurrentLayer) und einer AggregationLayer-Schicht, um das Ergebnis in der Zeitdimension zu bündeln. Dadurch kann das Netz anstelle einer Sequenz ein einzelnes Klassifizierungsergebnis ausgeben.

Beginnen Sie das Training.

Extrahieren Sie das trainierte Netz und ersetzen Sie den Encoder durch einen Encoder, der die Trainingsdaten nicht vergrößert.

Erstellen Sie einen Bericht über seine Leistungmit den Testdaten.

Wenn Sie die AggregationLayer-Schicht entfernen und die SoftmaxLayer-Schichtwieder an das gekürzte Netz anhängen, erhalten Sie ein Netz, das eine Folge von Klassenwahrscheinlichkeiten anstelle eines einzelnen Klassifizierungsergebnisses zurückgibt.

Definieren Sie eine Funktion, die die Ausgabe des Netzes übernimmt und eine Zuordnung von TimeSeries zu den Wahrscheinlichkeiten für die möglichen Beschriftungen zurückgibt.

Sie können nun dieses zeitaufgelöste Netz testen. Konstruieren Sie ein Signal, indem Sie Katzen- und Hundehörproben aus dem Testdatensatz zusammenfügen.

Den kompletten Wolfram Language-Input zeigen

Plotten Sie die Zeitreihe der vom Netz berechneten Wahrscheinlichkeiten.

Plotten Sie die Nettoergebnisse über das Testsignal.

Definieren Sie eine Funktion zum Berechnen der Zeitintervalle, in denen die Wahrscheinlichkeit einer Klasse höher als ein Schwellenwert ist, und eine weitere zum Berechnen von Rechtecken, die diesen Intervallen entsprechen.

Berechnen Sie die Intervalle.

Plotten Sie die Intervalle über die Wellenform der Aufzeichnung.

Den kompletten Wolfram Language-Input zeigen

Verwandte Beispiele

en es fr ja ko pt-br zh