>_ DevTrendszh

语言

首页

语言

板块

前端 后端 移动端 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 的界面将菜单显示为整洁的卡片。

将识别和结构化分离到两个 Llama 模型的想法看起来很实用。大型 90B 模型处理繁重的光学部分,而轻量级的 8B 模型快速将结果格式化为 JSON,节省响应时间和 token。

如何在本地部署项目

你实际上可以在五分钟内在你的机器上启动这个仓库。你需要从 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 的组合运行速度快得惊人。

然而,该项目有一些局限性,作者在待办事项中坦诚地列出了这些问题:

  • 如果菜单太大,生成所有项目可能需要长达一分钟。应用程序缺少关于长时间响应或平滑加载动画的提示。
  • Flux Schnell 速度很快,但有时在真实感方面不如旧版 Flux Dev 版本。
  • 当前版本缺少饮食限制标签(纯素、无麸质、辣)和按这些标签过滤的功能。
  • 目前还没有包含详细菜品信息的模态窗口:卡路里、成分和口味特征。

谁会发现这个项目有用

如果你正在计划一个面向游客的服务、餐厅菜单聚合器,或者只是想了解如何实际连接视觉模型、LLM 中的 JSON 模式以及通过 Flux 生成图像,这个仓库将是一个极好的模板。代码库简单直接,依赖项标准,架构没有不必要的抽象负担。

相关项目