
Как мы сделали распознавание блюд по фото — что под капотом
Технический разбор фоторежима в NutriApp — какие подходы мы попробовали, на чём в итоге остановились, что работает не идеально и куда планируем двигаться. Без маркетингового глянца.
Сегодня — про то, как устроено распознавание блюд по фото в NutriApp. Без маркетингового глянца, а как оно работает на самом деле: что мы пробовали, что взлетело, а что — нет.
Зачем оно вообще
В классических трекерах ввод приёма пищи занимает 1-3 минуты на блюдо. Нужно открыть поиск, выбрать продукт из 47 одинаковых названий, поставить граммовку, повторить для каждого ингредиента. За день это 5-10 минут «лишней» работы.
На третий день большинство людей это бросают. Не потому, что лень — а потому, что цена ввода становится больше, чем польза от подсчёта.
Идея фоторежима — снизить эту цену до 20 секунд: сфоткал тарелку, приложение разложило её на ингредиенты с оценкой граммовки, ты быстро правишь и сохраняешь.
Что мы пробовали
Готовые сервисы распознавания изображений (Google Vision, Clarifai). Они умеют сказать, что на картинке «pizza» или «salad bowl», но не разбивают блюдо на ингредиенты с граммовкой. Для подсчёта калорий это бесполезно — нам нужно не название блюда, а состав с массой.
Своя CV-модель. Идея — собрать датасет российских блюд (борщ, гречка, котлеты по-киевски) и обучить модель. Быстро поняли: для приемлемой точности нужны сотни тысяч размеченных тарелок, разметка стоит миллионы. Для нашего размера команды это нереалистично.
Vision-модели от Anthropic. Попали в задачу. Модель смотрит на фото тарелки, как человек: «куриная грудка ~120 г + рис ~150 г + овощной салат ~80 г», и возвращает структурированный JSON, который мы кладём в приём пищи. Никакого fine-tuning — общая модель, грамотный prompt, и она вытягивает домашнюю еду, кафе, фастфуд, простые ресторанные тарелки.
На этом и остановились.
Как это выглядит в приложении

Загружаешь фото — получаешь подпись («запечённая куриная грудка, нарезанная ломтиками, с салатом из свежих листьев, брокколи и красного лука»), список ингредиентов с граммовкой и БЖУ, выбираешь тип приёма пищи (завтрак / обед / ужин / перекус) и сохраняешь. На каждом ингредиенте можно подправить вес одним движением.
Что не работает идеально
— Граммовка по фото — это всегда оценка. Промах ±15-20 г по каждому ингредиенту — норма. Поэтому в приложении после распознавания обязательный шаг ручной правки: ты видишь предложенные граммы и можешь поправить.
— Сложные многокомпонентные блюда распознаются хуже простых. Запеканки, мультислойные сэндвичи, домашние тушения, где ингредиенты «спрятаны» друг под другом — модель часто видит только верхний слой.
— Тёмный фон, плохой свет, странные ракурсы — режут точность. Лучше всего работает top-down или 3/4 на нейтральном фоне при дневном свете.
— Региональные специфические блюда. Узбекская манты, плов, домашние пельмени — модель видит «meat dumplings» и угадывает граммовку по среднему. Это нормально для базы, но если нужна точность — лучше вручную через каталог.
Что зашло
Для «обычного дня» — миска овсянки, тарелка с курицей и гарниром, бутерброд с кофе — фоторежим экономит реальные минуты. И главное: люди стали считать чаще, потому что барьер на ввод приёма пищи упал.
В аналитике это видно прямо: пользователи, которые активно пользуются фоторежимом, удерживаются в приложении в разы дольше, чем те, кто вводит только через каталог. Логично: цена ввода — главный барьер в трекинге калорий.
Куда идём дальше
В планах:
- Улучшить оценку граммовки для домашних блюд — борщ, плов, рагу. Здесь поможет связка vision + база рецептов: модель видит «борщ», а мы достаём типичный состав и подгоняем граммовку под объём тарелки.
- Сохранять «свои» блюда. Если ты часто ешь одно и то же — не нужно каждый раз заново распознавать. Один раз сфоткал — сохранил как шаблон — потом одним кликом.
- Распознавание упаковки. Сфоткал состав с пачки — мы парсим калорийность и БЖУ, создаём продукт в базе. Особенно для производителей, которых нет в общем каталоге.
Если интересно попробовать — открыть NutriApp. Фоторежим есть в бесплатном тарифе с дневным лимитом, на платных — без лимитов.
А если ты часто пользуешься аналогичными инструментами и видишь, что у нас работает хуже, чем у конкурентов, — расскажи в комментариях. Мы реально дорабатываем по таким репортам.
Считай калории автоматически в NutriApp
Открыть NutriApp