>_ DevTrendsja

言語

ホーム

言語

セクション

フロントエンド バックエンド モバイル DevOps AI / ML ゲーム開発 ブロックチェーン 組み込み セキュリティ
TypeScript

Llama 3.2とFluxで紙のメニューからおいしそうな料理の写真を生成する方法

よくある状況です:海外旅行先でレストランに入ったり、本格的な料理を提供するデリバリーサービスに注文したりすると、写真が一枚もないのに意味不明な料理名の長いリストだけが眼前広がります。結局、各料理を闇雲にググることになります。

開発者のHassan El Mghari(Nutlope)が、数秒でこの問題を解決する小さなオープンソースプロジェクトPicMenuを作成しました。紙のメニューの写真をアップロードすると、サービスですべてのアイテムを認識し、各料理に対してリアルな画像を生成します。

PicMenu

内部動作の仕組み

ここに巨大なマイクロサービスやGPUサーバーで実行されるカスタムMLモデルは存在しません。このプロジェクトはNext.jsとTypeScriptで構築されており、すべての計算処理はTogether AI APIサービスを通じてオープンなモデルの組み合わせによって行われます。

処理パイプラインは非常にシンプルです:

  1. メニュー認識:写真がLlama 3.2 Vision 90Bモデルに送信されます。しわしわになったりや複雑なデザインのメニューからも料理名を抽出できます。
  2. データ構造化:高速なテキストモデルLlama 3.1 8Bが、抽出したテキストを料理名と説明を含むクリーンなJSONに変換します。
  3. 写真生成:生成モデルFlux Schnellが、見つかった各料理の説明に基づいて直接画像を生成します。
  4. 保存と表示:生成された画像はAWS S3(または互換性のあるストレージ)に保存され、TailwindとShadcn UIベースのインターフェースがメニューを整理されたカードで表示します。

認識と構造化を2つのLlamaモデルに分割するアプローチは実用的です。大きな90Bモデルが重い光学処理を担当し、軽量な8Bモデルが結果を素早くJSONに整形するため、レスポンス時間とトークン消費を節約できます。

プロジェクトをローカルにデプロイする方法

literally five minutes. Together AIのAPIキーと画像をアップロードするためのS3互換ストレージが必要です。

リポジトリをクローンします:

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

例として提供されている .env.example を基に .env ファイルを作成し、変数を入力します:

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

依存関係をインストールし、開発サーバーを起動します:

npm install
npm run dev

その後、アプリケーションは http://localhost:3000 で利用可能です。

すでに動作している機能と改善が必要な点

現時点では、PicMenuは堅実な動作するプロトタイプ(MVP)です。Shadcnコンポーネントによりインターフェースは整洁で、VisionモデルとFluxの組み合わせは驚くほど高速に動作します。

ただし、プロジェクトにはいくつかの制限があり、著者はtodoセクションで正直にリストしています:

  • メニューが大きすぎる場合、すべてのアイテムを生成するのに最大1分かかる場合があります。アプリには長いレスポンス時間への警告やスムーズなロードアニメーションがありません。
  • Flux Schnellは高速ですが、以前のFlux Devバージョンと比較するとリアリズムが不足することがあります。
  • 現在のバージョンには食事制限タグ(ヴィーガン、グルテンフリー、辛いなど)とそれらでのフィルタリング機能がありません。
  • まだ詳細な料理情報(カロリー、材料、風味プロファイル)のモーダルウィンドウがありません。

このプロジェクト誰が役立つか

旅行者向けサービスやレストランメニューアグリゲーターを計画している場合、またはビジョン模型、LLMのJSONモード、Fluxによる画像生成を実際にどのように接続するかを確認したい場合は、このリポジトリが優れたテンプレートになります。コードベースはわかりやすく、依存関係は標準的で、アーキテクチャには不必要な抽象化が含まれていません。

関連プロジェクト