Mini projet : Création d’un moteur de recherche d’image
Objectifs généraux
Ce TP est consacrée à l’indexation des images en utilisant différents descripteurs et comparer les résultats
obtenus.
Objectifs spécifiques
I. Description de l’image
Utilisation des histogrammes couleurs, en niveaux de gris et le Corrélogramme comme descripteurs d’image
Utiliser la distance euclidienne pour comparer une image requête et les images d’une base de données.
Étape 1 : Montage de Google Drive
Explication
● Cette commande permet de monter votre Google Drive dans l'environnement Colab.
● Une fois monté, vous pouvez accéder à vos fichiers stockés dans Google Drive via le chemin
/content/drive/MyDrive.
Étape 2 : Vérification du contenu du répertoire
Explication
● [Link]() liste tous les fichiers et dossiers présents dans le répertoire spécifié.
● Cela vous permet de vérifier si le fichier Apple Red [Link] est bien présent dans le dossier Colab
Notebooks.
Étape 3 : Décompression du fichier zip
Explication
● Le fichier Apple Red [Link] est décompressé dans le même répertoire (Colab Notebooks).
● Après décompression, vous devriez voir un nouveau dossier Apple Red 1 dans la liste des fichiers.
Importation des bibliothèques
Étape 4 : Chargement de l'image requête
Explication
● Le chemin complet de l'image requête est construit en combinant le répertoire et le nom de
l'image.
● L'image est chargée avec [Link], et ses dimensions sont affichées pour vérifier qu'elle a été
correctement chargée.
Étape 5 : Calcul de l'histogramme couleur
Explication
● L'histogramme couleur est calculé en utilisant [Link].
● Les paramètres [8, 8, 8] indiquent que l'histogramme est divisé en 8 bins pour chaque canal (R, G, B).
Étape 6 : Indexation et recherche d'images similaires
Explication
● La fonction indexer_images crée un index des histogrammes pour toutes les images du répertoire.
● La fonction rechercher_images_similaires compare l'histogramme de l'image requête avec ceux
des images indexées pour trouver les plus proches.
Étape 7 : Indexation et recherche avec niveaux de gris
Explication
● Les images sont converties en niveaux de gris avant de calculer leur histogramme.
● Les résultats sont similaires à ceux obtenus avec l'histogramme couleur, mais basés uniquement
sur l'intensité des pixels.
Étape 8 : Indexation et recherche avec le corrélogramme
Explication
● Le corrélogramme utilise la matrice de cooccurrence des niveaux de gris (GLCM) pour extraire
des propriétés comme la corrélation.
● Les images similaires sont identifiées en comparant ces propriétés.
Afficher les resultats
***Le projet consiste à réaliser les tâches suivantes :
1. Création d’une base d’image plus diversifié que l’image utilisée dans ce TP.
2. Créer un programme qui permet de choisir le type de descripteur à utiliser, ajouter une
image requête, et fournir les 5 premiers images similaires.
3. Ajouter un module pour indexer et rechercher les images en utilisant le modèle profond
« VGG16 ».
Elément de l’amélioration du Rendu (optionnel):
Voici quelques proposition que vous pouvez l’ajouter pour l’amélioration du rendu ;
Une Interface graphique.
Un module pour évaluer les résultats de recherche effectuée
Un module pour calculer les performances de système de recherche élaboré
Toute autre proposition est acceptée
Elément de l’amélioration du Rendu (optionnel):
1. Ajout d'une Interface Graphique (Streamlit)
Pourquoi ?
Une interface graphique rend votre programme convivial et accessible à tous les utilisateurs, même sans
connaissances techniques.
Lancer Streamlit
Démarrez le serveur Streamlit en arrière-plan
Configurer Ngrok
Utilisez Ngrok pour créer un tunnel vers votre application Streamlit :
Code Modifié avec Streamlit
1. Module d'Évaluation des Résultats
Pourquoi ?
Un module d'évaluation permet de mesurer la qualité des résultats renvoyés par votre moteur de
recherche d'images (précision, rappel, etc.).
Exemple : Calcul de Précision et Rappel
Ajoutez un système pour évaluer si les images retournées sont pertinentes.
3. Système de Feedback Utilisateur
Pourquoi ?
Un système de feedback permet de collecter des données sur la satisfaction des utilisateurs et
d'améliorer le système en conséquence.
Exemple : Collecte de Feedback
Ajoutez une option pour que l'utilisateur indique si les résultats sont utiles.
pouvez également enregistrer les feedbacks dans un fichier CSV pour analyse ultérieure.
4. Visualisation des Caractéristiques Extraires
Pourquoi ?
Visualiser les caractéristiques extraites (ex. : histogrammes, vecteurs VGG16) aide à comprendre
comment le système fonctionne.
Exemple : Visualisation avec Matplotlib
Affichez les histogrammes ou les vecteurs extraits.
Système de Tri Avancé
Pourquoi ?
Permettre à l'utilisateur de trier les résultats selon différents critères (distance, catégorie, etc.) améliore
l'expérience utilisateur.
Exemple : Tri par Distance ou Popularité
Ajoutez une option pour trier les résultats
6. Intégration de Modèles Profonds Plus Avancés
Pourquoi ?
Des modèles comme ResNet , EfficientNet , ou CLIP peuvent capturer des caractéristiques sémantiques
plus riches.
Exemple : Remplacement de VGG16 par ResNet
Remplacez VGG16 par un modèle plus avancé comme ResNet.
7. Support Multilingue
Pourquoi ?
Ajouter un support multilingue rend votre application accessible à un public international.
Exemple : Traduction Simple
Ajoutez des messages traduits pour différentes langues.
8. Gestion des Erreurs Robuste
Pourquoi ?
Une gestion des erreurs robuste rend votre application plus fiable et conviviale.
Exemple : Gestion des Exceptions
Ajoutez des vérifications pour éviter les plantages