Construyendo un sistema de análisis de video con la base de datos vectorial Milvus
Cuando estaba viendo Free Guy el fin de semana pasado, sentí que había visto antes en algún lugar al actor que interpreta a Buddy, el guardia de seguridad, pero no podía recordar ninguna de sus obras. Tenía la cabeza llena de "¿quién es este tipo?". Estaba seguro de haber visto esa cara e intentaba con todas mis fuerzas recordar su nombre. Un caso similar es que una vez vi al actor principal en un video tomando una bebida que solía gustarme mucho, pero terminé sin poder recordar el nombre de la marca.
La respuesta estaba en la punta de la lengua, pero mi cerebro se sentía completamente bloqueado.
El fenómeno de la punta de la lengua (TOT) me vuelve loco cuando veo películas. Ojalá hubiera un motor de búsqueda inversa de imágenes para videos que me permitiera encontrar videos y analizar contenido de video. Antes, construí un motor de búsqueda inversa de imágenes usando Milvus. Considerando que el análisis de contenido de video se parece de algún modo al análisis de imágenes, decidí construir un motor de análisis de contenido de video basado en Milvus.
Detección de objetos
Descripción general
Antes de ser analizados, primero deben detectarse los objetos en un video. Detectar objetos en un video de manera eficaz y precisa es el principal desafío de la tarea. También es una tarea importante para aplicaciones como el piloto automático, los dispositivos portátiles y el IoT.
Desarrollados desde los algoritmos tradicionales de procesamiento de imágenes hasta las redes neuronales profundas (DNN), los modelos principales actuales para la detección de objetos incluyen R-CNN, FRCNN, SSD y YOLO. El sistema de análisis de video mediante aprendizaje profundo basado en Milvus presentado en este tema puede detectar objetos de forma inteligente y rápida.
Implementación
Para detectar y reconocer objetos en un video, el sistema debe primero extraer fotogramas de un video y detectar objetos en las imágenes de los fotogramas mediante detección de objetos; en segundo lugar, extraer vectores de características de los objetos detectados; y por último, analizar el objeto en función de los vectores de características.
- Extracción de fotogramas
El análisis de video se convierte en análisis de imágenes mediante la extracción de fotogramas. Actualmente, la tecnología de extracción de fotogramas está muy madura. Programas como FFmpeg y OpenCV admiten la extracción de fotogramas a intervalos especificados. Este artículo presenta cómo extraer fotogramas de un video cada segundo usando OpenCV.
- Detección de objetos
La detección de objetos consiste en encontrar objetos en los fotogramas extraídos y extraer capturas de pantalla de los objetos según sus posiciones. Como se muestra en las siguientes figuras, se detectaron una bicicleta, un perro y un coche. Este tema presenta cómo detectar objetos usando YOLOv3, que se utiliza comúnmente para la detección de objetos.
Figura 1.
- Extracción de características
La extracción de características se refiere a convertir datos no estructurados, que son difíciles de reconocer para las máquinas, en vectores de características. Por ejemplo, las imágenes pueden convertirse en vectores de características multidimensionales usando modelos de aprendizaje profundo. Actualmente, los modelos de IA de reconocimiento de imágenes más populares incluyen VGG, GNN y ResNet. Este tema presenta cómo extraer características de objetos detectados usando ResNet-50.
Figura 2.
- Análisis vectorial
Los vectores de características extraídos se comparan con vectores de biblioteca, y se devuelve la información correspondiente a los vectores más similares. Para conjuntos de datos de vectores de características a gran escala, el cálculo es un gran desafío. Este tema presenta cómo analizar vectores de características usando Milvus.
Tecnologías clave
OpenCV
Open Source Computer Vision Library (OpenCV) es una biblioteca de visión por computadora multiplataforma, que proporciona muchos algoritmos universales para el procesamiento de imágenes y la visión por computadora. OpenCV se utiliza comúnmente en el campo de la visión por computadora.
El siguiente ejemplo muestra cómo capturar fotogramas de video a intervalos especificados y guardarlos como imágenes usando OpenCV con Python.
import cv2
cap = cv2.VideoCapture(file_path)
framerate = cap.get(cv2.CAP_PROP_FPS)
allframes = int(cv2.VideoCapture.get(cap, int(cv2.CAP_PROP_FRAME_COUNT)))
success, image = cap.read()
cv2.imwrite(file_name, image)
YOLOv3
You Only Look Once, Versión 3 (YOLOv3 [5]) es un algoritmo de detección de objetos de una etapa propuesto en los últimos años. En comparación con los algoritmos tradicionales de detección de objetos con la misma precisión, YOLOv3 es dos veces más rápido. YOLOv3 mencionado en este tema es la versión mejorada de PaddlePaddle [6]. Utiliza múltiples métodos de optimización con una mayor velocidad de inferencia.
ResNet-50
ResNet [7] es el ganador de ILSVRC 2015 en clasificación de imágenes debido a su simplicidad y practicidad. Como base de muchos métodos de análisis de imágenes, ResNet demuestra ser un modelo popular especializado en detección, segmentación y reconocimiento de imágenes.
Milvus
Milvus es una base de datos vectorial de código abierto y nativa de la nube creada para gestionar vectores de incrustación generados por modelos de aprendizaje automático y redes neuronales. Se utiliza ampliamente en escenarios como visión por computadora, procesamiento del lenguaje natural, química computacional, sistemas de recomendación personalizados y más.
Los siguientes procedimientos describen cómo funciona Milvus.
- Los datos no estructurados se convierten en vectores de características mediante modelos de aprendizaje profundo y se importan a Milvus.
- Milvus almacena e indexa los vectores de características.
- Milvus devuelve los vectores más similares al vector consultado por los usuarios.
Figura 3.
Implementación
Ahora tiene cierta comprensión de los sistemas de análisis de video basados en Milvus. El sistema consta principalmente de dos partes, como se muestra en la siguiente figura.
Las flechas rojas indican el proceso de importación de datos. Use ResNet-50 para extraer vectores de características del conjunto de datos de imágenes e importar los vectores de características a Milvus.
Las flechas negras indican el proceso de análisis de video. Primero, extraiga fotogramas de un video y guarde los fotogramas como imágenes. Segundo, detecte y extraiga objetos en las imágenes usando YOLOv3. Luego, use ResNet-50 para extraer vectores de características de las imágenes. Por último, Milvus busca y devuelve la información de los objetos con los vectores de características correspondientes.
Figura 4.
Para obtener más información, consulte Milvus Bootcamp: Video Object Detection System.
Importación de datos
El proceso de importación de datos es simple. Convierta los datos en vectores de 2.048 dimensiones e importe los vectores a Milvus.
vector = image_encoder.execute(filename)
entities = [vector]
collection.insert(data=entities)
Análisis de video
Como se presentó anteriormente, el proceso de análisis de video incluye capturar fotogramas de video, detectar objetos en cada fotograma, extraer vectores de los objetos, calcular la similitud vectorial con métricas de distancia euclidiana (L2) y buscar resultados usando Milvus.
images = extract_frame(filename, 1, prefix)
detector = Detector()
run(detector, DATA_PATH)
vectors = get_object_vector(image_encoder, DATA_PATH)
search_params = {"metric_type": "L2", "params": {"nprobe": 10}}
results = collection.search(vectors, param=search_params, limit=10)
Conclusión
Actualmente, más del 80% de los datos no están estructurados. Con el rápido desarrollo de la IA, se ha desarrollado un número cada vez mayor de modelos de aprendizaje profundo para analizar datos no estructurados. Tecnologías como la detección de objetos y el procesamiento de imágenes han logrado grandes avances tanto en el ámbito académico como en la industria. Impulsadas por estas tecnologías, cada vez más plataformas de IA han satisfecho requisitos prácticos.
El sistema de análisis de video discutido en este tema está construido con Milvus, que puede analizar rápidamente el contenido de video.
Como base de datos vectorial de código abierto, Milvus admite vectores de características extraídos utilizando diversos modelos de aprendizaje profundo. Integrado con bibliotecas como Faiss, NMSLIB y Annoy, Milvus proporciona un conjunto de API intuitivas, que permiten cambiar los tipos de índice según los escenarios. Además, Milvus admite filtrado escalar, lo que aumenta la tasa de recuperación y la flexibilidad de búsqueda. Milvus se ha aplicado a muchos campos como el procesamiento de imágenes, la visión por computadora, el procesamiento del lenguaje natural, el reconocimiento de voz, los sistemas de recomendación y el descubrimiento de nuevos fármacos.
Referencias
[1] A. D. Bagdanov, L. Ballan, M. Bertini, A. Del Bimbo. “Coincidencia y recuperación de marcas registradas en bases de datos de video deportivo.” Proceedings of the international workshop on Workshop on multimedia information retrieval, ACM, 2007. https://www.researchgate.net/publication/210113141_Trademark_matching_and_retrieval_in_sports_video_databases
[2] J. Kleban, X. Xie, W.-Y. Ma. “Minería de pirámides espaciales para la detección de logotipos en escenas naturales.” IEEE International Conference, 2008. https://ieeexplore.ieee.org/document/4607625
[3] R. Boia, C. Florea, L. Florea, R. Dogaru. “Localización y reconocimiento de logotipos en imágenes naturales usando gráficos de clase homográficos.” Machine Vision and Applications 27 (2), 2016. https://link.springer.com/article/10.1007/s00138-015-0741-7
[4] R. Boia, C. Florea, L. Florea. “Aglomeración asift elíptica en prototipo de clase para la detección de logotipos.” BMVC, 2015. http://citeseerx.ist.psu.edu/viewdoc/download;jsessionid=5C87F52DE38AB0C90F8340DFEBB841F7?doi=10.1.1.707.9371&rep=rep1&type=pdf
[5] https://arxiv.org/abs/1804.02767
[6] https://paddlepaddle.org.cn/modelbasedetail/yolov3
[7] https://arxiv.org/abs/1512.03385
Sigue leyendo

Milvus 2.6.x Now Generally Available on Zilliz Cloud, Making Vector Search Faster, Smarter, and More Cost-Efficient for Production AI
Milvus 2.6.x is now GA on Zilliz Cloud, delivering faster vector search, smarter hybrid queries, and lower costs for production RAG and AI applications.

Zilliz Cloud Now Available in Azure North Europe: Bringing AI-Powered Vector Search Closer to European Customers
The addition of the Azure North Europe (Ireland) region further expands our global footprint to better serve our European customers.

AI Agents Are Quietly Transforming E-Commerce — Here’s How
Discover how AI agents transform e-commerce with autonomous decision-making, enhanced product discovery, and vector search capabilities for today's retailers.



