Нейросеть напрямую определила пищевую ценность блюда по фотографии
Немецкие исследователи разработали алгоритм, определяющий пищевую ценность блюд по фотографии: их калорийность и содержание белков, углеводов и жиров. В отличие от многих других подобных алгоритмов новый определяет эти показатели напрямую, а не обращаясь к базе данных о пищевой ценности разных продуктов. Кроме того, алгоритм пытается предсказать и ингредиенты блюд. Доклад об алгоритме будет представлен на конференции ICPR 2020, препринт доступен на arXiv.org.
Часть людей, сбрасывающих лишний вес или поддерживающих его на одном уровне, записывают приемы еды, отмечая ее пищевую ценность. Есть даже приложения, в которых этот процесс частично автоматизирован: если человек съел еду из магазина, на ее упаковку можно навести камеру, и приложение само добавит все данные в дневник потребления. Но это не подходит для самостоятельно приготовленной пищи и еды в кафе. В первом случае человек еще может рассчитать пищевую ценность, поскольку знает все компоненты, а во втором это можно сделать лишь очень примерно.
Исследователи в области компьютерного зрения уже несколько лет пытаются решить эту проблему. Как правило, алгоритмы по расчету пищевой ценности работают похожим образом: распознают на снимке блюдо и выдают соответствующие значения из базы. Также они могут учитывать размер блюда для более точного расчета калорий, хотя некоторые из недавних алгоритмов исходят из предположения, что перед камерой стандартная порция. Подобные многостадийные алгоритмы сложны в разработке и не очень точны, отмечают авторы новой работы во главе с Райнером Штифельхаге (Rainer Stiefelhage) из Технологического института Карлсруэ. Они использовали иной подход, в котором нейросеть за один этап рассчитывает пищевую ценность на основе фотографии.
В основе алгоритма лежит сверточная нейросеть для распознавания объектов (авторы использовали популярные сети ResNet и DenseNet), обученные на огромном датасете различных фотографий ImageNet. Использование предобученной сверточной нейросети — это популярный метод, позволяющий брать за основу алгоритм, который уже достаточно хорошо умеет определять признаки на изображениях, и дообучать его последние слои на своей конкретной задаче. В этом случае авторы не просто дообучали последний слой, а изменили его структуру: вместо классификации он решает задачу регрессии, то есть подбора конкретного значения, а не отнесения исходной фотографии к какому-то фиксированному классу объектов. Четыре нейрона последнего слоя выдают калорийность блюда и содержание базовых компонентов (белки, жиры, углеводы), а еще 100 нейронов выдают 100 самых вероятных ингредиентов.
Поделиться
Поделиться
Поделиться
Поделиться
Поделиться
Ранее мы рассказывали о других «кулинарных» нейросетях. Например, об алгоритме, составляющем рецепт блюда по его фотографии и другом, который выполняет обратную задачу — создает фотографию блюда по его рецепту.
Григорий Копиев