Как ИИ оценивает размер порций по фотографиям: подробный технический обзор

Детальный обзор того, как ИИ использует оценку глубины, эталонные объекты и моделирование объёма для определения размера порций по одной фотографии.

Определить, какая еда находится на вашей тарелке, — это лишь половина задачи калорийного трекинга на основе ИИ. Вторая половина, и, пожалуй, более сложная, — это выяснить, сколько еды на тарелке. Порция пасты может содержать 200 калорий или 800 калорий в зависимости от размера. Точность этой оценки — именно то, что отличает полезный инструмент для отслеживания питания от бесполезной игрушки.

В этой статье мы подробно рассмотрим техническую сторону того, как системы ИИ оценивают размер порций по фотографиям, включая оценку глубины, масштабирование по эталонным объектам, моделирование объёма, а также текущие проблемы, с которыми сталкиваются исследователи и инженеры в стремлении сделать эти оценки более точными.

Почему оценка порций сложнее, чем распознавание еды

Распознавание еды — это по сути задача классификации. Система должна выбрать из конечного набора категорий продуктов. Оценка порций, напротив, — это задача регрессии. Система должна предсказать непрерывное значение (граммы или миллилитры) исключительно на основе визуальной информации.

Несколько факторов делают эту задачу особенно сложной:

  • Проблема перехода из 2D в 3D: Фотография сжимает трёхмерную реальность в двумерное изображение. Информация о глубине теряется, что затрудняет различение между тонким слоем еды и толстой горкой.
  • Переменная плотность: Чашка листовой зелени и чашка гранолы имеют одинаковый объём, но совершенно разный вес и калорийность. Система должна оценивать и объём, и плотность.
  • Перспективные искажения: Угол, под которым сделана фотография, влияет на то, насколько большими выглядят продукты. Тарелка, снятая строго сверху, выглядит иначе, чем та же тарелка, снятая под углом 45 градусов.
  • Неоднозначность масштаба: Без известного эталонного объекта в кадре невозможно определить абсолютный размер. Крупный план маленького печенья может выглядеть идентично фотографии большой пиццы, сделанной издалека.

Оценка глубины по одному изображению

Одним из ключевых прорывов, позволяющих оценивать порции по фотографиям, является монокулярная оценка глубины — способность извлекать информацию о глубине из одного изображения без необходимости в стереокамерах или специализированном оборудовании.

Как работает монокулярная оценка глубины

Зрительная система человека определяет глубину по множеству признаков: перекрытие объектов (ближние объекты заслоняют дальние), относительный размер (меньшие объекты обычно находятся дальше), градиенты текстуры (текстуры становятся мельче на большем расстоянии) и воздушная перспектива (далёкие объекты выглядят более размытыми).

Модели глубокого обучения способны усваивать те же признаки из больших наборов данных, состоящих из изображений в паре с картами глубины. При применении к фотографиям еды эти модели могут оценить, какие части продукта ближе к камере, а какие дальше, фактически восстанавливая трёхмерную форму еды из плоского изображения.

Карты глубины и объём еды

Карта глубины присваивает значение расстояния каждому пикселю изображения. Для оценки еды это означает, что система может определить, что центр тарелки супа находится на одной глубине, а край тарелки — на другой. Разница между этими глубинами в сочетании с обнаруженными границами еды позволяет системе оценить объём.

Современные камеры смартфонов с LiDAR-сенсорами (доступными на последних моделях iPhone Pro и iPad Pro) могут захватывать реальные данные о глубине наряду с цветным изображением, обеспечивая гораздо более точную информацию о глубине, чем одна лишь алгоритмическая оценка. Приложения для отслеживания питания могут использовать это оборудование, когда оно доступно, и переключаться на монокулярную оценку на устройствах без датчиков глубины.

Масштабирование по эталонным объектам

Без известной точки отсчёта абсолютный размер объектов на фотографии остаётся неоднозначным. Масштабирование по эталонным объектам решает эту проблему, используя объекты с известными размерами для установления масштаба всего изображения.

Распространённые эталонные объекты

Эталонный объект Известный размер Преимущество для точности
Стандартная обеденная тарелка 25–27 см в диаметре Устанавливает общий масштаб для всего блюда
Вилка или ложка ~19 см в длину Обеспечивает масштаб даже на крупных планах
Кредитная карта 8,56 x 5,4 см Точный и универсально стандартизированный размер
Смартфон Зависит от модели, но известен Может быть обнаружен и измерен алгоритмически
Рука Варьируется, но может быть оценена по демографическим данным Приблизительное масштабирование при отсутствии других эталонов

