Para el desarrollo del presente proyecto, se eligió un conjunto de
datos que contiene imágenes de espectrogramas previamente procesados,
disponibles en el sitio web Kaggle. Los audios utilizados para generar
los espectrogramas, fueron obtenidos del sitio web
Xeno-Canto, en el cual se encuentran registros de
sonidos de toda clase de fauna alrededor del mundo. Los audios con los
cantos de las aves fueron convertidos en espectrogramas utilizando una
transformada de Fourier de tamaño 2048 y luego se les aplicó una
transformación logarítmica.
Los espectrogramas consisten en una representación visual que muestra
cómo se distribuyen las frecuencias en una señal de sonido. Esta
representación gráfica puede revelar detalles específicos, como
frecuencias elevadas o cambios en la amplitud, que podrían no ser
perceptibles incluso si se encuentran dentro del rango auditivo
humano.
La muestra inicial de datos para este proyecto son espectrogramas de
152 especies de aves de la población total de especies de aves presentes
alrededor del mundo, con audios tomados en distintas fechas y por
diferentes autores.
Durante la realización del análisis exploratorio, y por limitaciones
para aplicar técnicas de balanceo de datos, se seleccionan como muestra
las 6 especies con mayor cantidad de datos.
Diccionario de variables
Los datos utilizados en el proyecto son imágenes de espectrogramas de
152 especies de aves presentes alrededor del mundo. Como se verá más
adelante, la cantidad de espectrogramas para cada especie no es igual,
por lo que estamos ante un conjunto de datos desbalanceado.
Variable dependiente: Etiquetas con la
abreviatura del nombre común de las aves.
Variables explicativas: Vector de
características extraídas de imágenes de espectrogramas del espectro de
frecuencias de la emisión sonora del canto de las aves.
Los espectrogramas, se utilizaron para extraer patrones visuales y
características importantes presentes en las imágenes, que permitan
identificar las especies de aves. Estas características son extraídas al
momento de implementar los modelos, y no se tienen de antemano.
Algunas de las características extraídas de los espectrogramas por
los modelos son:
Estadísticas de color: Los estadísticos de
distribución de color son comunes en la recuperación de imágenes, ya que
describen la variación de la intensidad del color en una imagen. En el
caso de los espectrogramas de sonido, estos estadísticos se aplican a
cada imagen monocroma, permitiendo describir cómo varía la intensidad
del sonido en regiones definidas en términos de tiempo y
frecuencia.
Direccionalidad: La direccionalidad de la imagen
es una característica importante para describir la textura de una
imagen. Describe la dirección en la que se concentra o dispersa la
textura de la imagen.
Se tiene tambien metada sobre los audio de las aves, entre la cual se
puede encontrar los siguientes datos:
primary_label: representa el código de la especie
de ave. Será la etiqueta que se utilice para identificar la
especie.
secondary_labels: especies de fondo anotadas por el
autor de la grabación. Una lista vacía no significa que no haya aves de
fondo audibles, solo que no fueron identificadas.
author: el usuario de eBird que provee la
grabación.
rating: Valor flotante entre 0,0 y 5,0 como
indicador de la calificación de calidad en Xeno-canto y el número de
especies de fondo, donde 5,0 es el más alto y 1,0 el más bajo. 0,0
significa que esta grabación aún no tiene calificación de usuario.
type: Detalles sobre el audio y la especie grabada.
Puede tener información sobre el tipo de sonido emitido por la ave,
canto o llamado, también información sexo del ave, o si es un adulto o
juvenil, entre otro tipo de información.
latitude y longitude: coordenadas geográficas del
lugar donde fue grabado el audio.
scentific_name: nombre científico de la ave.
common_name: nombre común del ave en ingles.
time: hora del día en la que fue tomada la
grabación.
Analisis Exploratorio (EDA)
Para la exploración de los datos, se utilizaron los audios originales
con los cuales se generaron los espectogramas, ya que estos nos podrian
ayudar a entender las diferencias entre los cantos de las aves, y como
esto puede ayudar a identificarlas.
La información de la metadata del conjunto de datos, tiene
información sobre el tipo de canto de la especie (llamado, canción,
alerta), las coordenadas en las cuales se realizó la grabación del
audio, quien fue el autor de la grabación, la duración de la grabación,
entre otros datos.
summary(data)
## primary_label secondary_labels type latitude
## Length:14852 Length:14852 Length:14852 Min. :-71.88
## Class :character Class :character Class :character 1st Qu.: 28.26
## Mode :character Mode :character Mode :character Median : 40.87
## Mean : 35.78
## 3rd Qu.: 51.12
## Max. : 78.98
## longitude scientific_name common_name author
## Min. :-176.632 Length:14852 Length:14852 Length:14852
## 1st Qu.: -96.164 Class :character Class :character Class :character
## Median : -6.061 Mode :character Mode :character Mode :character
## Mean : -30.218
## 3rd Qu.: 10.898
## Max. : 179.361
## license rating time url
## Length:14852 Min. :0.000 Length:14852 Length:14852
## Class :character 1st Qu.:3.000 Class :character Class :character
## Mode :character Median :4.000 Mode :character Mode :character
## Mean :3.719
## 3rd Qu.:4.500
## Max. :5.000
## filename
## Length:14852
## Class :character
## Mode :character
##
##
##
Las especies seleccionadas para la clasificación son:
Búho pálido, blanco abajo y anaranjado con manchas grises arriba.
Disco facial en forma de corazón blanco. Caza principalmente roedores en
áreas abiertas por la noche. Duerme en edificios viejos y cajas de nidos
durante el día. Ampliamente distribuido en todos los continentes,
excepto en la Antártica. Por la noche, parece muy blanco en faros. Su
llamado es apropiado para Halloween: un chillido escalofriante.
Actitis hypoleucos (comsan)
Migradora parcial en la península ibérica con individuos invernantes,
en paso e incluso veraneantes procedentes de las poblaciones europeas
del norte y centro. Escasa población reproductora. Aparecen en una
amplia variedad de hábitat acuáticos, pero selecciona para reproducirse
orillas pedregosas de ríos o lagos. Generalmente individuos solitarios,
pero también pueden observarse pequeños grupos. Evita bandos mixtos con
otras especies. Camina con un distintivo y constante movimiento
“arriba-abajo” de la cola, tipo wagtail. Tiene plumaje pardusco en el
dorso, donde destaca el plumaje blanco del hombro que se ve como una
pequeña franja blanca entre el ala plegada y el pecho.
Anas platyrhynchos (mallar3)
El típico pato dentro de su rango, se encuentra en cualquier lugar
donde hay agua, incluyendo parques de ciudades, arroyos en el jardín y
diferentes humedales. Los machos tienen cabeza verde, pecho castaño y
cuerpo gris. Las hembras son marrones moteadas con manchas anaranjadas y
negras en el pico. Las barras blancas enfrente y atrás del parche azul
del ala son más conspicuas comparadas a las de American Black Duck y el
Mottled Duck.
Alauda arvensis (skylar)
Bastante común en campos abiertos, especialmente pastizales en
terrenos escabrosos, páramos, tierras de cultivo, aeropuertos. Como la
mayoría de los aláudidos, normalmente es poco visible en el suelo y
mejor detectada por la voz. Posee un canto prolongado en vuelo,
compuesto de gorjeos y trinos, a menudo tan alto que apenas se ve una
mancha en el cielo, si es que está visible. Si está posada, destaca el
plumaje rayado marrón, cresta tupida distintiva, y anillo ocular ancho,
difuso y pálido. Más corpulenta que un bisbita pero y a diferencia de
ésta no suele menear su parte trasera. En vuelo muestra lados blancos de
la cola, así como un borde posterior blanco y estrecho en las alas.
Cardinalis cardinalis (norcar)
El cardenal norteño es un pájaro cantor de tamaño medio con una
longitud corporal de 21-23 cm. Tiene un distintivo penacho y una máscara
en la cara que es negra en el macho y gris en la hembra. Presenta
dimorfismo sexual en su coloración; el plumaje del macho es rojo
brillante, mientras que el de la hembra es de un tono opaco que mezcla
rojo y café. El cardenal norteño es predominantemente granívoro, pero
también se alimenta de insectos y fruta. El macho tiene un
comportamiento territorial, delimitando su territorio con su canto
Passer domesticus (houspa)
Ampliamente distribuido y abundante en ciudades, vecindarios y
granjas. Evita bosques densos. Las bandadas se agrupan en densos
arbustos, moviéndose y vocalizando entre ellos. Los machos tienen
baberos negros elegantes, nuca rufa brillante, y alas con brillantes
tonos marrones y caqui. Las partes inferiores son gris pálido. Las
hembras son marrón uniforme con una cara linda y ceja más clara. Nativo
de Eurasia; introducido a Norteamérica y no está estrechamente
relacionado con otros gorriones de allí.
Filtramos la data para obtener los registros de las especies que nos
interesan, como también aquellas columnas con información relevante:
sub_data <- data %>%select(-c('author', 'license','url','filename')) %>%filter(primary_label %in% birds)head(sub_data) %>%kable()
Se tienen 3000 registros en total de seis especies de aves:
dim(sub_data)
## [1] 3000 9
Distribución de los datos
Primary_label
Inicialmente se tienen registros de espectrogramas para 152 especies
de aves. La distribución de datos para cada especie se puede observar a
continuación:
# Frecuencia de cada especie de avelibrary(forcats)fig <- data %>%count(primary_label) %>%mutate(primary_label =fct_reorder(primary_label, n, .desc = T)) %>%plot_ly(x=~primary_label, y=~n,marker =list(color ='rgb(118, 215, 196)',line =list(color ='rgb(14, 102, 85)',width =1.5))) %>%add_bars()fig %>%layout(title =list(text="Frecuencia de Especies de aves", y =0.95),xaxis =list(title ='Especies'),yaxis =list(title ='Frecuencia'))
Solo hay 6 especies de aves con 500 registros. Por esta razón, y la
imposibilidad actual de aplicar técnicas de aumetación de datos para los
datos, es que se decide trabajar con estás 6 especies , ya que son las
que tienen mayor cantidad de datos.
De aquí en adelante los análisis se realizarán solo para estás 6
especies.
secondary_label
La etiqueta secundaria es una etiqueta asignada por la persona que
generó la grabación, indicando que el audio podría tener más de una
etiqueta o clasificación, debido a la presencia de otras sonidos de aves
en la grabación, principalmente aves que se encuentran en el trasfondo
de la grabación.
# Determinar si existe una etiqueta secundariasub_data$etiqueta2 <-str_replace_all(sub_data$etiqueta2, "[\\[\\]']", "")sub_data$et2_count <-lengths(strsplit(sub_data$etiqueta2, ','))sub_data %>%group_by(et2_count) %>%summarise(conteo =n()) %>%kable()
et2_count
conteo
0
2814
1
165
2
16
3
3
4
2
La mayoría de audios no registran sonidos de más de una especie de
ave.
rating
La variable de rating permite identificar la calidad que tiene el
audio con referencia al sonido emitido por el ave. En el siguiente
grafico se puede observar, que la mayoría de audios tienen un puntaje de
4, seguido por un puntaje de 5, lo que indica que los audios con los que
se trabajará son adecuados para entrenar el modelo predictivo.
En el siguiente grafico se puede observar como se distribuye el
puntaje por especie de ave. Para todas las ves, la media del puntaje es
4, y todas, a excepción de skylar, tiene mas del 50% de
los datos con un puntaje igual o superior a 4. Para el caso de la
especie skylar, alrededor del 75% de los audios, tienen
una puntuación igual o inferior a 4, por lo que está ave podría ser la
que tenga desventaja en el modelo, al momento de realizar el
entrenamiento, pero esto se verificará al entrenar el modelo y evaluar
los resultados.
library(forcats)fig <- sub_data %>%# mutate(rating = fct_reorder(rating, n, .desc = T)) %>% plot_ly(x=~rating, type ="box", color=~etiqueta) fig %>%layout(title =list(text="Puntaje del audio", y =0.95),xaxis =list(title ='Rating'),yaxis =list(title ='Frecuencia'))
Tiempo
Esta variable representa la hora del día en la que se registró la
grabación. Con base en esta variable, se creará una variable categórica
que indique el momento del día en que se tomo la grabación: madrugada,
mañana, tarde, noche.
library(lubridate)sub_data$hora <-hour(hm(sub_data$tiempo))sub_data <- sub_data %>%mutate(etapaDia =case_when( hora >=0& hora <=6~"Madrugada", hora >6& hora <=12~"Mañana", hora >12& hora <=18~"Tarde", hora >18~"Noche", T ~"No especifica"))
fig <- sub_data %>%group_by(etiqueta, etapaDia) %>%summarise(conteo=n()) %>%plot_ly(x =~etapaDia, y =~conteo, color =~etiqueta) %>%layout(title =list(text="Momento del dia en que se tomo el audio", y =0.95),xaxis =list(title ='Momento del dia'),yaxis =list(title ='Frecuencia'))fig
Se logra apreciar que para el caso de la especie brnnowl, la mayoría
de las grabaciones fueron tomadas en horas de la madrugada, seguido por
la noche, lo que es acorde al hecho a que está especie es nocturna.
Similar ocurre con la especie comsan, que tambien tiene mayor registro
de audio en esos momentos del día, aunque esta especie no es nocturna,
por lo que se esperaría mayor registro de audio en momentos como la
mañana en lugar de la noche. Para las demás especie, el momento del día
en que mayor cantidad de audio se registraron fue en la mañana, seguido
de la madrugada.
Distribución Geográfica (MAPA)
Al tener el registro de latitud y longitud de los audios, se puede
plasmar un mapa que ayude a observar la distribución geográfica de las
especies.
# Mapa de distribución geográfica de las especiesfig <-plot_geo(sub_data, lat =~latitud, lon =~longitud)fig <- fig %>%add_markers(text =~paste(paste("Nombre Común:", Nombre_comun), paste("Nombre Científico:", Nombre_cientifico), sep ="<br />"),color =~etiqueta, symbol =I("circle"), size =I(8), hoverinfo ="text", colors ="viridis" ) %>%layout(showlegend=T,title ='Distribución geográfica de las aves', geo =list(showland= T, landcolor =toRGB("gray95"),showcountries = T, subunitcolor =toRGB("gray85"),countrycolor =toRGB("gray85"),countrywidth =0.5,subunitwidth =0.5))fig
En el mapa se puede observar, que la especie
norcar se encuentra distribuida alrededor de México,
Estados Unidos y Hawaii.
La especie skylar, se encuentra distribuida
principalmente por Europa, con una presencia reducida en algunos países
asiáticos, Australia y en algunos puntos de Estados Unidos
Para el caso de la especie mallar3, se encuentra
distribuida principalmente por Europa, con una presencia reducida en
algunos países asiáticos, como Japón, Nueva Zelanda, Estados Unidos y
Colombia.
La especie houspa tiene presencia en varios
puntos de todo el continente Americano, también en Europa, parte de
Asia, el continente Africano, Australia y Nueva Zelanda.
La especie comsan se puede observar en gran
parte de Europa, algunos puntos de África y Asia.
Finalmente, la especie brnowl, se encuentra
principalmente en Europa, con presencia en algunos puntos del continente
Americano, el continente Africano y en algunos países de Asia.
Type (Tipo de sonido)
Esta variable contiene detalles sobre el audio y y el ave presente en
el. Se puede encontrar información como el tipo de vocalización emitida
por el ave (canto o llamado), el sexo del ave, o en que etapa se
encuentra (adulto o juvenil), entre otra información referente a los
sonidos que se pueden escuchar en el audio.
# limpieza de la variable type# se eliminan algunos símbolos, se coloque todo en minúscula y luego se crea una lista con todos los string en la variable# luego se separan los string para poder obtener los valores único de la columna y poder identificar palabras mas frecuentessub_data$type <-str_replace_all(sub_data$type, "[\\[\\]'\\s]", "") %>%str_to_lower()unique_values <-str_c(sub_data$type, collapse =",") %>%strsplit(',')# unique_values[[1]] %>% unique()head(sub_data) %>%kable()
etiqueta
etiqueta2
type
latitud
longitud
Nombre_cientifico
Nombre_comun
rating
tiempo
et2_count
hora
etapaDia
brnowl
alarmcall
52.3009
6.7620
Tyto alba
Barn Owl
4
21:30
0
21
Noche
brnowl
song
-20.7900
-42.8882
Tyto alba
Barn Owl
4
20:30
0
20
Noche
brnowl
call
18.5206
73.8398
Tyto alba
Barn Owl
4
23:09
0
23
Noche
brnowl
,clicks
-21.5500
-47.7167
Tyto alba
Barn Owl
4
05:30
0
5
Madrugada
brnowl
beggingcall
0.0640
32.4790
Tyto alba
Barn Owl
4
23:30
0
23
Noche
brnowl
beggingcall,call
0.0640
32.4790
Tyto alba
Barn Owl
5
00:30
0
0
Madrugada
Sexo
Del campo type, se extrae el sexo del ave. Se tienen 4 categorias
para esta nueva variable: Hembra, Macho, Ambos y No
Especifica. La categoría Ambos, indica que hay
tanto una hembra como un macho en el audio.
# grafico de barrassub_data %>%group_by(etiqueta, sexo) %>%summarise(conteo=n()) %>%plot_ly(x=~conteo, y=~sexo, orientation ="h", color =~etiqueta) %>%add_bars() %>%layout(title =list(text="Sexo del Ave"),xaxis =list(title ='Sexo'),yaxis =list(title ='Frecuencia'))
En la mayoría de registros de audio, no se especifica el sexo del
ave. De las aves en las que se logra identificar el sexo, la mayoria son
machos, o hay presencia tanto de un macho como una hembra en la
grabación.
Edad
Otro campo que se extrae de la variable type es la edad del ave. Por
edad se refiere a si el ave esta en etapa juvenil o es
un adulto. Tambien se tiene una categoría en caso no se
especifique la edad del ave.
# grafico de barrassub_data %>%group_by(etiqueta, edad) %>%summarise(conteo=n()) %>%plot_ly(x=~conteo, y=~edad, orientation ="h", color =~etiqueta) %>%add_bars() %>%layout(title =list(text="Edad del Ave"),xaxis =list(title ='Edad'),yaxis =list(title ='Frecuencia'))
Similar a la variable sexo, para la mayoría de audios no se
especifica la edad del ave. La mayoría de aves en las que se logra
identificar la edad, son adultos.
Tipo de Vocalización
Otro campo que se logra extraer de la variable type, es el tipo de
vocalización del ave. Las vocalizaciones de las aves se puede dividir
principalmente en 2 categorías: canto y llamado.
Los cantos son vocalizaciones complejas y elaboradas que suelen ser
emitidas por los machos durante la temporada de reproducción. Los cantos
sirven para atraer a las hembras, defender el territorio y establecer
jerarquías sociales. Las hembras tambien pueden emitir cantos, pero es
mas común por parte de los machos en muchas especies.
Los llamados son vocalizaciones más simples y breves que pueden ser
emitidas por aves de ambos sexos. Los llamados sirven para comunicarse
con otros miembros de la misma especie, para alertar de peligros o para
identificarse entre sí.
# grafico de barrassub_data %>%group_by(etiqueta, tipo) %>%summarise(conteo=n()) %>%plot_ly(x=~conteo, y=~tipo, orientation ="h", color =~etiqueta) %>%add_bars() %>%layout(title =list(text="Tipo de vocalización del Ave"),xaxis =list(title ='Tipo'),yaxis =list(title ='Frecuencia'))
Aunque los cantos y llamados sean emitidos por la misma especie de
aves, el patrón del sonido y su frecuencia será diferente, por lo que al
incluir ambos tipos de vocalizaciones en un modelo, aumenta la cantidad
de patrones que debe aprender el modelo, esto considerando también que
los llamados pueden tener distintas variaciones para una misma especie,
según la intención que se tenga.
Se logra observar que la mayoría de las vocalizaciones son del tipo
llamado. Para el caso de las especies skylar y
norcar, se tienen mas registros de vocalizaciones de
tipo canto.
Muestras de audios
Para entender porque los cantos de las aves pueden ayudar en la
identificación de especies, se muestran a continuación algunos ejemplos
de audio obtenidos desde el repositorio de Xeno-canto.
brnowl
houspa
comsan
mallar3
norcar
skylar
Visualización de ondas de sonido
Para una muestra de 6 especies, se grafican las ondas sonoras
extraídas de los audios. Los audios originalmente tienen diferentes
duraciones, desde segundos hasta minutos, pero para facilitar su
comparación, se grafican solo10 segundos de cada uno. Se logra apricar
como la amplitud y frecuencia de las ondas es diferente de una especie a
otra.
Es posible extraer de los audios su duración y la frecuencia de
muestreo (sample_rate). La frecuencia de muestreo es la cantidad de
muestra de sonido que se captan por segundo, permitiendo tener mayor
detalle del sonido emitido por las aves. Ejemplo:
Como todos los audios tienen la misma frecuencia de muestreo, no se
detallará mucho en esa información.
Para una muestra de 6 especies, se grafican las ondas sonoras
extraídas de los audios. Originalmente los aduios tienen diferentes
duraciones, desde segundos hasta minutos, pero para observar mejor las
diferencias, se tomó una muestra de 5 segundos para cada audio. Se puede
observar la diferencia en amplitud de las ondas de una especie a otra, y
que los ciclos son mas largos de una especie a otra a lo largo del
tiempo.