Vue d'ensemble du système
Comme son nom l'indique, la recherche de vidéos par image consiste à extraire de la base de données les vidéos contenant des images similaires à l'image d'entrée. L'une des principales étapes consiste à transformer les vidéos en encastrements, c'est-à-dire à extraire les images clés et à convertir leurs caractéristiques en vecteurs. Certains lecteurs curieux pourraient se demander quelle est la différence entre la recherche d'une vidéo par image et la recherche d'une image par image. En fait, la recherche des images clés dans les vidéos est équivalente à la recherche d'une image par image.
Si cela vous intéresse, vous pouvez consulter notre précédent article Milvus x VGG : Building a Content-based Image Retrieval System (Milvus x VGG : construction d'un système de recherche d'images basé sur le contenu).
Vue d'ensemble du système
Le diagramme suivant illustre le flux de travail typique d'un tel système de recherche vidéo.
1-systeme-de-recherche-video.png
Lors de l'importation de vidéos, nous utilisons la bibliothèque OpenCV pour découper chaque vidéo en images, extraire les vecteurs des images clés à l'aide du modèle d'extraction de caractéristiques d'image VGG, puis insérer les vecteurs extraits (embeddings) dans Milvus. Nous utilisons Minio pour stocker les vidéos originales et Redis pour stocker les corrélations entre les vidéos et les vecteurs.
Lors de la recherche de vidéos, nous utilisons le même modèle VGG pour convertir l'image d'entrée en un vecteur de caractéristiques et l'insérer dans Milvus pour trouver les vecteurs présentant le plus de similitudes. Ensuite, le système extrait les vidéos correspondantes de Minio sur son interface en fonction des corrélations dans Redis.
Préparation des données
Dans cet article, nous utilisons environ 100 000 fichiers GIF de Tumblr comme échantillon de données pour construire une solution de bout en bout pour la recherche de vidéos. Vous pouvez utiliser vos propres référentiels vidéo.
Déploiement
Le code permettant de construire le système de recherche vidéo présenté dans cet article se trouve sur GitHub.
Étape 1 : Création d'images Docker.
Le système de recherche vidéo nécessite Milvus v0.7.1 docker, Redis docker, Minio docker, l'interface frontale docker et l'API back-end docker. Vous devez construire vous-même le docker de l'interface frontale et le docker de l'API back-end, tandis que vous pouvez extraire les trois autres dockers directement depuis Docker Hub.
# Get the video search code
$ git clone -b 0.10.0 https://github.com/JackLCL/search-video-demo.git
# Build front-end interface docker and api docker images
$ cd search-video-demo & make all
Étape 2 : Configurer l'environnement.
Ici, nous utilisons docker-compose.yml pour gérer les cinq conteneurs mentionnés ci-dessus. Voir le tableau suivant pour la configuration de docker-compose.yml :
2-configure-docker-compose-yml.png
L'adresse IP 192.168.1.38 dans le tableau ci-dessus est l'adresse du serveur spécialement conçu pour construire le système de récupération vidéo dans cet article. Vous devez la mettre à jour avec votre adresse de serveur.
Vous devez créer manuellement des répertoires de stockage pour Milvus, Redis et Minio, puis ajouter les chemins correspondants dans docker-compose.yml. Dans cet exemple, nous avons créé les répertoires suivants :
/mnt/redis/data /mnt/minio/data /mnt/milvus/db
Vous pouvez configurer Milvus, Redis et Minio dans docker-compose.yml comme suit :
3-configure-milvus-redis-minio-docker-compose-yml.png
Étape 3 : Démarrer le système.
Utilisez le fichier docker-compose.yml modifié pour démarrer les cinq conteneurs docker qui seront utilisés dans le système de recherche vidéo :
$ docker-compose up -d
Ensuite, vous pouvez exécuter docker-compose ps pour vérifier si les cinq conteneurs docker ont démarré correctement. La capture d'écran suivante montre une interface typique après un démarrage réussi.
4-sucessful-setup.png
Vous avez maintenant construit avec succès un système de recherche vidéo, bien que la base de données ne contienne aucune vidéo.
Étape 4 : Importer des vidéos.
Dans le répertoire de déploiement du référentiel du système, vous trouverez import_data.py, le script d'importation des vidéos. Il vous suffit de mettre à jour le chemin d'accès aux fichiers vidéo et l'intervalle d'importation pour exécuter le script.
5-mise-a-jour-du-chemin-video.png
chemin_données : Le chemin d'accès aux vidéos à importer.
time.sleep(0.5) : L'intervalle auquel le système importe les vidéos. Le serveur que nous utilisons pour construire le système de recherche vidéo dispose de 96 cœurs de processeur. Il est donc recommandé de fixer l'intervalle à 0,5 seconde. Réglez l'intervalle sur une valeur plus élevée si votre serveur dispose de moins de cœurs de CPU. Sinon, le processus d'importation pèsera sur l'unité centrale et créera des processus zombies.
Exécutez import_data.py pour importer les vidéos.
$ cd deploy
$ python3 import_data.py
Une fois les vidéos importées, vous disposez de votre propre système de recherche vidéo !
Affichage de l'interface
Ouvrez votre navigateur et entrez 192.168.1.38:8001 pour voir l'interface du système de recherche vidéo comme indiqué ci-dessous.
6-video-search-interface.png
Cliquez sur le bouton en haut à droite pour afficher toutes les vidéos du dépôt.
7-view-all-videos-repository.png
Cliquez sur la boîte de téléchargement en haut à gauche pour saisir une image cible. Comme indiqué ci-dessous, le système renvoie les vidéos contenant les images les plus similaires.
8-enjoy-recommender-system-cats.png
Ensuite, amusez-vous avec notre système de recherche vidéo !
Créez le vôtre
Dans cet article, nous avons utilisé Milvus pour créer un système de recherche de vidéos par images. Cela illustre l'application de Milvus dans le traitement des données non structurées.
Milvus est compatible avec de nombreux frameworks d'apprentissage profond et permet d'effectuer des recherches en quelques millisecondes pour des vecteurs à l'échelle de milliards. N'hésitez pas à emmener Milvus avec vous dans d'autres scénarios d'IA : https://github.com/milvus-io/milvus.
Ne soyez pas un inconnu, suivez-nous sur Twitter ou rejoignez-nous sur Slack!👇🏻
- Préparation des données
- Déploiement
- Étape 2 : Configurer l'environnement.
- Étape 3 : Démarrer le système.
- Étape 4 : Importer des vidéos.
- Affichage de l'interface
- Créez le vôtre
On This Page
Try Managed Milvus for Free
Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.
Get StartedLike the article? Spread the word