Wolfram Language

Entraînez un réseau de détection d'événements sonores

Dans certains cas, vous voulez entraîner un réseau à localiser des événements sonores dans un enregistrement, mais vous n'avez accès qu'à des données "faiblement étiquetées", dans lesquelles les étiquettes indiquent seulement si un certain événement était présent dans un enregistrement, mais pas où il se situait. Malgré la limitation des données, il est possible d'obtenir de bons résultats dans la localisation d'événements sonores en s'entraînant sur des données faiblement étiquetées.

Récupérez le jeu de données Audio Cats and Dogs à partir de Wolfram Data Repository.

Le jeu de données comprend des enregistrements annotés de chats et de chiens.

La durée des enregistrements varie entre 1 et 18 secondes.

Vous pouvez manipuler le jeu de données dans un format qui sera convivial pour entraîner un réseau neuronal et le diviser en un sous-ensemble d'entraînement et de test.

Inspectez la durée cumulative des données d'entraînement.

Et les données de test.

L'encodeur "AudioMelSpectrogram" est utilisé pour envoyer le signal audio dans le réseau. Comme la quantité de données est relativement faible, vous pouvez effectuer des augmentations de données pour rendre l'entraînement plus efficace.

Le réseau lui-même est basé sur un empilement de couches récurrentes (GatedRecurrentLayer) et une couche d'agrégation (AggregationLayer) pour regrouper le résultat dans la dimension temporelle. Ceci permet au réseau d'afficher un seul résultat de classification au lieu d'une séquence.

Commencez l'entraînement.

Extrayez le réseau entraîné et remplacez l'encodeur par un autre sans augmentation.

Produisez un rapport de ses performances sur la série de tests.

En supprimant la couche AggregationLayer et en rattachant la couche SoftmaxLayer au réseau découpé, vous obtenez un réseau qui renvoie une séquence de probabilités de classe au lieu d'un seul résultat de classification.

Définissez une fonction qui reçoit la sortie du réseau et renvoie une association de TimeSeries avec les probabilités pour les étiquettes possibles.

Vous pouvez maintenant tester ce réseau à résolution temporelle. Construisez un signal en joignant les échantillons de chiens et de chats à partir du jeu de données du test.

Montrer l'entrée complète de Wolfram Language

Tracez les séries temporelles des probabilités calculées par le réseau.

Tracez les résultats du réseau sur le signal de test.

Définissez une fonction pour calculer les intervalles de temps dans lesquels la probabilité d'une classe est supérieure à un seuil et définissez une autre fonction pour calculer les rectangles correspondants à ces intervalles.

Calculez les intervalles.

Représentez graphiquement les intervalles sous la forme d'onde d'enregistrement.

Montrer l'entrée complète de Wolfram Language

Exemples connexes

de en es ja ko pt-br zh