neural-network - reconocimiento - redes neuronales convolucionales python
Red neuronal convolucional(CNN) para audio (2)
Hay muchas técnicas para extraer vectores de características de datos de audio para entrenar clasificadores. El que se usa más comúnmente se llama MFCC (Cepstrum de frecuencia de mel), que se puede considerar como un espectrograma "mejorado", que retiene información más relevante para discriminar entre clases. Otra técnica comúnmente utilizada es la PLP (Perceptual Linear Predictive), que también da buenos resultados. Estos son muchos otros menos conocidos.
Más recientemente, las redes profundas se han utilizado para extraer vectores de características por sí mismos, por lo tanto, de manera más similar a la forma en que lo hacemos en el reconocimiento de imágenes. Esta es un área activa de investigación. No hace mucho, también utilizamos extractores de características para entrenar clasificadores para imágenes (SIFT, HOG, etc.), pero fueron reemplazados por técnicas de aprendizaje profundo, que tienen imágenes en bruto como entradas y extraen vectores de características por sí mismos (de hecho, es lo que es el aprendizaje profundo). realmente todo sobre).
También es muy importante notar que los datos de audio son secuenciales. Después de entrenar a un clasificador, debe entrenar un modelo secuencial como HMM o CRF, que elige las secuencias más probables de unidades de habla, utilizando como entrada las probabilidades dadas por su clasificador.
Un buen punto de partida para aprender a reconocer el habla es Jursky and Martins: Speech and Language Processing . Explica muy bien todos estos conceptos.
[ EDITAR : añadiendo información potencialmente útil]
Hay muchos kits de herramientas de reconocimiento de voz con módulos para extraer vectores de características MFCC de archivos de audio, pero usarlos para este propósito no siempre es sencillo. Actualmente estoy usando CMU Sphinx4 . Tiene una clase llamada FeatureFileDumper, que se puede usar de forma independiente para generar vectores MFCC a partir de archivos de audio.
He estado siguiendo los tutoriales en DeepLearning.net para aprender a implementar una red neuronal convolucional que extrae características de las imágenes. Los tutoriales están bien explicados, son fáciles de entender y seguir.
Quiero extender la misma CNN para extraer características multimodales de videos (imágenes + audio) al mismo tiempo.
Entiendo que la entrada de video no es más que una secuencia de imágenes (intensidades de píxeles) mostradas en un período de tiempo (por ejemplo, 30 FPS) asociado con el audio. Sin embargo, realmente no entiendo qué es el audio, cómo funciona o cómo se descompone para alimentar la red.
He leído un par de artículos sobre el tema (extracción / representación de funciones multimodales), pero ninguno ha explicado cómo se introduce el audio en la red.
Además, entiendo por mis estudios que la representación multimodalidad es la forma en que nuestros cerebros realmente funcionan, ya que no filtramos deliberadamente nuestros sentidos para lograr la comprensión. Todo sucede simultáneamente sin que nosotros lo sepamos a través de (representación conjunta). Un ejemplo simple sería, si escuchamos el rugido de un león, instantáneamente componemos una imagen mental de un león, sentimos peligro y viceversa. Múltiples patrones neuronales se activan en nuestro cerebro para lograr una comprensión completa de cómo se ve, suena, se siente, huele, etc.
Lo anterior es mi objetivo final, pero por el momento estoy solucionando mi problema por simplicidad.
Realmente apreciaría si alguien pudiera aclarar cómo se disecciona el audio y luego representarlo en una red neuronal convolucional. También agradecería sus ideas con respecto a la sincronización multimodal, las representaciones conjuntas y cuál es la forma correcta de capacitar a una CNN con datos multimodales.
EDITAR: He descubierto que el audio se puede representar como espectrogramas. Es un formato común para el audio y se representa como un gráfico con dos dimensiones geométricas donde la línea horizontal representa el tiempo y la vertical representa la frecuencia.
¿Es posible utilizar la misma técnica con imágenes en estos espectrogramas? En otras palabras, ¿puedo simplemente usar estos espectrogramas como imágenes de entrada para mi red neuronal convolucional?
Usamos redes convolucionales profundas en espectrogramas para una tarea de identificación de lenguaje hablado. Tuvimos aproximadamente un 95% de precisión en un conjunto de datos proporcionado en este concurso de TopCoder . Los detalles están here .
Las redes convolucionales simples no capturan las características temporales, por lo que, por ejemplo, en este trabajo, la salida de la red convolucional se alimentó a una red neuronal con retardo de tiempo. Pero nuestros experimentos muestran que incluso sin elementos adicionales, las redes convolucionales pueden funcionar bien al menos en algunas tareas cuando las entradas tienen tamaños similares.