Búsqueda Semántica
La Búsqueda Semántica en SecureVu le permite encontrar objetos rastreados dentro de sus elementos de revisión utilizando la imagen misma, una descripción de texto definida por el usuario, o una generada automáticamente. Esta función crea embeddings — representaciones vectoriales numéricas — tanto para las imágenes como para las descripciones de texto de sus objetos rastreados. Al comparar estos embeddings, SecureVu evalúa sus similitudes para ofrecer resultados de búsqueda relevantes.
SecureVu utiliza modelos de Jina AI para crear y guardar embeddings en la base de datos de SecureVu. Todo esto se ejecuta de forma local.
La Búsqueda Semántica es accesible a través de la vista Explorar en la interfaz de usuario de SecureVu.
Requisitos Mínimos del Sistema
La Búsqueda Semántica funciona ejecutando un modelo de IA de gran tamaño localmente en su sistema. Los sistemas pequeños o con poca potencia, como una Raspberry Pi, no ejecutarán la Búsqueda Semántica de manera confiable o en absoluto.
Se requiere un mínimo de 8 GB de RAM para usar la Búsqueda Semántica. Se requiere un CPU con instrucciones AVX + AVX2 para ejecutar la Búsqueda Semántica. Una GPU no es estrictamente necesaria, pero proporcionará un aumento de rendimiento significativo en comparación con los sistemas que solo usan CPU.
Para un mejor rendimiento, se recomiendan 16 GB o más de RAM y una GPU dedicada.
Configuración
La Búsqueda Semántica está deshabilitada de forma predeterminada y debe habilitarse en su archivo de configuración o en la página de Configuración de Enriquecimientos de la interfaz de usuario antes de poder utilizarla. La Búsqueda Semántica es una configuración global.
semantic_search:
enabled: True
reindex: False
La base de datos de embeddings puede reindexarse desde los objetos rastreados existentes en su base de datos presionando el botón "Reindexar" en la Configuración de Enriquecimientos de la interfaz de usuario o añadiendo reindex: True a su configuración de semantic_search y reiniciando SecureVu. Dependiendo del número de objetos rastreados que tenga, puede tardar bastante tiempo en completarse y puede maximizar el uso de su CPU durante la indexación.
Si está habilitando la Búsqueda Semántica por primera vez, tenga en cuenta que SecureVu no indexa automáticamente los objetos rastreados más antiguos. Deberá reindexar como se describe anteriormente.
Jina AI CLIP (versión 1)
El modelo V1 de Jina tiene un modelo de visión capaz de embeber tanto imágenes como texto en el mismo espacio vectorial, lo que permite búsquedas de similitud imagen -> imagen y texto -> imagen. SecureVu utiliza este modelo en objetos rastreados para codificar la imagen en miniatura y almacenarla en la base de datos. Al buscar objetos rastreados mediante texto en el cuadro de búsqueda, SecureVu realizará una búsqueda de similitud texto -> imagen con este embedding. Al hacer clic en "Buscar similares" en el panel de detalles del objeto rastreado, SecureVu realizará una búsqueda de similitud imagen -> imagen para recuperar las miniaturas más coincidentes.
El modelo de texto V1 se utiliza para embeber descripciones de objetos rastreados y realizar búsquedas sobre ellas. Las descripciones pueden crearse, visualizarse y modificarse en la página Explorar al hacer clic en la miniatura de un objeto rastreado. Consulte la documentación de descripciones de objetos para obtener más información sobre cómo generar automáticamente descripciones de objetos rastreados.
Están disponibles versiones con diferentes pesos de los modelos Jina y pueden seleccionarse configurando la opción de configuración model_size como small o large:
semantic_search:
enabled: True
model: "jinav1"
model_size: small
- Configurar el modelo
largeemplea el modelo Jina completo y se ejecutará automáticamente en la GPU si corresponde. - Configurar el modelo
smallemplea una versión cuantizada del modelo Jina que usa menos RAM y se ejecuta en CPU con una diferencia de calidad de embedding muy insignificante.
Jina AI CLIP (versión 2)
SecureVu también admite el modelo V2 de Jina, que introduce soporte multilingüe (89 idiomas). En contraste, el modelo V1 solo admite inglés.
V2 ofrece solo una mejora del 3% sobre V1 en tareas de recuperación tanto texto-imagen como texto-texto, una actualización que es poco probable que produzca beneficios notables en el mundo real. Además, V2 tiene requisitos de RAM y GPU significativamente más altos, lo que lleva a mayores tiempos de inferencia y uso de memoria. Si planea usar V2, asegúrese de que su sistema tenga suficiente RAM y una GPU discreta. La inferencia en CPU (con el modelo small) usando V2 no es recomendable.
Para usar el modelo V2, actualice el parámetro model en su configuración:
semantic_search:
enabled: True
model: "jinav2"
model_size: large
Para la mayoría de los usuarios, el modelo V1 sigue siendo la opción recomendada.
Cambiar entre V1 y V2 requiere reindexar sus embeddings. Los embeddings de V1 y V2 son incompatibles, y no reindexar resultará en resultados de búsqueda incorrectos.
Aceleración por GPU
Los modelos CLIP se descargan en formato ONNX, y el modelo large puede acelerarse utilizando hardware GPU, cuando esté disponible. Esto depende de la compilación de Docker que se utilice. También puede apuntar a un dispositivo específico en una instalación con múltiples GPU.
semantic_search:
enabled: True
model_size: large
# Opcional, si se utiliza el modelo 'large' en una instalación con múltiples GPU
device: 0
Si se utiliza la compilación correcta para su GPU / NPU y el modelo large está configurado, la GPU se detectará y se utilizará automáticamente.
Especifique la opción device para apuntar a una GPU específica en un sistema con múltiples GPU (consulte las opciones de proveedor de onnxruntime).
Si no especifica un dispositivo, se utilizará la primera GPU disponible.
Consulte la documentación de Enriquecimientos Acelerados por Hardware.
Uso y Mejores Prácticas
- La Búsqueda Semántica se utiliza junto con los demás filtros disponibles en la página Explorar. Use una combinación de filtrado tradicional y Búsqueda Semántica para obtener los mejores resultados.
- Use el tipo de búsqueda por miniatura cuando busque objetos particulares en la escena. Use el tipo de búsqueda por descripción cuando intente discernir la intención de su objeto.
- Debido a cómo han sido entrenados los modelos de IA que usa SecureVu, la comparación entre distancias de embeddings de texto e imagen generalmente significa que con búsquedas multimodales (
miniaturaydescripción), los resultados que coinciden condescripciónaparecerán primero, incluso si un embedding deminiaturapuede ser una mejor coincidencia. Experimente con el ajuste "Tipo de Búsqueda" para encontrar lo que busca. Tenga en cuenta que si genera descripciones solo para objetos o zonas específicos, esto puede hacer que los resultados de búsqueda prioricen los objetos con descripciones incluso si los que no las tienen son más relevantes. - Haga que el lenguaje y el tono de su búsqueda coincidan exactamente con lo que está buscando. Si usa la búsqueda por miniatura, formule su consulta como un pie de foto. Buscar "coche rojo" puede no funcionar tan bien como "sedán rojo conduciendo por una calle residencial en un día soleado".
- La búsqueda semántica en miniaturas tiende a devolver mejores resultados cuando coincide con sujetos grandes que ocupan la mayor parte del fotograma. Las cosas pequeñas como "gato" tienden a no funcionar bien.
- ¡Experimente! Encuentre un objeto rastreado que desee probar y comience a escribir palabras clave y frases para ver qué funciona mejor para usted.
Disparadores
Los Disparadores utilizan la Búsqueda Semántica para automatizar acciones cuando un objeto rastreado coincide con una imagen o descripción especificada. Los disparadores pueden configurarse para que SecureVu ejecute acciones específicas cuando la imagen o descripción de un objeto rastreado coincide con una imagen o texto predefinido, según un umbral de similitud. Los disparadores se gestionan por cámara y pueden configurarse a través de la interfaz de usuario de SecureVu en la página de Configuración, en la pestaña Disparadores.
La Búsqueda Semántica debe estar habilitada para usar Disparadores.
Configuración
Los disparadores se definen dentro de la configuración semantic_search para cada cámara en su archivo de configuración de SecureVu o a través de la interfaz de usuario. Cada disparador consiste en un friendly_name, un type (ya sea thumbnail o description), un campo data (el ID de evento de imagen de referencia o texto), un threshold para la coincidencia de similitud y una lista de actions a realizar cuando el disparador se activa: notification, sub_label y attribute.
Los disparadores se configuran mejor a través de la interfaz de usuario de SecureVu.
Gestión de Disparadores en la Interfaz de Usuario
- Navegue a la página de Configuración y seleccione la pestaña Disparadores.
- Elija una cámara del menú desplegable para ver o gestionar sus disparadores.
- Haga clic en Añadir Disparador para crear uno nuevo o use el ícono de lápiz para editar uno existente.
- En el asistente Crear Disparador:
- Introduzca un Nombre para el disparador (por ejemplo, "Alerta Coche Rojo").
- Introduzca un Nombre Descriptivo para el disparador (por ejemplo, "Coche rojo en la cámara del garaje").
- Seleccione el Tipo (
MiniaturaoDescripción). - Para
Miniatura, seleccione una imagen que active esta acción cuando se detecte una imagen en miniatura similar, según el umbral. - Para
Descripción, introduzca texto para activar esta acción cuando se detecte una descripción de objeto rastreado similar. - Establezca el Umbral para la coincidencia de similitud.
- Seleccione las Acciones a realizar cuando se active el disparador.
Si las notificaciones webpush nativas están habilitadas, marque la casilla
Enviar Notificaciónpara enviar una notificación. Marque la casillaAñadir Sub Etiquetapara añadir el nombre descriptivo del disparador como sub etiqueta a los objetos rastreados que lo activen. Marque la casillaAñadir Atributopara añadir el ID interno del disparador (por ejemplo, "alerta_coche_rojo") como atributo de datos en el objeto rastreado que pueda procesarse a través de la API o MQTT.
- Guarde el disparador para actualizar la configuración y almacenar el embedding en la base de datos.
Cuando se activa un disparador, la interfaz de usuario resalta el disparador con un punto azul durante 3 segundos para facilitar su identificación. Además, la interfaz de usuario mostrará la última fecha/hora y el ID del objeto rastreado que activó su disparador. La marca de tiempo del último disparo no se guarda en la base de datos ni se conserva tras los reinicios de SecureVu.
Uso y Mejores Prácticas
- Disparadores por Miniatura: Seleccione una imagen representativa (ID de evento) de la página Explorar que coincida estrechamente con el objeto que desea detectar. Para mejores resultados, elija imágenes donde el objeto sea prominente y ocupe la mayor parte del fotograma.
- Disparadores por Descripción: Escriba descripciones de texto concisas y específicas (por ejemplo, "Persona con chaqueta roja") que se alineen con la descripción del objeto rastreado. Evite términos vagos para mejorar la precisión de la coincidencia.
- Ajuste del Umbral: Ajuste el umbral para equilibrar sensibilidad y especificidad. Un umbral más alto (por ejemplo, 0.8) requiere coincidencias más cercanas, reduciendo los falsos positivos pero potencialmente perdiendo objetos similares. Un umbral más bajo (por ejemplo, 0.6) es más inclusivo pero puede activarse con más frecuencia.
- Usando Explorar: Use el menú contextual o haga clic derecho / mantenga presionado sobre un objeto rastreado en la Vista de Cuadrícula en Explorar para añadir rápidamente un disparador basado en la miniatura del objeto rastreado.
- Edición de disparadores: Para la mejor experiencia, los disparadores deben editarse a través de la interfaz de usuario. Sin embargo, SecureVu garantizará que los disparadores editados en la configuración se sincronicen con los disparadores creados y editados en la interfaz de usuario.
Notas
- Los disparadores dependen de los mismos modelos Jina AI CLIP (V1 o V2) utilizados para la búsqueda semántica. Asegúrese de que
semantic_searchesté habilitado y correctamente configurado. - Reindexar embeddings (a través de la interfaz de usuario o
reindex: True) no afecta las configuraciones de los disparadores, pero puede actualizar los embeddings utilizados para la coincidencia. - Para un rendimiento óptimo, use un sistema con suficiente RAM (mínimo 8 GB, 16 GB recomendados) y una GPU para configuraciones del modelo
large, como se describe en los requisitos de Búsqueda Semántica.
Preguntas Frecuentes
¿Por qué no puedo crear un disparador en miniaturas para algún texto, como "persona con camisa azul", y hacer que se active cuando se detecte una persona con camisa azul?
Resumen: Los disparadores de texto a imagen no son compatibles porque CLIP puede confundir imágenes similares y dar puntuaciones inconsistentes, lo que hace que la automatización sea poco confiable. El mismo par palabra-imagen puede dar puntuaciones diferentes y los rangos de puntuación pueden estar demasiado cerca para establecer un umbral claro.
Los disparadores de texto a imagen no son compatibles debido a limitaciones fundamentales de la búsqueda de similitud basada en CLIP. Si bien CLIP funciona bien para consultas manuales exploratorias, es poco confiable para disparadores automatizados basados en un umbral. Los problemas incluyen la deriva de embeddings (el mismo par texto-imagen puede producir diferentes distancias de coseno con el tiempo), falta de anclaje semántico real (coincidencias visualmente similares pero incorrectas) e inestabilidad del umbral (las distribuciones de distancias dependen del conjunto de datos y a menudo están demasiado agrupadas para separar resultados relevantes de irrelevantes). En su lugar, se recomienda configurar un flujo de trabajo con disparadores de miniatura: primero use la búsqueda de texto para seleccionar manualmente de 3 a 5 objetos rastreados de referencia representativos, luego configure disparadores de miniatura basados en esa similitud visual. Esto proporciona una automatización robusta sin la ambigüedad semántica de la coincidencia de texto a imagen.