Creare un sistema di analisi video con il database vettoriale Milvus
Quando stavo guardando Free Guy lo scorso weekend, avevo la sensazione di aver già visto da qualche parte l’attore che interpreta Buddy, la guardia di sicurezza, eppure non riuscivo a ricordare nessuna delle sue opere. Avevo la testa piena di “chi è questo tipo?” Ero sicuro di aver già visto quel volto e cercavo con tutte le mie forze di ricordare il suo nome. Un caso simile è che una volta vidi l’attore protagonista in un video bere una bevanda che mi piaceva molto, ma alla fine non riuscii a ricordare il nome del marchio.
La risposta ce l’avevo sulla punta della lingua, ma il mio cervello sembrava completamente bloccato.
Il fenomeno della punta della lingua (TOT) mi fa impazzire quando guardo i film. Se solo esistesse un motore di ricerca inversa per immagini per i video che mi permettesse di trovare video e analizzare contenuti video. In passato, ho creato un motore di ricerca inversa per immagini usando Milvus. Considerando che l’analisi dei contenuti video somiglia in qualche modo all’analisi delle immagini, ho deciso di creare un motore di analisi dei contenuti video basato su Milvus.
Rilevamento degli oggetti
Panoramica
Prima di essere analizzati, gli oggetti in un video devono essere rilevati. Rilevare gli oggetti in un video in modo efficace e accurato è la sfida principale del compito. È anche un’attività importante per applicazioni come il pilota automatico, i dispositivi indossabili e l’IoT.
Sviluppati dagli algoritmi tradizionali di elaborazione delle immagini fino alle reti neurali profonde (DNN), i modelli mainstream odierni per il rilevamento degli oggetti includono R-CNN, FRCNN, SSD e YOLO. Il sistema di analisi video con deep learning basato su Milvus introdotto in questo argomento può rilevare gli oggetti in modo intelligente e rapido.
Implementazione
Per rilevare e riconoscere gli oggetti in un video, il sistema deve prima estrarre i fotogrammi da un video e rilevare gli oggetti nelle immagini dei fotogrammi usando il rilevamento degli oggetti; in secondo luogo, estrarre i vettori di caratteristiche dagli oggetti rilevati; e infine, analizzare l’oggetto in base ai vettori di caratteristiche.
- Estrazione dei fotogrammi
L’analisi video viene convertita in analisi delle immagini tramite l’estrazione dei fotogrammi. Attualmente, la tecnologia di estrazione dei fotogrammi è molto matura. Programmi come FFmpeg e OpenCV supportano l’estrazione di fotogrammi a intervalli specificati. Questo articolo presenta come estrarre fotogrammi da un video ogni secondo usando OpenCV.
- Rilevamento degli oggetti
Il rilevamento degli oggetti consiste nel trovare oggetti nei fotogrammi estratti ed estrarre schermate degli oggetti in base alle loro posizioni. Come mostrato nelle figure seguenti, sono stati rilevati una bici, un cane e un’auto. Questo argomento presenta come rilevare oggetti usando YOLOv3, comunemente usato per il rilevamento degli oggetti.
Figura 1.
- Estrazione delle caratteristiche
L’estrazione delle caratteristiche si riferisce alla conversione di dati non strutturati, difficili da riconoscere per le macchine, in vettori di caratteristiche. Ad esempio, le immagini possono essere convertite in vettori di caratteristiche multidimensionali usando modelli di deep learning. Attualmente, i modelli di IA per il riconoscimento delle immagini più popolari includono VGG, GNN e ResNet. Questo argomento presenta come estrarre caratteristiche dagli oggetti rilevati usando ResNet-50.
Figura 2.
- Analisi vettoriale
I vettori di caratteristiche estratti vengono confrontati con i vettori della libreria e vengono restituite le informazioni corrispondenti ai vettori più simili. Per dataset di vettori di caratteristiche su larga scala, il calcolo è una sfida enorme. Questo argomento presenta come analizzare i vettori di caratteristiche usando Milvus.
Tecnologie chiave
OpenCV
Open Source Computer Vision Library (OpenCV) è una libreria di computer vision multipiattaforma, che fornisce molti algoritmi universali per l’elaborazione delle immagini e la computer vision. OpenCV è comunemente usato nel campo della computer vision.
L’esempio seguente mostra come acquisire fotogrammi video a intervalli specificati e salvarli come immagini 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, Versione 3 (YOLOv3 [5]) è un algoritmo di rilevamento degli oggetti a una fase proposto negli ultimi anni. Rispetto agli algoritmi tradizionali di rilevamento degli oggetti con la stessa accuratezza, YOLOv3 è due volte più veloce. YOLOv3 menzionato in questo argomento è la versione migliorata di PaddlePaddle [6]. Utilizza molteplici metodi di ottimizzazione con una maggiore velocità di inferenza.
ResNet-50
ResNet [7] è il vincitore di ILSVRC 2015 nella classificazione delle immagini grazie alla sua semplicità e praticità. Come base di molti metodi di analisi delle immagini, ResNet si dimostra un modello popolare specializzato nel rilevamento, nella segmentazione e nel riconoscimento delle immagini.
Milvus
Milvus è un database vettoriale cloud-native e open-source creato per gestire vettori di embedding generati da modelli di machine learning e reti neurali. È ampiamente utilizzato in scenari come computer vision, elaborazione del linguaggio naturale, chimica computazionale, sistemi di raccomandazione personalizzati e altro ancora.
Le seguenti procedure descrivono come funziona Milvus.
- I dati non strutturati vengono convertiti in vettori di caratteristiche utilizzando modelli di deep learning e vengono importati in Milvus.
- Milvus archivia e indicizza i vettori di caratteristiche.
- Milvus restituisce i vettori più simili al vettore interrogato dagli utenti.
Figura 3.
Distribuzione
Ora hai una certa comprensione dei sistemi di analisi video basati su Milvus. Il sistema è composto principalmente da due parti, come mostrato nella figura seguente.
Le frecce rosse indicano il processo di importazione dei dati. Usa ResNet-50 per estrarre vettori di caratteristiche dal dataset di immagini e importa i vettori di caratteristiche in Milvus.
Le frecce nere indicano il processo di analisi video. Per prima cosa, estrai i fotogrammi da un video e salva i fotogrammi come immagini. In secondo luogo, rileva ed estrai gli oggetti nelle immagini utilizzando YOLOv3. Quindi, usa ResNet-50 per estrarre vettori di caratteristiche dalle immagini. Infine, Milvus cerca e restituisce le informazioni degli oggetti con i vettori di caratteristiche corrispondenti.
Figura 4.
Per maggiori informazioni, consulta Milvus Bootcamp: Video Object Detection System.
Importazione dei dati
Il processo di importazione dei dati è semplice. Converti i dati in vettori a 2.048 dimensioni e importa i vettori in Milvus.
vector = image_encoder.execute(filename)
entities = [vector]
collection.insert(data=entities)
Analisi video
Come introdotto sopra, il processo di analisi video include l'acquisizione dei fotogrammi video, il rilevamento degli oggetti in ciascun fotogramma, l'estrazione dei vettori dagli oggetti, il calcolo della similarità vettoriale con metriche di distanza euclidea (L2) e la ricerca dei risultati utilizzando 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)
Conclusione
Attualmente, oltre l'80% dei dati è non strutturato. Con il rapido sviluppo dell'IA, è stato sviluppato un numero crescente di modelli di deep learning per analizzare i dati non strutturati. Tecnologie come il rilevamento degli oggetti e l'elaborazione delle immagini hanno ottenuto grandi progressi sia nel mondo accademico sia nell'industria. Grazie a queste tecnologie, sempre più piattaforme di IA hanno soddisfatto requisiti pratici.
Il sistema di analisi video discusso in questo argomento è costruito con Milvus, che può analizzare rapidamente i contenuti video.
Essendo un database vettoriale open-source, Milvus supporta vettori di caratteristiche estratti utilizzando vari modelli di deep learning. Integrato con librerie come Faiss, NMSLIB e Annoy, Milvus fornisce un insieme di API intuitive, supportando il cambio dei tipi di indice in base agli scenari. Inoltre, Milvus supporta il filtraggio scalare, che aumenta il tasso di richiamo e la flessibilità della ricerca. Milvus è stato applicato a molti campi come elaborazione delle immagini, computer vision, elaborazione del linguaggio naturale, riconoscimento vocale, sistemi di raccomandazione e scoperta di nuovi farmaci.
Riferimenti
[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
Continua a leggere

Creating Collections in Zilliz Cloud Just Got Way Easier
We've enhanced the entire collection creation experience to bring advanced capabilities directly into the interface, making it faster and easier to build production-ready schemas without switching tools.

Optimizing Embedding Model Selection with TDA Clustering: A Strategic Guide for Vector Databases
Discover how Topological Data Analysis (TDA) reveals hidden embedding model weaknesses and helps optimize vector database performance.

AI Integration in Video Surveillance Tools: Transforming the Industry with Vector Databases
Discover how AI and vector databases are revolutionizing video surveillance with real-time analysis, faster threat detection, and intelligent search capabilities for enhanced security.



