同一道菜拍两次,AI 给出的热量可能不同,因为它处理的是两张照片里的线索,不是直接测量盘子里的食物。距离、角度、光线、遮挡和容器稍有变化,食物看起来的面积与高度就会变化;即使照片很接近,模型对菜名和份量的推断也可能出现波动。

在 nosh 里,热量来自“识别食物、估算份量、匹配营养数据”这一整条链。前面任何一步变化,最后的数字都可能跟着变。两次结果不同不一定说明哪一次完全错了,更值得看的是差异来自哪里。

先分清,是同一盘饭拍了两次,还是同名的菜吃了两次

同一盘番茄炒蛋,站着俯拍一次,坐下斜拍一次。俯拍时鸡蛋铺满盘面的范围很大;斜拍时前面的番茄挡住一部分鸡蛋,盘子也显得更窄。食物没有变,照片交给 AI 的形状却变了。

另一种“同一道菜”其实只是菜名相同。今天的番茄炒蛋用了三个蛋,明天食堂那份可能番茄更多、油糖更多,份量也不同。这时热量不同不只是识别波动,两顿饭本来就不是同一个配方。

把这两种情况混在一起,很容易误判:同一盘饭的差异主要在拍摄与推断,同名菜的差异还包括真实做法与份量。

照片里的大小,不等于现实里的大小

手机靠近一点,半碗米饭可以占满画面;退远一点,同一碗饭又显得很小。俯拍能看见食物铺了多大,却不容易看见堆了多高;斜拍能看到高度,又可能产生遮挡。

容器也会制造错觉。相同份量放进小碗像是满满一碗,换到大盘里只占中间一圈。AI 可以把盘、碗和餐具当作线索,但如果它不知道容器的真实尺寸,这些线索仍然只是参照,不是尺子。

因此,第二次拍摄不只是把第一次“再做一遍”。只要相机位置或画面结构变化,系统面对的就是一份新的证据。

菜名只差一点,后面的数字可能差很多

同一块鸡肉,被判断为烤鸡、带皮炸鸡或水煮鸡胸,匹配到的营养数据并不一样。即使名称大致相同,份量从“小份”跳到“中份”,最后热量也会被放大。

这类差异比个位数波动更值得处理。两次结果一个是 618 千卡、一个是 636 千卡,未必需要反复重拍;一个把清蒸鱼认成炸鱼,或把半碗饭看成一整碗,就值得马上修正。

数字差多少不是唯一标准,还要看差异有没有改变你对这顿饭的理解。

不要连拍到出现一个喜欢的答案

同一顿饭拍了三次,分别出现 580、640 和 690 千卡,很容易挑一个最顺眼的保存。这样看似解决了波动,其实只是把估算变成了抽签。

更稳妥的做法,是保留最能看清整餐的一张,再检查三件事:主要食物有没有认错,实际吃掉的份量是否合理,饮料、配菜和明显酱料有没有漏掉。你知道的就改,不知道的就保留为估算。

nosh 当前允许修改名称、卡路里、份量和记录时间。与其靠重拍寻找一个理想数字,不如修正会改变结论的大错误。

如果想观察长期变化,拍法尽量一致

经常用 nosh 记录同一份早餐,可以把手机距离、角度和容器大致固定下来。例如都把完整餐盘拍进去,都在吃之前拍,都不把杯子留在画外。这样做不会让每次估算变成测量,却能减少由拍摄方式带来的额外波动。

不要把“一致”理解为每天必须摆出相同构图。真正需要一致的是记录口径:拍的是上桌份量还是实际吃掉的份量,饮料算不算进去,明显错误是否都修正。

AI 的两次答案不同,首先提醒我们的不是“再拍一次”,而是“照片改变了什么”。找到变化发生在哪一层,比要求每次出现完全相同的数字更有用。

参考资料

继续阅读