Código abierto

Kit de entrenamiento para detectar sargazo, ahora en código abierto

Los florecimientos de sargazo empeoran cada año en las costas del Atlántico, y una pregunta básica resulta estar sorprendentemente sin resolver: si tiene un sensor de bajo costo a la deriva en el agua, ¿cómo sabe ese sensor si está dentro de una mancha de sargazo o en agua abierta?

Casi todo el trabajo de detección de sargazo mira hacia abajo. Los satélites y aviones usan imágenes de infrarrojo cercano para ubicar las manchas desde arriba, y esa línea está bien publicada. Casi nadie mira hacia arriba desde dentro del agua, de cerca, con hardware RGB barato. No encontramos una versión publicada de ese enfoque, así que construimos una y la liberamos en código abierto: un kit de entrenamiento que convierte una boya de bajo costo en un sensor que usted puede etiquetar, entrenar y probar en una sola salida de campo.

Respuesta corta: liberamos en código abierto el ciclo de entrenamiento detrás de nuestra boya para sargazo, bajo Apache-2.0: una consola web para etiquetar lecturas, un clasificador pequeño que corre en el dispositivo, y el firmware para ejecutarlo. Tómelo como una herramienta y un método para probar, porque el modelo aún no ha sido validado en un florecimiento real de sargazo; esa prueba de campo todavía está pendiente. Si trabaja en sensado marino, plataformas de drones o boyas, o ciencia ciudadana, nos gustaría contar con su ayuda para llevarlo más lejos.

¿Por qué construir esto en vez de usar datos satelitales?

El sensado remoto satelital y aéreo responde "dónde están las manchas" a escala gruesa, con bandas de infrarrojo cercano que captan la firma de reflectancia de la planta desde arriba. Eso sirve para el seguimiento regional, pero responde una pregunta distinta a la que necesita un sensor ya desplegado: esta unidad puntual, aquí y ahora, ¿está dentro de una mancha o en agua abierta? Esa respuesta tiene que venir de hardware lo bastante barato como para desplegarlo en cantidad y perderlo sin que duela.

Buscamos trabajo previo sobre detección in situ, sumergida, con luz visible, a este precio, y encontramos poco. Así que lo tratamos como un problema de sensado abierto, no uno resuelto, y la forma más rápida que conocemos de avanzar en un problema abierto es poner la herramienta en manos de más gente que pueda usarla en más lugares.

Qué hay en el repositorio

El kit cubre el ciclo de entrenamiento que nosotros mismos hemos usado. No incluye toda la plataforma Hover. Tres piezas:

  • Una consola web de entrenamiento. Carga las lecturas de una sesión, etiqueta tramos como en-mancha, agua-abierta o fuera-del-agua, y entrena un modelo con ellas.
  • El modelo. Un random forest pequeño entrenado con rasgos de cromaticidad (más sobre eso abajo) que corre directamente en el microcontrolador de la boya después de entrenar.
  • El firmware de entrenamiento para una boya ESP32-S3 con un arreglo de cuatro sensores RGB. Solo el código: usted lo compila y lo flashea.

Deliberadamente fuera: la red mesh LoRa y el resto de la plataforma Hover. Esta publicación se limita al ciclo de sensado y entrenamiento.

Cómo funciona el ciclo de entrenamiento

El flujo es: etiquetar las lecturas de una sesión en la consola, entrenar un modelo en la nube, cargar el modelo compilado de vuelta en la placa, y verlo clasificar lecturas en vivo. Una vuelta completa de ese ciclo cabe en una sola salida de campo.

Dos detalles de implementación importan aquí.

Clasifica por cromaticidad, no por brillo crudo. Bajo el agua la luz ambiente cambia todo el tiempo con la profundidad, la nubosidad y la hora, así que el brillo RGB crudo es un blanco móvil. La cromaticidad normaliza el color contra el brillo, y eso es lo que le permite al modelo seguir el corrimiento verde-café frente al azul que produce una mancha de sargazo, en vez de solo seguir qué tan soleado está.

El modelo no finge saber lo que no sabe. El proceso de entrenamiento tiene pisos estrictos. No entrena con menos de 40 muestras etiquetadas. Corre una prueba de separabilidad sobre datos apartados antes de aceptar un modelo, y si los rasgos no separan en-mancha de agua-abierta en sus datos, lo dice en vez de entregar un modelo igual. También marca los resultados que se ven sospechosamente buenos con muy pocos datos, porque un puntaje alto sobre un conjunto pequeño suele significar que el modelo memorizó sus lecturas en vez de aprender algo general. El número de precisión que se muestra al entrenar sale del mismo código evaluador que corre en la placa, así que lo que ve en la consola es lo que hace el hardware en el campo.

Pusimos esos controles porque queríamos una herramienta a la que no se le pueda sacar una respuesta con confianza a partir de datos malos. Por la misma razón, aquí no hacemos afirmaciones de precisión. El modelo todavía no se ha corrido contra un florecimiento real de sargazo. Esa prueba de campo viene en camino; hasta que ocurra, tome este kit como un método que funciona, no como un resultado terminado.

Cómo participar

Este es un problema genuinamente abierto, y preferimos tener a más gente probándolo que seguir iterando solos. Algunas formas de ayudar:

  • Corra el kit en otra ubicación y comparta lo que encuentre, bueno o malo.
  • Agregue un canal de infrarrojo cercano y vea si mejora la separabilidad frente a solo RGB.
  • Pruebe otro objetivo de detección con el mismo ciclo de entrenamiento.
  • Porte el firmware a otra placa.
  • Abra un issue si algo no compila, no flashea o no tiene sentido.

El repositorio está bajo licencia Apache-2.0. https://github.com/hoverhq/sargassum-drifter

Preguntas frecuentes

¿Esto es toda la plataforma Hover?

No. Esta publicación incluye solo la consola de entrenamiento, el modelo y el firmware de entrenamiento. La red mesh y el resto de la plataforma Hover no están incluidos.

¿El modelo ya fue validado en un florecimiento real de sargazo?

Todavía no. Esa prueba de campo aún está pendiente. Tome todo en este kit como un método que vale la pena probar, porque aún no está comprobado como detector en el campo.

¿Qué hardware necesito para usarlo?

Una placa ESP32-S3 con un arreglo de cuatro sensores RGB, igual al que apunta el firmware de entrenamiento. El repositorio trae las instrucciones para compilar y flashear.

¿Por qué RGB en vez de infrarrojo cercano?

Sobre todo por costo y simplicidad. Los sensores RGB son baratos y fáciles de conseguir. Nos gustaría que alguien agregue un canal de infrarrojo cercano y compare los resultados.

¿Bajo qué licencia está?

Apache-2.0, incluida la concesión de patentes.

¿Puedo usarlo para algo que no sea sargazo?

Sí. El ciclo de entrenamiento (etiquetar, entrenar, cargar en la placa, correr) no es específico del sargazo. Si lo adapta a otro objetivo de detección, cuéntenos cómo le fue.

¿Con quién hablo si quiero colaborar desde las ciencias del mar?

Abra un issue en el repositorio, o escríbanos a través de hoverfeed.com. Buscamos específicamente a investigadores marinos, operadores de sensores y drones, y personas de ciencia ciudadana para probar esto en el campo.

¿Construyendo sobre esto?

Nos gustaría saber de investigadores marinos, operadores de sensores y drones, y personas de ciencia ciudadana que estén probando el kit en el campo.