Wie Open Food Facts Logos verwendet, um Informationen über Lebensmittelprodukte zu erhalten
So nutzt Open Food Facts Logos, um Informationen über Lebensmittelprodukte zu erhalten
🧂Eine Prise Kontext: „Logos”?
Open Food Facts ist mit etwa 3 Mio. Produkten gefüllt. Jedes Produkt hat eine Verpackung, die so gestaltet ist, dass sie so viele Verbraucher wie möglich anspricht. Zu diesem Zweck heben die Hersteller die Qualitäten ihrer Produkte mit auffälligen und eindeutigen Symbolen hervor. Diese Symbole sind zahlreich und geben Auskunft über die Marke des Produkts, seine Qualität, seine Zusammensetzung, die Art der Herstellung, in welcher Form es zu entsorgen ist, usw…
Um alle Symbole zu vereinheitlichen und den Verbrauchern zu helfen, Produkte zu finden, die zu ihnen passen, haben verschiedene Institutionen strenge Regeln aufgestellt, damit die Hersteller ihre Produkte mit bestimmten Symbolen kennzeichnen können, die wir „Logos” nennen. Es besteht also eine große Chance 🔥, durch die Erkennung dieser Logos Daten über Produkte zu erhalten!
Wie soll Open Food Facts sie erkennen? Wie immer dank einer Mischung aus Technik und Mitwirkenden!
Raphaël Bournhonesque, ein ehemaliger Mitarbeiter von Open Food Facts, der jetzt zum festen Team gehört und mein Praktikumsbetreuer ist, hatte in Robotoff* ein System entwickelt, um Logos aus Bildern zu extrahieren, sie in Vektoren umzuwandeln und die nächsten Nachbarn jedes Vektors zu finden. Das Ziel, die Nachbarn von Logos zu finden, war es den Teilnehmern zu ermöglichen, riesige Mengen von Logos gleichzeitig über eine Plattform namens Hunger Games 😉 zu „annotieren” (manuell zu kategorisieren).
Die damals verwendeten Modelle und Algorithmen lieferten jedoch nicht genügend effiziente Ergebnisse.
Im September 2022 trat ich, ein Student der Ingenieurwissenschaften, dem Team für ein 6-monatiges Praktikum bei, das dem Bereich Logos gewidmet war, und ich arbeitete an der Überarbeitung des gesamten Prozesses! 🥳
* Was ist Robotoff? Robotoff ist ein von Mitwirkenden entwickelter Dienst, der die Verarbeitung von Open Food Facts-Daten unterstützt. Ziel ist es, auf der Grundlage der bereits in der Datenbank vorhandenen Daten so viele Informationen wie möglich zu den einzelnen Produkten abzurufen und diese in die Datenbank aufzunehmen. Derzeit stammen die von Robotoff vorgenommenen Aktualisierungen aus der Bildanalyse, durch optische Zeichenerkennung oder allgemeinere Computer-Vision-Modelle. Einige Aktualisierungen werden automatisch in die Datenbank übernommen, andere müssen manuell durch Fragen oder Hunger Games validiert werden. Wenn Sie mehr über Robotoff erfahren möchten, schauen Sie hier! 👀 |
🫗 Ein Hauch von Technik: Wie funktioniert die Verarbeitung von Logos genau?
1️⃣ Logos aus Produktfotos extrahieren:
Die Mitarbeiter von Open Food Facts haben ein Modell für maschinelles Lernen trainiert, um Logos in Bildern zu erkennen. Wir geben eine Abbildung in das Modell ein und erhalten mehrere Begrenzungsrahmen mit entsprechenden Bewertungen und Klassen. Die Klassen, auf denen das Modell trainiert wurde, waren „Marke” und „Etikett”.
Den Code, in dem das Modell aufgerufen wird, finden Sie hier: Robotoff.import_image.py.
Sie können es mit Hilfe der folgenden API ausprobieren : https://robotoff.openfoodfacts.net/api/v1/images/predict?image_url=[image_url]&models=universal-logo-detector
Anhand des Begrenzungsrahmens können Sie die entsprechenden Logos mit der API sehen: https://robotoff.openfoodfacts.net/api/v1/images/crop?image_url=[image_url]&y_min=[y_min]&x_min=[x_min]&y_max=[y_max]&x_max=[x_max], wobei die Koordinaten in der gleichen Reihenfolge wie die vom Modell in den Begrenzungsrahmen zurückgegebenen sind.
Das folgende Bild ist ein Beispiel dafür, was bei der Verwendung dieser APIs passiert:
https://images.openfoodfacts.org/images/products/322/982/012/9488/front_fr.194.400.jpg
2️⃣ Logobilder in Vektoren umwandeln:
Nun, da wir auf Logos zugreifen können, müssen wir sie vektorisieren. Dazu verwenden wir ein vortrainiertes Modell von OpenAI namens CLIP. Obwohl das Modell ursprünglich für die Zuordnung von Bildern zu Text trainiert wurde, verwenden wir nur den „Computer Vision”-Teil des Modells, um die von CLIP für jedes Logo berechneten Einbettungen (= in einen Vektorraum eingebettete Logos) zu erhalten.
Wir haben also ein Logobild als Eingabe und einen Vektor der Dimension 512 als Ausgabe. Je kleiner der Abstand zwischen zwei Vektoren ist, desto ähnlicher sind sich die beiden entsprechenden Logos.
Die Funktion save_logo_embeddings in Robotoff ist für die Anwendung des Modells auf Logos und die Speicherung von Einbettungen in der Robotoff-Postgresql-Datenbank zuständig.
Sie können einen expliziteren Code hier finden, um zu verstehen, wie wir CLIP verwenden, um Logos einzubetten.
3️⃣ Nächste Nachbarn finden:
Um die nächstgelegenen Nachbarn eines Logos zu finden, verwenden wir einen „Index”, um die Einbettungen zu speichern. Sobald dieser Index erstellt ist, können wir die „Brute-Force”💪-Methode anwenden, die darin besteht, den Abstand zwischen dem Abfragelogo und allen anderen Logos der Datenbank zu berechnen und die am nächsten liegenden zurückzugeben. Das ist die genaueste Methode, da sie uns die „wahren” nächsten Nachbarn liefert. Diese Methode ist jedoch zu langsam, um angewendet zu werden. Die Zeit, die benötigt wird, um die nächsten Nachbarn für jedes Logo zu extrahieren, wenn die Gesamtzahl der Logos 2,5 Mio. beträgt, beträgt etwa 3 Sekunden 😴
Da wir eine bessere Suchzeit brauchten und eine geringere Genauigkeit in Kauf nahmen, entschieden wir uns für eine Näherungsmethode. Die von Robotoff verwendete Methode heißt HNSW (hierarchical navigable small world). Sie können einen Blick auf diesen Artikel werfen, um die Suche nach den nächstgelegenen Nachbarn besser zu verstehen.
Unter Verwendung eines HNSW ElasticSearch-Index ist Robotoff nun in der Lage, die nächsten Nachbarn jeder Einbettung unter mehr als 2,5 Mio. Vektoren mit einer enormen Präzision (mehr als 90 % der zurückgegebenen 100 nächsten Nachbarn gehören zu den exakten 100 echten nächsten Nachbarn) und einer kurzen Suchzeit von weniger als 100 ms zu finden 👏👏👏👏.
Sie können die folgende API verwenden, um die nächstgelegenen Nachbarn eines Logos zu ermitteln: https://robotoff.openfoodfacts.org/api/v1/ann/search/[logo_id]?count=[count]
🍯 Ein Löffel voller Beiträge: Wo wird er verwendet?
In Robotoff ist noch keine automatische Logo-Kategorisierung implementiert. Alles, was ich vorher erklärt habe, ist nur für Hunger Games gemacht.
Was ist das? Es handelt sich um eine Anmerkungsplattform , die von einem Mitarbeiter namens Alexandre Fauquette entwickelt wurde und jedem die Möglichkeit bietet, die von Robotoff gemachten Vorhersagen zu überprüfen und die Logos zu kategorisieren.
Sie können es versuchen. Eine kurze Einführung/Tutorial wird Sie willkommen heißen und Sie werden in der Lage sein, Logos zu beschriften! 😉
Ein Video-Tutorial zu „Wie benutzt man Hunger Games?” sollte bald erscheinen … ⏳
Die kommentierten Logos verbessern Open Food Facts, da sie die Menge der Daten, die wir über Produkte und ihre Qualität haben, erhöhen. Und dank der Modelle und Algorithmen, die im Hintergrund verwendet werden, können Sie viel leistungsfähiger sein und einen größeren Einfluss auf die tägliche Ernährung der Menschen haben 🥰.
Artikel von Gabriel
No Comments