Rilevamento degli oggetti
Shiyu Chen, ingegnere dei dati presso Zilliz, si è laureata in informatica all'Università di Xidian. Da quando è entrata a far parte di Zilliz, ha esplorato soluzioni per Milvus in vari campi, come l'analisi audio e video, il reperimento di formule molecolari, ecc. Attualmente sta esplorando altre soluzioni interessanti. Nel tempo libero, ama lo sport e la lettura.
Mentre guardavo Free Guy lo scorso fine settimana, mi è sembrato di aver già visto da qualche parte l'attore che interpreta Buddy, la guardia giurata, ma non riuscivo a ricordare nessuno dei suoi lavori. La mia testa era piena di "chi è questo tizio?". Ero sicuro di aver visto quel volto e mi sforzavo di ricordare il suo nome. Un caso simile è quello di una volta in cui ho visto l'attore protagonista di un video che beveva una bevanda che mi piaceva molto, ma alla fine non sono riuscito a ricordare il nome della marca.
La risposta era sulla punta della lingua, ma il mio cervello era completamente bloccato.
Il fenomeno della punta della lingua (TOT) mi fa impazzire quando guardo i film. Se solo esistesse un motore di ricerca inversa di immagini per i video che mi permettesse di trovare i video e di analizzarne il contenuto. In precedenza, ho costruito un motore di ricerca inverso per immagini utilizzando Milvus. Considerando che l'analisi dei contenuti video assomiglia in qualche modo all'analisi delle immagini, ho deciso di costruire 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 compito importante per applicazioni come il pilota automatico, i dispositivi indossabili e l'IoT.
Sviluppati dai tradizionali algoritmi di elaborazione delle immagini alle reti neurali profonde (DNN), gli attuali modelli mainstream per il rilevamento degli oggetti includono R-CNN, FRCNN, SSD e YOLO. Il sistema di analisi video deep learning basato su Milvus introdotto in questo argomento è in grado di rilevare gli oggetti in modo intelligente e rapido.
Implementazione
Per rilevare e riconoscere gli oggetti in un video, il sistema deve innanzitutto estrarre i fotogrammi da un video e rilevare gli oggetti nelle immagini dei fotogrammi utilizzando 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 dei video viene convertita in analisi delle immagini mediante 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 specifici. Questo articolo illustra come estrarre fotogrammi da un video ogni secondo utilizzando OpenCV.
- Rilevamento degli oggetti
Il rilevamento degli oggetti consiste nel trovare gli oggetti nei fotogrammi estratti e nell'estrarre le schermate degli oggetti in base alla loro posizione. Come mostrato nelle figure seguenti, sono stati rilevati una bicicletta, un cane e un'automobile. Questo argomento illustra come rilevare gli oggetti utilizzando YOLOv3, comunemente usato per il rilevamento degli oggetti.
- 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 utilizzando modelli di deep learning. Attualmente, i modelli di intelligenza artificiale per il riconoscimento delle immagini più diffusi sono VGG, GNN e ResNet. Questo argomento presenta come estrarre le caratteristiche dagli oggetti rilevati utilizzando ResNet-50.
- Analisi dei vettori
I vettori di caratteristiche estratti vengono confrontati con i vettori di libreria e vengono restituite le informazioni corrispondenti ai vettori più simili. Per gli insiemi di vettori di caratteristiche su larga scala, il calcolo è una sfida enorme. Questo argomento presenta come analizzare i vettori di caratteristiche utilizzando 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 utilizzato nel campo della computer vision.
L'esempio seguente mostra come catturare fotogrammi video a intervalli specifici e salvarli come immagini utilizzando 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, Version 3 (YOLOv3 [5]) è un algoritmo di rilevamento degli oggetti a una fase proposto negli ultimi anni. Rispetto ai tradizionali algoritmi di rilevamento degli oggetti con la stessa precisione, YOLOv3 è due volte più veloce. YOLOv3 citato in questo argomento è la versione migliorata di PaddlePaddle [6]. Utilizza più metodi di ottimizzazione con una maggiore velocità di inferenza.
ResNet-50
ResNet [7] è il vincitore dell'ILSVRC 2015 nella classificazione delle immagini per la 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 costruito per gestire vettori di incorporamento generati da modelli di apprendimento automatico e reti neurali. È ampiamente utilizzato in scenari quali la computer vision, l'elaborazione del linguaggio naturale, la chimica computazionale, i sistemi di raccomandazione personalizzati e altro ancora.
Le seguenti procedure descrivono il funzionamento di Milvus.
- I dati non strutturati vengono convertiti in vettori di caratteristiche utilizzando modelli di deep learning e importati in Milvus.
- Milvus memorizza e indicizza i vettori di caratteristiche.
- Milvus restituisce i vettori più simili a quelli interrogati dagli utenti.
Distribuzione
Ora avete una certa conoscenza 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. Utilizziamo ResNet-50 per estrarre i vettori di caratteristiche dal dataset di immagini e importiamo i vettori di caratteristiche in Milvus.
Le frecce nere indicano il processo di analisi video. Innanzitutto, si estraggono i fotogrammi da un video e si salvano come immagini. In secondo luogo, si individuano ed estraggono gli oggetti nelle immagini utilizzando YOLOv3. Quindi, si utilizza ResNet-50 per estrarre vettori di caratteristiche dalle immagini. Infine, Milvus cerca e restituisce le informazioni sugli oggetti con i vettori di caratteristiche corrispondenti.
Per ulteriori informazioni, vedere Milvus Bootcamp: Sistema di rilevamento di oggetti video.
Importazione dei dati
Il processo di importazione dei dati è semplice. Convertire i dati in vettori a 2.048 dimensioni e importare i vettori in Milvus.
vector = image_encoder.execute(filename)
entities = [vector]
collection.insert(data=entities)
Analisi video
Come già detto, il processo di analisi video comprende l'acquisizione di fotogrammi video, il rilevamento di oggetti in ogni fotogramma, l'estrazione di vettori dagli oggetti, il calcolo della similarità vettoriale con la metrica della distanza euclidea (L2) e la ricerca dei risultati con 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'intelligenza artificiale, è stato sviluppato un numero crescente di modelli di deep learning per l'analisi dei dati non strutturati. Tecnologie come il rilevamento degli oggetti e l'elaborazione delle immagini hanno fatto grandi progressi sia in ambito accademico che industriale. Grazie a queste tecnologie, sempre più piattaforme di IA hanno soddisfatto le esigenze pratiche.
Il sistema di analisi video discusso in questo argomento è costruito con Milvus, che può analizzare rapidamente i contenuti video.
Come database vettoriale open-source, Milvus supporta vettori di caratteristiche estratti con diversi modelli di deep learning. Integrato con librerie come Faiss, NMSLIB e Annoy, Milvus fornisce una serie di API intuitive, che supportano la commutazione dei tipi di indice a seconda degli 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 l'elaborazione delle immagini, la computer vision, l'elaborazione del linguaggio naturale, il riconoscimento vocale, i sistemi di raccomandazione e la scoperta di nuovi farmaci.
Riferimenti
[1] A. D. Bagdanov, L. Ballan, M. Bertini, A. Del Bimbo. "Corrispondenza e recupero di marchi in database di video sportivi". Atti del workshop internazionale sul 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. "Estrazione di piramidi spaziali per il rilevamento di loghi in scene naturali". Conferenza internazionale IEEE, 2008. https://ieeexplore.ieee.org/document/4607625
[3] R. Boia, C. Florea, L. Florea, R. Dogaru. "Localizzazione e riconoscimento di logo in immagini naturali mediante grafi di classe omografici". 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. "Agglomerazione di aste ellittiche in prototipi di classi per il rilevamento di loghi". 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
Try Managed Milvus for Free
Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.
Get StartedLike the article? Spread the word