Автоматическое обнаружение эталонных объектов

Вместо того чтобы требовать от пользователей размещать эталонную карту рядом с едой (что создаёт дополнительные неудобства и снижает мотивацию), современные системы пытаются обнаруживать распространённые эталонные объекты автоматически. Тарелки, миски, столовые приборы и столы часто присутствуют на фотографиях еды и могут служить размерными ориентирами, если система способна их идентифицировать.

Система оценки порций Nutrola автоматически ищет тарелки, миски и столовые приборы в кадре для определения масштаба. Когда эти объекты обнаружены, система использует их типичные размеры для калибровки размера продуктов. Когда эталонный объект не найден, система опирается на усвоенные статистические данные о типичных размерах порций и может запросить у пользователя подтверждение.

Калибровка по тарелке

Один из особенно эффективных подходов — калибровка по тарелке. Стандартные обеденные тарелки в большинстве стран имеют узкий диапазон размеров (от 25 до 27 см в диаметре). Обнаружив эллиптический контур тарелки на изображении и предположив стандартный размер, система может установить надёжный масштаб для всего, что находится на тарелке.

Этот подход работает хорошо, потому что тарелки почти всегда присутствуют на фотографиях блюд, их эллиптическая форма легко обнаруживается независимо от угла камеры, а перспективное искажение эллипса фактически кодирует информацию об угле камеры, что помогает корректировать перспективные эффекты для еды.

Методы оценки объёма

После того как система идентифицировала еду, оценила глубину и установила масштаб, она должна объединить эту информацию для оценки объёма каждого продукта.

Геометрические примитивы

Один из подходов — аппроксимация продуктов комбинациями простых геометрических фигур:

  • Цилиндры для высоких продуктов, таких как напитки, стопки блинов или слоёные торты
  • Полусферы для округлых продуктов, таких как порции риса, горки картофельного пюре или шарики мороженого
  • Прямоугольные параллелепипеды для нарезного хлеба, кусков сыра или батончиков
  • Усечённые конусы для тарелок супа или каши (форма ёмкости помогает определить объём)
  • Неправильные многогранники для продуктов сложной формы, таких как куриные ножки или целые фрукты

Система подбирает один или несколько таких примитивов к обнаруженной области еды и рассчитывает объём по подобранным формам и установленному масштабу.

Воксельная реконструкция

Более продвинутый подход предполагает воксельную реконструкцию, при которой продукт моделируется как трёхмерная сетка из маленьких кубиков (вокселей). Каждый воксель классифицируется как содержащий еду или пустой на основе карты глубины и маски сегментации. Общий объём затем равен сумме всех вокселей, содержащих еду.

Этот метод лучше справляется с нестандартными формами, чем геометрические примитивы, но требует больше вычислительных ресурсов. Он особенно полезен для продуктов, которые не вписываются в простые формы, например оторванный кусок хлеба или неровно нарезанный фрукт.

Нейросетевая оценка объёма

Самый современный подход полностью пропускает этап явного геометрического моделирования. Вместо этого нейронная сеть обучается сквозным методом предсказывать объём еды непосредственно по изображению. Такие модели усваивают неявные представления о геометрии еды из больших наборов данных с изображениями еды в паре с реальными измерениями веса.

Этот подход показывает многообещающие результаты, поскольку он способен улавливать тонкие визуальные признаки, коррелирующие с объёмом, например характер отражения света от поверхности жидкости или паттерн тени, отбрасываемой горкой еды. Он также позволяет избежать накопления ошибок, которое может возникать, когда оценка глубины, сегментация и подбор геометрии выполняются как отдельные этапы.

От объёма к весу и калориям

Оценка объёма — не последний шаг. Для расчёта калорий система должна преобразовать объём в вес (используя плотность продукта) и вес в калории (используя данные о питательном составе).

Базы данных плотности продуктов

Разные продукты имеют совершенно разную плотность. Стакан масла весит около 220 граммов, стакан муки — около 120 граммов, а стакан попкорна — около 8 граммов. Точные данные о плотности необходимы для преобразования оценок объёма в оценки веса.

Производственные системы поддерживают базы данных, сопоставляющие продукты с их плотностью, учитывая различия в способе приготовления (приготовленный и сырой, нарезанный и целый) и типичных способах подачи.

