我创造了Cali Crunch,因为我零自律,无法准确追踪卡路里。每个我尝试的应用程序都要求我扫描条形码、搜索数据库、 weigh 部分——我坚持不了三天就放弃了。所以我创造了我最懒的卡路里跟踪器:只需和它畅聊、拍摄照片或者键入信息。批量记录你整个一天的卡路里(如果你忘记了)。没有数据库、无条形码扫描、无摩擦。AI计算出卡路里和营养素。

标语简直就是“最懒的卡路里跟踪器”。

我想要诚实地说,这个应用程序实际上有多准确,所以我建立了一个合适的基准。以下是我的发现。

基准测试

我使用了[Nutrition5k](https://github.com/google-research-datasets/Nutrition5k),谷歌的公有数据集,包含大约5,000张餐厅食品照,全部用平衡秤称出。私は200道菜各自分别通过Cali(和真实用户一样),仅让照片通过cali(没有语音/文本等效)。这具体测试的是照片识别路径——Nutrition5k没有语音/文本等效,但无论使用何种输入方式,ai都使用相同的估算方法。

结果

指标
卡路里平均绝对百分比误差(clean) 38.1%
卡路里中位数误差 29%
食材识别率 92.7%
速度(典型) ~3 秒钟

说明:在典型菜单上,Cali误差约为29%。有半次,正确高;另一半次,错误大。它正确识别表盘的时间约为93%。

LLM在卡路里估算方面有多地擅长?

这是最令人耳目一新的发现。当他们准确识别食材并且菜式清晰时,他们能够惊人地准确估算:

  • scrambled Eggs:真实值为183卡路里,预估值为180卡路里(1.9%差异)
  • 半个面包(cream Cheese):真实值为191卡路里,预估值为195卡路里(1.7%差异)
  • 双份披萨 + Steak + 蔬菜:真实值为733卡路里,预估值为695卡路里(5.2%差异)
  • Salmon + 蔬菜 + 谷物:真实值为264卡路里,预估值为280卡路里(6%差异)

整体性能统计中:50% 的菜肴在大致误差范围内,与真实值相比误差在30% 中间29% 的菜肴在大致误差范围内,将误差在 20% 中间。这表示,其实macros并不算太难,但是偏差也不会太小。一道菜,macros会计算偏差(平均数为约9公斤蛋白质、 7克碳水化合物、7克脂肪)。

关键点:LLM 其实有相当的营养素知识——他们知道scrambled Eggs 和creme cheese 是多少卡路里。 瓶颈实际上是识别食材的数量。 当食材可以轻易看出来时(一个 bagel,是两个鸡蛋,盘子是分开的),预估非常准确,而当食材难以识别(一摊混合食物,一坨菜)。错误就会相对变大。

我开始和结束时相差得多

我尝试过6中不同模型和输入配置。开始时,马匹误差(基准)是 64%。结束时,精度相比之去 38% (相比原来的40%精度有相似效果提升)。没有优化,没有数据精度提升。

最大的进步:

改变模型——从Claude SonnetSwitch到了GPT-4.1,单一改动提升了14个百分点。这是使用最好但不是针对某个特定任务最好的模型。

要求模型“告诉我原因”:在食材识别后,增加了“部分_推理”字段。11个百分点得到了提升。当模型要求“思考一下”,也没什么效果;然而, 要求它写出推理结构化信息后,行为就有变化了。它开始使用具体餐厅菜单中的典型大小作为参照,对于小食物,它在2-3倍的高度。

具体定基点:“一个餐盘约26cm,一个叉子约20cm,蔬菜在餐盘低于四分之一,即为30-80g.”用普通说明,比这个效果却好得多。

最有趣的失败GPT-5.4 - Mini(推理模型)得到了65%的比率低于我最初的。推理模型不是针对所有情况的最佳方法。对于视觉任务,瓶颈在于感知,而不是符号化思考。

诚实的限制

  • 隐性清洁油剂/浇头:如果你有油料覆盖在蔬菜上,视觉模型是看不到的。Calibranker错误大约为6%。benchmark中大约6% 的菜肴存在此类问题。
  • 隐藏的蛋白质:隐在蔬菜下的鸡肉被错过了。感知限界,不是可调制的提示问题。
  • 食材数量估算有一个限度:50克鸡肉和100克鸡肉在特定角度看起来都一样。这个29% 的中位数误差部分由不可调的不确定性——即无法准确估算食材数量。
  • 这是一个粗糙的卡路里跟踪器,不是一个精确的工具。如果你想精确度在±50卡路里范围内,使用食物称量器。要让其精确度为适当高水平,就用Cali来追踪你的卡路里,无需任何成本或努力。

在审计期间,我发现10.5% 的基准值有问题。21个食物从真实值(在拍摄前进行称量,在图像中无法看到),包括鸡肉放在另一个容器中,被吸收入食物中。对这些进行了标记,并报告了两种情况下的结果。如果有另一个模型声称,在Nutrition5k上小于10% 的误差,就认为该模型或是过度优化了,或是吹嘘。

未来

这次提示工程已经接近了 35-38%的基准值提升上限。对于小于 40% 的下一个提升,很显然使用了问询用户的一些信息( “轻微的”或“高度的”?)。 新的界面改进(这个案例中为提示),而不是基于ML技术实现的提升。

[App Store 中 Cali Crunch ](https://apps.apple.com/app/cali-crunch/id6761346735)如果你想试试。下载时免除付款,一周无限制测试。测试期后,每天3次,付费 $1.99/周,$5.99/月,$34.99/年。 我构建了它,为那些想知道大致情况的懒人。对于所有测试结果最有用。