Как компьютерное зрение распознаёт еду: технология ИИ-подсчёта калорий
Узнайте, как свёрточные нейронные сети и классификация изображений обеспечивают распознавание еды с помощью ИИ, позволяя приложениям вроде Nutrola превращать обычное фото в точные данные о калорийности.
Каждый раз, когда вы наводите камеру телефона на тарелку с едой и мгновенно получаете разбивку по калориям, за кулисами запускается сложная цепочка процессов искусственного интеллекта. То, что кажется простым нажатием, включает в себя свёрточные нейронные сети, мультиклассовую классификацию изображений и годы исследований в области компьютерного зрения. Понимание того, как работает эта технология, помогает объяснить, почему ИИ-подсчёт калорий стал таким точным и почему он продолжает совершенствоваться.
В этой статье мы разберём основную технологию, лежащую в основе ИИ-распознавания еды, — от фундаментальных строительных блоков нейронных сетей до конкретных инженерных задач, связанных с определением того, что находится на вашей тарелке.
Что такое компьютерное зрение и почему оно важно для питания?
Компьютерное зрение — это раздел искусственного интеллекта, который обучает машины интерпретировать и понимать визуальную информацию из реального мира. В то время как люди без труда отличают тарелку овсянки от тарелки пасты, научить компьютер делать то же самое требует обработки миллионов размеченных изображений и построения математических моделей визуальных паттернов.
Для отслеживания питания компьютерное зрение решает главную проблему самоконтроля рациона: проблему ручного ввода данных. Исследования, опубликованные в Journal of the Academy of Nutrition and Dietetics, показали, что при ручном ведении дневника питания потребление калорий занижается на 10–45 процентов. Заменяя текстовые описания фотографией, компьютерное зрение устраняет трудности, из-за которых большинство людей бросают отслеживание питания в течение первых двух недель.
Масштаб проблемы
Распознавание еды считается одной из наиболее сложных задач классификации изображений из-за колоссального разнообразия:
- Существуют тысячи различных блюд из кухонь всего мира
- Одна и та же еда может выглядеть совершенно по-разному в зависимости от способа приготовления
- Освещение, ракурс и сервировка влияют на внешний вид
- На одной тарелке часто находится несколько продуктов, требующих одновременной идентификации
- Размеры порций варьируются непрерывно, а не укладываются в чёткие категории
Несмотря на эти трудности, современные системы распознавания еды достигают точности top-5 свыше 90 процентов на стандартных бенчмарках, а это значит, что правильный продукт оказывается в пятёрке лучших предположений системы более чем в девяти случаях из десяти.
Свёрточные нейронные сети: основа распознавания еды
В основе практически каждой системы распознавания еды лежит архитектура глубокого обучения, называемая свёрточной нейронной сетью (CNN). Понимание CNN — ключ к пониманию того, как ваш телефон может посмотреть на фото и сказать вам, что вы едите курицу тикка масала с рисом басмати.
Как CNN обрабатывает изображение
CNN обрабатывает изображение через серию слоёв, каждый из которых предназначен для обнаружения всё более сложных визуальных признаков:
Слой 1 — Обнаружение границ: Первый свёрточный слой учится обнаруживать простые границы и цветовые градиенты. Он может распознать изогнутый край миски или границу между куском мяса и соусом.
Слой 2 — Распознавание текстур: Более глубокие слои объединяют границы в текстуры. Сеть начинает различать зернистую текстуру бурого риса и гладкую поверхность белого риса или волокнистую текстуру курицы-гриль и глянцевый блеск жареной курицы.
Слой 3 — Распознавание форм и паттернов: Более высокие слои собирают текстуры в узнаваемые формы и паттерны. Круглая форма с определённой текстурой может быть классифицирована как тортилья, а вытянутая форма с другой текстурой — как хлебная палочка.
Слой 4 — Распознавание объектов: Финальные свёрточные слои объединяют всю предшествующую информацию для распознавания целых продуктов. Сеть научилась тому, что определённая комбинация цвета, текстуры, формы и контекста соответствует конкретному продукту.
Роль пулинга и карт признаков
Между свёрточными слоями слои пулинга уменьшают пространственные размерности данных, сохраняя при этом наиболее важные признаки. Это служит двум целям: делает вычисления управляемыми и обеспечивает определённую степень трансляционной инвариантности, то есть сеть может распознать продукт независимо от того, где он находится в кадре.
Выход каждого свёрточного слоя называется картой признаков. Ранние карты признаков фиксируют низкоуровневую информацию — границы и цвета, а более поздние карты кодируют высокоуровневые понятия, например «эта область содержит спагетти». Типичная модель распознавания еды генерирует сотни таких карт признаков на каждом слое.
Популярные архитектуры CNN для распознавания еды
| Архитектура | Год | Ключевая инновация | Типичное применение в ИИ для еды |
|---|---|---|---|
| AlexNet | 2012 | Доказала работоспособность глубоких CNN в масштабе | Ранние исследования распознавания еды |
| VGGNet | 2014 | Показала важность глубины | Извлечение признаков для наборов данных о еде |
| GoogLeNet/Inception | 2014 | Многомасштабная обработка | Эффективное мобильное распознавание еды |
| ResNet | 2015 | Остаточные связи для очень глубоких сетей | Высокоточная классификация еды |
| EfficientNet | 2019 | Сбалансированное масштабирование глубины, ширины и разрешения | Современные мобильные приложения для распознавания еды |
| Vision Transformers | 2020 | Механизм самовнимания для фрагментов изображений | Передовые исследования в распознавании еды |
От классификации к мультиклассовому обнаружению
Ранние системы распознавания еды рассматривали задачу как простую классификацию: одно изображение — одна метка продукта. Но реальные приёмы пищи редко бывают настолько простыми. Типичный обед может включать основной белковый продукт, гарнир из овощей, крупу и соус — и всё это на одной тарелке.
Обнаружение объектов для сложных тарелок
Современные системы распознавания еды используют фреймворки обнаружения объектов, которые могут идентифицировать и локализовать несколько продуктов на одном изображении. Эти системы рисуют ограничивающие рамки вокруг каждого отдельного продукта и классифицируют их независимо.
Архитектуры вроде YOLO (You Only Look Once) и Faster R-CNN были адаптированы для обнаружения еды. Эти модели делят изображение на сетку и одновременно предсказывают расположение и класс продуктов, обеспечивая обработку в реальном времени на мобильных устройствах.
Семантическая сегментация для точных границ
Для ещё большей точности некоторые системы используют семантическую сегментацию, которая классифицирует каждый пиксель изображения как принадлежащий к определённой категории продуктов. Это особенно полезно для смешанных блюд, таких как салаты или блюда, приготовленные методом стир-фрай, где разные ингредиенты накладываются друг на друга и перемешиваются.
Функция Snap & Track от Nutrola использует комбинацию этих подходов. Когда вы фотографируете свою еду, система сначала обнаруживает отдельные зоны с едой, затем классифицирует каждую из них и, наконец, оценивает количество каждого продукта. Этот многоступенчатый конвейер позволяет системе справляться со всем — от простого банана до сложного обеда из нескольких блюд.
Обучающие данные: топливо точного распознавания еды
Модель распознавания еды хороша настолько, насколько хороши данные, на которых она обучена. Создание качественного набора изображений еды — одна из самых сложных и ресурсоёмких задач при разработке ИИ для еды.
Открытые бенчмарк-наборы данных
Несколько открытых наборов данных продвинули исследования в области распознавания еды:
- Food-101: Содержит 101 000 изображений в 101 категории еды, широко используется как бенчмарк
- ISIA Food-500: Охватывает 500 категорий еды с 400 000 изображений, предлагая более широкий охват
- UEC Food-256: Набор данных японской кухни с 256 категориями, важный для охвата азиатской кухни
- Nutrition5k: Сопоставляет изображения еды с точными измерениями пищевой ценности в лабораторных условиях
Проблема реального разнообразия
Открытые наборы данных, при всей их ценности для исследований, не полностью отражают разнообразие еды, которую люди едят по всему миру. Модель, обученная преимущественно на западной кухне, будет плохо справляться с блюдами юго-восточной Азии, и наоборот. Именно поэтому промышленные системы распознавания еды дополняют открытые наборы данных проприетарными данными, собранными от пользователей.
Nutrola обслуживает пользователей более чем в 50 странах, а значит, система ежедневно сталкивается с огромным разнообразием кухонь. Эта глобальная база пользователей обеспечивает непрерывный поток реальных изображений еды, который помогает модели со временем улучшать распознавание всех кухонь мира.
Техники аугментации данных
Для искусственного расширения обучающих данных и повышения устойчивости модели инженеры применяют различные техники аугментации данных:
- Поворот и отражение: Гарантирует, что модель распознаёт еду под любым углом
- Цветовое дрожание: Имитирует различные условия освещения
- Случайная обрезка: Учит модель распознавать частично видимые продукты
- Cutout и mixup: Продвинутые техники, которые заставляют модель фокусироваться на нескольких значимых областях, а не полагаться на один визуальный признак
Как работает технология Snap & Track от Nutrola
Функция Snap & Track от Nutrola объединяет все эти технологии в единый пользовательский опыт. Вот что происходит за примерно две секунды между съёмкой фото и отображением разбивки по калориям:
Предобработка изображения: Фотография изменяется в размере и нормализуется в формат, ожидаемый нейронной сетью. Применяются коррекции освещения и цвета для стандартизации входных данных.
Обнаружение еды: Модель обнаружения объектов определяет отдельные области с едой на изображении и рисует ограничивающие рамки вокруг каждой из них.
Классификация: Каждая обнаруженная область проходит через классификационную сеть, которая определяет конкретный продукт. Система учитывает лучших кандидатов и их степень достоверности.
Оценка порции: Отдельная модель оценивает объём и вес каждого идентифицированного продукта на основе визуальных подсказок и эталонных размеров (подробнее об этом в нашей сопутствующей статье об оценке размера порций).
Поиск пищевой ценности: Идентифицированные продукты и оценённые порции сопоставляются с обширной базой данных пищевой ценности для расчёта калорий, макронутриентов и микронутриентов.
Проверка пользователем: Результаты представляются пользователю, который может подтвердить или скорректировать идентификацию. Эта обратная связь непрерывно улучшает модель.
Весь этот конвейер выполняется менее чем за две секунды, что быстрее, чем набрать «куриная грудка на гриле» в строке поиска и листать десятки результатов.
Проблемы ИИ-распознавания еды
Несмотря на впечатляющий прогресс, ИИ-распознавание еды по-прежнему сталкивается с рядом проблем, над решением которых активно работают исследователи и инженеры.
Визуально похожие продукты
Некоторые продукты выглядят на фотографиях практически одинаково, но имеют совершенно разные профили пищевой ценности. Белый рис и рис из цветной капусты, обычные макароны и макароны из цельнозерновой муки, жирный и обезжиренный сыр — всё это примеры визуально похожих продуктов, которые значительно различаются по калорийности и макронутриентам.
Современные системы справляются с этим благодаря комбинации контекстных подсказок (что ещё на тарелке), истории пользователя (что человек обычно ест) и запросов на подтверждение при низкой степени достоверности.
Смешанные и многослойные блюда
Буррито, сэндвич или многослойная запеканка создают фундаментальную проблему: большая часть ингредиентов скрыта от глаз. ИИ может видеть тортилью, но не бобы, сыр, сметану и рис внутри.
Для решения этой проблемы модели изучают типичный состав распространённых блюд. Когда система определяет буррито, она может предположить вероятные внутренние ингредиенты на основе видимой оболочки и типичных способов приготовления. Затем пользователь может при необходимости скорректировать конкретные начинки.
Освещение и условия окружающей среды
Тусклое ресторанное освещение, резкая вспышка и цветной рассеянный свет — всё это может повлиять на внешний вид еды. Жёлтое освещение может сделать белый рис похожим на рис с шафраном, а голубоватое освещение — заставить красное мясо выглядеть коричневым.
Современные системы решают эту проблему с помощью аугментации обучающих данных и создания цветонезависимых признаков, которые больше опираются на текстуру и форму, чем на абсолютные значения цвета.
Будущее технологии распознавания еды
ИИ-распознавание еды быстро развивается. Несколько новых тенденций указывают на появление ещё более мощных систем в ближайшем будущем:
Распознавание на основе видео: Вместо анализа одного фото будущие системы смогут анализировать короткий видеоролик приёма пищи, захватывая несколько ракурсов и повышая точность.
Наложения дополненной реальности: Дополненная реальность может предоставлять информацию о пищевой ценности в режиме реального времени, когда вы сканируете шведский стол или меню ресторана, помогая сделать осознанный выбор до начала еды.
Мультимодальные модели: Объединение визуального распознавания с текстом (меню, списки ингредиентов) и даже аудио (вопрос пользователю «вы добавили заправку?») для более полного понимания приёма пищи.
Обработка на устройстве: По мере роста мощности мобильных процессоров всё больше ИИ-обработки может выполняться непосредственно на телефоне без отправки изображений на сервер, что повышает скорость и конфиденциальность.
Распознавание на уровне ингредиентов: Переход от классификации на уровне блюд к определению отдельных ингредиентов и их приблизительного количества, что позволяет выполнять более точные расчёты пищевой ценности.
Почему точность продолжает расти
Один из самых обнадёживающих аспектов ИИ-распознавания еды — встроенный механизм улучшения. Каждый раз, когда пользователь делает фото и подтверждает или корректирует результат, система получает размеченный элемент данных. С миллионами пользователей, ежедневно ведущих дневник питания, промышленные системы вроде Nutrola накапливают обучающие данные со скоростью, которую академические исследования не могут обеспечить.
Это создаёт благотворный цикл: более высокая точность привлекает больше пользователей, больше пользователей генерируют больше данных, больше данных обеспечивают более высокую точность. Вот почему распознавание еды сегодня значительно лучше, чем всего год назад, и оно будет продолжать совершенствоваться.
Часто задаваемые вопросы
Насколько точно ИИ-распознавание еды по сравнению с ручным ведением дневника?
Исследования показали, что ИИ-распознавание еды может достигать точности свыше 90 процентов для распространённых продуктов, что сопоставимо или даже лучше точности обученных диетологов, вручную оценивающих порции. При ручном ведении дневника неспециалистами потребление калорий обычно занижается на 10–45 процентов, что делает ИИ-отслеживание более надёжным для большинства людей.
Может ли ИИ-распознавание еды работать с кухнями разных стран мира?
Да, хотя точность варьируется в зависимости от кухни и доступных обучающих данных. Такие системы, как Nutrola, обслуживающие глобальную базу пользователей в 50 и более странах, постоянно улучшают распознавание разнообразных кухонь по мере сбора данных от пользователей со всего мира. Чем больше кухня представлена в обучающих данных, тем точнее становится распознавание.
Работает ли ИИ-распознавание еды без интернета?
Это зависит от реализации. Некоторые приложения обрабатывают изображения на устройстве с помощью оптимизированных моделей, что работает офлайн, но может снижать точность. Другие отправляют изображения на облачные серверы для обработки, что требует подключения к интернету, но позволяет использовать более крупные и точные модели. Многие современные приложения используют гибридный подход, выполняя первичное распознавание на устройстве и уточняя результаты с помощью облачной обработки, когда она доступна.
Как ИИ справляется с домашними блюдами, не совпадающими с ресторанными?
Современные системы распознавания еды обучены как на ресторанных, так и на домашних изображениях еды. Они определяют отдельные компоненты, а не пытаются сопоставить всё блюдо с записью в базе данных. Таким образом, домашнее блюдо стир-фрай будет разложено на видимые компоненты (курица, брокколи, рис, соус), а не сопоставлено с одним пунктом меню.
Хранятся ли мои фотографии еды конфиденциально?
Политика конфиденциальности различается в зависимости от приложения. Nutrola стремится к защите конфиденциальности пользователей и использует изображения еды исключительно для анализа пищевой ценности и улучшения модели. Изображения обрабатываются безопасно и не передаются третьим лицам. Пользователи могут ознакомиться с политикой конфиденциальности для получения полной информации о практиках обработки данных.
Что происходит, когда ИИ неправильно определяет продукт?
Когда ИИ ошибается в идентификации продукта, пользователи могут исправить результат, выбрав правильный продукт из списка или введя его вручную. Это исправление служит ценными обучающими данными, которые помогают модели совершенствоваться со временем. Чем больше исправлений система получает для конкретного продукта, тем быстрее улучшается её точность для этого продукта.
Готовы трансформировать отслеживание питания?
Присоединяйтесь к тысячам тех, кто изменил свой путь к здоровью с Nutrola!