Cada pez, cada cuadro, en una planilla.
FishAI convierte el video de un tanque filmado desde arriba en datos: cada pez en cada cuadro, con su especie, su posición y un número de seguimiento. De ahí salen el conteo, por dónde nada cada especie, a qué velocidad y cuán diverso es el tanque. Es para laboratorios y grupos de investigación que filman peces. El modelo lo entrenamos nosotros, con filmaciones y anotaciones propias.
Probado contra un tanque conocido.
Filmamos un tanque del que sabíamos el stock: 20 corydoras, 15 mollies, 9 cebritas y 4 guppies, 48 peces. Todo lo que sigue sale de esa corrida, sin editar: 8 minutos y 18 segundos de video 1080p.
- cuadros analizados
- 29.880
- de los cuadros con la cuenta a dos peces o menos de los 48
- 88 %
En naranja, el conteo cuadro a cuadro: con el tanque lleno siempre hay un pez tapando a otro. En negro, el que entrega FishAI, la mediana de los últimos 181 cuadros (tres segundos en este video).
La cuenta de cada especie contra el stock real, en línea punteada. En promedio: 20,2 corydoras, 15,0 mollies y 4,2 guppies. Las cebritas quedan cortas: 7,6 de 9.
- Revisión humana
- En un tanque de 15 peces, una persona revisó 30 cuadros y FishAI los tenía todos bien. En el de 48, ningún cuadro suelto sale perfecto, por eso los números de esta página son promedios y conteos estabilizados.
- Modelo
- mAP50-95 de 0,93 y mAP50 de 0,995 sobre cuadros apartados del entrenamiento. Son de las mismas filmaciones, así que es una cifra optimista.
- Fuera de lo entrenado
- El modelo nunca vio un tanque así de lleno: se entrenó con tanques con menos peces. Esta corrida es la prueba más difícil que tenemos.
Dónde nada cada especie.
Con la posición de cada pez en cada cuadro, el tanque se ve distinto según quién lo use.
Un mapa de calor por especie, cada uno a su propia escala. Mollies y guppies pasan la mitad de las detecciones cerca de una pared (52 % y 47 %, a menos de 120 píxeles); corydoras y cebritas, mucho menos (25 % y 18 %). Las manchas de las corydoras son peces quietos en el fondo.
Los diez recorridos más largos de cada especie. Una corydora llegó a 2 minutos y 19 segundos con el mismo número. Las cebritas son las más rápidas, 169 píxeles por segundo de mediana contra 70 de las corydoras, y sus recorridos más largos duran entre 12 y 18 segundos.
Diversidad de Shannon (H′) en ventanas de cinco segundos, contra la del stock real, 1,25. La mediana medida es 1,24, y el 87 % de las ventanas queda a 0,05 o menos.
De la filmación a la planilla.
Un video entra, y sale todo lo de arriba, en archivos comunes.
- VideoUn archivo, una tanda de archivos o la cámara en vivo.
- DetectaCada pez, con su especie y su confianza.
- SigueUn número por pez mientras se lo pueda seguir.
- CuentaTotal y por especie, estabilizado.
- CSVUna fila por cuadro y una por pez detectado.
| frame | count | stabilized_count | mean_conf | species_counts |
|---|---|---|---|---|
| 14040 | 46 | 48 | 0.826 | cebrita:7|corydora:21|guppy:4|molly:14 |
| frame | track_id | species | x | y | w | h | conf |
|---|---|---|---|---|---|---|---|
| 14040 | 17637 | corydora | 492.8 | 803.0 | 100.8 | 118.0 | 0.772 |
| 14040 | 18283 | corydora | 749.4 | 525.7 | 189.2 | 74.8 | 0.903 |
| 14040 | 18591 | molly | 1145.0 | 789.6 | 123.5 | 66.0 | 0.933 |
| 14040 | 16577 | molly | 495.1 | 135.3 | 134.8 | 46.3 | 0.82 |
| 14040 | 18999 | guppy | 1465.4 | 841.5 | 99.0 | 137.3 | 0.963 |
| 14040 | 19070 | guppy | 1470.1 | 265.5 | 71.2 | 109.3 | 0.557 |
| 14040 | 18900 | cebrita | 810.9 | 630.1 | 111.8 | 104.7 | 0.907 |
| 14040 | 18910 | cebrita | 1234.8 | 353.8 | 41.7 | 157.0 | 0.758 |
Filas reales de la misma corrida: el cuadro 14.040, a los 3:54, dentro de los ocho segundos del video de arriba. En summary.csv faltan, por espacio, las columnas de hora y de números activos. Los peces 17637 y 18283 ya tenían ese número cuatro segundos antes.
Con la cámara en vivo, otra persona puede mirar el tanque procesado desde su navegador.
- Por cuadro
- Hora, número de cuadro, conteo, conteo estabilizado, números activos, confianza media y cuenta por especie.
- Por pez
- Cuadro, número de seguimiento, especie, posición, ancho y alto de la caja, y confianza.
- Gráficos
- Diez desde cualquier corrida: conteo, mapa de calor, trayectorias, velocidad, permanencia, dirección, diversidad y confianza, entre otros.
- Validación
- Marcás a mano lo que hay en el tanque (o traés anotaciones MOT, YOLO o COCO) y FishAI se compara: precisión y exhaustividad, MOTA, MOTP, IDF1 y cambios de número, con matriz de confusión, Bland-Altman y calibración.
- API
- Una API REST para cámaras, detecciones, recorridos, estadísticas y exportación.
- Tus especies
- Hoy distingue corydora, molly, guppy y cebrita. Para otras, se entrena con tus filmaciones: la máquina propone las cajas y una persona corrige la especie y los errores antes de que el cuadro entre al entrenamiento.
- Velocidad
- Con una placa de video común procesa video 1080p a unos 34 cuadros por segundo, con 48 peces en el tanque.
Lo que todavía no hace.
Para que sepas qué medir con FishAI y qué no.
- Identidad
- En un tanque lleno, un pez cambia de número cuando se cruza con otro o queda tapado: en esta corrida hubo 17.618 números para 48 peces. Sirve para recorridos de segundos a minutos, no para seguir a un individuo toda la sesión.
- Unidades
- Posiciones y velocidades van en píxeles. Todavía no hay calibración a centímetros.
- Profundidad
- Una sola cámara desde arriba: ve el plano del tanque, no a qué altura nada cada pez.
¿Investigás con peces?
Contanos qué especies tenés, cómo filmás y qué querés medir. Mandanos un video y te devolvemos sus datos.