Продукт Плотность (г/мл) Вес 1 стакана (г) Калории на стакан
Вода 1,00 237 0
Цельное молоко 1,03 244 149
Варёный белый рис 0,74 175 205
Сырой шпинат 0,13 30 7
Арахисовая паста 1,09 258 1517
Оливковое масло 0,92 218 1909

Питательный состав

После того как система получила оценку веса в граммах, она обращается к данным о питательном составе на грамм из комплексной базы данных продуктов. Такие базы данных обычно основаны на авторитетных источниках, таких как USDA FoodData Central, дополненных данными от производителей продуктов питания и региональных баз данных по питанию.

База данных Nutrola охватывает более 1,3 миллиона продуктов, включая брендовые товары, блюда из ресторанных меню и общие продукты с полным профилем макро- и микронутриентов. Такой обширный охват гарантирует, что после идентификации продукта и порции расчёт питательной ценности будет точным.

Проблемы точности и способы их решения

Несмотря на сложность этих методов, оценка порций по фотографиям остаётся несовершенной наукой. Понимание источников ошибок помогает формировать реалистичные ожидания и указывает на направления дальнейших улучшений.

Известные источники ошибок

Вариация угла камеры: Одна и та же порция выглядит по-разному в зависимости от того, снята ли фотография сверху, под углом 45 градусов или почти на уровне стола. Фотографии сверху обычно дают наиболее точные оценки, так как минимизируют перспективные искажения, но многие пользователи естественным образом держат телефон под углом.

Скрытая еда: Еду, спрятанную под соусами, сыром или другими начинками, невозможно измерить визуально напрямую. Система должна выводить скрытую часть на основе видимого типа блюда и типичного способа приготовления.

Нестандартная посуда: Нестандартные миски, кружки и контейнеры снижают надёжность масштабирования по тарелке. Маленькая порция в большой миске выглядит иначе, чем большая порция в маленькой миске, даже если площадь еды кажется одинаковой.

Индивидуальные различия в приготовлении: Два человека, готовящие «тарелку овсяной каши», могут использовать совершенно разное количество хлопьев и воды, в результате чего визуальный объём одинаков, а калорийность различается.

Стратегии повышения точности

Съёмка с нескольких ракурсов: Некоторые системы просят пользователей сделать фотографии с нескольких ракурсов, что позволяет выполнить стереореконструкцию и более точную оценку объёма. Это значительно повышает точность, но добавляет сложности в процесс регистрации.

Обратная связь от пользователей: Когда пользователи взвешивают еду и подтверждают или корректируют оценку порции, это создаёт обучающие данные, которые со временем улучшают модель. Nutrola рекомендует пользователям время от времени проверять порции с помощью кухонных весов для калибровки как системы ИИ, так и собственного восприятия размеров порций.

Контекстные априорные данные: Система может использовать контекстную информацию для уточнения оценок. Если пользователь находится в определённой сети ресторанов, система может использовать известные размеры порций. Если пользователь регулярно регистрирует определённый завтрак, система может выучить его типичную порцию.

Оценки с учётом уверенности: Вместо того чтобы представлять одно число, продвинутые системы предоставляют диапазон достоверности. Если система не уверена в размере порции, она может представить оценку в виде диапазона (например, от 300 до 450 калорий) и попросить пользователя предоставить дополнительную информацию.

Текущие эталоны точности

Исследования, представленные на Международной конференции по анализу и обработке изображений, показали, что передовые системы оценки объёма еды достигают средней абсолютной процентной ошибки от 15 до 25 процентов. Для сравнения, исследования показали, что профессиональные диетологи, оценивающие порции по фотографиям, допускают ошибки около 10–15 процентов, тогда как обычные люди в среднем ошибаются на 30–50 процентов.

Это означает, что оценка порций с помощью ИИ уже значительно лучше того, что большинство людей могут сделать без помощи, и приближается к точности профессионалов. В сочетании с преимуществом в скорости и удобстве это делает отслеживание с помощью ИИ существенным улучшением по сравнению с ручным ведением записей для большинства пользователей.

Роль пользовательской калибровки

Один из недооценённых аспектов оценки порций с помощью ИИ — это роль пользовательской калибровки с течением времени. По мере того как пользователь регистрирует приёмы пищи и время от времени вносит коррективы, система формирует профиль его типичных размеров порций и предпочтений в еде.

Для постоянных пользователей это означает, что система становится всё точнее. Если вы обычно накладываете себе больше риса, чем в среднем, система учится корректировать оценку в сторону увеличения для ваших порций риса. Если вы обычно используете меньше масла, чем в стандартном рецепте, система может это учесть.

