Guía de Anotaciones en Roboflow - Proyecto SAMP

Author

Edlin Guerra Castro

1 Introducción al proceso de anotación en Roboflow

Esta guía tiene como propósito estandarizar el proceso de anotación de imágenes del proyecto PAPIIT IN208124 en la plataforma Roboflow. Para garantizar que el modelo de visión por computadora alcance métricas de alta precisión, es fundamental que las anotaciones sean consistentes, rigurosas y coherentes en todo el conjunto de datos. Las prácticas aquí descritas siguen las recomendaciones del blog oficial de Roboflow (Tips for How to Label Images) y están adaptadas a los objetivos de este proyecto.

El procesos de anotación ocurre desde el worspace PAPIIT 2024, proyecto peces_Bajo10 (Fig. 1). En la barra lateral izquierda debe elegir el espacio Annotate. En este espacio observará tres grandes columnas: Unasigned usada para cargar imágenes, Annotating usada para el proceso de anotación, y Dataset que contiene las imágenes ya anotadas. Dentro de las dos últimas columnas habrán carpetas (Folders) de dos tipos:

  • imágenes de las cámaras en Bajo de Diez (p. ej. train.images_ago_2024)
  • Imágenes de especies de iNaturalist (p. ej. Ephinephelus guttatus)
Figura 1: Workspace del proyecto en Roboflow. Espacio Annotate

El primer tipo incluye imágenes de las cámaras del proyecto, el segundo tipo son imágenes de especies obtenidas de iNaturalist, necesarias para fortalecer el modelo de aprendizaje. Cada carpeta será asignada a un etiquetador autorizado (labeler) para tal fin, y se observará en la columna Annotating.

2 Buenas Prácticas de anotación

2.1 Polígonos o cajas ajustadas al contorno del objeto

Roboflow ofrece distintas herramientas de anotación, pero para el proyecto de peces las dos más relevantes son las cajas delimitadoras (bounding boxes) y los polygons. Las bounding boxes son rectángulos que se colocan alrededor del pez de interés; permiten anotar de forma rápida y eficiente. Son ideales cuando se busca identificar individuos sin requerir precisión en la forma exacta. Por otro lado, los polygons permiten seguir el contorno real del pez con mayor detalle. Aunque requieren más tiempo de anotación, los polígonos aportan mayor fidelidad en modelos que se beneficien de la forma estructural del pez y en casos donde no se disponen de muchas imágenes para entrenar un modelo.

  • Cuando se utilicen polígonos para anotar peces, traza el contorno general de cada individuo, siendo fiel a la forma del pez pero sin ajustar al borde exacto del cuerpo. Como se aprecia en la imagen Fig. 2 (a), es recomendable dejar un pequeño margen de fondo (2 a 5 píxeles) alrededor del pez, esto ayuda al modelo a aprender mejor.
  • Cuando se usen cajas, estas deben abarcar el objeto completo, sin cortar partes o bordes del pez, pero sin incluir espacio vacío innecesario. Cuadros con exceso de espacio como en Fig. 2 (b), introducen ruido al modelo de aprendizaje.
(a) Polígono con pequeño margen de espacio al contorno real del pez
(b) Cajas ajustadas bien (check verde). Caja ajustada mal (tacha roja)
Figura 2: Tipos de formas para anotar peces en imágenes

2.2 Peces cortados por los bordes de la imagen

  • Cuando un pez aparece parcialmente en los bordes de la imagen, el criterio para etiquetarlo depende de responder la pregunta ¿es claramente reconocible la especie?:
    • Si sí es reconocible Fig. 3 (a): etiquéta con una caja ajustada la especie correspondiente. Si ta usaste polígono, está bien, no es necesario modificar las anotaciones ya hechas.
    • Si no es reconocible Fig. 3 (b): no anotes partes sueltas o desconectadas del cuerpo (e.g. aletas flotantes, cabeza, etc), ya que no aportan valor al aprendizaje del modelo.
