web-dev-qa-db-fra.com

Réseau neuronal convolutif (CNN) pour l'audio

J'ai suivi les tutoriels sur DeepLearning.net pour apprendre à implémenter un réseau de neurones convolutif qui extrait les fonctionnalités des images. Le tutoriel est bien expliqué, facile à comprendre et à suivre.

Je veux étendre le même CNN pour extraire des fonctionnalités multimodales de vidéos (images + audio) en même temps.

Je comprends que l'entrée vidéo n'est rien d'autre qu'une séquence d'images (intensités de pixels) affichées dans une période de temps (ex. 30 FPS) associée à l'audio. Cependant, je ne comprends pas vraiment ce qu'est l'audio, comment il fonctionne ou comment il est décomposé pour être introduit dans le réseau.

J'ai lu quelques articles sur le sujet (extraction/représentation de caractéristiques multimodales), mais aucun n'a expliqué comment le son est entré dans le réseau.

De plus, je comprends de mes études que la représentation multimodale est la façon dont notre cerveau fonctionne vraiment car nous ne filtrons pas délibérément nos sens pour parvenir à la compréhension. Tout se passe simultanément sans que nous le sachions (représentation conjointe). Un exemple simple serait, si nous entendons un lion rugir, nous composons instantanément une image mentale d'un lion, ressentons le danger et vice-versa. Plusieurs modèles neuronaux sont tirés dans notre cerveau pour parvenir à une compréhension complète de ce à quoi ressemble un lion, sonne, se sent, sent, etc.

Ce qui précède est mon objectif ultime, mais pour l'instant je décompose mon problème par souci de simplicité.

J'apprécierais vraiment que quelqu'un puisse faire la lumière sur la façon dont l'audio est disséqué et ensuite représenté dans un réseau neuronal convolutionnel. J'apprécierais également vos réflexions en ce qui concerne la synchronisation multimodale, les représentations conjointes et quelle est la bonne façon de former un CNN avec des données multimodales.

EDIT: J'ai découvert que l'audio peut être représenté sous forme de spectrogrammes. Il s'agit d'un format courant pour l'audio et est représenté sous forme de graphique à deux dimensions géométriques où la ligne horizontale représente le temps et la verticale représente la fréquence.

enter image description here

Est-il possible d'utiliser la même technique avec des images sur ces spectrogrammes? En d'autres termes, puis-je simplement utiliser ces spectrogrammes comme images d'entrée pour mon réseau de neurones convolutionnels?

30
moeabdol

Nous avons utilisé des réseaux convolutionnels profonds sur des spectrogrammes pour une tâche d'identification du langage parlé. Nous avions une précision d'environ 95% sur un ensemble de données fourni dans ce concours TopCoder . Les détails sont ici .

Les réseaux à convolution simples ne capturent pas les caractéristiques temporelles, donc par exemple dans ce travail la sortie du réseau à convolution a été envoyée à un réseau neuronal à retardement. Mais nos expériences montrent que même sans éléments supplémentaires, les réseaux convolutionnels peuvent bien fonctionner au moins sur certaines tâches lorsque les entrées ont des tailles similaires.

17
Hrant Khachatrian

Il existe de nombreuses techniques pour extraire des vecteurs de caractéristiques à partir de données audio afin de former des classificateurs. Le plus couramment utilisé est appelé MFCC (Mel-Frequency cepstrum), que vous pouvez considérer comme un spectrogramme "amélioré", conservant des informations plus pertinentes pour faire la distinction entre les classes. Une autre technique couramment utilisée est le PLP (Perceptual Linear Predictive), qui donne également de bons résultats. Ce sont encore beaucoup d'autres moins connus.

Plus récemment, des réseaux profonds ont été utilisés pour extraire des vecteurs de caractéristiques par eux-mêmes, donc de manière plus similaire à la façon dont nous le faisons dans la reconnaissance d'images. Il s'agit d'un domaine de recherche actif. Il y a peu de temps, nous avons également utilisé des extracteurs de fonctionnalités pour former des classificateurs d'images (SIFT, HOG, etc.), mais ceux-ci ont été remplacés par des techniques d'apprentissage en profondeur, qui ont des images brutes en entrée et extraient des vecteurs de fonctionnalités par eux-mêmes (en effet, c'est ce qu'est l'apprentissage en profondeur vraiment tout).

Il est également très important de noter que les données audio sont séquentielles. Après avoir formé un classificateur, vous devez former un modèle séquentiel en tant que HMM ou CRF, qui choisit les séquences les plus probables d'unités vocales, en utilisant comme entrée les probabilités données par votre classificateur.

Un bon point de départ pour apprendre la reconnaissance vocale est Jursky et Martins: Speech and Language Processing . Il explique très bien tous ces concepts.

[ [~ # ~] modifier [~ # ~] : ajout d'informations potentiellement utiles]

Il existe de nombreuses boîtes à outils de reconnaissance vocale avec des modules pour extraire des vecteurs de fonctionnalité MFCC à partir de fichiers audio, mais l'utilisation de cette fonction n'est pas toujours simple. J'utilise actuellement CMU Sphinx4 . Il possède une classe nommée FeatureFileDumper, qui peut être utilisée de manière autonome pour générer des vecteurs MFCC à partir de fichiers audio.

9
Saul Berardo