Sebastián Cadavid-Sánchez
    • Create new note
    • Create a note from template
      • Sharing URL Link copied
      • /edit
      • View mode
        • Edit mode
        • View mode
        • Book mode
        • Slide mode
        Edit mode View mode Book mode Slide mode
      • Customize slides
      • Note Permission
      • Read
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Write
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Engagement control Commenting, Suggest edit, Emoji Reply
    • Invite by email
      Invitee

      This note has no invitees

    • Publish Note

      Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

      Your note will be visible on your profile and discoverable by anyone.
      Your note is now live.
      This note is visible on your profile and discoverable online.
      Everyone on the web can find and read all notes of this public team.
      See published notes
      Unpublish note
      Please check the box to agree to the Community Guidelines.
      View profile
    • Commenting
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
      • Everyone
    • Suggest edit
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
    • Emoji Reply
    • Enable
    • Versions and GitHub Sync
    • Note settings
    • Note Insights New
    • Engagement control
    • Make a copy
    • Transfer ownership
    • Delete this note
    • Save as template
    • Insert from template
    • Import from
      • Dropbox
      • Google Drive
      • Gist
      • Clipboard
    • Export to
      • Dropbox
      • Google Drive
      • Gist
    • Download
      • Markdown
      • HTML
      • Raw HTML
Menu Note settings Note Insights Versions and GitHub Sync Sharing URL Create Help
Create Create new note Create a note from template
Menu
Options
Engagement control Make a copy Transfer ownership Delete this note
Import from
Dropbox Google Drive Gist Clipboard
Export to
Dropbox Google Drive Gist
Download
Markdown HTML Raw HTML
Back
Sharing URL Link copied
/edit
View mode
  • Edit mode
  • View mode
  • Book mode
  • Slide mode
