Saltar al contenido principal

Clasificación de Objetos

La clasificación de objetos le permite entrenar un modelo de clasificación MobileNetV2 personalizado para ejecutarse en objetos rastreados (personas, coches, animales, etc.) e identificar una categoría o atributo más específico para ese objeto. Los resultados de clasificación son visibles en el panel de Detalles de Objetos Rastreados en Explorar, a través del tema MQTT securevu/tracked_object_details, en los sensores de Home Assistant a través de la integración oficial de SecureVu, o a través de los endpoints de eventos en la API HTTP.

Requisitos Mínimos del Sistema

Los modelos de clasificación de objetos son ligeros y se ejecutan muy rápido en CPU.

El entrenamiento del modelo utiliza brevemente una gran cantidad de recursos del sistema durante aproximadamente 1 a 3 minutos por ciclo de entrenamiento. En dispositivos de menor potencia, el entrenamiento puede tardar más.

Se requiere un CPU con instrucciones AVX + AVX2 para el entrenamiento y la inferencia.

Clases

Las clases son las categorías que su modelo aprenderá a distinguir. Cada clase representa una categoría visual distinta que el modelo predecirá.

Para la clasificación de objetos:

  • Defina clases que representen diferentes tipos o atributos del objeto detectado
  • Ejemplos: Para objetos person, las clases podrían ser delivery_person, resident, stranger
  • Incluya una clase none para objetos que no encajan en ninguna categoría específica
  • Mantenga las clases visualmente distintas para mejorar la precisión

Tipo de Clasificación

  • Sub etiqueta:

    • Se aplica al campo sub_label del objeto.
    • Ideal para una única identidad o tipo más específico.
    • Ejemplo: catLeo, Charlie, None.
  • Atributo:

    • Se añade como metadatos al objeto, visible en el panel de Detalles de Objetos Rastreados en Explorar, mensajes MQTT securevu/events, y la respuesta de la API HTTP como <model_name>: <predicted_value>.
    • Ideal cuando múltiples atributos pueden coexistir de forma independiente.
    • Ejemplo: Detectar si una person en una obra de construcción lleva casco o no, y si lleva chaleco amarillo o no.
nota

Un objeto rastreado solo puede tener una única sub etiqueta. Si usa Disparadores o Reconocimiento Facial y configura un modelo de clasificación de objetos para person usando el tipo sub etiqueta, es posible que su sub etiqueta no se asigne correctamente, ya que depende de qué enriquecimiento complete primero su análisis. Esto también podría ocurrir con objetos car a los que se asigna una sub etiqueta para un transportista de entregas. Considere usar el tipo attribute en su lugar.

Requisitos de Asignación

Las sub etiquetas y los atributos solo se asignan cuando se cumplen ambas condiciones:

  1. Umbral: Cada intento de clasificación debe tener una puntuación de confianza que cumpla o supere el threshold configurado (predeterminado: 0.8).
  2. Consenso de Clase: Después de al menos 3 intentos de clasificación, el 60% de los intentos deben coincidir en la misma etiqueta de clase. Si la clase de consenso es none, no se realiza ninguna asignación.

Esta verificación de dos pasos evita falsos positivos al requerir predicciones consistentes en múltiples fotogramas antes de asignar una sub etiqueta o atributo.

Casos de Uso de Ejemplo

Sub etiqueta

  • Mascota conocida vs desconocida: Para objetos dog, establezca la sub etiqueta con el nombre de su mascota (p. ej., buddy) o none para otros.
  • Camión de correos vs coche normal: Para car, clasifique como mail_truck vs car para filtrar llegadas importantes.
  • Persona de reparto vs no reparto: Para person, clasifique delivery vs visitor basándose en el uniforme o accesorios.

Atributos

  • Mochila: Para person, añada el atributo backpack: yes/no.
  • Casco: Para person (obra de trabajo), añada helmet: yes/no.
  • Correa: Para dog, añada leash: yes/no (útil para reglas de parque o jardín).
  • Portaescaleras: Para truck, añada ladder_rack: yes/no para identificar vehículos de servicio.