(a) Pez incompleto identificable y correctamente anotado
(b) Segmento de pez erradamente anotado (tacha roja).
Figura 3: Situaciones en las que el pez aparece parcialmente en los bordes de la imagen

2.3 Peces borrosos solo si son relevantes

En imágenes donde uno o varios peces aparecen muy borrosos (ejemplo Fig. 4) y no son identificables visualmente, pero forman parte de un cardumen donde otros individuos sí son claramente identificables, puede anotarse con la misma especie solo si se cumplen criterios estrictos:

  • Hay al menos un individuo claro y etiquetado de la especie.

  • Se trata de una especie gregaria o conocida por formar cardúmenes homogéneos.

  • El pez borroso coincide en tamaño, posición, forma y contexto con los demás del cardumen.

  • La inferencia es consistente y verificable por alguna característica del pez borrozo, una mancha o forma característica de la especie.

En este caso, se recomienda anotar con caja ajustada al individuo que sí es identificable, luego usar la herramienta Box prompting para que Roboflow detecte automáticamente todas las formas de individuos que coinciden. Se recomienda usar Confidense del 70% y Overlap mayor a 70%. Ambas métricas pueden ser aumentadas para descartar peces borrosos, o disminuida para incluir más.

Por otra parte, si el pez borroso está aislado, mezclado con otras especies:

  • Anotar como pez_borroso si el pez es reconocible como tal pero no identificable. La etiqueta unidentifiable también puede ser usada en estos casos, ya que será eventualmente reemplazada por pez_borroso de forma automática.

  • No anotar si la forma o contexto son demasiado ambiguos.

Ejemplo de imagen con peces borrosos en un cardumen

Anota al pez identificable (pasos 1 y 2), luego uso del box prompting (paso 3, flecha amarilla)

Eliminar polígonos innecesarios (clicl derecho y Delete) y aprobar las demás predicciones

Continuar anotando a los peces de la imágen

Verificar anotaciones
Figura 4: Proceso de anotación de una imagen con peces borrosos en cardumen

2.4 Oclusiones y uso de capas

Cuando un pez esté parcialmente cubierto por otro pero sea claramente reconocible, debe anotarse como si estuviera completamente visible. Para ello traza el contorno estimado completo del pez ocluido, incluso si una parte queda visualmente cubierta por otro pez. Roboflow permite manejar el orden de las capas para representar visualmente qué objeto está adelante y cuál está detrás. Usa las opciones de clic derecho sobre la etiqueta (Bring to front o Send to back) para establecer esta jerarquía visual.

El protocolo sugerido para peces ocluídos es:

  1. Anota primero el pez del fondo (el ocluido), con una caja ajustada preferiblemente, así evitas “adivinar” por donde va la forma del pez.
  2. Luego anota el pez del frente, preferiblemente con su contorno completo.
  3. Si hay varias capas de peces, sigue la secuencia en orden, desde el fondo hasta al frente.
  4. Usa el orden de capas para que el pez del frente quede encima del que está detrás.
  5. No secciones ni recortes las cajas ajustadas cuando el pez es parcialmente obstruido por corales, algas u otro pez. En zonas de oclusión; esto introduce formas falsas que el modelo puede aprender incorrectamente.

Anotaciones vistas como clases

Anotaciones vistas como capas ordenadas
Figura 5: Vista de anotaciones como clases transparentes y como capas

2.5 Peces desconocidos

Las imágenes en carpetas con nombre de especies tienen como propósito fortalecer al modelo para detectar especies de la región pero con baja frecuencia en las imágenes de Bajo de 10.

En muchas de estas imágenes de especies específicas suelen haber otros peces de otras especies que también deben ser anotados aun que no son peces de la zona. En estos casos se debe anotar la especie con una caja ajustada e identificar con el nombre científico (ver la guía visual). Si la especie no está en la guía o hay dudas, se debe asignar la clase Por identificar.