Edit mode View mode Book mode Slide mode
Customize slides
Note Permission
Read
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Write
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Engagement control Commenting, Suggest edit, Emoji Reply
  • Invite by email
    Invitee

    This note has no invitees

  • Publish Note

    Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

    Your note will be visible on your profile and discoverable by anyone.
    Your note is now live.
    This note is visible on your profile and discoverable online.
    Everyone on the web can find and read all notes of this public team.
    See published notes
    Unpublish note
    Please check the box to agree to the Community Guidelines.
    View profile
    Engagement control
    Commenting
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    • Everyone
    Suggest edit
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    Emoji Reply
    Enable
    Import from Dropbox Google Drive Gist Clipboard
       Owned this note    Owned this note      
    Published Linked with GitHub
    • Any changes
      Be notified of any changes
    • Mention me
      Be notified of mention me
    • Unsubscribe
    # Informe de prestacion de servicios ## Diseño, desarrollo y análisis de flujos de procesamiento de datos de audio generados a partir de la implementación en campo del proyecto Sitios Permanentes de Calibración y Monitoreo de la Biodiversidad (SiPeCaM) **Presentado por:** Sebastián Cadavid Sánchez para la Comisión Nacional para el Conocimiento y Uso de la Biodiversidad [(CONABIO)](https://www.gob.mx/conabio) Fecha: 15 de Diciembre de 2020 ### Descripción del contrato Consultoría para la asesoría en el uso, despliegue, diseño e implementación de un sistema de procesamiento de datos generados a partir de la implementación en campo del proyecto Sitios Permanentes de Calibración y Monitoreo de la Biodiversidad (SiPeCaM). Asesoría en el uso de herramientas para la recolección, administración y visualización de datos del proyecto SiPeCaM. ### Objetivo general Usar, desplegar, diseñar e implementar un sistema de procesamiento de datos generados a partir de la implementación en campo del proyecto Sitios Permanentes de Calibración y Monitoreo de la Biodiversidad (SiPeCaM). Usar herramientas para la recolección, administración y visualización de datos del proyecto SiPeCaM. ### Objetivos particulares - Diseño, desarrollo y construcción de datos de audio. - Diseño, desarrollo y construcción de flujos de procesamiento de datos de audio con la insfraestructura de Kube SiPeCaM y otas. - Uso de métodos de Matemáticas, Estadística y Aprendizaje de máquina y en general de procesamiento de señales para analizar datos de audio. - Colaboración con equipos internos en la DGPI para construcción de flujos de procesamiento de datos. ### Productos Generados - Informe con el repositorio en _github_ por "LA CONABIO" con la documentación para análisis de datos de audio. La documentación abarca las herramientas de desarrollo de _software_ que se hayan constuido para el correcto análisis, procesamiento y generación de resultados de datos de audio en el proyecto SiPeCaM. **Entregable:** Para lograr el objetivo de generar herramientas de análisis de audio por medio de desarrollo de software, realizaron documentos de trabajo [_jupyter notebooks_](https://jupyter.org/) en lenguaje `python` y `bash`, que documentan los procedimientos implementados y el yuso de herramientas de _software_. Todos los repositoriosde _github_ que contienen los documentos de trabajo mencionados son hacen parte de la organizacion de la [CONABIO]([CONABIO](https://github.com/CONABIO)) en _github_ y se listan a continuación: - https://github.com/CONABIO/sipecam-models-audio: Implementaciones de _pipelines_ para procesamiento y/o análisis de bases de datos de audio provistas por la CONABIO (SiPeCamp, SNMB, o el Instituto Humboldt). En la siguiente parte del presente informe se detallan los _pipelines_ desarrollados y sus productos asociados. - https://github.com/CONABIO/development-team-general-DGPI/tree/main/sebastian: - La carpeta [`notebook/acoustic-monitoring-putumayo`](https://github.com/CONABIO/development-team-general-DGPI/tree/main/sebastian/notebooks/acoustic-monitoring-putumayo) incluye el desarrollo realizado para el procesamiento de las bases de datos de Audio de la Región Amazónica del Putumayo (Colombia) desde el 7 de Julio de 2019, hasta el 09 de agosto de 2019, y fue recolectada en una frecuencia de 24 horas, a una tasa de muestreo de 96 KHz. Esta base de datos fue provista por el [Instituto Humboldt](http://www.humboldt.org.co/es/). - La carpeta [`notebook/acoustic-monitoring-putumayo`](https://github.com/CONABIO/development-team-general-DGPI/tree/main/sebastian/notebooks/upload-data-S3-humboldt) incluye los procedimientos realizados para realizar la migración de los archivos de las colecciones de audio mencionadas desde los servidores de la CONABIO hacia el servicio de almacenamiento de _Amazon Web Services_, `S3`. - Informe final con los _notebooks_ que documenten los _pipelines_ de procesamiento de datos de audio en el proyecto SiPeCaM. Tales _notebooks_ se colocarán en un repositorio organizado por "LA CONABIO". **Entregable:** En la siguiente sección de este informe se describen los _notebooks_ implementados, así como la descripción de sus productos, implementación, y referencias al repositorio de _github_ que los aloja, citado a continuación: [https://github.com/CONABIO/sipecam-models-audio](https://github.com/CONABIO/sipecam-models-audio) Todos los _pipelines_ implementados se construyeron utilizando la librería para análisis y procesamiento de audio, [`yuntu`](https://github.com/CONABIO/yuntu-private/tree/stable/src), desarrollada en la CONABIO, y simultáneamente, sus implementaciones permitieron realizar varias anotaciones para su robustecimiento. ## _Pipelines_ de procesamiento de datos de audio en el proyectio SiPeCaM ### 1.1 Implementación: Objetivos Con el objetivo de diseñar, implementar, y desplegar sistemas de procesamiento para el uso de datos de audio del proyecto Sitios Permanentes de Calibración y Monitoreo de la Biodiversidad (SiPeCaM), se realizaron cinco (4) _notebooks_ que cumplen diferentes objetivos en el procesamiento de datos acústicos. A continuación, se listan dichos cuadernos de trabajo y se menciona brevemente su objetivo general. En la siguientes subsecciones se explican a detalle cada uno de ellos. - _Soundscapes_: Generar paisajes acústicos utilizando indicadores de energía con datos del área del Putumayo (Colombia) con el fin de entender los comportamientos ciclicos referentes a la acústica de esta región. - Detección de murciélagos (_Chiroptera_): Generar predicciones de presencia o ausencia de animales del género _Chiroptera_ en determinados horizontes temporales. - Ejercicio no supervisado para detección de _clusters_ de fauna: Ejercicio no supervisado para detectar la presencia o ausencia de fauna en distintas ventanas temporales utilizando un modelo de aprendizaje profundo (_Haar embedding_). - Creación de datos artificiales para detección de primates: Creación de un conjunto de datos artificiales que simula la presencia de primátes(_Alouatta_ y _Ateles_) en el área del Putumayo (Colombia). ### 1.2 Implementación: Cronograma de desarrollo de actividades En el siguiente Calendario se muestra la evolución en el flujo de actividades durante el desarrollo del contrato que permitieron crear la implementación de los _pipelines_ implementados. ```mermaid gantt title Figura 1: Desarrollo cronológico de actividades section Etapa 1 A1:2021-10-20, 15d A2: 2021-10-25, 5d section Etapa 2 A3:2021-11-01 , 5d A4:2021-11-06 , 4d A5:2021-11-07 , 7d A6:2021-11-10 , 7d section Etapa 3 A7:2021-11-18 , 10d A8:2021-11-22 , 10d A9:2021-12-02 , 5d A10:2021-12-08 , 3d ``` Los grupos de actividades (A) del calendario se describen a continuación: - A1: Familiarización con librerías de procesamiento de audio (`yuntu`) y literatura de procesamiento de señales - A2: Creación de tutorial de [_pipeline_](https://github.com/CONABIO/yuntu-private/blob/pipelines/pipelines/pipeline-training-localDB.ipynb) de entrenamiento en `yuntu` - A3: Trabajo e implementación de _pipeline_ de entrenamiento no supervisado (_Haar embedding_) con datos del SNMB - A4: Creación y procesamiento de colecciones de audio de los datos del Putumayo provistos por el Instituto Humboldt - A5: Trabajo en implementación de ejercicios de paisajes acústicos (_soundscapes_) con datos del Putumayo - A6: Creación de _pipeline_ para generación de paisajes acústicos en el Putumayo - A7: Trabajo en implementación y exploración de ejercicios de predicción de detección de quirópteros. Estudio de arquitecturas [`BirdNet`](https://www.google.com/search?channel=trow5&client=firefox-b-d&q=birdnet) y [`BatDetector`](https://github.com/macaodha/batdetect) - A8: Creación de _pipeline_ de predicción de detección de quirópteros (fase exploratoria, no funcional) - A9: Trabajo en implementación de ejercicios de creación de audio artificiales con base de datos de primates de _Cornell_ - A10: Creación de _pipeline_ de datos artificiales de primates en el Putumayo. ### 1.3 Implementación: Arquitectura La ejecución de todos los _pipelines_ presentados en este informe se realizaron utilizando el servicio de Amazon web Services (_AWS_), Amazon Elastic Compute Cloud (_EC2_), con una instancia con las siguientes características: ```bash Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Byte Order: Little Endian CPU(s): 4 On-line CPU(s) list: 0-3 Thread(s) per core: 2 Core(s) per socket: 2 Socket(s): 1 NUMA node(s): 1 Vendor ID: GenuineIntel CPU family: 6 Model: 79 Model name: Intel(R) Xeon(R) CPU E5-2686 v4 @ 2.30GHz Stepping: 1 CPU MHz: 2699.815 CPU max MHz: 3000.0000 CPU min MHz: 1200.0000 BogoMIPS: 4600.00 Hypervisor vendor: Xen Virtualization type: full L1d cache: 32K L1i cache: 32K L2 cache: 256K L3 cache: 46080K NUMA node0 CPU(s): 0-3 ``` En cuanto al manejo de _sofware_, la instancia utiliza las imagenes de [_docker_](https://www.docker.com) disponiblse en la siguiente liga: https://github.com/CONABIO/yuntu-private/tree/stable/dockerfiles/tensorflow-yuntu-dask-gpu. Desta imagen fue desarrolladas por el equipo de desarrollo de la CONABIO. Adicionalmente, la instancia tiene instalados y configurados los servicios de [Kubeflow](https://github.com/kubeflow/kubeflow) y [Kale](https://github.com/kubeflow-kale/kale) para el orquestamiento y lanzamiento de _pipelines_. ## 2. Notebooks ### 2.1 Paisajes Acústicos (_Soundscapes_) #### 2.1.1 Descripción El objetivo de este _notebook_ es generar un paisaje acústico utilizando índices sonoros de intensidad, y un índice de complejidad, con el fin de brindar una visión general de la presencia de fauna para diferentes horizontes temporales utilizando datos de sonido. La base de datos utilizada fue provista por el [Instituto Humboldt](http://www.humboldt.org.co/es/) para la Región Amazónica del Putumayo (Colombia) desde el 7 de Julio de 2019, hasta el 09 de agosto de 2019, y fue recolectada en una frecuencia de 24 horas, a una tasa de muestreo de 96 KHz. El conjunto de datos fue descargado en el servicio `S3` de _AWS_ e el _bucket_: `s3://datos_humboldt/13-04-2020-2-monitoreo-acustico-putumayo-G02`. El proceso de carga de la base de datos del servidor de la CONABIO al _bucket_ se describe en el _notebook_ asociado a [este](https://github.com/CONABIO/development-team-general-DGPI/blob/main/sebastian/notebooks/upload-data-S3-humboldt/upload-data2S3-monitoreo-acustico-putumayo.ipynb) enlace. Posteriormente, a partir de la base de datos almacenada en `S3` se generó una base de datos de audio relacional de `PostgreSQL` utilizando el servicio `RD` de `AWS` y la librería `yuntu`. El procedimiento realizado se puede consutlar en el siguiente [notebook](https://github.com/CONABIO/development-team-general-DGPI/blob/main/sebastian/notebooks/acoustic-monitoring-putumayo/acoustic-monitoring-putumayo-postgresql-collection.ipynb). El _jupyter notebook_ de esta implementación se encuentra publicado en el repositorio [`sipecam-models-audio/putumayo-acoustic-monitoring`](https://github.com/CONABIO/sipecam-models-audio/putumayo-acoustic-monitoring/) de la organización [CONABIO](https://github.com/CONABIO) en _github_. #### 2.1.2 Implementación del _pipeline_ El diagrama de flujo del _pipeline_ implementado se presenta en la Figura 2.1.1. La ejecución tomó un tiempo de aproximadamente 6 horas. ```graphviz digraph hierarchy { nodesep=2 node [color=green, fontname=Courier, shape=box] edge [color=Black] parametros-> imports-> funciones-> conexion_db-> crear_coleccion_yuntu-> crear_audio_df_yuntu-> crear_yuntu_pipeline_procesamiento->graficar_pipeline crear_yuntu_pipeline_procesamiento-> {configurar_hasher configurar_slicing}-> configurar_feed-> computar_soundscape-> visualizacion_soundscape-> {guardar_visualizacion_soundscape_seq guardar_visualizacion_soundscape_mean guardar_visualizacion_soundscape_std} crear_localCluster_dask-> configurar_feed edge[style=invis] } ``` _**Figura 2.1.1** _Pipeline_ para la producción de paisajes acústicos_ Los pasos del _pipeline_ de la Figura 2.1.1 se describen a continuación: - `parametros`: Se crean las variables globales necesarias para la ejecución de la totalidad del _pipeline_ - `imports`: Se importan las dependencias de `python` - `funciones`: Se crean funciones adicionales para el análisis - `conexion_db`: Se genera una conexión a la base de datos de `PostgreSQL` con las credenciales requeridas. - `crear_coleccion_yuntu`: A partir de la base de datos se genera una colección de audio en `yuntu` - `crear_audio_df_yuntu`: A partir de la colección de audio se genera un `dataframe` en `pandas` con toda la informacion de la colección de audio. - `crear_yuntu_pipeline_procesamiento`: Usando yuntu de define un _pipeline_ de procesamiento construido con [`dask`](https://dask.org/) para realizar el procesamiento en paralelo del _dataframe_ de audio. - `graficar_pipeline`: Se realiza una visualizacion del grafo dirigido de _pipeline_ de `dask` - `configurar_hasher`: Se configura el _hasher_ para cada grabación de la colección - `configurar_slicing`: Se configura la forma de analizar ventanas de audio (_audio-windows_) en las grabaciones - `crear_localCluster_dask`: Se crea un cluster local de procesos en `Dask` - `configurar_feed`: utilizando las anteriores configurares se termina de configurar el _pipeline_ de `dask` - `computar_soundscape`: Se ejecuta el procesamiento en paralelo de las grabaciones de audio - `visualizacion_soundscape`: Se grafica en dos dimensiones el resultado del paisaje acústico - `guardar_visualizacion_soundscape_seq`: Se guarda la visualización del paisaje acústico en forma secuencial para todo el horizonte temporal provisto en formato `PNG`. - `guardar_visualizacion_soundscape_mean`: Se guarda la visualización del paisaje acústico para el promedio de los índices analizados en las horas comprendidas en el horizonte temporal provisto. La imagen se guarda en formato `PNG` - `guardar_visualizacion_soundscape_std`: Se guarda la visualización del paisaje acústico para la desviación estándar de los índices analizados en las horas comprendidas en el horizonte temporal provisto. La imagen se guarduea en formato `PNG` #### 2.1.3 Producto y visualizaciones A continuación se presenta un ejemplo para cada uno de los tipos de visualizaciones producidas por el _pipeline_ mencionado. En particular, para las gráficas que denotan el nivel o el promedio de los índices, los tonos azules oscuros denotean la ausencia ausencia de energía acústica, que a su vez podría indicar la no presencia de fauna para las diferentes franjas de frecuencia, mientras que los tonos de otros colores indican lo opuesto. Esto sucede porque cada canal indica un color para los diferentes índices analizados. <img align="center" width="" src="https://i.imgur.com/qTxK5Qb.png"> _**Figura 2.1.2** Paisaje acústico secuencial para los indicadores de complejidad e intesidad por días y horas_ Por ejemplo, la Figura 2.1.2 puede denotar la presencia promedio de murciélagos (_Chiroptera_) en franjas de horario entre las 19:00 y las 06:00 horas, dado que se presentan tonos verdes para dichas franjas de horario para frecuencias ultrasónicas (mayores a 20 KHz). <img align="center" width="500" src="https://i.imgur.com/mNep5jV.png"> _**Figura 2.1.3** Paisaje acústico para el promedio de los indicadores de complejidad e intesidad por horas_ La interpretación de la gráfica 2.1.4 que presenta la desviación estándar de los índices análizados se resume a continuación: La ausencia de color (zonas negras) indícan que ninguno de los índices analizados tiene variación con respecto a la media, y por lo tanto las regiones donde predomina dicho tono son altamente consistentes con los niveles promedio de dichos índices. Por otro lado, las zonas con coloración consistente indican que no hay variación con respecto a determinado índice. Por ejemplo, en la gráfica 2.1.3 las banda consistentemente morada entre las 00:00 y las 06:00 en niveles ligeramente superiores a los 19.2 KHz de frecuencia indica la presencia consistente de familias como la _Gryllidae_ (grillos). Si se analiza este ocmportamiento en términos de la desviación estándar, observamos que para la misma área de la gráfica se observa una franja con ausencia de color. <img align="center" width="500" src="https://i.imgur.com/zygmUfO.png"> _**Figura 2.1.4** Paisaje acústico para la desviación estándar de los indicadores de complejidad e intesidad por horas._ #### 2.1.4 Reutilización y despliege Este _pipeline_ puede ser adaptado para el uso de bases de datos diferentes a la analizada. El único requerimiento adicional es realizar la carga de los datos a una base a una colección de `yuntu`, la cual puede ser almacenada localmente o en una base de datos relacional. En este caso se utilizó una base de datos en `PostgreSQL` a partir de grabaciones obtenidas en formato `WAV`. como se menciona en la sección 2.1.1. En particular, las iamgenes generadas en el lanzamiento realizado se pueden encontrar en la siguiente liga: [https://github.com/CONABIO/sipecam-models-audio/tree/main/soundscapes/putumayo-acoustic-monitoring/imgs](https://github.com/CONABIO/sipecam-models-audio/tree/main/soundscapes/putumayo-acoustic-monitoring/imgs) ### 2.2 Detección de murciélagos: Generar predicciones de presencia o ausencia de murciélagos (_Chiroptera_) en el área del Putumayo (Colombia). #### 2.2.1 Descripción El objetivo de este notebook es implementar un _pipeline_ para la detección de presencia o ausencia de quirópteros en ventanas temporales de archivos de audio. En particular, las predicciones son anotaciones en espectrogramas donde se detecta alta probabilidad (mayor o igual a 0.5) de la presencia de murciélagos. Este ejercicio se realizó, utilizando la misma base de datos mencionada en la sección 2.1, provista por el Instituto Humboldt para la Región Amazónica del Putumayo (Colombia) desde el 7 de Julio de 2019, hasta el 09 de agosto de 2019, y recolectada en una frecuencia de 24 horas, a una tasa de muestreo de 96 KHz. Es importante mencionar que el modelo utilizado en este _pipeline_ fue previamente entrenado por el equipo de Ciencias y Ecología de la CONABIO con datos de varias especies de quirópteros para distintos territorios de México. En las siguientes secciones se explica el flujo del procesamiento y se dan ejemplos de las visualizaciones generadas para el análisis de los archivos de audio. #### 2.2.2 Implementación del _pipeline_ El diagrama de flujo del _pipeline_ implementado se presenta en la Figura 2.2.1. La ejecución tomó un tiempo de computo de aproximadamente 6 horas. ```graphviz digraph hierarchy { nodesep=1 node [color=blue, fontname=Courier, shape=box] edge [color=Black] parametros-> imports-> funciones-> conexion_db-> crear_coleccion-> crear_audio_df-> referenciar_tiempo-> muestra_df-> cortar_audio-> ajustar_sample_rate-> crear_espectrogramas-> visualizacion_predicciones-> guardar_visualizaciones descargar_modelo-> crear_modelo_dl-> prediccion_probe-> transformar_prediccion-> visualizacion_predicciones edge[style=invis] } ``` _**Figura 2.2.1** _Pipeline_ para la producción de murciélagos_ Los pasos del _pipeline_ de la Figura 2.1.1 se describen a continuación: - `parametros`: Se crean las variables globales necesarias para la ejecución de la totalidad del _pipeline_ - `imports`: Se importan las dependencias de `python` - `funciones`: Se crean funciones adicionales para el análisis - `conexion_db`: Se genera una conexión a la base de datos de `PostgreSQL` con las credenciales requeridas. - `crear_coleccion_yuntu`: A partir de la base de datos se genera una colección de audio en `yuntu` - `crear_audio_df`: A partir de la colección de audio se genera un `dataframe` en `pandas` utilizando `yuntu` con toda la informacion de la colección de audio. - `referenciar_tiempo`: Se ajusta el _dataframe_ para tener como referencia en cuanto a temporalidad el ciclo circadiano más común de los quirópteros. - `muestra_df`: Se toman muestras del total de observaciones para realizar la implementación. - `cortar_audio`: Dada la alta carga computacional en el procesamiento de la totalidad de las grabaciones, se cortan fragmentos de las mismas para la implementación de este ejemplo. - `ajustar_sample_rate`: Se hace un "re-muestreo" de la frecuencia de las observaciones para que sean compatible con el modelo entrenado (_probe_). - `crear_espectrogramas`: terminado el procesamiento de las observaciones se generan los espectrogramas asociados a las mismas. - `descargar_modelo`: Se descargan del servicio de `S3` los archivos necesarios para compilar el modelo entrenado (_probe_). - `crear_modelo_dl`: Se compila el modelo entrenado en `tensorflow` - `prediccion_probe`: Se utiliza el modelo para realizar predicciones de detección de muerciélagos. - `transformar_prediccion`: Se transforman las predicciones del modelo para poder realizar su visualización en dos dimensiones - `visualizacion_predicciones`: Se generan visualizaciones de las predicciones del modelo en tres componentes. - `guardar_visualizaciones`: Se guardan las visualizaciones localmente en formato `PNG` #### 2.2.3 Producto y visualizaciones A continuación se presenta un ejemplo de las visualizaciones producidas por este _pipeline_. para cada grabación de audio (después de aplicar el pre-procesamiento) se produce una imagen como la presentada en la Figura 2.2.2. <img align="center" src="https://i.imgur.com/vJPHFHz.png"> _**Figura 2.2.2** Predicciones de detección de quirópteros._ El primer panel de la Figura 2.2.1 presenta la probabilidad predicha por el modelo utilizado para cada microsegundo de la grabación analizada. Las franjas coloreadas verticales son los periodos en las cuales la probabilidad es mayor o igual a 0.5, y por lo tanto se pronostica presencia de quirópteros. El segundo panel de la Figura 2.2.1 muestra el espectrograma (utilizando decibelios) asociado a la grabación de audio analizada. Adicionalmente, las anotaciones en líneas punteadas agrupan periodos para los cuales se predice la detección de muerciélagos. La visualización del espectrograma asociado al audio permite realizar ejercicios de validación visual a ecólogos y expertos en el dominio de eco-acústica. Por último, el tercer panel de la Figura 2.2.1 presenta la penúltima capa del modelo de aprendizaje profundo (_deep learning_), utilizado para realizar predicción. En particular, esta visualización sirve para realizar ejercicios de validación sobre la arquitectura de modelación utilizada, con el fin de realizar ajustes sobre la misma, de ser necesario. Es importante anotar que dado que las grabaciones fueron recolectadas a una tasa de muestreo de 96 kHz, frecuencias superiores a dichos nivel son de color negro en los páneles 2 y 3 (de arriba hacia abajo) de la Figura 2.2.1. De igual forma, no tener frecuencias hasta los 200 Khz imposibilita la detección de varias especies de murciélafos cuyos llamados caen dentro de dicho espectro. #### 2.1.4 Reutilización y despliege Este _pipeline_ puede ser adaptado para el uso de bases de datos diferentes a la analizada. El único requerimiento adicional es realizar la carga de los datos a una base a una colección de `yuntu`, la cual puede ser almacenada localmente o en una base de datos relacional. En este caso se utilizó una base de datos en `PostgreSQL` a partir de grabaciones obtenidas en formato `WAV`. como se menciona en la sección 2.1.1. Los resultados de las imagenes preoducidas para la muestra analizada se encuentra en el [repositorio](https://github.com/CONABIO/sipecam-models-audio/tree/main/bats-detection/putumayo-acoustic-monitoring) asociado a este ejercicio. ### 2.3 Clasificación no-supervisada para la detección de grupos de fauna #### 2.3.1 Descripción El objetivo de este notebook es implementar un _pipeline_ para la implementación de un ejercicio de aprendizaje profundo no supervisado para clasificación de grupos de fauna utilizando datos de audio. En particular, el producto de este _pipeline_ son imágenes en dos dimesiones de espectrogramas con ventanas temporales con _clusters_ que indican la presencia de grupos de fauna se diferencian por colores. El conjunto de datos utilizado es la base de datos del Sist4ema Nacional de Monitoreo de la biodiversidad (SNMB). El jupyter notebook de esta implementación se encuentra publicado en el repositorio sipecam-models-audio/fauna-clustering/SNMB de la organización CONABIO en github: https://github.com/CONABIO/sipecam-models-audio/tree/main/fauna-clustering/SNMB #### 2.3.2 Implementación del _pipeline_ El diagrama de flujo del _pipeline_ implementado se muestra en la Figura 2.3.1. ```graphviz digraph hierarchy { nodesep=1 node [color=orange, fontname=Courier, shape=box] edge [color=Black] parametros-> imports-> funciones-> descargar_audios_primates_S3-> crear_storage_primates-> crear_df_audio_primates-> preprocesar_audio_primates descargar_audios_putumayo_S3-> crear_storage_putumayo-> crear_df_audio_putumayo->preprocesar_audio_putumayo preprocesar_audio_primates->crear_listas_Audio preprocesar_audio_putumayo->crear_listas_Audio crear_listas_Audio->crear_audio_generativo crear_listas_Audio->crear_espectrogramas parametros_adicionales->visualizar_guardar_productos {crear_audio_generativo crear_listas_Audio crear_espectrogramas}-> visualizar_guardar_productos edge[style=invis] } ``` _**Figura 2.3.1** _Pipeline_ para la detección no-supervisada de grupos de fauna_ Los pasos del _pipeline_ de la Figura 2.3.1 se describen a continuación: - `parametros`: Se crean las variables globales necesarias para la ejecución de la totalidad del _pipeline_ - `imports`: Se importan las dependencias de `python` - `funciones`: Se crean funciones adicionales para el análisis - `conexion_db`: Se genera una conexión a la base de datos de `PostgreSQL` con las credenciales requeridas - `crear_coleccion_yuntu`: A partir de la base de datos se genera una colección de audio en `yuntu` - `crear_audio_df_yuntu`: A partir de la colección de audio se genera un `dataframe` en `pandas` con toda la informacion de la colección de audio - `computa_contexto_embedding`: Se calcula el el contexto para la generación - `dim_haar_embedding`: Se calculan las dimensiones del _embedding_ - `transf_input`: Transfomar conjunto de datos para su lectura en `tensorflow` - `crear_haar_embedder`: Crear generador de _Haar embedding_ en `tensorflow` - `computar_embedder`: Crear modelo para calcular _haar embedding_ de las grabaciones de audio - `resumir_modelo`: Mostrar resumen del modelo - `compilar_modelo`: Compilar modelo en `tensorflow` - `entrenar_modelo`: Entrenar modelo generador de _haar embedding_ - `submuestra_df`: Calcular muestra del `dataframe` para generar visualización - `calcular_embedding`: Calcular predicción del modelo para los registros seleccionados - `redimensionar_dimension`: Redimensionar _embedding_ generado por el modelo - `norm_embedding`: Normalizar _embedding_ para visualización - `visualizacion_embedding`: Visualizar _embedding_ - `guardar_visualizacion`: Guardar visualizacion en formato `PNG` #### 2.3.3 Producto y visualizaciones - Reutilización y despliege El producto de este _pipeline_ requiere varias horas de computo, y será subido en la siguiente carpeta: [https://github.com/CONABIO/sipecam-models-audio/tree/main/fauna-clustering/SNMB](https://github.com/CONABIO/sipecam-models-audio/tree/main/fauna-clustering/SNMB). En particular, se generan espectrogramas en formato `PNG` para ventanas de tiempo definidas, con anotaciones geométricas que identifican la presencia de distrintos animales (agrupados). El computo de este _pipeline_ es tiene un alto costo computacional en términos de procesadores, razón por la cual es sugerido realizar su ejecución en el Servidor de la CONABIO, o con una maquina con un alto número de CPUs. ### 2.4 Creación de datos no orgánicos para detección de primates #### 2.4.1 Descripción El objetivo de este _notebook_ es implementar un _pipeline_ para la creación de de datos no orgánicos de primates en la selva del Putumayo. En particular, los datos de los llamados de primates del género _Alouatta_ son usados a partir de la base de datos de primates de Cornell, en formato `WAV`. Por otro lado, los archivos de audio de la selva del Putumayo son extraídos de las grabaciones provistas por el Instituto Humboldt. El producto de este _pipeline_ es una visualización de los espectrogramas y ondeletas (_wavelets_) de los audios originales, y el producto de su mezcla, además de guardar los archivos de audio generados en formato `WAV`. En particular, los datos generados artificialmente serán usados como datos de entrenamiento de modelos de aprendizaje profundo para resolver problemas supervisados. El código asociado al desarrolo del _pipeline_ se encuentra en la siguiente referencia: https://github.com/CONABIO/sipecam-models-audio/tree/main/generative-audio/primates #### 2.4.2 Implementación del _pipeline_ El diagrama de flujo del _pipeline_ implementado se muestra en la Figura 2.4.1. ```graphviz digraph hierarchy { nodesep=1 node [color=orange, fontname=Courier, shape=box] edge [color=Black] parametros-> imports-> funciones-> descargar_audios_primates_S3-> crear_storage_primates-> crear_df_audio_primates-> preprocesar_audio_primates descargar_audios_putumayo_S3-> crear_storage_putumayo-> crear_df_audio_putumayo->preprocesar_audio_putumayo preprocesar_audio_primates->crear_listas_Audio preprocesar_audio_putumayo->crear_listas_Audio crear_listas_Audio->crear_audio_generativo crear_listas_Audio->crear_espectrogramas parametros_adicionales->visualizar_guardar_productos {crear_audio_generativo crear_listas_Audio crear_espectrogramas}-> visualizar_guardar_productos edge[style=invis] } ``` _**Figura 2.4.1** _Pipeline_ para la generación artificial de llamados de primates en el Putumayo_ Los pasos del _pipeline_ de la Figura 2.4.1 se describen a continuación. Es importante denotar que en este flujo de trabajo no se utilizan "colecciones" de audio de `yuntu`, sino `Storages`, lo que permite trabajar de forma más eficientes si los datos de audio se encuentran almacenados de forma local, como ene ste caso. - `parametros`: Se crean las variables globales necesarias para la ejecución de la totalidad del _pipeline_ - `imports`: Se importan las dependencias de _python_ - `funciones`: Se crean funciones adicionales para el análisis - `descargar_audios_primates_S3`: Descargar datos de primates-cornell en formato `WAV` de S3 - `crear_storage_primates`: Crear `storage` de `yuntu` para la lectura de todas las grabaciones de audio de primates - `crear_df_audio_primates`: A partir del `storage` de audio se genera un _dataframe_ en pandas con toda la informacion de la colección de audio de Primates-Cornell - `descargar_audios_putumayo_S3`: Descargar datos de putumayo-humboldt en formato `WAV` de S3 - `crear_storage_putumayo`: Crear `storage` de `yuntu` para la lectura de todas las grabaciones de audio de selva amazónica del Putumayo. - `crear_df_audio_putumayo`: A partir del `storage` de audio se genera un dataframe en pandas con toda la informacion de la colección de audio del Putumayo. - `preprocesar_audio_primates`: Ajstar tasa de muestreo de los datos de primates a un nivel en común - `preprocesar_audio_putumayo`: Ajustar tasa de muestreo de los datos de selva a un nivel en común - `crear_listas_Audio`: Crear listas de `Python` con objetos de `Audio` para datos de primates y de selva con el fin de optimizar su procesamiento - `crear_audio_generativo`: Combinar audio de selva y primates - `crear_espectrogramas`: Crear espectogramas asociados a objetos de `Audio` originales y generados - `parametros_adicionales`: Parámetros para la visualización de los objetos de `Audio` - `visualizar_guardar_productos`: Visualizar y guardar (formato `PNG`) visuaziones de _wavelets_ y espectrogramas de objetos de `Audio` originales y generados artificialmente. Adicionalemente, se guardan en formato `WAV` los archivos de audio generados artificialmente. #### 2.4.3 Producto y visualizaciones A continuación se presenta un ejemplo de las visualizaciones producidas por este _pipeline_. para cada grabación de audio (después de aplicar el pre-procesamiento) se produce una imagen como la presentada en las Figura 2.4.2. y 2.4.3. <img align="center" src="https://i.imgur.com/QskLmlj.png"> _**Figura 2.4.2** Primer ejemplo de visualización de audios originales y audios generados artificialmente._ <img align="center" src="https://i.imgur.com/O5aRe2W.png"> _**Figura 2.4.3** Segundo ejemplo de visualización de audios originales y audios generados artificialmente._ El panel izquierdo de la primera fila de las Figuras 2.4.2 y 2.4.3 muestra el espectrograma en decibelios de una grabación audio proveniente de la base de datos de primates de Cornell, luego de haberse realizado un proceso de preprocesamiento. Por otro lado, el segundo panel (derecha) presenta las ondas asociadas al mismo audio (su representación como arreglo numérico de ondeletas). En la misma dirección, el análisis es correspondiente para los páneles de la segunda fila de las gráficas, sin embargo, en ellos se analizan los datos de audio de la selva amazónica del Putumayo. Por último, en la tercera filal se presenta el mismo análisis para la composición de los audios de primates con los de selva, los cuales fueron generados artificialmente. #### 2.4.4 Reutilización y despliege Este pipeline puede ser adaptado para el uso de bases de datos diferentes a la analizada. Se requiere que los archivos de audio a utilizar se encuentren almacenados de manera local en formato `WAV`. El audio generado en la tercera fila de las gráficas de las figuras mencionadas se almacena localmente en formato `WAV`. Los resultados son almacenados en el repositorio mencionado en la sección 2.4.1, en la sección de [`/audio`](https://github.com/CONABIO/sipecam-models-audio/tree/main/generative-audio/primates/audio), mientras que las imágenes se almacenan en la sección [`/imgs`](https://github.com/CONABIO/sipecam-models-audio/tree/main/generative-audio/primates/imgs).

    Import from clipboard

    Paste your markdown or webpage here...

    Advanced permission required

    Your current role can only read. Ask the system administrator to acquire write and comment permission.

    This team is disabled

    Sorry, this team is disabled. You can't edit this note.

    This note is locked

    Sorry, only owner can edit this note.

    Reach the limit

    Sorry, you've reached the max length this note can be.
    Please reduce the content or divide it to more notes, thank you!

    Import from Gist

    Import from Snippet

    or

    Export to Snippet

    Are you sure?

    Do you really want to delete this note?
    All users will lose their connection.

    Create a note from template

    Create a note from template

    Oops...
    This template has been removed or transferred.
    Upgrade
    All
    • All
    • Team
    No template.

    Create a template

    Upgrade

    Delete template

    Do you really want to delete this template?
    Turn this template into a regular note and keep its content, versions, and comments.

    This page need refresh

    You have an incompatible client version.
    Refresh to update.
    New version available!
    See releases notes here
    Refresh to enjoy new features.
    Your user state has changed.
    Refresh to load new user state.

    Sign in

    Forgot password

    or

    By clicking below, you agree to our terms of service.

    Sign in via Facebook Sign in via Twitter Sign in via GitHub Sign in via Dropbox Sign in with Wallet
    Wallet ( )
    Connect another wallet

    New to HackMD? Sign up

    Help

    • English
    • 中文
    • Français
    • Deutsch
    • 日本語
    • Español
    • Català
    • Ελληνικά
    • Português
    • italiano
    • Türkçe
    • Русский
    • Nederlands
    • hrvatski jezik
    • język polski
    • Українська
    • हिन्दी
    • svenska
    • Esperanto
    • dansk

    Documents

    Help & Tutorial

    How to use Book mode

    Slide Example

    API Docs

    Edit in VSCode

    Install browser extension

    Contacts

    Feedback

    Discord

    Send us email

    Resources

    Releases

    Pricing

    Blog

    Policy

    Terms

    Privacy

    Cheatsheet

    Syntax Example Reference
    # Header Header 基本排版
    - Unordered List
    • Unordered List
    1. Ordered List
    1. Ordered List
    - [ ] Todo List
    • Todo List
    > Blockquote
    Blockquote
    **Bold font** Bold font
    *Italics font* Italics font
    ~~Strikethrough~~ Strikethrough
    19^th^ 19th
    H~2~O H2O
    ++Inserted text++ Inserted text
    ==Marked text== Marked text
    [link text](https:// "title") Link
    ![image alt](https:// "title") Image
    `Code` Code 在筆記中貼入程式碼
    ```javascript
    var i = 0;
    ```
    var i = 0;
    :smile: :smile: Emoji list
    {%youtube youtube_id %} Externals
    $L^aT_eX$ LaTeX
    :::info
    This is a alert area.
    :::

    This is a alert area.

    Versions and GitHub Sync
    Get Full History Access

    • Edit version name
    • Delete

    revision author avatar     named on  

    More Less

    Note content is identical to the latest version.
    Compare
      Choose a version
      No search result
      Version not found
    Sign in to link this note to GitHub
    Learn more
    This note is not linked with GitHub
     

    Feedback

    Submission failed, please try again

    Thanks for your support.

    On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?

    Please give us some advice and help us improve HackMD.

     

    Thanks for your feedback

    Remove version name

    Do you want to remove this version name and description?

    Transfer ownership

    Transfer to
      Warning: is a public team. If you transfer note to this team, everyone on the web can find and read this note.

        Link with GitHub

        Please authorize HackMD on GitHub
        • Please sign in to GitHub and install the HackMD app on your GitHub repo.
        • HackMD links with GitHub through a GitHub App. You can choose which repo to install our App.
        Learn more  Sign in to GitHub

        Push the note to GitHub Push to GitHub Pull a file from GitHub

          Authorize again
         

        Choose which file to push to

        Select repo
        Refresh Authorize more repos
        Select branch
        Select file
        Select branch
        Choose version(s) to push
        • Save a new version and push
        • Choose from existing versions
        Include title and tags
        Available push count

        Pull from GitHub

         
        File from GitHub
        File from HackMD

        GitHub Link Settings

        File linked

        Linked by
        File path
        Last synced branch
        Available push count

        Danger Zone

        Unlink
        You will no longer receive notification when GitHub file changes after unlink.

        Syncing

        Push failed

        Push successfully