Nutrola использует эту персонализацию для предоставления всё более точных оценок порций по мере использования приложения. Новые пользователи получают оценки на основе средних значений по популяции, тогда как опытные пользователи получают персонализированные оценки, откалиброванные под их конкретные привычки.

Практические советы для более точной оценки порций

Хотя ИИ берёт на себя основную работу, пользователи могут повысить точность, следуя нескольким простым рекомендациям:

  1. По возможности фотографируйте сверху. Фотографии сверху дают максимум информации о площади поверхности еды и минимизируют перспективные искажения.
  2. Включайте всю тарелку в кадр. Край тарелки служит важным эталонным объектом для масштабирования.
  3. Избегайте чрезмерно крупных планов. Системе нужен контекст для определения размера. Фотография, на которой видна только еда без окружающих объектов, не даёт ориентира для масштаба.
  4. Фотографируйте до перемешивания. Салат с видимыми отдельными ингредиентами легче анализировать, чем перемешанный.
  5. Используйте хорошее освещение. Тени и слабый свет могут скрывать границы еды и глубинные ориентиры.
  6. Время от времени проверяйте и корректируйте. Использование кухонных весов раз в неделю для проверки оценки ИИ помогает калибровать и систему, и вашу собственную интуицию.

Часто задаваемые вопросы

Насколько точна оценка порций ИИ по сравнению с кухонными весами?

Кухонные весы обеспечивают точность в пределах 1–2 граммов, что гораздо точнее любого метода визуальной оценки. Оценка порций ИИ по фотографиям обычно достигает точности в пределах 15–25 процентов от фактического веса. Однако преимущество удобства оценки ИИ (которая занимает 2 секунды по сравнению с 30 секундами или более при использовании весов) означает, что больше людей действительно отслеживают питание регулярно, что часто важнее для долгосрочных результатов, чем идеальная точность.

Влияет ли угол камеры на точность оценки порций?

Да, существенно. Фотографии сверху (взгляд прямо вниз на тарелку) обеспечивают наилучшую точность, поскольку показывают полную площадь поверхности еды с минимальными перспективными искажениями. Фотографии под углом 45 градусов наиболее распространены и также дают хорошие оценки. Очень низкие ракурсы (почти на уровне стола) наименее точны, поскольку большая часть еды скрыта передним краем тарелки.

Может ли ИИ оценивать порции жидкостей, таких как супы и смузи?

Жидкости представляют особую сложность, поскольку их объём определяется ёмкостью, а не собственной формой. Системы ИИ оценивают порции жидкостей, определяя тип ёмкости и уровень наполнения. Тарелка супа, наполненная до краёв, имеет другой объём, чем наполненная наполовину. Точность обычно высока, когда ёмкость имеет стандартную форму, но менее надёжна при использовании необычной посуды.

Почему ИИ иногда переоценивает или недооценивает мою порцию?

Частые причины переоценки: плотная сервировка, которая выглядит больше, чем есть; гарниры, которые добавляют визуальный объём без значительных калорий; использование больших тарелок, из-за которых система предполагает больше еды. Частые причины недооценки: еда, скрытая под другой едой; плотные калорийные продукты, которые выглядят маленькими; необычные стили подачи. Обратная связь при неточных оценках помогает системе улучшаться.

Нужен ли мне телефон с LiDAR-сенсором для точного отслеживания порций?

Нет. Хотя телефоны с LiDAR могут предоставить более точную информацию о глубине, современные модели ИИ достаточно хорошо оценивают глубину и по обычному изображению с камеры. Разница в точности между телефонами с LiDAR и обычными сократилась по мере совершенствования программной оценки глубины. Nutrola точно работает на любом современном смартфоне.

Как система обрабатывает продукты, которые уложены стопкой или слоями?

Для видимо уложенных продуктов, таких как блины или многослойные сэндвичи, система может подсчитать слои и оценить толщину по боковому профилю. Для продуктов со скрытыми слоями, таких как лазанья или буррито, система полагается на усвоенные модели состава, которые оценивают типичную внутреннюю структуру на основе видимого внешнего вида и типа блюда.

Готовы трансформировать отслеживание питания?

Присоединяйтесь к тысячам тех, кто изменил свой путь к здоровью с Nutrola!

Как ИИ оценивает размер порций по фотографиям: подробный технический обзор | Nutrola