J'ai créé un système CBIR dans MATLAB et j'ai utilisé la mesure de similarité comme la distance euclidienne. En utilisant ceci pour chaque image de requête, je récupère les 20 images les plus importantes.Calculer la précision et rappeler sur la base de données WANG
J'ai utilisé WANG Dataset pour tester mon système.
Il contient 10 classes (comme les Africains, les Bus, les Roses, etc.) contenant chacune 100 images (1000 images au total).
Ma méthode:
1. J'utilise corrélogramme, Matrix Cooccurrence (CCM) et la différence entre modèle de balayage des pixels (DBPSP) pour la construction de mon vecteur (64 + 196 + 28 = 288 dimensions respectivement).
- Chacune des images de 1000 db dont j'ai déjà construit le vecteur.
- Maintenant une image de requête vient et je construis aussi son vecteur (228 dimensions à nouveau).
- J'utilise la distance euclidienne pour la similarité et le tri des vecteurs d'image db dans l'ordre décroissant de leur distance euclidique.
Les 20 premiers résultats sont affichés.
Dans ces 20 je peux avoir TP ou FP.
Pour une seule image de requête que je peux facilement calculer précision et de rappel et de terrain PR-courbe en utilisant ce link.
Comment puis-je faire la même chose pour toute la classe?
Mon approche: Pour chaque image appartenant à la classe A, retrouvez les 20 images les plus importantes et c'est respectivement TP (vrais positifs) et FP (faux positifs).
TP FP
Image1 17 3
Image2 15 5
...
...
Image100 10 10
Total 1500 500
Précision de classe A = 1500/(2000) = .75 (Est-il juste ??)
Rappel de la classe A ---> Coincé ??
PR-Curve ----> Stuck ?? Certains liens disent que j'ai besoin d'un classificateur pour cela et d'autres pas ... Je suis vraiment confus.
Avez-vous la matrice de confusion ou avez-vous seulement le TP/FP? – krisdestruction
Uniquement TP et FP. Sur 20 images si l'image appartient à la classe correcte, j'augmente TP d'une unité et sinon j'augmente FP d'une unité. Comment puis-je vérifier qu'une image est de bonne classe est simple que les images de classe A sont de 0 à 99, puis les classes B sont de 100 à 199 et ainsi de suite. Donc une simple boucle if-else me donne la réponse. – CoderBoy
gahh d'accord ma solution ne fonctionnera pas alors :( – krisdestruction