Как работает конвейер ИИ для распознавания еды: от фотографии до данных о питании
Подробный технический разбор полного конвейера ИИ для распознавания еды: от захвата камерой через извлечение признаков с помощью CNN, классификации продуктов, оценки порций и поиска в базе данных нутриентов до итогового расчёта калорий.
Когда вы фотографируете свой обед и видите полный макронутриентный расклад менее чем за две секунды, результат легко принять как должное. Однако за этим, казалось бы, мгновенным выводом стоит многоэтапный конвейер, который проводит ваше изображение через захват камерой, предобработку, нейросетевой инференс, классификацию, оценку порции, поиск в базе данных и итоговый расчёт калорий, прежде чем что-либо появится на экране. Каждый этап решает свою задачу, использует собственный набор алгоритмов и передаёт конкретный результат на следующий этап.
В этой статье мы проследим весь путь от нажатия кнопки затвора до этикетки с данными о питании. По ходу мы назовём архитектуры, методы и инженерные компромиссы, благодаря которым каждый этап работает, а также покажем, где Nutrola привнесла собственные инновации, чтобы повысить точность и скорость выше отраслевых стандартов.
Этап 1: Захват камерой и получение изображения
Всё начинается в тот момент, когда пользователь открывает видоискатель камеры и наводит объектив на тарелку с едой. Современные смартфоны снимают изображения с разрешением от 12 до 48 мегапикселей, создавая сырые сенсорные данные, которые кодируют значения интенсивности цвета через мозаику фильтра Байера. Процессор обработки изображений устройства (ISP) выполняет демозаику этих данных, применяет баланс белого, снижает шум и выдаёт стандартный файл JPEG или HEIF за доли секунды.
Два аппаратных свойства всё сильнее влияют на этот этап. Во-первых, датчики LiDAR на последних моделях iPhone Pro и отдельных флагманах Android могут захватывать сопутствующую карту глубины наряду с RGB-изображением. Эти данные глубины становятся ценными на последующих этапах при оценке порций. Во-вторых, устройства с датчиками времени пролёта (ToF) предоставляют аналогичную, но менее точную информацию о глубине, которую конвейер всё равно может использовать при отсутствии LiDAR.
Конвейер принимает RGB-изображение и, при наличии, карту глубины в качестве парного входа. Если устройство не оснащено датчиком глубины, конвейер обрабатывает только RGB и компенсирует недостаток данных позднее с помощью монокулярной оценки глубины.
Ключевой результат этого этапа
Высокоразрешённое RGB-изображение (и, опционально, карта глубины), представляющее сцену перед пользователем.
Этап 2: Предобработка изображения
Сырой снимок камеры не готов для инференса нейронной сети. Предобработка преобразует изображение в стандартизированный тензор, который ожидает модель.
Масштабирование и кадрирование
Большинство моделей распознавания еды принимают входные данные с фиксированным разрешением, обычно 224×224, 384×384 или 512×512 пикселей в зависимости от архитектуры. Конвейер масштабирует изображение до целевого разрешения с сохранением соотношения сторон, применяя леттербоксинг или центральную обрезку по мере необходимости. Бикубическая интерполяция является стандартным методом ресемплинга, поскольку она лучше сохраняет мелкие текстурные детали по сравнению с билинейной альтернативой.
Нормализация
Значения пикселей переводятся из целочисленного диапазона 0–255 в числа с плавающей запятой, а затем нормализуются с использованием поканальных среднего и стандартного отклонения обучающего набора данных. Для моделей, предобученных на ImageNet, применяются каноничные значения нормализации (среднее [0.485, 0.456, 0.406] и стандартное отклонение [0.229, 0.224, 0.225] для каналов R, G и B соответственно). Эта нормализация центрирует входное распределение около нуля и масштабирует его до единичной дисперсии, что стабилизирует поток градиентов во время обучения и обеспечивает согласованное поведение при инференсе.
Цветовое пространство и артефакты аугментации
Во время обучения конвейер применяет обширную аугментацию данных: случайные повороты, горизонтальные отражения, цветовой джиттер, размытие по Гауссу и вырезание участков (cutout). Во время инференса эти аугментации отключаются, но модель научилась быть инвариантной к тем типам визуального шума, которые они имитируют. Это означает, что фото, сделанное при тёплом ресторанном освещении, и фото, сделанное при холодном флуоресцентном офисном свете, дадут надёжные представления признаков.
Ключевой результат этого этапа
Нормализованный тензор с плавающей запятой фиксированных пространственных размеров, готовый для основы нейронной сети.
Этап 3: Извлечение признаков с помощью CNN
Это вычислительное ядро конвейера. Глубокая свёрточная нейронная сеть (или всё чаще — визуальный трансформер) обрабатывает предобработанный тензор и создаёт плотный вектор признаков, который кодирует визуальное содержание изображения в форме, доступной для интерпретации последующими модулями классификации и детекции.
Архитектуры основы (Backbone)
Несколько архитектур основы доказали свою эффективность для распознавания еды:
EfficientNet использует составное масштабирование для баланса глубины сети, ширины и разрешения входных данных. EfficientNet-B4 и B5 являются популярным выбором, поскольку они обеспечивают высокую точность при вычислительных затратах, приемлемых для мобильного оборудования в сочетании с квантизацией. Nutrola использует основу, производную от EfficientNet, дообученную на проприетарном наборе данных изображений еды, достигая оптимального баланса между задержкой и точностью top-1.
Vision Transformers (ViT) делят изображение на патчи фиксированного размера (обычно 16×16 пикселей), проецируют каждый патч в эмбеддинг и обрабатывают последовательность эмбеддингов через слои мультиголового самовнимания. ViT отлично справляются с захватом пространственных связей дальнего действия — например, понимая, что коричневый диск рядом с зелёными листьями является котлетой для бургера, а не шоколадным печеньем, потому что окружающий контекст включает булку и салат. Гибридные модели, такие как DeiT (Data-efficient Image Transformer) и Swin Transformer, снизили требования к данным и вычислительные затраты чистых ViT, сделав их пригодными для промышленных систем распознавания еды.
MobileNetV3 оптимизирован для инференса на устройстве с использованием разделимых по глубине свёрток и аппаратно-ориентированного нейроархитектурного поиска. Он служит основой в критичных по задержке путях, где модель должна работать полностью на устройстве без сетевого обращения к серверу.
Пирамидные сети признаков (Feature Pyramid Networks)
Поскольку продукты питания могут значительно различаться по видимому размеру в пределах одного изображения (большая пицца рядом с маленькой соусницей), конвейер использует пирамидную сеть признаков (FPN) для извлечения признаков на нескольких пространственных масштабах. FPN строит нисходящий путь с боковыми соединениями от промежуточных карт признаков основы, создавая набор мультимасштабных карт признаков, одинаково выразительных для обнаружения как мелких гарниров, так и крупных основных блюд.
Ключевой результат этого этапа
Набор мультимасштабных карт признаков (или единый объединённый вектор признаков для задач только классификации), кодирующих визуальную семантику каждой области изображения.
Этап 4: Мультиклассовая классификация и детекция еды
Реальные приёмы пищи редко содержат один продукт. Типичная обеденная тарелка может содержать жареный лосось, брокколи на пару, коричневый рис и дольку лимона. Конвейер должен обнаружить, локализовать и классифицировать каждый отдельный продукт в кадре.
Обнаружение объектов с помощью YOLO и DETR
Конвейер применяет модуль обнаружения объектов поверх извлечённых карт признаков. В этой области доминируют два семейства детекторов:
YOLO (You Only Look Once) выполняет обнаружение за один прямой проход, разделяя изображение на сетку и одновременно предсказывая ограничивающие рамки и вероятности классов для каждой ячейки сетки. YOLOv8 и его последователи особенно подходят для развёртывания на мобильных устройствах, поскольку обрабатывают полное изображение за один проход, а не предлагают и затем уточняют регионы. Nutrola использует детекционный модуль на основе YOLO, настроенный на более чем 15 000 классов еды, охватывающих кухни мира.
DETR (Detection Transformer) рассматривает обнаружение объектов как задачу предсказания множества, используя архитектуру трансформера «кодер-декодер» для непосредственного вывода набора обнаружений без необходимости в якорных рамках или подавлении немаксимумов. DETR обрабатывает перекрывающиеся продукты более корректно, чем якорные методы, поскольку его функция потерь на основе множеств естественным образом избегает дублирования предсказаний.
Семантическая сегментация для смешанных блюд
Для составных блюд, таких как салаты, блюда вок и боулы с крупами, где отдельные ингредиенты перекрываются и перемешиваются, ограничивающие рамки слишком грубы. Конвейер переключается на ветку семантической сегментации, часто основанную на архитектуре U-Net или DeepLabv3+, которая классифицирует каждый пиксель изображения. Эта попиксельная классификация позволяет системе оценить долю каждого ингредиента в смешанном блюде, даже когда чёткие границы между ними отсутствуют.
Оценка уверенности и ранжирование кандидатов
Каждое обнаружение сопровождается оценкой уверенности. Конвейер применяет порог (обычно от 0,5 до 0,7 в зависимости от приложения) для фильтрации предсказаний с низкой уверенностью. Когда верхнее предсказание неопределённо, система может предложить пользователю от трёх до пяти лучших кандидатов для подтверждения, снижая частоту ошибок без необходимости ручного ввода.
Классификационный движок Nutrola включает модуль пользовательского контекста, который учитывает прошлые приёмы пищи пользователя, предпочтения в кухне, географическое местоположение и время суток. Если пользователь часто логирует мексиканскую кухню и модель не уверена в выборе между пшеничной лепёшкой и нааном, контекстный модуль смещает вероятность в сторону лепёшки. Этот уровень персонализации измеримо снижает частоту ошибок классификации со временем.
Ключевой результат этого этапа
Список обнаруженных продуктов, каждый с меткой класса, ограничивающей рамкой или пиксельной маской и оценкой уверенности.
Этап 5: Оценка размера порции
Знать, что на тарелке есть куриная грудка на гриле и рис, недостаточно. Конвейер должен оценить, сколько каждого продукта присутствует, потому что 100 граммов куриной грудки и 300 граммов куриной грудки различаются более чем на 300 калорий.
Монокулярная оценка глубины
Когда аппаратный датчик глубины недоступен, конвейер использует модель монокулярной оценки глубины (обычно на основе архитектуры MiDaS или DPT) для вывода карты глубины из одного RGB-изображения. Эти модели учатся предсказывать глубину по контекстным признакам, таким как перекрытие объектов, относительный размер, текстурные градиенты и точки схода. Полученная карта глубины, хоть и менее точная, чем данные LiDAR, достаточна для приблизительного определения трёхмерной формы еды на тарелке.
Масштабирование по эталонным объектам
Фотография не содержит информации о масштабе. Конвейер решает эту задачу, обнаруживая эталонные объекты известных размеров в кадре. Тарелки (обычно от 25 до 27 см в диаметре), стандартные столовые приборы, миски и даже края смартфона могут служить опорой для масштаба. Вписывая эллипс в обнаруженный край тарелки и применяя проективную геометрию для определения угла обзора, конвейер восстанавливает реальные расстояния из пиксельных измерений.
Пересчёт объёма в вес
С оценённой трёхмерной формой продукта конвейер вычисляет объём путём интегрирования профиля глубины по пиксельной маске продукта. Затем объём пересчитывается в вес с использованием таблиц плотности для конкретных продуктов. Чашка листового шпината весит значительно меньше, чем чашка хумуса, поэтому поиск плотности необходим для точности.
Nutrola поддерживает проприетарную базу данных плотности, охватывающую тысячи продуктов в различных состояниях приготовления (сырые, варёные, измельчённые, замороженные), и использует её для пересчёта оценённых объёмов в граммы с более высокой точностью, чем стандартные таблицы плотности.
Ключевой результат этого этапа
Оценённый вес в граммах для каждого обнаруженного продукта.
Этап 6: Поиск в базе данных нутриентов
После классификации и взвешивания каждого продукта конвейер запрашивает базу данных питания для получения макро- и микронутриентного профиля на 100 граммов данного продукта.
Архитектура базы данных
Качественные базы данных питания основываются на государственных источниках, таких как USDA FoodData Central, UK Nutrient Databank и национальные аналоги из десятков стран. Эти источники предоставляют лабораторно проанализированные значения нутриентов для тысяч продуктов в стандартизированной форме.
База данных Nutrola выходит за рамки государственных источников, включая данные от производителей по более чем 1,2 миллиона брендированных продуктов, позиции меню ресторанов с информацией о питании, верифицированной через партнёрства, а также записи от сообщества, прошедшие многоуровневый конвейер проверки, включающий перекрёстные ссылки, обнаружение аномалий и рецензирование диетологами. В результате получается единая база данных из более чем 2 миллионов записей о продуктах с данными о питании, нормализованными по единой схеме.
Нечёткое сопоставление и разрешение сущностей
Модель классификации выдаёт метку продукта, например «куриное бедро на гриле с кожей», которую необходимо сопоставить с правильной записью в базе данных. Это нетривиальная задача разрешения сущностей, поскольку один и тот же продукт может иметь десятки названий в разных регионах и на разных языках. Конвейер использует семантический поиск на основе эмбеддингов для нахождения ближайшей записи в базе данных. Дообученный текстовый кодер отображает и предсказанную метку продукта, и название каждой записи в базе данных в единое векторное пространство, и выбирается ближайший сосед (измеренный по косинусному сходству).
При наличии нескольких близких совпадений (например, «куриное бедро, жареное, с кожей» против «куриное бедро, запечённое, кожа съедена») система выбирает запись, чей метод приготовления лучше соответствует визуальным признакам, обнаруженным на изображении.
Ключевой результат этого этапа
Полный нутриентный профиль (калории, белки, углеводы, жиры, клетчатка и микронутриенты) на 100 граммов для каждого обнаруженного продукта.
Этап 7: Расчёт макронутриентов и калорий
Финальный вычислительный этап представляет собой простую арифметику, но именно здесь ошибки всех предыдущих этапов накапливаются. Конвейер умножает значения нутриентов на 100 граммов на оценённый вес каждого продукта, затем суммирует результаты по всем продуктам для получения итоговой разбивки по приёму пищи.
Расчёт
Для каждого продукта:
- Калории = (оценённые граммы / 100) × калории на 100 г
- Белки = (оценённые граммы / 100) × белки на 100 г
- Углеводы = (оценённые граммы / 100) × углеводы на 100 г
- Жиры = (оценённые граммы / 100) × жиры на 100 г
Эти значения по каждому продукту суммируются для получения итога по приёму пищи.
Распространение ошибок и доверительные интервалы
Поскольку каждый предыдущий этап вносит определённую неопределённость, Nutrola не представляет единственную точечную оценку как истину. Система вычисляет доверительные интервалы, распространяя оценку уверенности классификации и неопределённость оценки порции через расчёт. Если уверенность классификации высока, но оценка порции неопределённа (например, еда уложена горкой в глубокой миске, скрывающей объём), система отражает это, расширяя диапазон уверенности, и может запросить у пользователя подтверждение порции.
Эта прозрачность — осознанное проектное решение. Вместо создания ложного ощущения точности Nutrola показывает диапазон (например, «420–510 ккал»), когда базовые оценки того требуют, помогая пользователям сформировать реалистичное понимание своего потребления.
Ключевой результат этого этапа
Общее количество калорий и разбивка по макронутриентам для приёма пищи с дополнительными доверительными интервалами.
Этап 8: Отображение и логирование для пользователя
Финальный этап отрисовывает результаты в пользовательском интерфейсе. Обнаруженные продукты перечислены с их индивидуальными значениями калорий и макронутриентов, а итог по приёму пищи отображается на видном месте. Пользователь может нажать на любой продукт, чтобы исправить его или скорректировать порцию, и эти корректировки возвращаются в модели персонализации для улучшения будущих предсказаний.
В Nutrola отображение включает визуальное наложение на исходную фотографию с ограничивающими рамками или подсветкой сегментов для каждого обнаруженного продукта, что сразу делает понятным, что ИИ идентифицировал и где. Эта визуальная обратная связь укрепляет доверие и позволяет легко заметить и исправить ошибки.
Залогированный приём пищи сохраняется в ежедневном журнале питания пользователя и вносит вклад в нарастающие итоги по калориям, белкам, углеводам, жирам и отслеживаемым микронутриентам. Данные синхронизируются с Apple Health, Google Fit и другими подключёнными платформами через стандартизированные API для работы с данными о здоровье.
Ключевой результат этого этапа
Полностью отрисованная запись о приёме пищи с данными о питании по каждому продукту и в сумме, визуальными наложениями и синхронизацией с платформами здоровья.
Сводная таблица конвейера
| Этап | Основная технология | Вход | Выход |
|---|---|---|---|
| 1. Захват камерой | ISP устройства, датчики LiDAR/ToF | Свет от сцены | RGB-изображение + опциональная карта глубины |
| 2. Предобработка изображения | Бикубическое масштабирование, поканальная нормализация | Сырое изображение | Нормализованный тензор (напр., 384×384×3) |
| 3. Извлечение признаков | EfficientNet, ViT, Swin Transformer, FPN | Нормализованный тензор | Мультимасштабные карты признаков |
| 4. Классификация еды | YOLOv8, DETR, DeepLabv3+, пользовательский контекст | Карты признаков | Размеченные продукты с ограничивающими рамками/масками |
| 5. Оценка порции | Оценка глубины MiDaS, эталонное масштабирование, таблицы плотности | RGB + глубина + маски продуктов | Вес в граммах для каждого продукта |
| 6. Поиск в базе данных | Семантический поиск на основе эмбеддингов, базы USDA/брендов | Метки продуктов + признаки приготовления | Нутриентные профили на 100 г |
| 7. Расчёт калорий | Взвешенная арифметика, распространение неопределённости | Оценки в граммах + нутриентные профили | Итого калории и макронутриенты с доверительными интервалами |
| 8. Отображение пользователю | Рендеринг интерфейса, API синхронизации данных о здоровье | Рассчитанные данные о питании | Запись о приёме пищи с визуальным наложением |
Где инновации Nutrola занимают своё место
Несколько описанных выше этапов включают инновации, специфичные для реализации Nutrola:
Персонализированный контекст классификации. Модуль пользовательского контекста на Этапе 4 использует историю приёмов пищи, предпочтения в кухне, местоположение и время суток для устранения неоднозначности неопределённых предсказаний. Это нестандартное решение для большинства конвейеров распознавания еды, и оно обеспечивает измеримые улучшения точности в реальных условиях по сравнению с моделями без учёта контекста.
Проприетарная база данных плотности. Пересчёт объёма в вес на Этапе 5 основан на базе данных плотности, охватывающей продукты в нескольких состояниях приготовления. Типовые системы часто используют одну среднюю плотность на продукт, что вносит систематическую ошибку для таких позиций, как варёные и сырые овощи или консервы с жидкостью и без неё.
Отображение с учётом уверенности. Вместо показа одного числа калорий Nutrola демонстрирует неопределённость, когда она существует. Этот честный подход снижает разочарование пользователей, когда оценки кажутся неточными, поскольку сам диапазон сообщает, что система менее уверена в конкретном продукте.
Единая многоисточниковая база данных питания. База данных на 2 миллиона записей на Этапе 6 объединяет государственные лабораторные данные, данные о брендированных продуктах и верифицированные записи от сообщества в единую нормализованную схему, предоставляя конвейеру доступ к значительно большему числу записей о продуктах, чем любой отдельный источник.
Непрерывное обучение на основе корректировок. Каждая пользовательская корректировка на Этапе 8 возвращается в модели классификации и оценки порций в ходе периодических циклов дообучения, создавая маховик, где точность растёт по мере роста пользовательской базы.
Задержка и работа на устройстве
Сквозная задержка имеет огромное значение для пользовательского опыта. Если конвейер занимает более двух-трёх секунд, пользователи воспринимают его как медленный и могут вернуться к ручному логированию. Несколько инженерных стратегий поддерживают низкую задержку:
Квантизация модели переводит 32-битные веса с плавающей запятой в 8-битные целые числа, уменьшая размер модели примерно в 4 раза и ускоряя инференс на мобильных нейропроцессорах (NPU) с минимальной потерей точности. Nutrola применяет квантизацию после обучения как к основе для извлечения признаков, так и к детекционному модулю.
Инференс на устройстве полностью устраняет сетевое обращение к серверу для вычислительно интенсивных этапов (извлечение признаков и детекция). Apple Core ML и Android NNAPI предоставляют аппаратно-ускоренные пути инференса, на которые ориентирован конвейер. Только лёгкие этапы поиска по базе данных и расчёта калорий требуют серверного вызова, и даже они могут использовать локальный кэш для работы в офлайн-режиме.
Спекулятивное выполнение начинает предобработку и извлечение признаков, пока предпросмотр камеры ещё активен, поэтому к моменту нажатия кнопки затвора конвейер уже частично обработал кадр. Этот приём сокращает воспринимаемую задержку на несколько сотен миллисекунд.
Бенчмарки точности и производительность в реальных условиях
На стандартных академических бенчмарках, таких как Food-101, ISIA Food-500 и Nutrition5k, современные конвейеры достигают точности top-1 классификации от 85 до 92 процентов и ошибок оценки порций в пределах 15–25 процентов от истинного веса. Реальная производительность варьируется, поскольку пользовательские фотографии более зашумлены, чем курируемые наборы данных: плохое освещение, частичное перекрытие, необычные ракурсы и редкие региональные блюда — всё это снижает точность.
Внутреннее тестирование Nutrola на отложенном наборе из 50 000 реальных пользовательских фотографий показывает точность top-1 классификации 89 процентов и медианную ошибку оценки порции 18 процентов. При рассмотрении top-3 кандидатов точность классификации возрастает до 96 процентов, что объясняет, почему интерфейс корректировки наглядно отображает альтернативные предложения.
Эти показатели продолжают улучшаться с каждым циклом дообучения по мере того, как петля обратной связи от корректировок накапливает больше размеченных данных из реального использования.
Часто задаваемые вопросы
Сколько времени занимает весь конвейер от фотографии до данных о питании?
На современных смартфонах с выделенным нейропроцессором сквозной конвейер обычно завершается за 1,0–2,5 секунды. Большая часть этого времени уходит на извлечение признаков и обнаружение объектов на Этапах 3 и 4. Предобработка и расчёт калорий почти мгновенны, а поиск по базе данных добавляет лишь 50–150 миллисекунд в зависимости от сетевых условий или использования локального кэша. Система спекулятивного выполнения Nutrola, которая начинает обработку предпросмотра камеры до нажатия кнопки затвора, может сократить воспринимаемую задержку до менее одной секунды во многих случаях.
Насколько точна классификация еды ИИ по сравнению с ручным логированием?
Классификация еды ИИ достигает точности top-1 от 85 до 92 процентов на стандартных бенчмарках и точности top-3 выше 95 процентов. Ручное логирование, хотя теоретически точно при тщательном выполнении, страдает от систематического занижения на 10–45 процентов согласно опубликованным исследованиям в области диетологии. На практике классификация ИИ в сочетании с быстрым подтверждением пользователем, как правило, даёт более последовательные и менее предвзятые результаты, чем чисто ручной ввод, особенно для пользователей, которые логируют несколько приёмов пищи в день и испытывают усталость от ввода данных.
Что происходит, когда ИИ не может идентифицировать продукт?
Когда предсказание с наивысшей уверенностью оказывается ниже порога системы, конвейер использует плавный запасной подход. Он предлагает от трёх до пяти лучших кандидатов на идентификацию и просит пользователя выбрать правильный или ввести название вручную. Эта пользовательская корректировка логируется и возвращается в обучающий конвейер в ходе следующего цикла дообучения, что означает, что каждая ошибка становится обучающим сигналом, улучшающим будущие предсказания. Со временем, по мере накопления этих корректировок, охват системой необычных и региональных блюд неуклонно расширяется.
Работает ли конвейер по-другому для смешанных блюд, таких как салаты или карри?
Да. Для смешанных блюд, где отдельные ингредиенты пространственно неразделимы, конвейер переключается с обнаружения ограничивающих рамок на семантическую сегментацию с использованием архитектур, таких как DeepLabv3+. Эта попиксельная классификация оценивает долю каждого ингредиента в смешанной области. Для сильно смешанных блюд, таких как смузи или протёртые супы, где визуальное разделение невозможно, конвейер полагается на декомпозицию на основе рецептов: он определяет тип блюда и затем использует модель рецептов для оценки вероятных пропорций ингредиентов и их совокупного пищевого профиля.
Как работает оценка порций без датчика глубины?
Когда LiDAR или датчик времени пролёта недоступен, конвейер использует модель монокулярной оценки глубины (такую как MiDaS или DPT) для вывода приблизительной глубины из одного RGB-изображения. Эти модели обучены на миллионах пар «изображение-глубина» и могут оценить трёхмерную форму еды по контекстным признакам, таким как геометрия тарелки, рисунки теней и текстурные градиенты. Система также обнаруживает эталонные объекты известного размера, в первую очередь тарелки и столовые приборы, для привязки масштаба. Хотя монокулярная оценка менее точна, чем аппаратное сенсорное измерение глубины, сочетание обученных признаков глубины и эталонного масштабирования поддерживает оценки порций в практически приемлемом диапазоне точности для отслеживания питания.
Может ли конвейер обработать несколько тарелок или приёмов пищи на одной фотографии?
Этап обнаружения объектов рассчитан на обработку произвольного количества продуктов, независимо от того, расположены ли они на одной тарелке или на нескольких. Детекционные модули YOLO и DETR сканируют всё изображение и выдают независимые обнаружения для каждого найденного продукта, будь то на одной обеденной тарелке, разложенные на столе с несколькими блюдами или расставленные на подносе. Каждый обнаруженный продукт обрабатывается независимо на этапах оценки порции и расчёта калорий. Для наилучшей точности Nutrola рекомендует фотографировать каждую тарелку или миску отдельно, чтобы эталонное масштабирование можно было откалибровать для каждой тарелки, но система корректно обрабатывает сцены с несколькими тарелками, когда это непрактично.
Готовы трансформировать отслеживание питания?
Присоединяйтесь к тысячам тех, кто изменил свой путь к здоровью с Nutrola!