Reconocimiento de aves amazónicas con técnicas de aprendizaje profundo.
Enviado por Albert • 10 de Marzo de 2018 • 2.228 Palabras (9 Páginas) • 444 Visitas
...
Por último se realiza el diezmo de la frecuencia de muestreo, dividiendo esta entre 4, esto nos da señales con una frecuencia máxima de 5512,5 Hz.
Eliminación de silencios
Para eliminar los silencios de las señales, en primer lugar se calcula el RMS de cada señal, después se utiliza el 50% de este valor como parámetro, valores menores a este se consideran silencios y por lo cual serán eliminados de las señales de audio.
Para detectar zonas de silencios, se utilizó una ventana de 10ms, que muestrea la señal y calcula el RMS de la muestra, si el valor RMS de esta venta no supera el parámetro de silencio establecido, se suprime.
Segmentar la señal
Cada señal de audio tiene partes que contienen sonidos producidos por aves y otras partes contienen ruido y sonidos ajenos a aves, por lo cual, una señal de audio está compuesta por intervalos con útiles e intervalos sin información, por lo que para segmentar las señales se toman, las partes relevantes, convirtiéndolas en señales individuales de audio.
A continuación se muestra graficas de estos resultados, comparando una señal original, convertida en nuevas señales.
[pic 7]
Señal original
[pic 8]
[pic 9]
Señal original
[pic 10]
Señal segmentada (señal con 6 segmentos)
Como se ve en las gráficas, se extraen las partes de la señal que tienen información relevante y estas se convierten en nuevas señales individuales.
Extracción de características
La extracción de las señales, se realiza para facilitar y hacer más eficiente (computacionalmente) el proceso de aprendizaje para las redes neuronales.
En la etapa anterior, se segmentó las señales de audio, estas señales conservan la etiqueta (especie a la cual corresponde la grabación) de la grabación original, es decir cada pequeña señal, contiene la misma etiqueta que tenía la grabación original.
Para realizar la extracción de características se utiliza el algoritmo de “Coeficientes cepstrales de Mel” o MFCC por sus siglas en ingles.
El algoritmo MFCC, divide las grabaciones en ventanas de tiempo, cada ventana contiene el espectro de las frecuencias más importantes, estas ventanas tienen un acho de 11,9 ms y un tiempo de muestreo cada 3,6ms.
Este proceso arroja una matriz de 16 x n elementos (para cada grabación) donde n es proporcional a la duración de cada grabación y 16 es el número de características extraídas. Después se calcula la primera y segunda derivada de la matriz (MFCC-delta-1 y MFCC-delta-2), para formar una matriz de 48 x n-2.
El último paso es calcular la media y varianza de las matrices resultantes. Para ello se toma la matriz 48 x n-2 y se calcula su media, resultando una matriz 48 x 1.
Para la varianza se toma la matriz 48 x n-2 y el resultado es una matriz 48 x 1.
Por último se divide la matriz original de 48 x n-2 en tres matrices iguales, resultando tres matrices 48 x (n-2/3), y se calcula la media de cada matriz, resultando tres matrices de 48 x 1.
Este proceso arroja 5 matrices, todas de dimensión 48 x 1, las cuales se unen para formar una matriz de dimensión 240 x 1.
[pic 11]
Redes neuronales
Después del procesado y extracción de características de cada una de las señales, se procede al diseño de la red neuronal, tipo deep learning, para el reconocimiento especies.
La primera capa de la red neuronal tiene 240 neuronas, que coincide con el tamaño de las matrices de características, después la red neuronal, tienen dos capas ocultas con 350 neuronas, cada una, y por ultimo tiene una capa de 501 neuronas, que corresponde al número de especies. La codificación que se utilizó para etiquetar a las especies es de llamada “one hote position”, esta codificación consiste en una matriz columna, que contiene un solo uno y en las demás posiciones contiene ceros, el uno de esta matriz se sitúa en la posición que representa la etiqueta.
Todo el proceso de filtrado, segmentación y extracción de características se realizó con Matlab.
Tensorflow
Para diseñar y entrenar redes neuronales del tipo “deep learning” se utilizó tensorflow, este es un programa libre, desarrollado por google, se escogió este programa para el entrenamiento de redes neuronales del tipo deep learning.
Para el proceso entrenamiento se dividió la base de datos de la siguiente manara.
[pic 12]
En primer lugar se divide el número total de segmentos en dos grupos, entrenamiento y prueba, y posteriormente el grupo de prueba se divide en dos grupos, entrenamiento y validación, la validación sirve para poder ver el porcentaje de aprendizaje de la red neuronal en proceso, ahorrando tiempo si es que la red no aprende a generalizar.
Se recomienda que el segmento de entrenamiento sea un 70 % del total y el segmento de prueba sea el 30 % restante, de la misma forma se procede con la división en el grupo de entrenamiento y validación.
Mezcla
Otro factor importante en la etapa de entrenamiento, es las secuencias de datos, si los segmentos no son mezclados (en orden), cuando se entrena la red neuronal, se tiene overfeeting, por lo que, después de la división de los grupos de entrenamiento, validación y prueba, se realizó un mezclado aleatorio, en el orden de las matrices, cada matriz conserva su respectiva etiqueta.
Inicialización de las neuronas
Las neuronas de una red neuronal se inicializan con un valor ligeramente positivo, es porque al multiplicar las neuronas con valores bajos, estas caen a valores cero para siempre, (por efecto multiplicación con números muy bajos en computadoras), esto se conoce como neuronas muertas.
Función lineal
Las redes neuronales,
...