# Object Detection - Custom (CPU)

Este bloque de función te permite ejecutar un detector de objetos personalizado sobre una imagen de entrada usando tus propios archivos de weight, config y class. Usa los controles para cargar los archivos del modelo, elegir qué clases detectar y ajustar el umbral de confianza. El bloque devuelve una imagen de resultado visual y también datos estructurados de detección (conteos, ubicaciones, tamaños y etiquetas) para uso posterior.

## 📥 Entradas

`Image Any`\
Imagen que será procesada por el detector personalizado.

## 📤 Salidas

`Image Any`\
Imagen anotada con las detecciones (cajas/etiquetas) dibujadas.

`Object Count`\
Número de objetos detectados en el fotograma.

`Object Locations`\
Posiciones centrales de los objetos detectados (múltiples).

`Object Sizes (w, h)`\
Ancho y alto de cada objeto detectado (múltiples).

`Object Class`\
Nombres de las clases detectadas (múltiples).

`Rectangles`\
Coordenadas de las cajas delimitadoras para cada detección (múltiples).

## 🕹️ Controles

`Open Weight File`\
Botón para cargar el archivo de pesos del detector (por ejemplo, .weights).

`Open Config File`\
Botón para cargar el archivo de configuración del detector (por ejemplo, .cfg).

`Open Class File`\
Botón para cargar el archivo de nombres de clases (archivo de texto plano). Después de cargarlo, los nombres de las clases se llenan en la tabla.

`Class Names`\
Tabla que muestra las clases disponibles. Alterna las filas para seleccionar qué clases debe informar el detector.

`Confidence Threshold %`\
Deslizador para establecer la confianza mínima requerida para que se informe una detección. Aumenta el valor para reducir falsos positivos; disminúyelo para capturar detecciones más débiles.

## 🎯 Características

* Carga sencilla de recursos de modelo personalizados mediante botones de UI.
* Subconjunto de clases seleccionables para centrar la detección en objetos relevantes.
* Devuelve tanto salida visual como datos: imagen anotada, conteos, posiciones, tamaños, etiquetas de clase y rectángulos.
* Funcionamiento compatible con CPU para sistemas sin GPU.

## 📝 Instrucciones de uso

1. Haz clic en `Open Weight File` y selecciona tu archivo de pesos del detector.
2. Haz clic en `Open Config File` y selecciona el archivo de configuración correspondiente.
3. Haz clic en `Open Class File` y carga el archivo de texto con los nombres de las clases. La tabla `Class Names` se llenará.
4. Alterna las filas en `Class Names` para elegir qué clases quieres detectar.
5. Alimenta una imagen al puerto `Image Any`.
6. Ajusta `Confidence Threshold %` para controlar cuán estrictas deben ser las detecciones.
7. Lee los valores de salida o conecta bloques posteriores para reaccionar ante las detecciones.

## 📊 Qué hace el bloque al ejecutarse

* Procesa la imagen de entrada con el detector cargado usando las clases seleccionadas y el umbral de confianza establecido.
* Produce una imagen anotada en `Image Any` y datos de detección en las demás salidas para conteo, medición, seguimiento, registro o toma de decisiones.

## 💡 Consejos y trucos

* Si quieres inspeccionar visualmente los resultados en una ventana más grande, conecta la salida `Image Any` al bloque `Show Image`.
* Para dibujar superposiciones personalizadas o formatear las anotaciones de detección de otra forma, usa el bloque `Draw Detections` con las salidas `Rectangles` y de conteo.
* Para aumentar el rendimiento en imágenes grandes, inserta `Image Resizer` antes de este bloque para reducir la resolución; esto suele acelerar la detección con poco impacto en la precisión.
* Limita el área de búsqueda para acelerar y estabilizar resultados recortando con `Image ROI Select` o `Image ROI` antes de alimentar la imagen.
* Para mantener un registro de los fotogramas con detecciones, conecta la salida de imagen anotada a `Image Logger` o `Image Write`.
* En escenarios continuos donde quieras mantener identidades entre fotogramas, empareja este bloque con `Object_Detection_Tracker` usando las salidas de rectángulos y clases.
* Si necesitas un detector alternativo rápido para pruebas, compara resultados con los bloques `Object Detection` o `Object Detection (D-FINE)` (si están disponibles) para encontrar el mejor equilibrio entre velocidad y calidad.

## 🛠️ Solución de problemas

* No aparecen clases después de cargar el archivo de clases
  * Asegúrate de haber seleccionado el archivo correcto (texto plano con una clase por línea). Usa `Open Class File` de nuevo si es necesario.
* El detector informa demasiados falsos positivos
  * Aumenta `Confidence Threshold %`. También prueba redimensionar la imagen con `Image Resizer` o restringir el área con `Image ROI Select`.
* El detector no detecta objetos pequeños o lejanos
  * Reduce cuidadosamente `Confidence Threshold %`, o pasa una imagen de mayor resolución al bloque (evita tamaños extremadamente grandes — usa `Image Resizer` para equilibrar velocidad y detalle).
* Rendimiento lento en CPU
  * Reduce la resolución de entrada con `Image Resizer` o recorta la región de interés con `Image ROI Select`. Considera ejecutar la detección con menor frecuencia (por ejemplo, procesamiento por lotes).
* Necesitas actuar sobre las detecciones en otras partes del flujo
  * Usa las salidas numéricas y estructuradas (`Object Count`, `Object Locations`, `Rectangles`, `Object Class`) para alimentar bloques lógicos, de registro o de seguimiento como `Object_Detection_Tracker`.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.augelab.com/spanish/bloques-de-funcion/ai-blocks/object-detection-custom-cpu.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
