4 passaggi per costruire un sistema di ricerca video
Come suggerisce il nome, la ricerca di video per immagine è il processo di recupero dal repository di video contenenti frame simili all’immagine di input. Uno dei passaggi chiave consiste nel trasformare i video in embedding, vale a dire estrarre i frame chiave e convertire le loro caratteristiche in vettori. Ora, alcuni lettori curiosi potrebbero chiedersi qual è la differenza tra la ricerca di un video per immagine e la ricerca di un’immagine per immagine? In realtà, cercare i frame chiave nei video equivale a cercare un’immagine per immagine.
Puoi fare riferimento al nostro articolo precedente Milvus x VGG: Building a Content-based Image Retrieval System se sei interessato.
Panoramica del sistema2
Il diagramma seguente illustra il workflow tipico di un tale sistema di ricerca video.
Workflow del sistema di ricerca video.
Quando importiamo video, utilizziamo la libreria OpenCV per suddividere ogni video in frame, estrarre vettori dei frame chiave utilizzando il modello di estrazione delle caratteristiche delle immagini VGG, quindi inserire i vettori estratti (embedding) in Milvus. Utilizziamo Minio per archiviare i video originali e Redis per memorizzare le correlazioni tra video e vettori.
Quando cerchiamo video, utilizziamo lo stesso modello VGG per convertire l’immagine di input in un vettore di caratteristiche e inserirlo in Milvus per trovare i vettori con la maggiore similarità. Quindi, il sistema recupera i video corrispondenti da Minio nella sua interfaccia in base alle correlazioni in Redis.
Preparazione dei dati
In questo articolo, utilizziamo circa 100.000 file GIF da Tumblr come dataset di esempio per costruire una soluzione end-to-end per la ricerca di video. Puoi utilizzare i tuoi repository video.
Distribuzione
Il codice per costruire il sistema di recupero video in questo articolo è su GitHub.
Passaggio 1: Crea le immagini Docker.
Il sistema di recupero video richiede Milvus v0.7.1 docker, Redis docker, Minio docker, il docker dell’interfaccia front-end e il docker dell’API back-end. Devi creare autonomamente il docker dell’interfaccia front-end e il docker dell’API back-end, mentre puoi scaricare gli altri tre docker direttamente da Docker Hub.
# Ottieni il codice di ricerca video
$ git clone -b 0.10.0 https://github.com/JackLCL/search-video-demo.git
# Crea le immagini docker dell’interfaccia front-end e dell’api docker
$ cd search-video-demo & make all
Passaggio 2: Configura l’ambiente.
Qui utilizziamo docker-compose.yml per gestire i cinque container menzionati sopra. Vedi la tabella seguente per la configurazione di docker-compose.yml:
Configura docker compose.
L’indirizzo IP 192.168.1.38 nella tabella sopra è l’indirizzo del server specificamente per costruire il sistema di recupero video in questo articolo. Devi aggiornarlo con l’indirizzo del tuo server.
Devi creare manualmente le directory di archiviazione per Milvus, Redis e Minio, quindi aggiungere i percorsi corrispondenti in docker-compose.yml. In questo esempio, abbiamo creato le seguenti directory:
/mnt/redis/data /mnt/minio/data /mnt/milvus/db
Puoi configurare Milvus, Redis e Minio in docker-compose.yml come segue:
Configura Milvus, Redis, MinIO, Docker-compose.
Passaggio 3: Avvia il sistema.
Utilizza il docker-compose.yml modificato per avviare i cinque container docker da usare nel sistema di recupero video:
$ docker-compose up -d
Quindi, puoi eseguire docker-compose ps per verificare se i cinque container docker sono stati avviati correttamente. Lo screenshot seguente mostra un’interfaccia tipica dopo un avvio riuscito.
Configurazione riuscita.
Ora hai costruito con successo un sistema di ricerca video, anche se il database non contiene video.
Passaggio 4: Importa video.
Nella directory deploy del repository di sistema si trova import_data.py, lo script per importare i video. Devi solo aggiornare il percorso dei file video e l'intervallo di importazione per eseguire lo script.
Aggiorna il percorso del video.
data_path: Il percorso dei video da importare.
time.sleep(0.5): L'intervallo con cui il sistema importa i video. Il server che usiamo per costruire il sistema di ricerca video ha 96 core CPU. Pertanto, si consiglia di impostare l'intervallo a 0,5 secondi. Imposta l'intervallo a un valore maggiore se il tuo server ha meno core CPU. In caso contrario, il processo di importazione appesantirà la CPU e creerà processi zombie.
Esegui import_data.py per importare i video.
$ cd deploy
$ python3 import_data.py
Una volta importati i video, sei pronto con il tuo sistema di ricerca video!
Visualizzazione dell'interfaccia
Apri il browser e inserisci 192.168.1.38:8001 per vedere l'interfaccia del sistema di ricerca video come mostrato di seguito.
Interfaccia di ricerca video.
Attiva l'interruttore a forma di ingranaggio in alto a destra per visualizzare tutti i video nel repository.
Visualizza tutti i video.
Fai clic sulla casella di caricamento in alto a sinistra per inserire un'immagine di destinazione. Come mostrato di seguito, il sistema restituisce i video contenenti i fotogrammi più simili.
Goditi un sistema di raccomandazione di gatti.
Ora divertiti con il nostro sistema di ricerca video!
Crea il tuo
In questo articolo, abbiamo utilizzato Milvus per costruire un sistema per cercare video tramite immagini. Questo esemplifica l'applicazione di Milvus nell'elaborazione di dati non strutturati.
Milvus è compatibile con diversi framework di deep learning e consente ricerche in millisecondi per vettori su scala di miliardi. Sentiti libero di portare Milvus con te in altri scenari di IA: https://github.com/milvus-io/milvus.
Non fare lo sconosciuto, seguici su Twitter o unisciti a noi su Slack!👇🏻
Continua a leggere

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 Launches in AWS Australia, Expanding Global Reach to Australia and Neighboring Markets
We're thrilled to announce that Zilliz Cloud is now available in the AWS Sydney, Australia region (ap-southeast-2).

OpenAI o1: What Developers Need to Know
In this article, we will talk about the o1 series from a developer's perspective, exploring how these models can be implemented for sophisticated use cases.



