So verwandeln Sie eine Papierspeisekarte in ansprechende Food-Fotos mit Llama 3.2 und Flux
Eine vertraute Situation: Sie betreten ein Restaurant im Ausland oder bestellen bei einem Lieferservice mit authentischer Küche, und da gibt es eine lange Liste unverständlicher Gerichtsnamen ohne ein einziges Foto. Sie landen dabei, jedes Gericht blind zu googeln oder auf das Beste zu hoffen.
Entwickler Hassan El Mghari (Nutlope) hat ein kleines Open-Source-Projekt namens PicMenu zusammengestellt, das dieses Problem in wenigen Sekunden löst. Sie laden ein Foto einer Papierspeisekarte hoch, und der Service erkennt alle Gerichte und generiert für jedes ein realistisches Bild.
So funktioniert es unter der Haube
Hier gibt es keine klobigen Microservices oder benutzerdefinierte ML-Modelle, die auf GPU-Farmen laufen. Das Projekt ist mit Next.js und TypeScript aufgebaut, wobei die gesamte Rechenarbeit von einer Kombination aus Open-Source-Modellen über den Together AI API-Dienst erledigt wird.
Die Verarbeitungspipeline ist ziemlich elegant:
- Menü-Erkennung: Das Foto wird an das Llama 3.2 Vision 90B-Modell gesendet. Es extrahiert Gerichtsnamen auch aus zerknitterten oder komplex gestalteten Formularen.
- Datenstrukturierung: Das schnelle Textmodell Llama 3.1 8B konvertiert den extrahierten Text in sauberes JSON mit Gerichtsnamen und Beschreibungen.
- Foto-Generierung: Das generative Modell Flux Schnell erstellt ein Bild für jedes gefundene Gericht direkt basierend auf seiner Beschreibung.
- Speicherung und Visualisierung: Generierte Bilder werden in AWS S3 (oder kompatiblem Speicher) gespeichert, und die Oberfläche basierend auf Tailwind und Shadcn UI zeigt das Menü als übersichtliche Karten an.
Die Idee, Erkennung und Strukturierung auf zwei Llama-Modelle aufzuteilen, wirkt praktisch. Das große 90B-Modell übernimmt den rechenintensiven optischen Teil, während das leichte 8B-Modell das Ergebnis schnell in JSON formatiert und so Antwortzeit und Tokens spart.
So deployen Sie das Projekt lokal
Sie können das Repository in buchstäblich fünf Minuten auf Ihrem Rechner zum Laufen bringen. Sie benötigen einen API-Schlüssel von Together AI und einen beliebigen S3-kompatiblen Speicher für den Upload von Bildern.
Klonen Sie das Repository:
git clone https://github.com/Nutlope/picmenu
cd picmenu
Erstellen Sie eine .env-Datei basierend auf dem Beispiel .env.example und füllen Sie die Variablen aus:
TOGETHER_API_KEY=your_together_api_key
# Настройки AWS S3 для загрузки картинок
NEXT_PUBLIC_S3_BUCKET_NAME=your_bucket
S3_UPLOAD_KEY=your_access_key
S3_UPLOAD_SECRET=your_secret_key
S3_UPLOAD_BUCKET=your_bucket_name
S3_UPLOAD_REGION=your_region
Installieren Sie die Abhängigkeiten und starten Sie den Dev-Server:
npm install
npm run dev
Danach ist die Anwendung unter http://localhost:3000 verfügbar.
Was bereits funktioniert und was verbessert werden muss
Derzeit ist PicMenu ein solides funktionierendes Prototype (MVP). Die Oberfläche sieht dank der Shadcn-Komponenten ordentlich aus, und die Kombination aus Vision-Modell und Flux funktioniert überraschend schnell.
Allerdings hat das Projekt einige Einschränkungen, die der Autor ehrlich im Todo-Bereich auflistet:
- Wenn das Menü zu groß ist, kann die Generierung aller Gerichte bis zu einer Minute dauern. Der App fehlt eine Warnung vor langen Antwortzeiten oder sanfte Lade-Animationen.
- Flux Schnell ist schnell, kommt aber manchmal bei der Realismus im Vergleich zur älteren Flux Dev-Version zu kurz.
- Die aktuelle Version bietet keine Tags für Ernährungseinschränkungen (vegan, glutenfrei, scharf) und keine Filterung danach.
- Es gibt noch kein Modal-Fenster mit detaillierten Gerichtsinformationen: Kalorien, Zutaten und Geschmacksprofil.
Wem dieses Projekt nützlich sein wird
Wenn Sie einen Service für Touristen, einen Restaurant-Menü-Aggregator planen oder einfach sehen möchten, wie man Vision-Modelle, den JSON-Modus in LLMs und die Bildgenerierung durch Flux praktisch verbindet, wird dieses Repository als ausgezeichnete Vorlage dienen. Die Codebasis ist unkompliziert, die Abhängigkeiten sind Standard und die Architektur ist nicht mit unnötigen Abstraktionen überladen.
Ähnliche Projekte