§ 04  ·  Case study  ·  2025

Machine learning

Computer vision · single-image nutrition estimation

OrthoFoodie

A monocular nutrition estimator that runs in real time inside a meal-tracking app.

Overhead view of a varied home-cooked meal on a plain ceramic plate (grilled salmon, roasted carrots and broccoli, brown rice, lemon wedge) on a weathered wood table.
Single-frame reference plate · nutrition estimationIMG-05

At a glance

Client
OrthoFoodie
Service
Machine learning
Year
2025
Stack
PyTorch · monocular regression · A100

Synopsis

We are working with [OrthoFoodie](https://orthofoodie.app/) on a monocular food and nutrition estimator. Input is one phone photo of a meal. Output is a calorie and nutrient breakdown, fast enough to feel real-time inside an app.

01

The problem

What was in the way.

A single phone photo carries no depth, no plate-scale reference, and no portion priors. Asking a model to recover calories and macronutrients from that signal is ill-posed by construction.

Make the per-image error too high and the day-level totals (which is what users actually act on) drift far enough to be misleading. Any approach has to be honest about that error and tight enough to be useful in spite of it.

02

The approach

How we built it.

We trained a single-image nutrition estimator on nutrition5k, with the loss surface shaped for monocular regression rather than borrowed from a classification setup. Architectural and training choices were optimised for the latency budget of an in-app capture flow, not the leaderboard.

Validation was structured to flag where the model degrades, by food category and by portion size, so the product layer above it can decide when to ask the user for a second photo or a manual confirmation, instead of pretending uniform confidence.

03

The outcome

What it does now.

The current model reaches 36% PMAE on nutrition5k, a strong result for monocular work in this space. Inference runs in around 0.5 seconds on a warm A100-40GB, light enough for a real-time photo-to-estimate interaction inside the app, with room to push further on quantisation and caching.

Result

§ 04

PMAE

36%

on nutrition5k · ~0.5s inference on A100-40GB

Stack

PyTorch · monocular regression · A100

What we did

  • Computer vision
  • Monocular regression
  • Mobile latency
  • Nutrition modelling

More case studies

A translation system for low-resource languages that adapts to each community over time

A machine-translation system for low-resource languages with an online tuning loop, so quality compounds per community as members feed back corrections.

Read more

A generative pipeline that turns a teacher’s prompt into a classroom-ready interactive activity

An end-to-end generation pipeline that turns a one-line teacher prompt into an editable, classroom-ready interactive activity, embedded in SMART Boards and LMSs.

Read more

§ 03  ·  Engagement intake

01 / Start a brief

Talk to the people who’ll do the work.

We staff small and senior, scope by phase, and end on a written deliverable. We don’t sell decks or hours.

If we’re not the right team for the job, we say so on the first call. The bar is production, not pitch.

team@grouplabs.ca
Compose a brief30 min · intro
WGS84YYC / YUL
CalgaryYYC
51.05°N · 114.07°W
MontrealYUL
45.51°N · 73.55°W
Δ 3,020 km

02 / Where to find us

01

Calgary, Alberta

Studio HQ
+1 (587) 700-9968
Lat / Lng
51.0486°N · 114.0708°W
Local
—:— MST · UTC−07
02

Montreal, Quebec

Satellite office
+1 (825) 365-9891
Lat / Lng
45.5089°N · 73.5542°W
Local
—:— EST · UTC−05