<jupyter_start><jupyter_text>Packages<jupyter_code># necessary class
import pandas as pd

from IPython.display import HTML
from IPython.display import Image
from IPython.display import display<jupyter_output><empty_output><jupyter_text>Objectif La [recherche d’images basée sur le contenu](https://fr.wikipedia.org/wiki/Recherche_d%27image_par_le_contenu) (CBIR) est une méthode permettant de rechercher des images à partir des caractéristiques visuelles, c’est-à-dire induites des pixels. L’utilisation la plus connue de cette méthode est la fonction de recherche par images du moteur de recherche Google. Elle s’effectue en trois étape :1. extraction des caractéristiques d’une base de données d’images pour former une base de données des caractéristiques,2. extraction des caractéristiques de l’image fournie en entrée,3. trouver les caractéristiques les plus similaires dans la base de données,4. retourner l’image associée aux caractéristiques trouvées.<jupyter_code>Image("cbir.png")<jupyter_output><empty_output><jupyter_text>Cette méthode répose sur l'algorithme d'extraction et la comparaison des caractéristiques. Mesure de similarité* [Similarité cosinus](https://fr.wikipedia.org/wiki/Similarit%C3%A9_cosinus)* [Distance de manhattan](https://fr.wikipedia.org/wiki/Distance_de_Manhattan)* [Distance euclidienne](https://fr.wikipedia.org/wiki/Espace_euclidien) Algorithme d'extraction* [AKAZE](https://docs.opencv.org/3.4/db/d70/tutorial_akaze_matching.html)* [ORB](https://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_feature2d/py_orb/py_orb.html)* [SURF](https://docs.opencv.org/master/df/dd2/tutorial_py_surf_intro.html)* [VGG16](https://neurohive.io/en/popular-networks/vgg16/)* [VGG19](https://iq.opengenus.org/vgg19-architecture/)* [MobileNet](https://www.quantmetry.com/blog/mobilenet-optimisation-de-la-convolution-pour-les-reseaux-de-neurones-embarques/)* [Autoencoder](https://en.wikipedia.org/wiki/Autoencoder) **L'objectif de trouver la bonne combinaisons (algorithme d'extraction & mesure de similarité) qui permet d'avoir des réponses pertinentes.**  Jeux de donnéesNous avons utilisé le jeu de donnée [Apparel](https://www.kaggle.com/trolukovich/apparel-images-dataset) pour notre évaluation.Elle contient 11385 images réparties en 37 catégories.  Evaluation  Métriques d'évaluation* Mean Average Precision (MAP) pour mesurer la robustesse du système* Mean Reciprocal Rank (MRR) pour mesurer la pertinence du premier élément* Temps de traitement d'une requêtePour plus de détail [voir](https://web.stanford.edu/class/cs276/handouts/EvaluationNew-handout-1-per.pdf)<jupyter_code>score = pd.read_csv('../outputs/evaluation.csv')
score = score[['extractor', 'distance', 'mrr', 'mmap', 'average_time', 'comparison_item']]
score<jupyter_output><empty_output><jupyter_text>Par couleur<jupyter_code>color = score[score.comparison_item == 'color']
color<jupyter_output><empty_output><jupyter_text>Par type<jupyter_code>style = score[score.comparison_item == 'style']
style<jupyter_output><empty_output><jupyter_text>Les deux<jupyter_code>both = score[score.comparison_item == 'both']
both<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.11347068145800317, 'fraction_numerical': 0.010459587955625991, 'mean_word_length': 7.240208877284595, 'pattern_counts': {'":': 0, '<': 25, '<?xml version=': 0, '>': 25, 'https://': 13, 'lorem ipsum': 0, 'www.': 2, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '6', 'dir': 'jupyter-structured-clean-dedup', 'id': '275762', 'license': 'MIT', 'n_tokens_mistral': 1125, 'n_tokens_neox': 1096, 'n_words': 230, 'path': 'notebooks/evaluation.ipynb', 'repo_name': 'schalappe/content-based-image-retrieval', 'size': '3155'}