Configuración

La clasificación de objetos se configura como un modelo de clasificación personalizado. Cada modelo tiene su propio nombre y configuración. Debe listar qué etiquetas de objetos deben clasificarse.

classification:
custom:
dog:
threshold: 0.8
object_config:
objects: [dog] # object labels to classify
classification_type: sub_label # or: attribute

Una configuración opcional, save_attempts, puede establecerse como clave bajo el nombre del modelo. Esto define el número de intentos de clasificación que se guardan en la pestaña Clasificaciones Recientes. Para los modelos de clasificación de objetos, el valor predeterminado es 200.

Entrenamiento del modelo

La creación y el entrenamiento del modelo se realizan dentro de la interfaz de usuario de SecureVu usando la página Clasificación. El proceso consta de dos pasos:

Paso 1: Nombre y Definición

Introduzca un nombre para su modelo, seleccione la etiqueta de objeto a clasificar (p. ej., person, dog, car), elija el tipo de clasificación (sub etiqueta o atributo) y defina sus clases. SecureVu incluirá automáticamente una clase none para los objetos que no encajan en ninguna categoría específica.

Por ejemplo: Para clasificar sus dos gatos, cree un modelo llamado "Nuestros Gatos" y cree dos clases, "Charlie" y "Leo". Una tercera clase, "none", se creará automáticamente para otros gatos del vecindario que no sean los suyos.

Paso 2: Asignación de Ejemplos de Entrenamiento

El sistema generará automáticamente imágenes de ejemplo de los objetos detectados que coincidan con la etiqueta seleccionada. Se le guiará clase por clase para seleccionar qué imágenes representan esa clase. Las imágenes no asignadas a una clase específica se asignarán automáticamente a none cuando complete la última clase. Una vez procesadas todas las imágenes, el entrenamiento comenzará automáticamente.

Al elegir qué objetos clasificar, comience con un número pequeño de clases visualmente distintas y asegúrese de que sus muestras de entrenamiento coincidan con los puntos de vista de la cámara y las distancias típicas de esos objetos.

Si los ejemplos de algunas de sus clases no aparecen en la cuadrícula, puede continuar configurando el modelo sin ellos. Las nuevas imágenes comenzarán a aparecer en la vista Clasificaciones Recientes. Cuando sus clases faltantes sean detectadas, clasifíquelas desde esta vista y vuelva a entrenar su modelo.

Mejora del Modelo

  • Planteamiento del problema: Mantenga las clases visualmente distintas y relevantes para los tipos de objetos elegidos.
  • Recopilación de datos: Use la pestaña Clasificación Reciente del modelo para reunir ejemplos equilibrados en diferentes momentos del día, condiciones meteorológicas y distancias.
  • Preprocesamiento: Asegúrese de que los ejemplos reflejen recortes de objetos similares a los cuadros de SecureVu; mantenga el sujeto centrado.
  • Etiquetas: Mantenga los nombres de las etiquetas cortos y consistentes; incluya una clase none si planea ignorar predicciones inciertas para sub etiquetas.
  • Umbral: Ajuste threshold por modelo para reducir asignaciones incorrectas. Comience en 0.8 y ajuste según la validación.

Depuración de Modelos de Clasificación

Para solucionar problemas con los modelos de clasificación de objetos, habilite el registro de depuración para ver información detallada sobre los intentos de clasificación, las puntuaciones y los cálculos de consenso.

Habilite los registros de depuración para los modelos de clasificación añadiendo securevu.data_processing.real_time.custom_classification: debug a su configuración de logger. Estos registros son detallados, así que mantenga esto habilitado solo cuando sea necesario. Reinicie SecureVu después de este cambio.

logger:
default: info
logs:
securevu.data_processing.real_time.custom_classification: debug

Los registros de depuración mostrarán:

  • Probabilidades de clasificación para cada intento
  • Si las puntuaciones cumplen con el requisito de umbral
  • Cálculos de consenso y cuándo se realizan las asignaciones
  • Historial de clasificación de objetos y puntuaciones ponderadas