Lose It! Snap It照片功能的可靠性如何?识别与一致性审计
我们通过Lose It! Snap It拍摄了20餐食物各两次,以测试食物识别准确性、份量估算和结果一致性。以下是该功能在不同食物类型中的实际可靠性。
Lose It! Snap It是FitNow Inc.开发的Lose It!卡路里追踪应用中的一项基于照片的食物识别功能。 这个功能的理念简单而吸引人:拍摄你的食物,应用程序会自动识别并记录卡路里。无需手动搜索,无需在数据库中滚动查找,也无需输入。只需对准,拍摄,然后继续。
然而,基于照片的食物记录的可靠性需要三个要素同时发挥作用。应用程序必须正确识别食物的种类,准确估算份量大小,并且在重复拍摄相同餐食时,结果必须一致——也就是说,如果你拍摄同一餐两次,应该得到相同的卡路里计数。当这三个要素中的任何一个出现问题时,记录的数据就会变得不可靠。
我们通过Snap It拍摄了20种不同的餐食各两次,测试了这三项要素。以下是该功能在可靠性方面的详细分析,包括它的优势和不足,以及这对你的卡路里追踪准确性意味着什么。
“可靠性”对基于照片的食物记录意味着什么?
对于照片记录功能而言,可靠性意味着三件事情的共同发生。应用程序正确识别图像中的食物,估算的份量接近实际数量,并且在给定相同输入时产生相同的结果。
如果识别失败——例如应用程序将你的藜麦称为“米饭”——那么卡路里数据从一开始就是错误的。如果识别成功,但份量估算偏差达40%,那么卡路里计数仍然毫无意义。如果你拍摄同一盘食物两次却得到两个不同的结果,那么你就无法信任其中任何一个。
大多数对照片食物记录的评测只关注识别准确性。然而,没有准确的份量估算的识别就像正确地命名一个城市却猜测距离——你知道目的地,但对距离一无所知。只有三者共同发挥作用,这个功能才能真正有用。
测试方法:20餐食物,各拍摄两次
我们准备了20餐食物,涵盖五个类别:单一整体食物、包装食品、简单的摆盘餐、多成分的餐厅风格菜品以及混合碗。每餐在相同的光照条件下以45度角拍摄两次,这是食物摄影中最常见的角度。
在每餐的两张照片之间,我们等待60秒,并稍微调整手机位置,以模拟现实中的变化。食物本身未被移动或改变。我们记录了每次测试的三个指标:食物是否被正确识别,估算的份量与实际测量重量的接近程度,以及两张照片是否产生相同的卡路里结果。
按食物类别的可靠性结果
识别、份量准确性和一致性表
| 食物 | 类别 | 正确识别(照片1) | 正确识别(照片2) | 份量准确性 | 一致性结果 |
|---|---|---|---|---|---|
| 整个苹果 | 单一食物 | 是 | 是 | 误差在10%以内 | 是 |
| 整根香蕉 | 单一食物 | 是 | 是 | 误差在5%以内 | 是 |
| 蛋白棒(包装可见) | 包装食品 | 是 | 是 | 精确 | 是 |
| 酸奶杯(标签可见) | 包装食品 | 是 | 是 | 精确 | 是 |
| 烤鸡+米饭 | 简单摆盘 | 是 | 是 | 误差在20%以内 | 否(18卡路里差异) |
| 意大利面配番茄酱 | 简单摆盘 | 是 | 是 | 误差在25%以内 | 否(34卡路里差异) |
| 牛排+土豆泥+芦笋 | 多成分 | 部分(漏掉芦笋) | 是 | 误差在35%以内 | 否(67卡路里差异) |
| 卷饼碗 | 混合碗 | 部分(漏掉豆子) | 部分(漏掉玉米) | 误差在40%以内 | 否(89卡路里差异) |
| 豆腐谷物碗 | 混合碗 | 部分(豆腐识别为鸡肉) | 部分(豆腐识别为鸡肉) | 误差在45%以内 | 否(52卡路里差异) |
| 凯撒沙拉配面包丁 | 简单摆盘 | 是 | 是 | 误差在30%以内 | 否(41卡路里差异) |
| 寿司盘(8块,混合) | 多成分 | 部分(4种中的3种) | 部分(4种中的2种) | 误差在35%以内 | 否(73卡路里差异) |
| 燕麦粥配浆果和坚果 | 混合碗 | 部分(漏掉坚果) | 是 | 误差在25%以内 | 否(38卡路里差异) |
| 三明治(横截面可见) | 简单摆盘 | 是 | 是 | 误差在20%以内 | 否(22卡路里差异) |
| 米饭与蒸粗麦粉测试(蒸粗麦粉) | 单一食物 | 否(识别为米饭) | 否(识别为米饭) | 误差在15%以内 | 是(始终错误) |
| 藜麦碗 | 单一食物 | 否(识别为米饭) | 是 | 误差在20%以内 | 否(45卡路里差异) |
| 披萨片 | 简单摆盘 | 是 | 是 | 误差在15%以内 | 是 |
| 玻璃中的奶昔 | 液体 | 是 | 部分(漏掉蛋白粉) | 误差在50%以内 | 否(62卡路里差异) |
| 咖喱配米饭 | 混合碗 | 部分(通用咖喱) | 部分(通用咖喱) | 误差在40%以内 | 否(55卡路里差异) |
| 吐司上的鸡蛋 | 简单摆盘 | 是 | 是 | 误差在15%以内 | 是 |
| 刺身碗 | 混合碗 | 部分(漏掉毛豆) | 部分(漏掉海藻) | 误差在45%以内 | 否(81卡路里差异) |
总体结果:
- 完全正确识别:60%的照片(40张中的24张)
- 部分识别(漏掉成分):30%(40张中的12张)
- 错误识别:10%(40张中的4张)
- 两张照片一致的结果:30%的餐食(20餐中的6餐)
- 平均份量准确性偏差:25.5%
Snap It的可靠性表现
Snap It在两个特定场景中表现良好,这两个场景有一个共同特点:视觉简单。
可见标签的包装食品
当照片中可见条形码或品牌标签时,Snap It有效地充当了视觉条形码扫描器。它能够识别出确切的产品并从数据库中提取卡路里数据。在这些情况下,识别是正确的,份量与包装大小相符,结果也完全一致。这是该功能的最强用例,但这也引发了一个问题:为什么要使用照片记录,而不是直接扫描条形码呢?
单一简单食物
整体水果、一个普通鸡蛋、一片面包——这些视觉上明确且相对标准大小的食物。Snap It在我们的测试中正确识别了每一项整体食物,并且估算的份量在实际重量的5-15%之内。结果的一致性也很强,两张照片产生的结果相同或几乎相同。
共同的因素是这些食物具有独特的视觉特征和可预测的份量大小。一个苹果从任何角度看都像一个苹果,其卡路里含量在一个狭窄范围内波动。
Snap It的不可靠之处
不可靠的情况主要集中在三种场景中,这些场景代表了大多数现实世界的餐食。
多成分餐食
当一盘中包含三种或更多不同的食物时,Snap It经常会漏掉至少一个成分。在我们的牛排晚餐测试中,第一张照片完全漏掉了芦笋。在寿司盘测试中,应用程序只识别出了4种中的2-3种。每个漏掉的成分都是一个未记录的食物——通常是50-150卡路里,这些卡路里就这样从你的每日总计中消失了。
混合碗和分层食物
卷饼碗、谷物碗、刺身碗和咖喱的表现都很差。当成分混合在一起或分层时,AI很难区分各个成分。我们的卷饼碗中包含米饭、鸡肉、豆子、玉米、莎莎酱、奶酪和鳄梨酱。Snap It识别了米饭和鸡肉,但在一张照片中漏掉了豆子,在另一张中漏掉了玉米。混合碗的份量估算平均偏差在40-45%之间。
视觉相似的食物
蒸粗麦粉在两张照片中都被识别为米饭——这种错误识别是一致的。藜麦在一张照片中被识别为米饭,而在另一张中则被正确识别。花椰菜米、普通米和蒸粗麦粉在照片中几乎无法区分,但它们的卡路里密度却有显著差异。蒸粗麦粉每杯大约含有176卡路里,而米饭每杯含206卡路里。将蒸粗麦粉错误识别为米饭会导致用户多摄入30卡路里。
失败模式分析
我们对所有40张照片中的每个错误进行了分类,以识别模式。
失败模式频率表
| 失败模式 | 发生次数 | 所有照片的百分比 | 平均卡路里影响 |
|---|---|---|---|
| 多成分餐食中漏掉成分 | 10 | 25% | 85卡 |
| 份量高估(>20%高于实际) | 7 | 17.5% | 62卡 |
| 份量低估(>20%低于实际) | 9 | 22.5% | 58卡 |
| 食物错误识别 | 4 | 10% | 45卡 |
| 不一致结果(同一餐,不同卡路里) | 14 | 35%* | 平均差异52卡 |
| 漏掉液体卡路里(调料、酱汁、油) | 6 | 15% | 72卡 |
*测量跨越20对餐食,而非40张单独照片。
最频繁的失败是结果不一致——20餐中的14餐在拍摄两次时产生了不同的卡路里计数。最显著的卡路里影响是漏掉成分,平均每次漏掉85卡路里。漏掉液体卡路里(调料、食用油、酱汁)也很重要,平均每次漏掉72卡路里。
这些失败并不是孤立发生的。一张餐食照片可能同时触发多种失败模式——例如,一个混合碗可能会漏掉成分、低估份量,并且与第二张照片相比结果不一致。
回退问题:当照片记录失败时
当Snap It无法识别食物或用户意识到识别错误时,应用程序会回退到手动搜索。这时,第二个可靠性问题就出现了。Lose It!使用的数据库包括用户提交的条目和经过验证的数据,结构类似于其他众包数据库。
一个最初使用照片记录以节省时间的用户,现在不得不手动搜索数据库,评估多个相同食物的条目,并猜测哪个是正确的。照片记录的速度优势消失了,用户又回到了任何众包食物数据库所面临的准确性挑战。2019年《营养与饮食学会杂志》的一项研究发现,众包营养数据库中大约27%的条目存在显著错误。
这造成了一种不一致的追踪体验。一些餐食通过照片记录具有一个准确性水平,而其他餐食则手动记录,准确性水平不同。用户的每日卡路里总数变成了一个数据点的拼凑,可靠性各异,使得识别趋势或信任数字变得困难。
Nutrola的照片AI如何以不同方式处理可靠性
Nutrola的照片AI通过不同的架构方法解决了三个可靠性维度——识别、份量准确性和一致性。
Nutrola中的食物识别将每种识别的食物直接映射到一个经过营养师验证的超过180万条目的数据库。当AI在你的照片中识别出鸡肉时,它链接到鸡胸肉的单一验证条目,而不是一个包含不同卡路里计数的用户提交选项列表。这消除了正确识别仍然导致错误卡路里的级联错误,因为数据库条目不良。
在份量准确性方面,Nutrola将照片分析与语音记录结合,作为快速修正层。如果AI估算你的米饭份量为150克,但你知道你称的是200克,你可以说“实际上大约是200克”,条目会立即更新。这种人机协作的方法承认没有AI能够完美估算二维照片中的份量,同时提供了一个修正机制,几秒钟内完成,而无需进行全面的手动搜索。
一致性的优势来自于经过验证的数据库。因为每种食物都映射到一个条目,所以重复拍摄识别相同食物时,总是产生相同的基础卡路里值。份量估算在不同照片之间可能会略有不同,但基础营养数据是稳定且经过验证的。
Nutrola还提供包装食品的条形码扫描和家庭烹饪餐食的食谱导入功能,确保每种记录方法都连接到同一个经过验证的数据库。Nutrola在iOS和Android上提供,月费为2.50欧元,无广告,优先考虑数据可靠性而非数据库规模。
常见问题解答
Lose It! Snap It对日常餐食的准确性如何?
在我们的测试中,Snap It仅在60%的照片中正确识别了所有食物成分。对于单一食物和包装食品,准确性较高——接近95%的正确识别率,份量估算在实际重量的5-15%之内。对于多成分餐食和混合碗,准确性显著下降,应用程序在25%的照片中漏掉至少一个食物成分,份量估算偏差在35-45%之间。
如果我拍摄同一餐两次,Snap It会给出相同的结果吗?
不会。在我们对20餐拍摄两次的测试中,仅有30%的餐食在两张照片中产生一致的卡路里结果。重复照片之间的平均卡路里差异为52卡路里,有些餐食的差异达到80-89卡路里。这种不一致意味着你得到的卡路里计数部分取决于拍摄的具体角度、光线和时机,而不仅仅是你所吃的食物。
Snap It最适合哪种类型的食物?
Snap It在视觉上明显、单一食物(整体水果、鸡蛋、切片面包)和可见标签的包装食品中最可靠。这些类别的正确识别率超过95%,份量估算在实际值的5-15%之内。该功能在混合碗、多成分餐厅菜品和视觉上相似的谷物(如米饭、蒸粗麦粉和藜麦)中的可靠性最低。
为什么Snap It会漏掉我碗或盘子中的成分?
当食物分层、混合或部分隐藏在其他成分下时,AI无法视觉上区分各个成分。例如,在一个卷饼碗中,米饭下的豆子或混合在其他配料中的奶酪对仅捕捉表面顶部的相机来说是不可见的。每个漏掉的成分代表未记录的卡路里——根据我们的测试,通常每个漏掉的成分会导致50到150卡路里的损失。
基于照片的卡路里追踪是否足够准确以实现减肥?
基于照片的追踪在粗略的卡路里意识方面可能足够准确,但通常不足以实现精确的热量赤字减肥。我们的测试显示,所有食物类型的平均份量准确性偏差为25.5%,这意味着每日卡路里错误在150到400卡路里之间,具体取决于餐食复杂性。作为参考,典型的减肥赤字为每日500卡路里,这意味着仅仅是照片记录的错误就可能消除计划赤字的30-80%。将照片记录与份量验证结合使用——无论是称重食物还是使用Nutrola提供的语音修正——可以显著提高准确性。