Comment Open Food Facts se sert des logos comme source d’information
🧂Une pincée de contexte :“des logos” ?
Open Food Facts recense environ 3 millions de produits. L’emballage de chaque produit est conçu pour attirer autant de personnes que possible. À cet égard, les producteurs mettent en évidence les qualités de leurs produits avec des symboles attrayants et explicites. Ces symboles sont nombreux et peuvent donner des informations sur la marque du produit, sa qualité, sa composition, la manière dont il a été fabriqué, dans quelle poubelle le jeter, etc.
Pour homogénéiser tous les symboles et aider les consommateurs à trouver des produits qui leur conviennent, diverses institutions ont créé des règles strictes pour que les producteurs puissent marquer leurs produits avec des symboles spécifiques que nous appelons « logos ».
Il y a donc une immense opportunité 🔥 pour obtenir des données sur les produits en détectant ces logos!
Comment Open Food Facts devrait-il les détecter ? Grâce à un mélange entre la technologie et les contributeurs, comme toujours !
Raphaël Bournhonesque, un ancien contributeur d’Open Food Facts qui fait désormais partie de l’équipe permanente et est aussi mon superviseur de stage, a développé dans Robotoff* un système pour extraire les logos à partir d’images, les convertir en vecteurs et trouver les plus proches voisins de chaque vecteur. Trouver les voisins de chaque logo permet aux contributeurs d’« annoter » (catégoriser manuellement) de grandes quantités de logos en même temps à travers une plateforme appelée Hunger Games 😉.
Cependant, les modèles et algorithmes utilisés à l’époque ne pouvaient pas donner de résultats suffisamment efficaces. En septembre 2022, étant étudiant en école d’ingénieur, j’ai rejoint l’équipe pour un stage de 6 mois qui serait consacré aux logos, et j’ai travaillé à la refonte de tout ce processus !
* Qu’est-ce que Robotoff ? Robotoff est un service développé par des contributeurs pour aider le traitement des données d’Open Food Facts. Basé sur les données déjà disponibles dans la base, l’objectif est de récupérer autant d’informations que possible sur chaque produit et de les ajouter à Open Food Facts. Actuellement, les mises à jour effectuées par Robotoff proviennent de l’analyse d’images, via la reconnaissance optique de caractères ou des modèles de vision informatique plus généraux. Certaines mises à jour sont appliquées automatiquement à la base de données, mais d’autres nécessitent une validation manuelle via des questions ou Hunger Games. Pour plus d’informations, jetez un œil ici ! 👀 |
🫗 Un filet de technologie : Comment trouver automatiquement les plus proches voisins de chaque logo ?
1️⃣ Extraire les logos depuis les images des produits de la base de données :
Les contributeurs d’Open Food Facts ont entraîné un modèle d’apprentissage automatique pour reconnaître les logos dans les images. Nous mettons une image en entrée du modèle et nous recevons plusieurs rectangles de délimitation des logos avec des scores de réussite et des classes correspondants. Les classes sur lesquelles le modèle a été formé étaient « marque » et « label ».
Vous trouverez le code où le modèle est appelé ici : Robotoff.import_image.py.
Vous pouvez vous-mêmes utiliser le modèle avec l’API suivante :
2️⃣ Convertir les images de logos en vecteur :
Maintenant que nous pouvons accéder aux logos, nous avons besoin de les vectoriser. Pour cela, nous utilisons un modèle pré-entraîné d’OpenAI appelé CLIP. Bien que le modèle ait initialement été entraîné pour assortir les images avec le texte, nous n’utilisons que la partie « vision d’images » du modèle pour obtenir les embeddings. Les embeddings sont une représentation vectorielle (une liste de chiffres) calculée par CLIP pour chaque logo.
Nous avons donc une image de logo en entrée et un vecteur en sortie. Plus la distance entre deux vecteurs est petite, plus les deux logos correspondants sont similaires.
3️⃣ Trouver les plus proches voisins :
Pour trouver les voisins les plus proches d’un logo, nous utilisons un « index » pour stocker les embeddings. Une fois cet index construit, nous pourrions utiliser la méthode « brute force » qui consiste à calculer la distance entre le logo requête et tous les autres logos de la base de données et à retourner les plus proches. C’est la méthode la plus précise, car elle nous donne les plus proches voisins réels et non pas une approximation. Cependant, cette méthode est trop lente pour être appliquée. Le temps nécessaire pour extraire les plus proches voisins d’un logo lorsque le nombre total de logos est de 2,5 millions est d’environ 3 secondes.
Comme nous avions besoin d’un meilleur temps de recherche et d’une précision moindre, nous avons décidé d’utiliser une méthode approchée. Celle que Robotoff utilise est appelée HNSW (hierarchical navigable small world). Vous pouvez consulter cet article pour mieux comprendre la recherche des voisins les plus proches.
En utilisant un index HNSW ElasticSearch, Robotoff est désormais capable de rechercher les voisins les plus proches de chaque embedding parmi plus de 2,5 millions de vecteurs avec une grande précision (plus de 90% des 100 voisins les plus proches retournés sont parmi les 100 vrais plus proches voisins) et en un temps de recherche de moins de 100 ms 👏👏👏👏.
Vous pouvez utiliser cette API pour récupérer les logos les plus proches d’un logo dont vous avez l’id :
https://robotoff.openfoodfacts.org/api/v1/ann/search/[logo_id]?count=[count]
🍯 Une cuillerée de contributions : À quoi ça sert ?
Aucune catégorisation automatique de logos n’est encore implémentée dans Robotoff. Tout ce que j’ai expliqué jusqu’à présent est uniquement destiné à Hunger Games.
De quoi s’agit-il ? C’est une plateforme d’annotation développée par Alexandre Fauquette, un contributeur, qui permet à tout le monde de vérifier les prédictions faites par Robotoff et de catégoriser ainsi les logos.
Vous pouvez essayer. Une brève introduction/tutoriel vous accueillera et vous pourrez annoter des logos ! 😉
Une vidéo tutoriel de « Comment utiliser Hunger Games? » devrait sortir bientôt… ⏳
Annoter des logos améliore Open Food Facts en augmentant la quantité de données que nous avons sur les produits. Et grâce aux modèles et algorithmes utilisés en arrière-plan, vous êtes désormais beaucoup plus puissant et avez un plus grand impact sur l’alimentation quotidienne de la population 🥰.
Article rédigé par Gabriel
No Comments