Una inmersión profunda en el

comportamiento animal

a través de la

visión por computadora

Quiénes somos

Alejandra Alamillo Paredes

Alejandra Alamillo Paredes

Elio Guarionex Lagunes Díaz

Elio Guarionex Lagunes Díaz

Octavio Pérez Maqueo

Octavio Pérez Maqueo

Energía y

ambiente

Energías Marinas Renovables

¿Qué son?

  • Fuentes de energía renovable que utilizan el potencial energético de los océanos

Tipos de energías marinas renovables

Gradiente térmico

Gradiente térmico

Gradiente salino

Gradiente salino

Biomasa marina

Biomasa marina

Oleaje

Oleaje

Eólica marina

Eólica marina

Corrientes y mareomotriz

Corrientes y mareomotriz

Tecnologías para aprovechar las corrientes marinas

  • Dispositivos que utilizan la dirección en el flujo de una marea o una corriente marina:
  • Sistema de efecto Venturi
  • Cometa de corriente
  • Álabe oscilante
  • Tornillo de Arquímedes
  • Turbina de flujo axial
  • Turbina de flujo transversal

Efectos ambientales

  • Al ser una nueva tecnología, muchos se los efectos que puedan provocar en el ambiente son desconocidos.

Experimentos en canal de corriente

  • IINGEN-UNAM

Experimentos en canal de corriente

  • ¿Cómo utilizan los peces el espacio en un canal de corriente?]
  • ¿Cambia esta utilización al instalar estas turbinas?
  • ¿Hay conflicto?

Análisis de video con IA para medir el uso del espacio

  • Pensamos entrenar una inteligencia artificial para seguir a los peces a lo largo de la grabación e identificar distancias al sitio donde estaría la turbina.
  • Intentos previos en ImageJ
    • Mucho consumo de RAM
    • Mucho volumen de datos intermedios

Object tracking clásico

  • Algoritmo Lukas-Canade
  • Requeriría algo de preproceso

Un poco de conceptos de inteligencia artificial

  • En lugar de dar una serie de instrucciones codificadas, dejamos que el modelo aprenda a partir de decirle lo que hay en una imagen (u otro tipo de fuente)

Son árboles que alcanzan un tamaño de 5–20 m de alto. Hojas profundamente lobadas, escabrosas a casi glabras y ásperas en la haz, aplicado-tomentosas en el envés, con 28–43 pares de nervios secundarios partiendo de los nervios primarios más largos; pecíolos hasta 7 dm de largo, uncinado-puberulentos.

Guarumbo

Guarumbo

Visión por computadora

  • Subimos los videos los cuales serán muestreados automáticamente en Roboflow
  • Etiquetamos las imágenes

Entrenamos un modelo pre-entrenado

  • YOLO de Ultralytics.
  • You Only Look Once: sólo necesita ver una ocasión en la red neuronal, por eso sirve para tiempo real
  • El más avanzado.
  • Puro software libre: AGPL-3.0
from ultralytics import YOLO
from roboflow import Roboflow

rf = Roboflow(api_key="********************")
project = rf.workspace("fish-tracking-s61ch").project("fish-tracking-8malz")
version = project.version(3)
dataset = version.download("yolov11") 

model = YOLO("yolo11n.pt")

augmentation_params = {
    "hsv_h": 0.05,  
    "hsv_v": 0.3    
}

model.train(data="/home/datamarindo/Fish-tracking-3/data.yaml", 
            epochs = 50, 
            imgsz = 640, 
            device = 0,
            augment=True, 
            **augmentation_params )

model.val(data="/home/datamarindo/Fish-tracking-3/data.yaml", model="/home/datamarindo/runs/detect/train/weights/best.pt")

Resultados del entrenamiento

Validating runs/detect/train4/weights/best.pt...
Ultralytics 8.3.74 🚀 Python-3.10.16 torch-2.6.0+cu124 CUDA:0 (NVIDIA GeForce RTX 3060, 11940MiB)
YOLO11n summary (fused): 238 layers, 2,582,347 parameters, 0 gradients, 6.3 GFLOPs
                 Class     Images  Instances      Box(P          R      mAP50  mAP50-95): 100%|██████████| 1/1 [00:00<00:00, 11.38it/s]
                   all         10        161      0.935      0.882      0.943      0.721
Speed: 0.1ms preprocess, 5.1ms inference, 0.0ms loss, 1.9ms postprocess per image

Aplicamos el modelo

archivos = glob.glob("/home/datamarindo/peces_ale/**/*corte_vt.mp4")
restrack = YOLO("/home/datamarindo/runs/detect/train3/weights/best.pt")