Los peces desconocidos que no se pudieron identificar deben siempre quedar en la fracción de imágenes para Train de desarrollo del modelo, nunca en Valid o en Test. Este paso se describe más adelante, ya que lo aplicará manualmente a cada imagen una vez todas las imágenes de la carpeta fueron anotadas y transferida al Dataset.

3 Proceso de anotación

Cuando todas las imágenes de una carpeta en Annotating ya han sido anotadas, se les debe asignar una etiqueta que puede ser iNaturaslit o camaras. Esto se hace haciendo clic sobre los tres puntos del folder y elegir la opción Tag images. Se desplegará una ventana con la opción de agregar el tag, solo debe elegir con un clic el correspondiente, no es necesario escribir.

Luego, ingrese al folder con las imágenes ya anotadas y confirme que no quedó ninguna sin anotar (Unnanotated 0) y presione el botón Add images to Dataset. Elija como método Split images Between Train/Valid/Test en 70%, 20%, 10% respectivamente. Note que aleatoriamente las imágenes serán asignadas a Train, Valid o Test. Cuando culmine, notará que ahora el folder respectivo aparece en la columna Dataset.

Una vez en Dataset, entre al folder y verifique que la imagen con peces con la etiqueta Por identificar esté en Train, caso contrario, modifique la asignación desde el panel de anotaciones [@fig.train]. Este proceso se hace de foto por foto en el conjunto de imágenes del folder que anotó.

Figura 6: Ejemplo de cambio de uso de una imagen desde Valid a Train

4 Guía Visual de Especies Detectadas en el Proyecto SAMP

A continuación se presenta una guía fotográfica rápida con los nombres de las especies más frecuentes observadas hasta ahora. Todas las imágenes de esta guía son del sitio web Fishes: Greater Caribbean de Ross Robertson y James Van Tassell. Las anotaciones deben usar las clases ya enlistadas en Roboflow.

Abudefduf saxatilis

Acanthurus chirurgus

Acanthurus coeruleus

Anisotremus virginicus

Ocyurus chrysurus

Caranx bartholomaei

Caranx latus

Caranx lugubris

Caranx ruber

Chaetodon ocellatus

Chaetodon striatus

Chaetodon sedentaris

Chaetodon capistratus

Diodon holocanthus

Diodon hystrix

Halichoeres bivittatus

Thalassoma bifasciatum juvenil

Scarus iseri juvenil

Scarus taeniopterus juvenil

Haemulon juvenil

Haemulon flavolineatum

Haemulon sciurus

Haemulon plumierii

Lutjanus griseus

Kyphosus bigibbus

Kyphosus vaigiensis

Holacanthus bermudensis

Holacanthus ciliaris

Pomacanthus arcuatus

Pomacanthus paru

Hypoplectrus ecosur

Epinephelus morio

Lachnolaimus maximus

Cephalopholis cruentata

Cephalopholis cruentata Juvenil

Cephalopholis fulva

Cephalopholis fulva bicolor

Cephalopholis fulva amarillo

Nicholsina usta

Nicholsina usta juvenil

Scarus coelestinus

Scarus iseri

Scarus coeruleus

Scarus taeniopterus

Sparisoma rubripinne

Sparisoma viride

Scarus guacamaia

Scarus coeruleus juvenil

Scarus guacamaia juvenil

Sparisoma aurofrenatum

Sparisoma rubripinne FI (fase intermedia)

Sparisoma viride FI (fase intermedia)

Aulostomus maculatus

Sphyraena barracuda

Stegastes planifrons

Stegastes diencaeus

Stegastes leucostictus

Chromis scotti

Chromis scotti juvenil

Stegastes planifrons juvenil

Stegastes diencaeus juvenil

Stegastes leucostictus juvenil

Thalassoma bifasciatum fase intermedia

Halichoeres garnoti (FI) fase intermedia

Thalassoma bifasciatum

Halichoeres garnoti

Urobatis jamaicensis

Ginglymostoma cirratum

5 Checklist para Anotadores

6 Referencias