How close is it?
Nobody can weigh a meal from a photo. So we measured how far off Heliva is, on meals where the real calories are known. Here is what we found, the good and the bad.
What we tested on
- 1,131 everyday phone photos taken by ordinary people of their own meals, with what they ate recorded in a food diary (SNAPMe, a public research dataset).
- 250 lab-weighed dishes from a public benchmark (Nutrition5k), where every ingredient was weighed.
- 250 meals described in words, like “two slices of toast with butter”.
The numbers
| Logged by | Typical miss | Within 25% | Within 50% |
|---|---|---|---|
| Photo | 28% | 46% | 77% |
| Words | 25% | 52% | 80% |
Typical miss is the median error against the real calories. It stays about the same for small and large meals, so a bigger dinner misses by more kcal: on a 600 kcal dinner, 28% is about 170 kcal either way. “Within 25%” is the share of meals that landed that close.
What 28% means in calories
The percentage stays about the same whatever the size of the meal. So a snack misses by a few dozen kcal and a big dinner by a few hundred.
| Meal size | Meals tested | Typical miss | Roughly, in kcal |
|---|---|---|---|
| Under 150 kcal | 302 | 27% | under 40 |
| 150 to 400 kcal | 436 | 29% | about 80 |
| 400 to 800 kcal | 336 | 26% | about 160 |
| Over 800 kcal | 57 | 39% | 300 or more, usually under |
| A whole week | modelled | ~7% | about 1 000, roughly 0.1 kg |
From the 1,131 phone photos. The kcal column applies each band’s typical miss to a typical meal in that band, so read it as a guide, not a measurement. The week assumes about 15 000 kcal.
Why a week is closer than a meal
Weight changes with what you eat over weeks, not with one dinner. When errors go both ways, they cancel. In our model, a typical miss of 29% per meal shrinks to about 19% per day and about 7% per week.
That only works if the app isn’t always high or always low. So Heliva learns from your corrections, and your weight trend checks it.
Modelled by drawing random weeks of 21 meals from the lab set. Real weeks repeat meals, so their errors cancel less.
Why “likely” holds half
We could show a range that holds 8 meals in 10. It would be about twice as wide, and every estimate would look useless. So the app shows the range that holds about half of meals, and says “likely”. On held-out meals it held 50%.
The range leans upwards: an estimate of 600 is likely 460 to 800. Real calories run further above an estimate than below it.
Where it struggles
- Big meals run low. A photo pulls every meal towards an average one. Meals over 800 kcal came out well under. That’s why Heliva asks about the biggest item.
- Hidden fat and sauces. Butter in the pan doesn’t show in a photo.
- Even “true” calories are fuzzy. Two nutrition sources for the same recipe often differ by about 10%.
For context
- Nutrition professionals estimating portions from photos missed by about 45% on average, in a published study.
- A model trained only for this, on the same lab dishes, missed by 26%.
- Some apps claim 90% accuracy or more. We haven’t found one that publishes how it measured.
How Heliva gets the number
An AI model names the foods on your plate and guesses how much of each. The calories then come from a national food database, never from the model itself. Barcodes, labels and saved recipes skip the guess.
Sources
- Thames et al., Nutrition5k, CVPR 2021
- Larke et al., SNAPMe, Nutrients 2023
- Portion estimation by nutrition professionals, PMC6115988