archi = archivos[1]
pattern = re.compile(r'[0-9]{6}')
rboxes = []
for r in restrack.track(archi, stream = True, persist = True): 
    rboxes.append(r.boxes)
    pass 
  • Pre y post procesos: recorte de videos, cambios de resolución, vectorización, determinación de luminosidad, extracción de coordenadas de peces, (orto)rectificación de la imagen, ubicación de la coordenada central de la turbina…

  • Sólo usamos imágenes del estanque sin la turbina encendida
  • Sale bien
  • Con sólo 20 imágenes etiquetadas logramos este avance

  • Lo probamos con videos con la turbina encendida…
  • Confunde las burbujas con peces

  • Anotamos en Roboflow más imágenes, ahora con la turbina encendida:
  • Ya no confunde a las burbujas
  • Confunde por instantes a la base de la turbina con un pez (trabajable en post proceso)

  • Nos faltó etiquetar imágenes en cada condición de luz

  • Ya salen suficientemente bien las etiquetas

  • Ya podemos contar cuántos peces pasan en la cercanía de la turbina en tiempo real

  • Y podemos hacer un heatmap en tiempo real

Resultados del análisis de ocupación

Peces

libres en el mar

  • Quisiéramos obtener actividad, además de identificar por especie (requiere entrenar el modelo)
  • El video tiene largos ratos sin peces, por lo cual si lo mandamos a Roboflow se van a escoger muchos frames vacíos
  • … YOLO nos puede ayudar

  • Seleccionamos unos cuadros (frames) que tengan peces y les aplicamos el yolo-cls
  • Los frames vacíos salen etiquetados con las siguientes clases:
  • ['nematode', 'beer_glass', 'car_mirror', 'coffee_mug', 'face_powder', 'golf_ball', 'loupe', 'matchstick', 'Petri_dish', 'pick'],
  • Nos fijamos qué clases (de las mil) están en el top5
  • Usando un modelo yolo-cls vamos seleccionando aquellas imágenes que según el modelo tengan:
  • ["snail", "shark", "jellyfish", "axolotol", "dugong", "bubble", "electric_ray"]

  • Estimación monocular (con una sola cámara) de la profundidad con modelos disponibles en Huggingface 🤗):
  • Ahora con unas imágenes con objetos a distancias conocidas podríamos calibrar la escena para tener la distancia de cada pez

Salud ecosistémica y

visión por computadora

Activo Ecosistémico o Socioecosistema

Keith, H. & Vardon, Michael & Stein, John & Stein, Janet & Lindenmayer, David. (2017). Ecosystem accounts define explicit and spatial trade-offs for managing natural resources. Nature Ecology & Evolution. 1. 10.1038/s41559-017-0309-1.

Sistema de Contabilidad económica ambiental de los Ecosistemas

Cuentas y sus relaciones en el sistema

Relaciones Socioecosistémicas

Equihua M, Pérez-Maqueo O y Equihua A.2025

Equihua M, Pérez-Maqueo O y Equihua A.2025

Integridad Ecosistémica 2018

Variables Principales

Diversidad Acustica

Sitios Permanentes de Calibración y Monitoreo de la Biodiversidad (SiPeCaM)

Ventajas

  • Incorpora la dimension faunística en la evaluación de la integridad ecosistémica.
  • Permite obtener datos directos.
  • Facilita evaluar:
  • Tipo de organismo (grupos funcionales)
  • Observar directamente comportamiento (caza, cuidado parental etc.)
  • Características del habitat.
  • Uso en otro tipo de instrumentos
  • Monitoreo de especies
  • Impacto ambiental

Ejemplos

Visión por computadora y humanos

Barbero-García, I., Kuschnerus, M., Vos, S., & Lindenbergh, R. (2023). Automatic detection of bulldozer-induced changes on a sandy beach from video using YOLO algorithm. International Journal of Applied Earth Observation and Geoinformation, 117, 103185. https://doi.org/10.1016/J.JAG.2023.103185

Visión por computadora y humanos

Proença, M. C. and Mendes, R. N. (2024) Beach Surveillance: A Contribution to Automation. Journal of Geoscience and Environment Protection, 12, 155-163. doi: 10.4236/gep.2024.1212010.

Marco de cooperación, acción ética y formativa

  • Coordinar cooperación académica e institucional.
  • Protocolos para captura de video para poder medir objetos
  • Protocolos para anotación de imágenes
  • Promover capacitación y vinculación
  • Garantizar integridad y derechos de personas y fauna videograbada.

F i n