Vision par ordinateur
Problème & approche
L’utilisateur soumet une image requête. Le système extrait des descripteurs et retourne les images les plus
similaires
selon une métrique. L’approche combine descripteurs “classiques” (couleur, niveaux de gris, forme, texte),
des descripteurs profonds (embeddings via un CNN type ResNet), des classes Vérité/Terrain, avec une évaluation
quantitative (précision / rappel).
Les descripteurs de toutes les images de la base de données des images sont générés en asynchrone afin de ne
pas bloquer l'utilisateur dans ses recherches.
Fonctionnalités clés
- Upload d’une image requête via l’interface web
- Modes de recherche : couleur / forme / texte / deep (ResNet) / classes Vérité-Terrain / combinaison pondérée
- Résultats classés par score de similarité
- Évaluation : courbes précision/rappel
- Architecture modulaire pour ajouter facilement de nouveaux descripteurs
Compétences démontrées
- Conception d’une architecture full-stack Angular / Spring Boot.
- Développement d’une API REST pour la recherche multimédia.
- Implémentation d’algorithmes de recherche par similarité d’images.
- Extraction et comparaison de descripteurs visuels (couleur, niveaux de gris, forme et texte).
- Utilisation d’un réseau de neurones convolutionnel (ResNet) pour la génération d’embeddings.
- Mise en œuvre d’une recherche vectorielle basée sur les plus proches voisins.
- Combinaison et pondération de plusieurs métriques de similarité.
- Traitements asynchrones pour la génération et l’indexation des descripteurs.
- Évaluation des performances à l’aide d’indicateurs de précision et de rappel.
- Conteneurisation et exécution reproductible avec Docker Compose.
Architecture
Organisation du projet
.
├── multimedias-ui/ # Frontend Angular
├── multimedia/ # Backend Spring Boot / Java
├── data/
│ ├── images/ # Jeux d’images
│ ├── indexes/ # Indexs descripteurs
│ └── ground_truth/ # Vérité terrain
└── compose.yaml
Exécution via Docker (démo reproductible)
- Démarrer :
docker compose -f compose.yaml up -d - Arrêter :
docker compose -f compose.yaml down
Accès :
- Frontend Angular :
http://localhost:4200 - Backend API :
http://localhost:8087
API (exemples)
Recherche par image :
POST /api/search (multipart/form-data)
- file : image requête
- topK : nombre de résultats pertinents et affichage des 8 plus proches voisins
- mode : color | shape | text | ground-truth | deep | combined (optionnel)
Exemple curl :
curl -X POST http://localhost:8087/api/search \
-F [email protected] \
-F topK=10 \
-F mode=combined