Créer un système d’analyse vidéo avec la base de données vectorielle Milvus
Lorsque je regardais Free Guy le week-end dernier, j’ai eu l’impression d’avoir déjà vu quelque part l’acteur qui joue Buddy, l’agent de sécurité, mais je n’arrivais pas à me souvenir d’aucune de ses œuvres. J’avais la tête remplie de « c’est qui ce type ? » J’étais sûr d’avoir déjà vu ce visage et je faisais de gros efforts pour me rappeler son nom. Un cas similaire est celui où, une fois, j’ai vu l’acteur principal dans une vidéo boire une boisson que j’aimais beaucoup auparavant, mais j’ai finalement été incapable de me rappeler le nom de la marque.
La réponse était sur le bout de ma langue, mais mon cerveau semblait complètement bloqué.
Le phénomène du mot sur le bout de la langue (TOT) me rend fou lorsque je regarde des films. Si seulement il existait un moteur de recherche d’images inversée pour les vidéos qui me permette de trouver des vidéos et d’analyser le contenu vidéo. Auparavant, j’ai créé un moteur de recherche d’images inversée utilisant Milvus. Étant donné que l’analyse de contenu vidéo ressemble en quelque sorte à l’analyse d’images, j’ai décidé de créer un moteur d’analyse de contenu vidéo basé sur Milvus.
Détection d’objets
Vue d’ensemble
Avant d’être analysés, les objets d’une vidéo doivent d’abord être détectés. Détecter les objets dans une vidéo de manière efficace et précise est le principal défi de cette tâche. C’est également une tâche importante pour des applications telles que le pilotage automatique, les dispositifs portables et l’IoT.
Issus des algorithmes traditionnels de traitement d’images et évoluant vers les réseaux neuronaux profonds (DNN), les modèles grand public actuels pour la détection d’objets incluent R-CNN, FRCNN, SSD et YOLO. Le système d’analyse vidéo par apprentissage profond basé sur Milvus présenté dans ce sujet peut détecter les objets de manière intelligente et rapide.
Implémentation
Pour détecter et reconnaître des objets dans une vidéo, le système doit d’abord extraire des images d’une vidéo et détecter les objets dans les images des trames à l’aide de la détection d’objets, ensuite extraire les vecteurs de caractéristiques des objets détectés, et enfin analyser l’objet sur la base des vecteurs de caractéristiques.
- Extraction de trames
L’analyse vidéo est convertie en analyse d’images grâce à l’extraction de trames. Actuellement, la technologie d’extraction de trames est très mature. Des programmes tels que FFmpeg et OpenCV prennent en charge l’extraction de trames à des intervalles spécifiés. Cet article présente comment extraire des trames d’une vidéo toutes les secondes à l’aide d’OpenCV.
- Détection d’objets
La détection d’objets consiste à trouver des objets dans les trames extraites et à extraire des captures d’écran des objets selon leurs positions. Comme le montrent les figures suivantes, un vélo, un chien et une voiture ont été détectés. Ce sujet présente comment détecter des objets à l’aide de YOLOv3, qui est couramment utilisé pour la détection d’objets.
Figure 1.
- Extraction de caractéristiques
L’extraction de caractéristiques désigne la conversion de données non structurées, difficiles à reconnaître pour les machines, en vecteurs de caractéristiques. Par exemple, des images peuvent être converties en vecteurs de caractéristiques multidimensionnels à l’aide de modèles d’apprentissage profond. Actuellement, les modèles d’IA de reconnaissance d’images les plus populaires incluent VGG, GNN et ResNet. Ce sujet présente comment extraire des caractéristiques à partir d’objets détectés à l’aide de ResNet-50.
Figure 2.
- Analyse vectorielle
Les vecteurs de caractéristiques extraits sont comparés aux vecteurs de la bibliothèque, et les informations correspondant aux vecteurs les plus similaires sont renvoyées. Pour les jeux de données de vecteurs de caractéristiques à grande échelle, le calcul représente un défi énorme. Ce sujet présente comment analyser des vecteurs de caractéristiques à l’aide de Milvus.
Technologies clés
OpenCV
Open Source Computer Vision Library (OpenCV) est une bibliothèque de vision par ordinateur multiplateforme, qui fournit de nombreux algorithmes universels pour le traitement d’images et la vision par ordinateur. OpenCV est couramment utilisé dans le domaine de la vision par ordinateur.
L’exemple suivant montre comment capturer des trames vidéo à des intervalles spécifiés et les enregistrer sous forme d’images à l’aide d’OpenCV avec 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, Version 3 (YOLOv3 [5]) est un algorithme de détection d’objets en une étape proposé ces dernières années. Comparé aux algorithmes traditionnels de détection d’objets offrant la même précision, YOLOv3 est deux fois plus rapide. YOLOv3 mentionné dans ce sujet est la version améliorée de PaddlePaddle [6]. Il utilise plusieurs méthodes d’optimisation avec une vitesse d’inférence plus élevée.
ResNet-50
ResNet [7] est le gagnant d’ILSVRC 2015 en classification d’images en raison de sa simplicité et de son aspect pratique. En tant que base de nombreuses méthodes d’analyse d’images, ResNet s’avère être un modèle populaire spécialisé dans la détection, la segmentation et la reconnaissance d’images.
Milvus
Milvus est une base de données vectorielle open source, cloud-native, conçue pour gérer les vecteurs d’embedding générés par des modèles d’apprentissage automatique et des réseaux neuronaux. Elle est largement utilisée dans des scénarios tels que la vision par ordinateur, le traitement du langage naturel, la chimie computationnelle, les systèmes de recommandation personnalisés, et bien plus encore.
Les procédures suivantes décrivent le fonctionnement de Milvus.
- Les données non structurées sont converties en vecteurs de caractéristiques à l’aide de modèles d’apprentissage profond et sont importées dans Milvus.
- Milvus stocke et indexe les vecteurs de caractéristiques.
- Milvus renvoie les vecteurs les plus similaires au vecteur interrogé par les utilisateurs.
Figure 3.
Déploiement
Vous avez maintenant une certaine compréhension des systèmes d’analyse vidéo basés sur Milvus. Le système se compose principalement de deux parties, comme le montre la figure suivante.
Les flèches rouges indiquent le processus d’importation des données. Utilisez ResNet-50 pour extraire les vecteurs de caractéristiques du jeu de données d’images et importez les vecteurs de caractéristiques dans Milvus.
Les flèches noires indiquent le processus d’analyse vidéo. Tout d’abord, extrayez les images d’une vidéo et enregistrez-les sous forme d’images. Ensuite, détectez et extrayez les objets dans les images à l’aide de YOLOv3. Puis, utilisez ResNet-50 pour extraire les vecteurs de caractéristiques des images. Enfin, Milvus recherche et renvoie les informations des objets avec les vecteurs de caractéristiques correspondants.
Figure 4.
Pour plus d’informations, consultez Milvus Bootcamp: Video Object Detection System.
Importation des données
Le processus d’importation des données est simple. Convertissez les données en vecteurs de 2 048 dimensions et importez les vecteurs dans Milvus.
vector = image_encoder.execute(filename)
entities = [vector]
collection.insert(data=entities)
Analyse vidéo
Comme présenté ci-dessus, le processus d’analyse vidéo comprend la capture des images vidéo, la détection des objets dans chaque image, l’extraction des vecteurs à partir des objets, le calcul de la similarité vectorielle avec les métriques de distance euclidienne (L2), et la recherche de résultats à l’aide de 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)
Conclusion
Actuellement, plus de 80 % des données sont non structurées. Avec le développement rapide de l’IA, un nombre croissant de modèles d’apprentissage profond ont été développés pour analyser les données non structurées. Des technologies telles que la détection d’objets et le traitement d’images ont réalisé de grandes avancées, tant dans le milieu universitaire que dans l’industrie. Grâce à ces technologies, de plus en plus de plateformes d’IA ont répondu à des exigences pratiques.
Le système d’analyse vidéo abordé dans ce sujet est construit avec Milvus, qui peut analyser rapidement le contenu vidéo.
En tant que base de données vectorielle open source, Milvus prend en charge les vecteurs de caractéristiques extraits à l’aide de divers modèles d’apprentissage profond. Intégré à des bibliothèques telles que Faiss, NMSLIB et Annoy, Milvus fournit un ensemble d’API intuitives, permettant de changer de types d’index selon les scénarios. De plus, Milvus prend en charge le filtrage scalaire, ce qui augmente le taux de rappel et la flexibilité de la recherche. Milvus a été appliqué à de nombreux domaines tels que le traitement d’images, la vision par ordinateur, le traitement du langage naturel, la reconnaissance vocale, les systèmes de recommandation et la découverte de nouveaux médicaments.
Références
[1] A. D. Bagdanov, L. Ballan, M. Bertini, A. Del Bimbo. « Trademark matching and retrieval in sports video databases. » 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. « Spatial pyramid mining for logo detection in natural scenes. » IEEE International Conference, 2008. https://ieeexplore.ieee.org/document/4607625
[3] R. Boia, C. Florea, L. Florea, R. Dogaru. « Logo localization and recognition in natural images using homographic class graphs. » 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. « Elliptical asift agglomeration in class prototype for logo detection. » 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
Continuer à lire

Zilliz Cloud BYOC Now Available Across AWS, GCP, and Azure
Zilliz Cloud BYOC is now generally available on all three major clouds. Deploy fully managed vector search in your own AWS, GCP, or Azure account — your data never leaves your VPC.

Zilliz Cloud Delivers Better Performance and Lower Costs with Arm Neoverse-based AWS Graviton
Zilliz Cloud adopts Arm-based AWS Graviton3 CPUs to cut costs, speed up AI vector search, and power billion-scale RAG and semantic search workloads.

What Exactly Are AI Agents? Why OpenAI and LangChain Are Fighting Over Their Definition?
AI agents are software programs powered by AI that can perceive their environment, make decisions, and take actions to achieve a goal—often autonomously.



