>_ DevTrendspl

Język

Strona główna

Języki

Sekcje

Frontend Backend Mobilne DevOps AI / ML GameDev Blockchain Systemy wbudowane Bezpieczeństwo
TypeScript

Jak zamienić papierowe menu w apetyczne zdjęcia potraw dzięki Llama 3.2 i Flux

Znana sytuacja: wchodzisz do restauracji za granicą lub zamawiasz z serwisu dostawczego z autentyczną kuchnią, a tam długa lista niezrozumiałych nazw potraw bez ani jednego zdjęcia. Kończysz na ślepym wyszukiwaniu każdej potrawy w internecie lub liczeniu na szczęście.

Developer Hassan El Mghari (Nutlope) stworzył niewielki projekt open-source o nazwie PicMenu, który rozwiązuje ten problem w kilka sekund. Wgrywasz zdjęcie papierowego menu, a serwis rozpoznaje wszystkie pozycje i generuje realistyczny obraz dla każdej potrawy.

PicMenu

Jak to działa pod maską

Nie znajdziesz tutaj rozbudowanych mikroserwisów ani niestandardowych modeli ML działających na farmach GPU. Projekt został zbudowany przy użyciu Next.js i TypeScript, a cała obliczeniowa magia jest obsługiwana przez kombinację otwartych modeli poprzez serwis API Together AI.

Potok przetwarzania jest dość elegancki:

  1. Rozpoznawanie menu: zdjęcie jest wysyłane do modelu Llama 3.2 Vision 90B. Wyodrębnia nazwy potraw nawet ze zmiętych lub skomplikowanie zaprojektowanych formularzy.
  2. Strukturyzacja danych: szybki model tekstowy Llama 3.1 8B konwertuje wyodrębniony tekst na czysty JSON z nazwami potraw i opisami.
  3. Generowanie zdjęć: model generatywny Flux Schnell tworzy obraz dla każdej znalezionej potrawy bezpośrednio na podstawie jej opisu.
  4. Przechowywanie i wizualizacja: wygenerowane obrazy są przechowywane w AWS S3 (lub kompatybilnym magazynie), a interfejs oparty na Tailwind i Shadcn UI wyświetla menu jako schludne karty.

Pomysł rozdzielenia rozpoznawania i strukturyzacji na dwa modele Llama wydaje się praktyczny. Duży model 90B zajmuje się ciężką częścią optyczną, podczas gdy lekki model 8B szybko formatuje wynik do JSON, oszczędzając czas odpowiedzi i tokeny.

Jak wdrożyć projekt lokalnie

Możesz uruchomić repozytorium na swojej maszynie dosłownie w pięć minut. Będziesz potrzebować klucza API od Together AI oraz dowolnego magazynu kompatybilnego z S3 do przesyłania obrazów.

Sklonuj repozytorium:

git clone https://github.com/Nutlope/picmenu
cd picmenu

Utwórz plik .env na podstawie przykładu .env.example i wypełnij zmienne:

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

Zainstaluj zależności i uruchom serwer deweloperski:

npm install
npm run dev

Po tym aplikacja będzie dostępna pod adresem http://localhost:3000.

Co już działa, a co wymaga poprawy

Na ten moment PicMenu to solidny działający prototyp (MVP). Interfejs wygląda schludnie dzięki komponentom Shadcn, a połączenie modelu Vision z Flux działa zaskakująco szybko.

Jednak projekt ma kilka ograniczeń, które autor szczerze wymienia w sekcji todo:

  • Jeśli menu jest zbyt duże, generowanie wszystkich pozycji może zająć nawet minutę. Aplikacja nie ma ostrzeżenia o długim czasie odpowiedzi ani płynnych animacji ładowania.
  • Flux Schnell jest szybki, ale czasami brakuje mu realizmu w porównaniu ze starszą wersją Flux Dev.
  • Obecna wersja nie ma tagów ograniczeń dietetycznych (wegan, bezgluten, ostre) ani filtrowania według nich.
  • Na razie nie ma okna modalnego z szczegółowymi informacjami o potrawie: kalorie, składniki i profil smakowy.

Dla kogo ten projekt będzie przydatny

Jeśli planujesz serwis dla turystów, agregator menu restauracyjnych lub po prostu chcesz zobaczyć, jak praktycznie połączyć modele wizyjne, tryb JSON w LLM-ach i generowanie obrazów przez Flux, to repozytorium posłuży jako doskonały szablon. Kod jest przejrzysty, zależności są standardowe, a architektura nie jest przeciążona niepotrzebnymi abstrakcjami.

Powiązane projekty