Дослідження технології розпізнавання їжі Nutrola
Як Nutrola розпізнає їжу з фото менш ніж за 3 секунди? Глибоке занурення в комп'ютерне зору, глибоке навчання та наукові дослідження в галузі харчування, які стоять за нашим ШІ.
Коли ви робите фото своєї вечері, а Nutrola за менш ніж три секунди надає повний розрахунок харчування, за цим стоять десятиліття досліджень у галузі комп'ютерного зору, науки про харчування та інженерії штучного інтелекту. Те, що виглядає як миттєве розпізнавання, насправді є каскадом спеціалізованих моделей, кожна з яких вирішує окрему наукову задачу. Від моменту, коли спрацьовує затвор вашої камери, до моменту, коли значення макронутрієнтів з'являються на екрані, ваше зображення проходить через конвеєр, побудований на основі фундаментальних досліджень таких установ, як Стенфорд, MIT, Google DeepMind та Лабораторія комп'ютерного зору ETH Zurich.
Ця стаття простежує цей конвеєр крок за кроком, посилаючись на реальні дослідження та технічні концепції, які роблять можливим розпізнавання їжі Nutrola.
Конвеєр комп'ютерного зору
Розпізнавання їжі Nutrola — це не єдина модель. Це багатоступенева система, де кожен етап виконує окреме завдання, а вихід одного етапу передається на наступний.
Етап 1 — Попередня обробка зображення. Перш ніж будь-яка нейронна мережа побачить ваше фото, сирий знімок проходить нормалізацію. Це включає зміни розміру до стандартного роздільної здатності, корекцію балансу білого та варіацій експозиції, а також застосування трансформацій для збільшення даних під час навчання. Дослідження Кріжевського, Сутскевера та Хінтона у їхньому знаковому документі 2012 року про ImageNet продемонструвало, що попередня обробка та збільшення даних значно покращують узагальнення в глибоких згорткових нейронних мережах (CNN). Сучасні конвеєри доповнюють це техніками, такими як CutMix (Yun et al., 2019) та RandAugment (Cubuk et al., 2020), які навчають модель бути стійкою до закриття та зміни кольору, що часто зустрічаються у фотографії їжі.
Етап 2 — Виявлення та сегментація їжі. Після попередньої обробки зображення проходить через модель виявлення об'єктів, яка ідентифікує та локалізує кожен окремий продукт на тарілці. Цей етап ґрунтується на дослідженнях регіонних згорткових нейронних мереж. Faster R-CNN (Ren et al., 2015) встановив парадигму мереж пропозицій регіонів, тоді як більш сучасні архітектури, такі як DETR (Carion et al., 2020) від Facebook AI Research, використовують трансформерну увагу, щоб повністю усунути ручні компоненти, такі як анкерні ящики. Для точності на рівні пікселів моделі семантичної сегментації, засновані на архітектурах, таких як DeepLab (Chen et al., 2017), призначають кожен піксель зображення до категорії їжі, що є критично важливим для змішаних страв, де інгредієнти перекриваються.
Етап 3 — Класифікація їжі. Кожен виявлений регіон їжі потім класифікується. Основою сучасних класифікаторів їжі є архітектури, перевірені на ImageNet (Deng et al., 2009), наборі даних з 14 мільйонів позначених зображень, які стали каталізатором революції глибокого навчання. Специфічні для їжі набори даних, такі як Food-101 (Bossard et al., 2014), що містить 101 000 зображень у 101 категорії, та UECFOOD-256 (Kawano і Yanai, 2015), що охоплює 256 категорій їжі з акцентом на японську кухню, забезпечують специфічні дані для навчання, необхідні для тонкої настройки цих загальних архітектур для розпізнавання їжі.
Етап 4 — Оцінка порцій. Після ідентифікації того, що на тарілці, система оцінює, скільки кожного продукту присутнє. Це найскладніша нерозв'язана проблема в дослідженнях розпізнавання їжі і включає оцінку глибини та об'ємне міркування з одного 2D зображення.
Етап 5 — Харчова картографія. Нарешті, класифікований продукт і його оцінений розмір порції зіставляються з перевіреною харчовою базою даних, щоб отримати значення калорій, білків, вуглеводів, жирів та мікроелементів.
Кожен з цих етапів представляє окрему область активних досліджень. У наступних розділах розглядаються найбільш технічно складні етапи детально.
Класифікація їжі: більше ніж "Це салат"
Розрізнити салат від стейка — це просто для будь-якого сучасного класифікатора. Справжня проблема виникає, коли система повинна відрізнити візуально схожі страви: курка тикка масала від курки в маслі, пад тай від п'яних локшини, або грецький салат від фаттуша. Ці страви мають спільні кольори, текстури та структурні патерни, але суттєво відрізняються за інгредієнтами та калорійною щільністю.
Переносне навчання та адаптація до домену
Стандартний підхід до класифікації їжі базується на переносному навчанні, техніці, формалізованій Йосинським та ін. (2014), де модель, попередньо навчена на великому загальному наборі даних, такому як ImageNet, донавчається на специфічних для їжі даних. Нижні шари мережі, які виявляють краї, текстури та основні форми, добре переносяться між доменами. Вищі шари, які кодують семантичне значення, перенавчаються для вивчення специфічних для їжі ознак, таких як різниця між блиском смаженої поверхні та матовим покриттям на пареній.
Дослідження Хассанеджада та ін. (2016) продемонструвало, що донавчання InceptionV3 на Food-101 досягло точності top-1 88,28 відсотка, що є значним стрибком у порівнянні з ранніми підходами на основі ручних ознак. Більш нові роботи, що використовують Vision Transformers (Dosovitskiy et al., 2020) та їх специфічні для їжі варіанти, підвищили точність на Food-101 вище 93 відсотків.
Багатопозначна класифікація для складних тарілок
Справжні страви рідко містять лише один продукт. Типова вечеря може включати грильованого лосося, запечену спаржу, кіноа та лимонно-масляний соус. Багатопозначна класифікація, де одне зображення може отримати кілька незалежних позначок, вирішує цю проблему. Дослідження Ванга та ін. (2016) щодо архітектур CNN-RNN для багатопозначної класифікації зображень встановило рамки, які захоплюють патерни співіснування позначок. У харчовій сфері це означає, що модель вчиться, що рис і карі часто з'являються разом, що слугує контекстуальним сигналом, який покращує точність окремих продуктів.
Nutrola розширює це за допомогою ієрархічної системи класифікації. Замість того, щоб передбачати плоску позначку, система спочатку класифікує широку категорію їжі (зерно, білок, овоч, соус), а потім звужує до конкретного продукту в цій категорії. Цей двоступеневий підхід зменшує плутанину між візуально схожими продуктами з різних категорій і відображає, як організовані харчові бази даних.
Оцінка порцій: 3D виклик
Ідентифікація того, яка їжа на тарілці, вирішує лише половину проблеми. Порція курячої грудки вагою 100 грамів містить 165 калорій. Порція вагою 250 грамів містить 412 калорій. Без точної оцінки порцій навіть ідеальне розпізнавання їжі призводить до ненадійних підрахунків калорій.
Оцінка глибини з одного зображення
Оцінка об'єму їжі з одного 2D зображення вимагає від системи вивести глибину, проблему, відому як оцінка глибини з одного зображення. Ейген, Пурш і Фергус (2014) опублікували основоположну роботу, що демонструє, що CNN можуть передбачати карти глибини на рівні пікселів з одиничних зображень. Більш нові дослідження від Ранфтля та ін. (2021) представили MiDaS, модель, навчена на змішаних наборах даних, яка забезпечує надійні відносні оцінки глибини в різних сценах.
Для харчових застосувань оцінка глибини дозволяє системі розрізняти тонкий шар соусу, розподіленого по тарілці, та глибоку тарілку супу. У поєднанні з відомою геометрією звичайних об'єктів, таких як тарілки, чаші та столові прибори, карти глибини можуть бути перетворені на приблизні оцінки об'єму.
Геометричні підходи до оцінки об'єму
Дослідження Токійського університету (Окамото і Янаї, 2016) продемонструвало, що об'єм їжі можна оцінити, підганяючи геометричні примітиви, такі як циліндри, півсфери та прямокутні призми, до сегментованих регіонів їжі. Купа рису наближається до півеліпсоїда. Склянка молока наближається до циліндра. Скибка хліба наближається до прямокутного призми.
Ці геометричні апроксимації, в поєднанні з вивченими пріоритетами щільності (система знає, що певний об'єм картопляного пюре важить більше, ніж той же об'єм попкорну), дають оцінки ваги, які, як показали дослідження, зазвичай знаходяться в межах 15-20 відсотків від фактичних значень для більшості звичайних продуктів. Nutrola уточнює ці оцінки далі, використовуючи власний ансамблевий підхід, який поєднує геометричне міркування з навчальними регресійними моделями, натренованими на десятках тисяч зображень їжі з відомими вагами.
Калібрування за відомими об'єктами
Деякі системи розпізнавання їжі використовують відомі об'єкти в сцені для калібрування масштабу. Стандартна вечеря має діаметр приблизно 26 сантиметрів. Кредитна картка вимірює 85,6 на 53,98 міліметрів. Коли система виявляє такі об'єкти, вона може встановити реальний масштаб, що значно покращує оцінки об'єму та ваги. Дослідження Фанга та ін. (2016) в Університеті Пердью показало, що калібрування на основі тарілки зменшило помилку оцінки порцій приблизно на 25 відсотків у порівнянні з некаліброваними підходами.
Шар перевіреної бази даних
ШІ-розпізнавання не є достатнім для надання точних підрахунків калорій. Навіть якщо модель досягає 99 відсотків точності в ідентифікації грильованої курячої грудки, остаточний харчовий вихід повністю залежить від якості бази даних, до якої вона зіставляється.
Саме тут підхід Nutrola відрізняється від багатьох конкурентів. Більшість додатків для трекінгу їжі покладаються на краудсорсингові бази даних, куди будь-який користувач може подати харчову інформацію. Дослідження показали, що краудсорсингові бази даних їжі містять помилкові дані в межах 15-30 відсотків, причому деякі записи відрізняються від лабораторно перевірених значень більш ніж на 50 відсотків для ключових макронутрієнтів.
Nutrola підтримує 100-відсоткову перевірену харчову базу даних. Кожен запис перехресно перевіряється з авторитетними джерелами, включаючи USDA FoodData Central, таблиці складу МакКенса та Віддоуна, які використовуються Національною службою охорони здоров'я Великобританії, та рецензовані харчові аналізи. Це означає, що навіть якщо шар розпізнавання ШІ вводить невелику похибку в ідентифікації їжі або оцінці порції, харчові дані, до яких вона зіставляється, є надійними.
Шар перевірки також враховує нюанс, який чисті ШІ-підходи пропускають: спосіб приготування впливає на харчовий вміст. 150-грамова куряча грудка, що грилюється, містить приблизно 165 калорій, але та ж грудка, приготована на сковороді в оливковій олії, містить приблизно 230 калорій. База даних Nutrola фіксує ці варіації, залежні від способу приготування, а модель розпізнавання навчена відрізняти методи приготування, коли присутні візуальні ознаки, такі як різниця між грильованою поверхнею та смаженою.
Безперервне навчання та вдосконалення
Розпізнавання їжі — це не проблема, яку можна вирішити один раз і впровадити. Кухні еволюціонують, нові страви з'являються, а очікування користувачів зростають. Система Nutrola розроблена для безперервного вдосконалення через кілька механізмів, що ґрунтуються на дослідженнях машинного навчання.
Активне навчання
Активне навчання, формалізоване Сеттлсом (2009), — це стратегія, коли модель визначає приклади, у яких вона має найменшу впевненість, і пріоритизує їх для людського перегляду та маркування. Коли система Nutrola стикається зі стравою, яку вона не може класифікувати з високою впевненістю, це зображення позначається для експертного перегляду. Після маркування воно потрапляє в навчальний конвеєр, і модель покращується в тих випадках, де вона була найслабшою.
Цей підхід є набагато більш ефективним з точки зору даних, ніж випадкове збирання нових навчальних зображень. Дослідження постійно показують, що активне навчання може досягти еквівалентної точності моделі з 30 до 60 відсотків меншої кількості маркованих даних у порівнянні з випадковим вибіром.
Обробка нових продуктів та регіональних кухонь
Однією з найбільших проблем у розпізнаванні їжі є охоплення регіональних і культурно специфічних страв. Модель, навчена переважно на західній кухні, може мати труднощі з десертами Південно-Східної Азії, рагу Західної Африки або скандинавськими ферментованими продуктами. Nutrola вирішує цю проблему через цілеспрямовані кампанії збору даних, зосереджені на недостатньо представлених кухнях, у поєднанні з техніками навчання з кількома прикладами (Wang et al., 2020), які дозволяють моделі вивчати нові категорії їжі з відносно невеликої кількості прикладів.
Зворотний зв'язок від користувачів є критично важливим для цього процесу. Коли користувач виправляє неправильно ідентифіковану їжу, це виправлення потрапляє назад у навчальний конвеєр. У агрегованому вигляді, на основі мільйонів зареєстрованих страв по всьому світу, ці виправлення створюють безперервний потік даних істини, що охоплює саме ті продукти, які реальні люди споживають у своєму повсякденному житті.
Як це відображається на вашій тарілці
Описані вище дослідження приносять конкретні переваги, які ви відчуваєте щоразу, коли відкриваєте Nutrola.
Запис за три секунди. Увесь конвеєр, від попередньої обробки зображення до пошуку харчування, виконується менш ніж за три секунди на сучасному смартфоні. Техніки оптимізації моделі, включаючи квантизацію (Jacob et al., 2018) та пошук нейронних архітектур (Zoph і Le, 2017), дозволяють складним моделям ефективно працювати на мобільному обладнанні без втрати точності.
Обробка складних страв. Багатопозначне виявлення та семантична сегментація означають, що вам не потрібно фотографувати кожен продукт окремо. Одне фото завантаженої вечері дає окремі розрахунки харчування для кожного компонента.
Точність між кухнями. Безперервне навчання та цілеспрямований збір даних забезпечують, що система працює, незалежно від того, чи ви їсте суші в Токіо, такоси в Мехіко, інджеру в Аддис-Абебі чи недільний обід у Лондоні. Модель покращується з кожною стравою, зареєстрованою серед глобальної бази користувачів Nutrola.
Поступове покращення точності. Чим більше ви користуєтеся Nutrola, тим краще вона стає, як для вас особисто, так і для всіх користувачів загалом. Активне навчання забезпечує, щоб модель зосереджувала своє вдосконалення на тих випадках, де вона найбільше потребує.
Перевірені харчові дані. На відміну від додатків, які покладаються на краудсорсингові бази даних з невідомими показниками помилок, кожен підрахунок калорій, який повертає Nutrola, підтверджується лабораторно перевіреними харчовими даними. ШІ ідентифікує їжу; перевірена база даних забезпечує правильність цифр.
Часті запитання
Як ШІ Nutrola розпізнає їжу з фото?
Nutrola використовує багатоступеневий конвеєр комп'ютерного зору. Ваше фото спочатку проходить через попередню обробку зображення, потім через модель виявлення на основі глибокого навчання, яка ідентифікує та сегментує кожен продукт на тарілці. Кожен продукт класифікується за допомогою згорткових нейронних мереж, донавчених на специфічних для їжі наборах даних, його порція оцінюється за допомогою глибини та об'ємного міркування, а результат зіставляється з перевіреною харчовою базою даних Nutrola для отримання значень калорій та макронутрієнтів.
Наскільки точна технологія розпізнавання їжі Nutrola?
Моделі класифікації Nutrola досягають показників точності top-1 вище 90 відсотків на стандартних бенчмарках розпізнавання їжі, з показниками top-5, що перевищують 95 відсотків. Для оцінки порцій система зазвичай знаходиться в межах 15-20 відсотків від фактичної ваги, що є порівнянним або кращим за точність оцінки підготовлених дієтологів. У поєднанні з перевіреною базою даних Nutrola це дає оцінки калорій, які значно надійніші, ніж ручний підрахунок, який, як показують дослідження, занижує споживання на 10-45 відсотків.
Які дослідження та набори даних стоять за технологією розпізнавання їжі Nutrola?
Технологія Nutrola базується на фундаментальних дослідженнях комп'ютерного зору, включаючи згорткові нейронні мережі, перевірені на ImageNet, архітектури виявлення об'єктів, такі як Faster R-CNN та DETR, а також специфічні для їжі набори даних, включаючи Food-101 та UECFOOD-256. Система також спирається на дослідження оцінки глибини з одного зображення для визначення порцій та дослідження активного навчання для безперервного вдосконалення моделі. Усі харчові дані перевіряються на основі авторитетних джерел, таких як USDA FoodData Central.
Чи може Nutrola розпізнавати кілька продуктів на одній тарілці?
Так. Nutrola використовує багатопозначне виявлення та семантичну сегментацію для ідентифікації та окремого аналізу кожного окремого продукту на одному фото. Незалежно від того, чи ваша тарілка містить два продукти чи вісім, система ізолює кожен з них, класифікує його незалежно, оцінює його порцію та повертає розрахунок харчування для кожного продукту разом із загальним підрахунком страви.
Як Nutrola обробляє їжу з різних кухонь та культур?
Nutrola поєднує дані навчання з широким охопленням з цілеспрямованим збором даних для недостатньо представлених кухонь і техніками навчання з кількома прикладами, які дозволяють моделі вивчати нові категорії їжі з відносно невеликої кількості прикладів. Виправлення від користувачів з глобальної бази користувачів Nutrola постійно надходять у навчальний конвеєр, забезпечуючи, щоб точність покращувалася для конкретних страв, які люди насправді їдять у кожному регіоні та культурі харчування.
Чи покращується розпізнавання їжі Nutrola з часом?
Так. Nutrola використовує активне навчання, стратегію машинного навчання, де система визначає зображення, у яких вона має найменшу впевненість, і пріоритизує їх для експертного перегляду та повторного навчання. У поєднанні з агрегованим зворотним зв'язком від мільйонів зареєстрованих страв по всьому світу це означає, що модель постійно вдосконалюється. Кожна страва, яку ви реєструєте, сприяє підвищенню точності розпізнавання Nutrola для всіх користувачів.
Готові трансформувати своє відстеження харчування?
Приєднуйтесь до тисяч, які трансформували свою подорож до здоров'я з Nutrola!