> For the complete documentation index, see [llms.txt](https://docs.augelab.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.augelab.com/spanish/function-blocks/blocks-reference/ai-blocks/object-detection-d-fine.md).

# Object Detection (D-FINE)

Este bloque de función realiza detección de objetos en tiempo real sobre una imagen de entrada. Permite elegir un tamaño de modelo (compromiso entre velocidad y precisión), filtrar las clases de objeto a detectar, ajustar un umbral de confianza y, opcionalmente, dibujar rectángulos de color en la imagen de salida.

## 📥 Entradas

* `Image` — La imagen que se analizará para detectar objetos.

## 📤 Salidas

* `Result` — Imagen anotada con bounding boxes y etiquetas (disponible si `Draw Boxes` está activado).
* `Boxes` — Lista de coordenadas de los bounding boxes por detección (formato: \[x1, y1, x2, y2]).
* `Labels` — Nombres de clase para cada objeto detectado.
* `Scores` — Puntaje de confianza para cada detección.

## 🕹️ Controles

* `Model` — Elige el tamaño del modelo (ej.: Nano / Small / Medium / Large / XLarge) según la velocidad de inferencia y la precisión que necesites.
* `Select Classes` — Tabla para marcar solo las clases COCO que quieres que reporte el bloque (si no marcas ninguna, permite todas las clases).
* `Draw Boxes` — Activar/desactivar el dibujo de bounding boxes y etiquetas coloreadas en la imagen de salida.
* `Threshold` — Control deslizante para fijar el umbral de confianza (0–100) para aceptar detecciones.

## 🎨 Características

* Selección de tamaño de `Model` para priorizar velocidad o precisión.
* Filtrado de clases con `Select Classes` para recibir solo lo que te interesa.
* Control del umbral con `Threshold` para reducir falsos positivos.
* Salida visual opcional con bounding boxes coloreadas y etiquetas legibles.
* Devuelve datos tanto visuales (imagen) como estructurados (`Boxes`, `Labels`, `Scores`) para su uso posterior.

## 📝 Instrucciones de uso

1. Conecta un bloque que genere imagen al input `Image`.
2. Elige un tamaño en `Model` según necesites más rapidez o más precisión.
3. Usa `Select Classes` para limitar la detección a los tipos de objetos que requieres (o déjalo vacío para aceptar todos).
4. Ajusta el `Threshold` para afinar la sensibilidad de detección.
5. Activa `Draw Boxes` si quieres obtener la imagen anotada en `Result`.
6. Usa las salidas `Boxes`, `Labels` y `Scores` en bloques posteriores para procesar o registrar los resultados.

## 📊 Evaluación

Al ejecutarlo, el bloque procesa la imagen según el `Model` y el `Threshold` seleccionados y produce las detecciones. Si `Draw Boxes` está activado, habrá una imagen anotada en `Result`; los metadatos de detección (`Boxes`, `Labels`, `Scores`) siempre estarán disponibles en sus salidas correspondientes.

## 💡 Tips y trucos

* Si faltan objetos pequeños, prueba con `Super Resolution` o evita reducir demasiado la imagen con `Image Resize`.
* Para ahorrar tiempo de procesamiento, elige un `Model` más pequeño (Nano/Small) a costa de algo de precisión.
* Recorta el área de interés antes de detectar usando `Image ROI Select` o `Image ROI` para mejorar velocidad y reducir falsos positivos.
* Para depuración visual, conecta `Result` a `Show Image` y revisa las detecciones en vivo.
* Para mantener detecciones entre frames (tracking), combina las salidas con `Object_Detection_Tracker`.
* Guarda frames con detecciones usando `Image Logger`, `Image Write` o `Record Video` para revisiones posteriores.
* Exporta metadatos (boxes / labels / scores) con `CSV Export` o `Data to JSON` para análisis y reportes.
* Monitorea el uso de la GPU con `GPU Statistics` al experimentar para elegir un `Model` adecuado a tu hardware.
* Si quieres otro comportamiento o probar otros modelos, compara con `Object Detection - Custom` u otras alternativas.

## 🛠️ Solución de problemas

* Si no ves detecciones, baja el `Threshold` o verifica que la clase deseada esté marcada en `Select Classes`.
* Si las detecciones son ruidosas, sube el `Threshold` o limita las clases en `Select Classes`.
* Si el procesamiento es muy lento, elige un `Model` más pequeño o recorta la imagen con `Image ROI Select`.
* Si las salidas (Boxes/Labels/Scores) contienen datos pero `Result` está vacía, confirma que `Draw Boxes` esté activado para obtener la imagen visual.
