Rec²: Rezepterkundung
Michael Daly , John McNally
Einführung
Essen ist einer der reichhaltigsten Beiträge zur menschlichen Erfahrung. Es erfasst unsere Emotionen und unsere Sinne. Das süße Aroma frischer Pfannkuchen, der beruhigende Kontrast einer warmen Suppe in einer kalten Nacht, das Brutzeln eines rohen Steaks, das auf einen feurigen Grill trifft. Seit Jahrtausenden kommen Menschen zusammen, um Brot zu brechen. In jüngerer Zeit sind schriftliche Rezepte entstanden, während wir unsere Techniken zur Herstellung guter Speisen bewahren und teilen. Das richtige Essen kann eine Erinnerung zementieren. Ein besonderes Rezept kann eine Familienbande oder ein Milliardenunternehmen untermauern. Unser Team hier bei Rec² hat eine Web-App entwickelt, um das Erkunden und Experimentieren mit neuen und alten Rezepten zu fördern!
Heute sind Millionen hochwertiger Rezepte online verfügbar. Ein Forschungsteam des MIT hat über 1 Million davon von beliebten Websites abgekratzt, um den Recipe1M+-Datensatz zu bilden (Marin, 2019). Jedes Rezept enthält eine Mischung aus natürlicher Sprache, Mengen und Bildern – ein reichhaltiges Substrat für maschinelles Lernen. Unser Team verwendete den Recipe1M+-Datensatz, um eine Reihe von Modellen zu entwickeln, um diese Rezepte zu interpretieren und in Beziehung zu setzen. Wir glauben, dass die nächste Evolution der Entdeckung und Kreativität von Lebensmitteln durch die Datenwissenschaft ergänzt wird. Neue Geschmackskombinationen, Austausch von Zutaten oder ganze Rezepte könnten durch künstliche Intelligenz generiert werden. Intelligente Analysen können ein besseres Lebensmittelbestandsmanagement für eine bessere Logistik und einen effizienteren Verbrauch ermöglichen.
Um ihre Angemessenheit und Nützlichkeit zu maximieren, müssen diese Modelle so allgemein zugänglich sein wie die Rezepte, die sie beschreiben. Unser Team hat der Zugänglichkeit Priorität eingeräumt, indem es unsere Modelle in eine Web-App integriert hat, die ohne Installationen oder Data-Science-Erfahrung ausgeführt werden kann. Das von uns präsentierte Dashboard ist als Einführung in das maschinelle Lernen für ein allgemeines, lebensmittelliebendes Publikum konzipiert.
Hier ist die App . Bitte probieren Sie einige Ihrer eigenen Eingabeaufforderungen und Bilder aus!
Methoden
Unsere App benötigt lediglich eine von zwei Eingaben des Benutzers: entweder den Namen eines Gerichts oder ein Bild des Gerichts. Den Rest erledigen wir! Die folgende Abbildung zeigt die Pipeline, die unsere App verwendet. Wenn der Benutzer den Namen eines Rezepts eingibt, gibt die App vorhergesagte Zutaten mit gemeinsamen Paarungen, eine Aufschlüsselung der Lebensmittelart und der ethnischen Zugehörigkeit zurück und zeichnet das Essen in einem Diagramm der ethnischen Zugehörigkeiten auf. Wenn der Benutzer ein Bild hochlädt, sagt die App den Titel des Rezepts voraus und führt dann die gleichen Analysen durch. Die an den Benutzer zurückgegebenen Informationen ermöglichen es ihm, seine Lieblingsrezepte auf eine neue Art und Weise zu erkunden.
Die Rec²-App basiert auf einer Python-Bibliothek namens Streamlit, deren Verwendung ein Vergnügen war. Streamlit ermöglicht es Entwicklern, ihre Modelle für maschinelles Lernen schnell aus einem GitHub-Repository heraus zu starten und zu hosten. Unsere App wird von einem Hauptskript ausgeführt, das das Erscheinungsbild der Website steuert und die Ergebnisse von unterstützenden Skripts anzeigt, die Rückschlüsse aus unseren gespeicherten Modellen und Daten ziehen. Die einfachen, aber leistungsstarken Funktionen von Streamlit machten die Implementierung unserer App unkompliziert und leicht zu verbessern.
Recipe1M+ Datensatz
Das Recipe1M+-Dataset ist ein großes, reichhaltiges Dataset, das auf viele Arten verwendet werden kann. Um den Umfang dieses Projekts einzuschränken, haben wir uns entschieden, uns auf das Vorhandensein von Zutaten zu konzentrieren, anstatt auf die genauen Mengen jeder Zutat. Die erste große Bereinigung der Daten bestand darin, zusätzliche Informationen wie Maße oder Zubereitungstechniken von den Zutaten zu entfernen. In diesem Fall möchten wir „Zwiebel“ aus einer Phrase wie „1 Tasse gehackte Zwiebel“ extrahieren. In ähnlicher Weise wollten wir für die Titel der Rezepte die Namen der Gerichte ohne den üblichen Füller extrahieren, der den Rezepttiteln hinzugefügt wird. Zum Beispiel möchten wir „Chocolate Chip Cookies“ aus „Grandma Bettys World Famous Chocolate Chip Cookies“ herausziehen. Obwohl wir gerne ein paar Kekse von Oma Betty haben würden, würden diese Füllwörter die Modelle nur verwirren.
Um diese Reinigungsschritte durchzuführen, wurde ein Skript geschrieben, um die ursprüngliche JSON-Datei in eine bereinigte und besser verwendbare Version zu konvertieren. Der erste Schritt im Skript bestand darin, die Wortart (POS) für jedes Token zu tokenisieren und zu kennzeichnen. Dann wurden Stoppwörter, bestimmte Wortarten und einige zusätzliche Regex aus den Zutaten und Titeln entfernt. Das Ergebnis wurde dann auf zwei Arten gespeichert. Das erste waren die obersten 999 Token, die als neues JSON gespeichert wurden, um mit dem Titel des Zutatenmodells verwendet zu werden. Dieses JSON enthielt die Token mit den höchsten 999 Zählungen, wobei alle anderen Token als „Sonstige“ für das 1000. Token aufgeführt wurden. Die zweite Möglichkeit, die bereinigten Daten zu speichern, war eine bereinigte und komprimierte CSV-Datei, die einfach in einen Pandas DataFrame geladen werden kann. Diese CSV wurde dann verwendet, um die LDA- und Word2Vec-Modelle zu erstellen.
Die erste Version der bereinigten Daten lieferte solide Ergebnisse für unsere Modelle, aber es gab erheblichen Raum für Verbesserungen. Die offensichtlichste Option ist die Variation der Namen gängiger Zutaten. Zum Beispiel könnten Rezepte, die Mehl als Zutat auflisten, es als ['Mehl', 'Allzweckmehl', 'AP-Mehl' usw.] auflisten. Für unsere Modelle sind das unterschiedliche Zutaten, aber für den Benutzer bedeuten sie alle dasselbe. Um diese Variation zu korrigieren, wurde eine Zutatenzuordnung für die 40 wichtigsten Zutaten manuell erstellt, um die Modellleistung zu verbessern. Die Zuordnung wurde erstellt, indem die obersten Token-Variationen durch die gebräuchlichsten Token ersetzt wurden (z. B. „Allzweckmehl“ und „AP-Mehl“ wurden beide durch „Mehl“ ersetzt). Dieses Mapping verbesserte die Modellleistung erheblich und könnte mit einem größeren Mapping weiter verbessert werden.
Epischer Datensatz
Eine Schwäche des Recipe1M+-Datensatzes bestand darin, dass einige der Bilder von Benutzern an die Websites übermittelt wurden, die das Team geschabt hatte. Unter diesen Bildern gibt es beträchtliches Rauschen, und viele scheinen das Gericht, an das sie gebunden sind, nicht darzustellen. Anstatt zu versuchen, die verrauschten Bilder manuell zu beschneiden, wurde ein separater Datensatz ausgewählt, um das Bild-zu-Titel-Modell zu trainieren. Das Dataset Food Ingredients and Recipes Dataset with Images auf Kaggle enthält über 13.000 Rezepte von Epicurious. Obwohl dieser Datensatz viel kleiner ist als Recipe1M+, ist jedes Bild das primäre Archivfoto des eigentlichen Rezepts, sodass die Wiedergabetreue zwischen den Titeln und Bildern viel höher ist. Darüber hinaus hatten die Epicurious-Rezepte tendenziell ausführlichere und beschreibendere Titel, sodass wir glaubten, dass dies zu den interessantesten Ergebnissen führen würde.
Rezepterkennung
Das Rezepterkennungsmodell nimmt ein Bild eines Lebensmittels als Eingabe und gibt eine Folge von Tokens aus, idealerweise den Titel des abgebildeten Rezepts. Das Modell muss lernen, wie Essen aussieht und wie Sprache aufgebaut ist. Es wurden mehrere Modellarchitekturen getestet, aber diejenige, die wir letztendlich ausgewählt haben, ist ein Transformer-Decoder mit einem Bildeinbetter, der sich eng an das Bildbeschriftungs- Tutorial von Tensorflow anlehnt. Der Bildeinbetter ist ein kopfloses MobileNet-Modell von Google (MobileNetV3Small), das die Merkmale aus einem Bild extrahiert, um sie an unser Modell zu übergeben. Die MobileNet-Modelle sind kompakt und wurden mit Millionen von Bildern im ImageNet-Datensatz trainiert. Das Rezepterkennungsmodell nimmt diese Merkmale und baut sequentiell einen Rezepttitel auf.
Obwohl das Rezepterkennungsmodell ziemlich gut darin ist, realistisch klingende Namen von Gerichten zu erzeugen, ist es leider nicht sehr gut darin, das bereitgestellte Eingabebild abzugleichen. Andere Architekturen und Variationen, die wir getestet haben, waren ein Sequenz-zu-Sequenz-Modell (seq2seq) mit GloVe-Einbettungen für die Titel-Token, ein InceptionV3-basierter Bildeinbetter und ein Bildsegmentierungsmodell gepaart mit einem Lebensmittelklassifikator (Bose, 2020). Leider war keine Variante oder Architektur bei dieser Aufgabe erfolgreicher. Die Transformer-Decoder-Architektur mit einer MobileNet-Bildmerkmalsextraktionsschicht wurde gewählt, weil sie die kleinste war, was dazu beitrug, die endgültige Web-App leicht zu halten, und sie liefert die ausführlichsten und unterhaltsamsten Vorhersagen.
Die Aufmerksamkeitskarten helfen zu erklären, was die schlechte Leistung verursacht. Aufmerksamkeitskarten zeigen, welche Regionen eines Bildes die meisten Neuronen im Modell aktivieren. Umgangssprachlich zeigt es, wohin das Modell in einem Bild schaut, wenn es jedes Token vorhersagt. Wie oben gezeigt, sagt das Modell „Mac“ basierend auf einer Region voraus, die die Farbe und Textur von Makkaroni und Käse eindeutig darstellt. Von dort aus befinden sich die Fokusbereiche in den Rändern und Ecken des Bildes, da sich das Modell anscheinend mehr auf sein Grammatikverständnis als auf die Daten in den Bildpixeln zu verlassen scheint. Das Modell scheint auch bei gut beleuchteten, klaren, professionellen Fotos besser abzuschneiden, wahrscheinlich weil die Trainingsdaten fast ausschließlich professionell aufgenommene Bilder enthielten. Ein vielfältigerer, aber saubererer Trainingsdatensatz würde die Leistung des Modells wahrscheinlich erheblich verbessern.
Zutatenvorhersage
Bei gegebenem Namen eines Rezepts gibt das Zutatenvorhersagemodell die wahrscheinlichen Zutaten aus, die in diesem Rezept enthalten sind. Um die Größe des Modells zu begrenzen, wurden während des Trainings nur die 999 häufigsten Titel-Token und Zutaten aufgenommen, während alle anderen Elemente einer „anderen“ Kategorie zugeordnet wurden. Im Gegensatz zum Rezepterkennungsmodell verwendet das Zutatenvorhersagemodell spärliche Vektoren sowohl als Eingaben als auch als Ausgaben anstelle von Sequenzen. Die Reihenfolge einer Zutatenliste ist beliebig, und die Reihenfolge der Token in einem Rezept ist weniger wichtig für die Bestimmung der zugrunde liegenden Zutaten. Das neuronale Netzwerk besteht aus nur drei dichten verborgenen Schichten mit ReLU-Aktivierungen in einer einfachen Encoder-Decoder-Architektur.
Während die Architektur einfach war, mussten die Trainingsmethoden für diese Multi-Label-Klassifizierungsaufgabe stark angepasst werden. Für jedes gegebene Rezept wird die überwiegende Mehrheit der bekannten Zutaten nicht vorhanden sein. Daher würde ein triviales Modell, das Nullwahrscheinlichkeiten für alle Bestandteile ausgibt, aufgrund der überwältigenden Anzahl von echten Negativen eine Genauigkeit von mehr als 99 % erreichen. Um das extreme Klassenungleichgewicht auszugleichen, enthält Tensorflows weighted_cross_entropy_with_logitswurde modifiziert, um positive Vorhersagen viel stärker zu gewichten. Darüber hinaus wurden die Gewichte für jeden Inhaltsstoff linear nach Häufigkeit skaliert, sodass eine genaue Vorhersage eines seltenen Inhaltsstoffs höher gewichtet wurde als die Vorhersage eines häufigen Inhaltsstoffs. Diese Gewichte trugen dazu bei, dass das Modell trotz des Ungleichgewichts in der Verteilung der Zutaten nicht einfach die wenigen am häufigsten verwendeten Zutaten für jedes Rezept vorhersagte.
Das durchschnittliche Rezept in unserer Testpartition enthält weniger als 1 % der 1.000 Zutaten, die dem Modell bekannt sind (5,05 echte Zutaten). Während das Zutatenvorhersagemodell immer noch eine Gesamtgenauigkeit von mehr als 99 % erreicht, erreichte es auch eine Wiedererkennung von 0,50 und eine Genauigkeit von 0,32, was bedeutet, dass das Modell im Durchschnitt 7,78 Vorhersagen pro Rezept macht, von denen 2,52 richtig sind. Angesichts der rohen Wahrscheinlichkeit, dass jede vorhergesagte Zutat tatsächlich zum Rezept passt (abgesehen von den Top-Paar-Zutaten), sind dies enorme Ergebnisse. Während das Modell mit Garnierungen wie Petersilie und Koriander zu kämpfen hatte, identifiziert es fast alle der 50 häufigsten Zutaten mit einer Genauigkeit von mindestens 10 %.
Küchenidentifikation
Der Teil zur Identifizierung der Küche dieses Projekts nahm zwei Formen an: Lebensmitteltyp und ethnische Zugehörigkeit. Der Recipe1M+-Datensatz enthält keine Bezeichnungen für diese Aufgaben, sodass die Modelle mit unüberwachten Methoden entwickelt werden mussten. Daher wurde die Identifizierung des Lebensmitteltyps mithilfe eines Latent Dirichlet Allocation (LDA)-Modells durchgeführt, und der Teil der ethnischen Zugehörigkeit wurde mithilfe eines Word2Vec-Modells durchgeführt.
LDA-Modell
Das Finden der Balance zwischen Interpretierbarkeit und Anschaulichkeit der von einem Themenmodell zurückgegebenen Themen war die größte Herausforderung für diesen Teil des Projekts. Weniger Themen würden wahrscheinlich einen Satz gut definierter Themen erstellen, aber möglicherweise fehlt es ihnen an Beschreibungskraft der Themen. Weitere Themen können beschreibende Themen erzeugen, wären aber für einen Menschen wahrscheinlich nicht interpretierbar. Da der Datensatz keine Ground-Truth-Etiketten für jedes der Rezepte enthält, untersuchte das Team die Verwendung verschiedener Vektorisierer, Modelle, Hyperparameter und Bewertungstechniken. Letztendlich wurde ein LDA-Modell mit 20 Themen gewählt, da es die beste Balance zwischen Interpretierbarkeit und Anschaulichkeit der Themen aufwies. Die Kompromisse für LDA-Modelle zwischen der Anzahl der Themen und den berechneten Metriken (Log-Likelihood, Perplexität und Themenkohärenz) sind im Anhang angegeben.
Die Aufgabe, die ausgegebenen Themenvektoren zu interpretieren und manuell zu kennzeichnen, ist einer der schwierigsten Teile der Themenmodellierung. Die folgende Abbildung zeigt einige der Token, die von zwei der Themenvektoren zurückgegeben werden, sowie Wortwolken, die aus den am höchsten gewichteten Rezepttiteln für diese Themen generiert wurden. Thema 0 ist eindeutig als Brot- oder Teigthema zu identifizieren, Thema 2 ist jedoch etwas zweideutiger. Es könnte als „Auflauf“, eine generische „italienische“ Kategorie oder etwas ganz anderes bezeichnet werden. Die Mehrdeutigkeit in den Bezeichnungen für die Themenvektoren nahm mit der Anzahl der im Modell enthaltenen Themen zu. Wir haben die Labels nach bestem Wissen und Gewissen zugewiesen, aber die Beratung mit einem Fachexperten wäre der beste Weg, dies zu tun.
Die Ausgabe des LDA-Modells sind die Vollversionen der oben gezeigten Themenvektoren. Diese Themenvektoren werden in unserer App gespeichert, und wir berechnen die Kosinusähnlichkeit zwischen jedem Themenvektor und der vorhergesagten Zutatenliste, um das Rezept zu kategorisieren.
Word2Vec-Modell
Ein Word2Vec-Modell ist ein neuronales Netzwerk, das auf einem Korpus von Dokumenten trainiert wird, um die Assoziation zwischen Wörtern in diesem Korpus zu lernen. Das heißt, wir können ein Label an das Modell übergeben und es die ähnlichsten Wörter zu diesem Label zurückgeben lassen, die einen Themenvektor darstellen. Auf diese Weise können wir eine beliebige Anzahl rudimentärer Labels erstellen und Themenvektoren erstellen, mit denen wir diese Labels zuweisen können. Anstatt ethnische Zugehörigkeiten zu verwenden, könnten wir Themenvektoren für die Eingaben „Frühstück“, „Abendessen“ und „Nachtisch“ erstellen, um das Eingaberezept diesen Bezeichnungen zuzuordnen.
Das word2vec-Modell für diese Aufgabe wurde sowohl mit den Rezeptzutaten als auch mit den Titeln trainiert. Die Titel der Rezepte enthalten oft ethnische Zugehörigkeit oder andere wichtige Bezeichnungen, die dem Modell beim Lernen helfen. Eine Folge davon ist, dass die vom word2vec-Modell zurückgegebenen Token nicht immer Zutaten sind, sie könnten andere ähnliche Labels wie die Eingabe sein. Beispielsweise sind einige der Token, die für die Eingabe „Griechisch“ zurückgegeben werden, „Tzatziki“, „Feta“ und „Mittelmeer“. Die Token, die keine Zutaten sind, sind immer noch akzeptabel, um dem Rezept eine ethnische Zugehörigkeit zuzuordnen, da das word2vec-Modell immer noch Assoziationen mit diesen Etiketten zu anderen Zutaten hat. „Mediterran“ kann mit Zutaten wie „Kichererbsen“ oder „Gurke“ verknüpft werden, was dem Modell immer noch hilft, dieses Rezept als „griechisch“ zu identifizieren.
Sobald wir diese Themenvektoren haben, können wir sie in einem t-verteilten stochastischen Nachbareinbettungsdiagramm (t-SNE) darstellen, um zu visualisieren, wie sie miteinander in Beziehung stehen. Das t-SNE-Diagramm unten zeigt die Top-10-Token für jedes ethnische Etikett, reduziert auf ein 2-D-Diagramm. T-SNE-Plots sind eine Möglichkeit, hochdimensionale Daten in einem niederdimensionalen Raum zu visualisieren. Sie versuchen, Punkte und Cluster, die ähnlich sind, näher beieinander zu halten und unähnliche zu trennen. Als Ergebnis können wir sehen, dass etwas wie indisches Essen eine enge Gruppe hat, die von den meisten anderen Küchen getrennt ist, oder dass die asiatischen Etiketten nach rechts getrennt sind, aber immer noch nahe beieinander liegen.
Ergebnisse
Das Rec²-Team ist begeistert, wo unsere App gelandet ist. Wir haben uns zum Ziel gesetzt, eine benutzerfreundliche und effiziente Web-App zu erstellen, die es einem allgemeinen Publikum ermöglicht, die Leistungsfähigkeit unserer Modelle zu nutzen. Die App erfordert nur eine von zwei Eingaben, damit ein Benutzer loslegen kann, und die Inferenzzeit zum Anzeigen der Ergebnisse beträgt nie mehr als ~5 Sekunden. Eine willkürliche, aber lustige Metrik ist, dass ich dies an meinen technisch herausgeforderten Großvater geschickt habe, der diese App nutzen und genießen konnte.
Die Effizienz und Zugänglichkeit der App war einer der herausfordernderen Aspekte dieses Projekts, ist aber auch eine der größten Stärken. Um unsere Geschwindigkeitsmetriken zu erfüllen, mussten wir alle unsere Modelle speichern und alle verwendeten Daten vorab berechnen. Wir konnten auch einige der experimentellen Memoisierungsfunktionen von Streamlit nutzen. Diese Funktionen haben verschiedene Ausgaben gespeichert, sodass der Benutzer bei der Interaktion mit verschiedenen Teilen der App nicht alles neu berechnen muss. Dies führte zu einer nahtlosen Integration zwischen den verschiedenen Modellen in der App.
Die Hauptschwäche unseres Projekts besteht darin, dass die Modelle selbst fehlerhaft sind, aber dennoch nützliche Einführungen in die Möglichkeiten des maschinellen Lernens für lebensmittelbasierte Anwendungen darstellen. Das Zutatenvorhersagemodell erzeugt weitgehend logische, wenn auch konservative Zutatenlisten. Das Rezepterkennungsmodell erzeugt gelegentlich eine vernünftige Ausgabe, generiert aber oft ein unterhaltsames Konzept für ein neues Gericht, das nicht offensichtlich mit dem Eingabebild zusammenhängt. Sowohl das Lebensmitteltyp- als auch das Ethnizitätsmodell wurden mit unüberwachten Techniken generiert, was zwar nicht ideal ist, aber einen Eindruck (*zwinker*) davon gibt, was ein Datensatz mit Ground-Truth-Etiketten erreichen könnte. Diese Modelle sind nicht bereit, ernsthafte Entscheidungen über Lebensmittel zu treffen. Sie sind jedoch nur der Ausgangspunkt und sicherlich effektiv für die Erkundung und das Lernen. Während die Modelle eine Schwachstelle des Projekts sind, ermöglicht das Back-End unserer Anwendung, dass diese Modelle einfach aktualisiert werden können. Wenn ein Benutzer zu unserem Projekt beitragen möchte, sollte es für ihn einfach sein, unsere Modelle durch eines zu ersetzen, das er selbst trainiert.
Diskussion
Die Rec² Recipe Exploration App soll Menschen dabei helfen, Lebensmittel zu entdecken und mehr darüber zu erfahren. Wir wollten eine Plattform für Feinschmecker und Köche gleichermaßen schaffen, um neue und beliebte Rezepte und Zutaten zu entdecken. Mit unserer App können Feinschmecker erkunden, welche ethnischen Küchen sich ähneln, und möglicherweise etwas Neues ausprobieren. Alternativ können Hobbyköche schnell ihre Lieblingsrezepte durchsuchen, um sich an alle benötigten Zutaten zu erinnern, anstatt drei Seiten mit Text und Anzeigen eines Online-Rezepts zu durchsuchen.
So wie die App derzeit aussieht, gibt es minimale ethische Bedenken. Der Hauptanliegenspunkt ist die offensichtliche Verzerrung der Daten. Bei der Untersuchung des Datensatzes und der Erkenntnisse aus den Modellen wurde deutlich, dass die Rezepte in unseren Datensätzen weitgehend eine amerikanische Ernährung begünstigten. Diese Verzerrung erschwert es den Modellen, zwischen verschiedenen regionalen Ernährungsweisen zu unterscheiden. Zum Beispiel hatte das Lebensmitteltypmodell Themen, die Dinge wie Cajun und Grillgerichte darstellten, konnte aber nur eine generische „asiatische“ Kategorie erzeugen, um die Rezepte darzustellen, die es aus den verschiedenen asiatischen Ländern sah. Ein weiteres ethisches Problem in diesem Sinne ist, dass die Themen auf der Grundlage der persönlichen Erfahrung des Teams mit verschiedenen Küchen benannt wurden. Dies ist wichtig zu beachten, da Essen ein Thema ist, das viele Menschen begeistert und jeder andere Erfahrungen damit macht.
Wenn unsere App oder Modelle in einer kommerziellen Anwendung verwendet werden sollen, können Urheberrechtsprobleme auftreten. Die Datensätze von Recipe1M+ und Epicurious stammen von öffentlichen Websites, können aber dennoch urheberrechtlich geschütztes Material oder Rezepte enthalten. Alle Schlussfolgerungen oder Erkenntnisse, die aus der App oder den Modellen gezogen werden, könnten das geistige Eigentum eines Rezeptautors verletzen, der Rechte an seinen Inhalten hat. Unsere App wurde ausschließlich für akademische Zwecke entwickelt, daher sind wir wahrscheinlich als fair use geschützt (Walker, 2018).
Das Rec²-Team ist begeistert und stolz darauf, wo unsere App heute steht, würde aber gerne sehen, dass sie noch viel weiter geht! Wir bitten alle leidenschaftlichen Datenwissenschaftler, Feinschmecker oder Köche, uns dabei zu helfen, diese App zu einem nützlichen und unterhaltsamen Ort zum Erkunden von Lebensmitteln zu machen. Der Quellcode und die Modelle für die App werden in einem öffentlichen GitHub-Repository verfügbar sein, damit Benutzer sie verbessern oder uns Feedback geben können.
Die Haupteinschränkung für die Web-App besteht darin, dass die Modelldateien 75 MB nicht überschreiten dürfen und wirklich unter 50 MB bleiben sollten, da die App direkt aus dem GitHub-Repository über Streamlit bereitgestellt wird. Die Modelle müssen sich auch an eine festgelegte Zutatenliste halten, mit einer entsprechenden Verarbeitung und/oder Zuordnung zum Extrahieren von Zutaten aus einem nativen Rezept. Obwohl diese Zutatenliste bearbeitet werden kann, muss sie zwischen den Zutatenvorhersage- und Küchenerkennungsmodellen geteilt werden, um die Ausrichtung aufrechtzuerhalten. Modellarchitekturen selbst können geändert werden, wenn sie einen offensichtlichen und lohnenden Leistungsgewinn darstellen, oder die Gewichte und Parameter können angepasst werden.
Es gibt einige coole Funktionen, die das Rec²-Team gerne in unserer App sehen würde, aber keine Zeit hatte, sie für dieses Projekt zu implementieren. Teilen Sie uns mit, wenn Sie der Meinung sind, dass etwas in dieser Liste fehlt.
- Das Implementieren von Benutzerfeedback in unsere Modelle wäre eine coole Möglichkeit, die Verbesserung unserer Modelle per Crowdsourcing zu fördern. Diese Funktion würde es den Benutzern ermöglichen, vorhergesagten Inhaltsstoffen oder Etiketten zuzustimmen oder nicht zuzustimmen oder zusätzliche vorzuschlagen, damit die Modelle auf dieses Feedback umgeschult werden könnten.
- Eine vollständige Rezeptgenerierung mit Mengen an Zutaten und Anweisungen wäre ein großartiges Ziel. Dies würde viel mehr natürliche Sprachverarbeitung erfordern, um Mengen und Strukturen von Anweisungen zu extrahieren.
- Sammeln von mehr globalen Rezepten, um die amerikanische Ernährungsverzerrung im Datensatz zu berücksichtigen.
- Filter für verschiedene Ernährungsweisen (vegetarisch, koscher usw.) oder Ethnien.
Lastenheft
Beide Autoren, Michael Daly und John McNally, arbeiteten zusammen, um die Ziele dieses Projekts auszuwählen und festzulegen. Sie arbeiteten zusammen, um die Vorverarbeitungstechnik zu entwickeln, um die Rezeptdatensätze zu bereinigen und für die Modellentwicklung vorzubereiten. Michael Daly leitete die Entwicklung der Rezepterkennungs- und Zutatenvorhersagemodelle. John McNally leitete die Entwicklung der Modelle zur Identifizierung von Küchentypen sowohl für die ethnische Zugehörigkeit als auch für den Lebensmitteltyp. Beide Autoren teilten sich die Verantwortung für das Schreiben und Bearbeiten dieses Blogbeitrags.
Verweise
Bose, Bishal. 2020. Bildunterschrift-IT: Image to Sequence Deep Leaning Model: Development to Deployment! Analytik Vidhya (mittel). Abgerufen im Dezember 2022 vonhttps:///analytics-vidhya/caption-it-image-to-sequence-deep-learning-model-development-to-deployment-7f9f04ab5fa0
„Bildbeschriftung mit visueller Aufmerksamkeit.“ 2022. TensorFlow. Abgerufen im Dezember 2022 vonhttps://www.tensorflow.org/tutorials/text/image_captioning
Marin, Javieret al. 2019. "Recipe1M+: Ein Datensatz zum Erlernen modalübergreifender Einbettungen für Kochrezepte und Lebensmittelbilder." IEEE-Transaktionen zu Musteranalyse und maschineller Intelligenz. Abgerufen im Dezember 2022 von tpami19.pdf (mit.edu)
Wanderer, Adam. 2018. „Fair Use – Die Notwendigkeit, das Gesetz für KI-Algorithmen zu definieren.“ DataDrivenInvestor (Mittel). Abgerufen im Dezember 2022 vonhttps://medium.datadriveninvestor.com/fair-use-and-ai-87f77721f1ea
Xu, Kevin, et al. 2015. „Zeigen, teilnehmen und erzählen: Generierung von neuronalen Bildunterschriften mit visueller Aufmerksamkeit.“ Abgerufen im Dezember 2022 vonhttps://arxiv.org/pdf/1502.03044.pdf
Anhang
A.1 Zusatzbericht
Die vorgestellte Arbeit ist eine Erweiterung eines Milestone II-Projekts für unseren Master of Applied Data Science an der University of Michigan. Dieser Bericht ist hier verlinkt .
A.2 Entwicklung der Inhaltsstoffvorhersage
Zusätzlich zu den zusätzlichen Gewichtungen, die in die Verlustfunktion integriert sind, wurde der Schwellenwert für positive Vorhersagen für beste Ergebnisse auf 0,02 eingestellt. Ein niedrigerer Schwellenwert generiert mehr Vorhersagen, aber ein höherer Schwellenwert beschränkt die Vorhersagen auf diejenigen mit dem größten Vertrauen. Mit der verbesserten Vorverarbeitungspipeline führt der Schwellenwert von 0,02 zu 2,52 wahren Vorhersagen von insgesamt 7,78 Vorhersagen auf der Recipe1M+-Testpartition. Diese Rezepte haben durchschnittlich 5,05 echte Zutaten, sodass das Modell fast die Hälfte der Zutaten jedes Rezepts erhält, mit dem Vorteil von 50 % mehr Schätzungen.
A.3 Metriken für das LDA-Modell
Die obige Abbildung zeigt die Leistungsmetriken von fünf LDA-Modellen mit unterschiedlicher Anzahl von Themen. Die leistungsstärksten Modelle weisen die niedrigste Perplexität und die höchste Log-Wahrscheinlichkeit und Themenkohärenz auf. Die Grafiken zeigen, dass das Modell mit 40 Themen insgesamt am besten abschneidet; Wir können jedoch einen klaren Wendepunkt (links) und einen Sprung (rechts) bei 20 Themen erkennen. Dies könnte darauf hindeuten, dass der Ertrag sinkt, wenn dem Modell weitere Themen hinzugefügt werden.

![Was ist überhaupt eine verknüpfte Liste? [Teil 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































