Як працює AI-пайплайн розпізнавання їжі: від фото до даних про харчування
Детальний технічний огляд повного пайплайну розпізнавання їжі за допомогою AI: від захоплення зображення через CNN, класифікацію їжі, оцінку порцій, пошук у базі даних харчування до остаточного розрахунку калорій.
Коли ви робите фото свого обіду і бачите, як за кілька секунд з'являється повний макроаналіз, легко сприймати результат як належне. Але за цим, здавалося б, миттєвим зчитуванням, ховається багатоступеневий пайплайн, який проходить через захоплення зображення, попередню обробку, інференцію нейронної мережі, класифікацію, оцінку порцій, пошук у базі даних і остаточний розрахунок калорій, перш ніж щось з'явиться на вашому екрані. Кожен етап вирішує окрему задачу, покладається на свій набір алгоритмів і передає конкретний вихід на наступний етап.
Ця стаття прослідковує весь шлях від натискання кнопки затвора до етикетки харчування. На цьому шляху ми назвемо архітектури, техніки та інженерні компроміси, які роблять кожен етап працездатним, і підкреслимо, де Nutrola впровадила свої інновації, щоб підвищити точність і швидкість вище галузевих норм.
Етап 1: Вхідні дані з камери та захоплення зображення
Все починається в момент, коли користувач відкриває видошукач камери та кадрує тарілку з їжею. Сучасні смартфони захоплюють зображення з роздільною здатністю від 12 до 48 мегапікселів, створюючи сирі дані сенсора, які кодують значення інтенсивності кольору через мозаїку фільтра Байєра. Обробник сигналу зображення (ISP) пристрою демозаїкує ці дані, застосовує баланс білого, зменшує шум і виводить стандартний файл JPEG або HEIF за частки секунди.
Дві апаратні функції все більше впливають на цей етап. По-перше, датчики LiDAR на останніх моделях iPhone Pro та деяких флагманах Android можуть захоплювати супутню карту глибини разом з RGB-зображенням. Ці дані глибини стають цінними на наступних етапах під час оцінки порцій. По-друге, пристрої з датчиками часу польоту надають подібну, але менш точну інформацію про глибину, яку пайплайн все ще може використовувати, коли LiDAR недоступний.
Пайплайн споживає RGB-зображення та, коли доступно, карту глибини як парний вхід. Якщо пристрій не має датчика глибини, пайплайн продовжує працювати лише з RGB і компенсує пізніше, використовуючи монокулярну оцінку глибини.
Ключовий вихід цього етапу
Високоякісне RGB-зображення (і, за бажанням, карта глибини), що представляє сцену перед користувачем.
Етап 2: Попередня обробка зображення
Сирий вихід камери не готовий для інференції нейронної мережі. Попередня обробка перетворює зображення в стандартизований тензор, який очікує модель.
Зміна розміру та обрізка
Більшість моделей розпізнавання їжі приймають вхідні дані з фіксованою роздільною здатністю, зазвичай 224x224, 384x384 або 512x512 пікселів, залежно від архітектури. Пайплайн змінює розмір зображення до цієї цільової роздільної здатності, зберігаючи співвідношення сторін, застосовуючи лістинг або центровану обрізку за потреби. Бікубічна інтерполяція є стандартним методом ресемплінгу, оскільки вона краще зберігає деталі текстури, ніж білінійні альтернативи.
Нормалізація
Значення пікселів перетворюються з цілочисельного діапазону 0-255 у числа з плаваючою комою, а потім нормалізуються, використовуючи середнє значення та стандартне відхилення каналу навчального набору даних. Для моделей, попередньо навчених на ImageNet, застосовуються канонічні значення нормалізації (середнє [0.485, 0.456, 0.406] і стандартне відхилення [0.229, 0.224, 0.225] для каналів R, G і B відповідно). Ця нормалізація центрує розподіл вхідних даних навколо нуля та масштабує його до одиничної дисперсії, що стабілізує потік градієнтів під час навчання та забезпечує послідовну поведінку інференції.
Колірний простір та артефакти аугментації
Під час навчання пайплайн застосовує широке розширення даних: випадкові обертання, горизонтальні перевороти, зміна кольору, гаусівське розмивання та патчі вирізання. У час інференції ці аугментації вимкнені, але модель навчилася бути інваріантною до видів візуального шуму, які вони імітують. Це означає, що фото, зроблене під теплим ресторанним освітленням, і фото, зроблене під холодним флуоресцентним офісним освітленням, обидва будуть давати надійні представлення ознак.
Ключовий вихід цього етапу
Нормалізований тензор з плаваючою комою з фіксованими просторовими розмірами, готовий для нейронної мережі.
Етап 3: Витяг ознак CNN
Це обчислювальне ядро пайплайну. Глибока згорткова нейронна мережа (або все частіше трансформер зору) обробляє попередньо оброблений тензор і генерує щільний вектор ознак, який кодує візуальний зміст зображення у формі, яку можуть інтерпретувати наступні етапи класифікації та виявлення.
Архітектури Backbone
Кілька архітектур backbone виявилися ефективними для розпізнавання їжі:
EfficientNet використовує комбіноване масштабування для балансування глибини мережі, ширини та вхідної роздільної здатності. EfficientNet-B4 і B5 є популярними виборами, оскільки вони забезпечують високу точність при обчислювальних витратах, які є прийнятними для мобільного обладнання в поєднанні з квантизацією. Nutrola використовує backbone, похідний від EfficientNet, який був налаштований на власному наборі зображень їжі, досягаючи вигідного компромісу між затримкою та точністю top-1.
Vision Transformers (ViT) ділять зображення на фіксовані патчі (зазвичай 16x16 пікселів), проектують кожен патч у вектор, а потім обробляють послідовність векторів через шари самостійної уваги. ViTs відмінно справляються з захопленням відстані між об'єктами, наприклад, розумінням, що коричневий диск поруч із зеленим листям — це котлета гамбургера, а не шоколадне печиво, оскільки навколишній контекст включає булочку та салат. Гібридні моделі, такі як DeiT (Data-efficient Image Transformer) і Swin Transformer, зменшили вимоги до даних та обчислювальні витрати чистих ViT, що робить їх життєздатними для виробничих систем розпізнавання їжі.
MobileNetV3 оптимізовано для інференції на пристрої з глибокими роздільними згортками та пошуком архітектури нейронних мереж, орієнтованим на апаратуру. Він слугує основою в критичних шляхах затримки, де модель повинна працювати повністю на пристрої без мережевих запитів.
Мережі піраміди ознак
Оскільки їжа може сильно варіюватися за розміром на одному зображенні (велика піца поруч із маленькою чашкою соусу), пайплайн використовує мережу піраміди ознак (FPN) для витягу ознак на кількох просторових масштабах. FPN будує верхній шлях з боковими з'єднаннями з проміжними картами ознак backbone, створюючи набір багатошарових карт ознак, які однаково виразні для виявлення маленьких прикрас і великих основних страв.
Ключовий вихід цього етапу
Набір багатошарових карт ознак (або один зведений вектор ознак для завдань лише класифікації), що кодує візуальну семантику кожного регіону в зображенні.
Етап 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) x калорії на 100 г
- Білки = (оцінені грами / 100) x білки на 100 г
- Вуглеводи = (оцінені грами / 100) x вуглеводи на 100 г
- Жири = (оцінені грами / 100) x жири на 100 г
Ці значення для кожного продукту підсумовуються, щоб отримати загальний підрахунок страви.
Пропагування помилок та інтервали впевненості
Оскільки кожен попередній етап вводить певну невизначеність, Nutrola не представляє єдину точкову оцінку як істину. Система обчислює інтервали впевненості, пропускаючи оцінку впевненості класифікації та невизначеність оцінки порцій через розрахунок. Якщо впевненість класифікації висока, але оцінка порції є невизначеною (наприклад, їжа складена в глибокій чаші, що приховує об'єм), система відображає це, розширюючи діапазон впевненості та може запитати користувача підтвердити порцію.
Ця прозорість є свідомим дизайнерським вибором. Замість того, щоб представляти хибне відчуття точності, Nutrola показує діапазон (наприклад, "420 до 510 ккал"), коли основні оцінки це виправдовують, допомагаючи користувачам розвинути реалістичне розуміння їх споживання.
Ключовий вихід цього етапу
Загальна кількість калорій та розподіл макронутрієнтів для страви з можливими інтервалами впевненості.
Етап 8: Відображення та реєстрація користувача
Остаточний етап відображає результати в інтерфейсі користувача. Виявлені продукти перераховані з їхніми індивідуальними значеннями калорій та макро, а загальна кількість страви відображається помітно. Користувач може натиснути на будь-який продукт, щоб виправити його або відкоригувати порцію, і ці виправлення потрапляють назад у моделі персоналізації для покращення майбутніх прогнозів.
На Nutrola відображення включає візуальне накладення на оригінальному фото, що показує обмежувальні рамки або сегментні підсвічування для кожної виявленої їжі, що робить відразу зрозумілим, що AI ідентифікував і де. Ця візуальна зворотна зв'язок викликає довіру та робить помилки легкими для виявлення та виправлення.
Зареєстроване блюдо зберігається в щоденнику харчування користувача та сприяє підсумковим даним для калорій, білків, вуглеводів, жирів та відстежуваних мікронутрієнтів. Дані синхронізуються з Apple Health, Google Fit та іншими підключеними платформами через стандартизовані API даних про здоров'я.
Ключовий вихід цього етапу
Повністю оформлений запис про страву з даними про харчування для кожного продукту та загальними даними, візуальними накладеннями та синхронізацією з платформами здоров'я.
Таблиця підсумків пайплайну
| Етап | Основна технологія | Вхід | Вихід |
|---|---|---|---|
| 1. Вхідні дані з камери | ISP пристрою, датчики LiDAR/ToF | Світло зі сцени | RGB-зображення + необов'язкова карта глибини |
| 2. Попередня обробка зображення | Бікубічне зміна розміру, нормалізація каналів | Сире зображення | Нормалізований тензор (наприклад, 384x384x3) |
| 3. Витяг ознак | EfficientNet, ViT, Swin Transformer, FPN | Нормалізований тензор | Багатошарові карти ознак |
| 4. Класифікація їжі | YOLOv8, DETR, DeepLabv3+, контекст користувача | Карти ознак | Позначені продукти з обмежувальними рамками/масками |
| 5. Оцінка порцій | Оцінка глибини MiDaS, масштабування посилань, таблиці щільності | RGB + глибина + маски їжі | Вага в грамах на продукт |
| 6. Пошук у базі даних | Семантичний пошук на основі векторів, бази даних USDA/брендовані | Етикетки їжі + підказки приготування | Профілі нутрієнтів на 100 г |
| 7. Розрахунок калорій | Вагова арифметика, пропагування невизначеності | Оцінки грамів + профілі нутрієнтів | Загальні калорії та макронутрієнти з інтервалами впевненості |
| 8. Відображення для користувача | Відображення UI, API синхронізації даних про здоров'я | Обчислені дані про харчування | Запис про страву з візуальним накладенням |
Де вписуються інновації Nutrola
Кілька з описаних вище етапів містять інновації, специфічні для реалізації Nutrola:
Персоналізований контекст класифікації. Модуль контексту користувача на Етапі 4 використовує історичні дані про страви, кулінарні вподобання, місцезнаходження та час доби, щоб розрізнити невизначені прогнози. Це не є стандартом у більшості пайплайнів розпізнавання їжі та забезпечує вимірювані поліпшення в реальній точності в порівнянні з моделями без контексту.
Власна база даних щільності. Перетворення об'єму в вагу на Етапі 5 залежить від бази даних щільності, яка охоплює продукти в кількох станах приготування. Загальні системи часто використовують єдину середню щільність для продукту, що вводить систематичну помилку для таких предметів, як варені та сирі овочі або зливані та незливані консерви.
Відображення з урахуванням впевненості. Замість того, щоб показувати єдине число калорій, Nutrola відображає невизначеність, коли вона існує. Цей чесний підхід зменшує розчарування користувачів, коли оцінки здаються неправильними, оскільки сам діапазон повідомляє, що система менш впевнена щодо певного продукту.
Уніфікована база даних харчування з кількох джерел. База даних з 2 мільйонів записів на Етапі 6 об'єднує дані з урядових лабораторій, дані брендових продуктів та перевірені записи спільноти в єдину нормалізовану схему, що надає пайплайну доступ до значно більшої кількості записів про їжу, ніж будь-яке окреме джерело.
Безперервне навчання з виправлень. Кожне виправлення користувача на Етапі 8 повертається в моделі класифікації та порцій під час періодичних циклів повторного навчання, створюючи замкнуте коло, де точність покращується з ростом бази користувачів.
Затримка та особливості на пристрої
Затримка від початку до кінця має величезне значення для користувацького досвіду. Якщо пайплайн займає більше двох-трьох секунд, користувачі сприймають це як повільне і можуть повернутися до ручного ведення. Кілька інженерних стратегій підтримують низьку затримку:
Квантизація моделі перетворює ваги з плаваючою комою 32 біти в цілі числа 8 біт, зменшуючи розмір моделі приблизно в 4 рази та прискорюючи інференцію на мобільних нейронних обробниках (NPU) з мінімальною втратою точності. Nutrola застосовує посттренувальну квантизацію як для backbone витягу ознак, так і для голови виявлення.
Інференція на пристрої повністю усуває мережевий запит для обчислювально інтенсивних етапів (витяг ознак та виявлення). Apple's Core ML та Android's NNAPI забезпечують апаратно прискорені шляхи інференції, на які націлений пайплайн. Лише легкі етапи пошуку бази даних та розрахунку калорій вимагають запиту до сервера, і навіть ці етапи можуть використовувати локальний кеш для роботи в офлайн-режимі.
Спекулятивне виконання починає попередню обробку та витяг ознак, поки попередній перегляд камери все ще активний, тому до моменту натискання кнопки затвора пайплайн вже частково обробив кадр. Ця техніка скорочує затримку сприйняття на кілька сотень мілісекунд.
Оцінка точності та реальна продуктивність
На стандартних академічних тестах, таких як Food-101, ISIA Food-500 та Nutrition5k, сучасні пайплайни досягають точності класифікації top-1 від 85 до 92 відсотків, а помилки оцінки порцій становлять від 15 до 25 відсотків від істинної ваги. Реальна продуктивність варіюється, оскільки фотографії, надіслані користувачами, є шумнішими, ніж кураторські набори даних: погане освітлення, часткове перекриття, незвичні кути та незвичайні регіональні страви всі погіршують точність.
Внутрішнє тестування Nutrola на відокремленому наборі з 50,000 реальних фотографій користувачів показує точність класифікації top-1 на рівні 89 відсотків та медіанну помилку оцінки порцій на рівні 18 відсотків. Коли враховуються три найкращі кандидати, точність класифікації зростає до 96 відсотків, саме тому інтерфейс виправлення помітно відображає альтернативні пропозиції.
Ці показники продовжують покращуватися з кожним циклом повторного навчання, оскільки зворотний зв'язок з виправленнями накопичує більше позначених даних з реального використання.
Часто задавані питання
Скільки часу займає весь пайплайн від фото до даних про харчування?
На сучасних смартфонах з апаратним забезпеченням для нейронних обробок пайплайн від початку до кінця зазвичай завершується за 1.0 до 2.5 секунд. Більшість цього часу витрачається на витяг ознак та виявлення об'єктів на Етапах 3 та 4. Попередня обробка та розрахунок калорій майже миттєві, а пошук у базі даних займає лише 50 до 150 мілісекунд, залежно від умов мережі або того, чи використовується локальний кеш. Система спекулятивного виконання Nutrola, яка починає обробку попереднього перегляду камери до натискання кнопки затвора, може зменшити сприйняту затримку до менш ніж однієї секунди в багатьох випадках.
Наскільки точна класифікація їжі AI в порівнянні з ручним веденням?
Класифікація їжі AI досягає точності top-1 від 85 до 92 відсотків на стандартних тестах, а точність top-3 перевищує 95 відсотків. Ручне ведення, хоча теоретично точне, коли виконується ретельно, страждає від систематичного недообліку від 10 до 45 відсотків згідно з опублікованими дієтичними дослідженнями. На практиці класифікація AI в поєднанні з швидким підтвердженням користувача, як правило, дає більш послідовні та менш упереджені результати, ніж чисте ручне введення, особливо для користувачів, які реєструють кілька страв на день і відчувають втому від введення.
Що відбувається, коли AI не може ідентифікувати продукт?
Коли найвища впевненість прогнозу нижча за поріг системи, пайплайн застосовує граціозний підхід. Він представляє три-п’ять найкращих кандидатів для ідентифікації та запитує користувача вибрати правильний або ввести назву вручну. Це виправлення користувача реєструється та повертається в навчальний пайплайн під час наступного циклу повторного навчання, що означає, що кожна невдача стає сигналом для навчання, який покращує майбутні прогнози. З часом, коли ці виправлення накопичуються, покриття системи незвичайних та регіональних продуктів поступово розширюється.
Чи працює пайплайн інакше для змішаних страв, таких як салати чи каррі?
Так. Для змішаних страв, де окремі інгредієнти не можуть бути просторово відокремлені, пайплайн переходить від виявлення з обмежувальними рамками до семантичної сегментації, використовуючи архітектури, такі як DeepLabv3+. Ця класифікація на рівні пікселів оцінює пропорцію кожного інгредієнта в змішаній зоні. Для сильно змішаних страв, таких як смузі або пюре, де візуальне розділення неможливе, пайплайн покладається на розкладку рецепту: він ідентифікує тип страви, а потім використовує модель рецепту для оцінки ймовірних пропорцій інгредієнтів та їх комбінованого профілю харчування.
Як працює оцінка порцій без датчика глибини?
Коли жоден датчик LiDAR або часу польоту недоступний, пайплайн використовує модель монокулярної оцінки глибини (таку як MiDaS або DPT), щоб вивести приблизну глибину лише з RGB-зображення. Ці моделі були навчені на мільйонах пар зображень та глибини і можуть оцінювати тривимірну форму їжі за контекстуальними підказками, такими як геометрія тарілки, патерни тіней та градієнти текстури. Система також виявляє об'єкти посилання з відомими розмірами, особливо тарілки та столові прибори, щоб закріпити масштаб. Хоча монокулярна оцінка є менш точною, ніж апаратне визначення глибини, поєднання вивчених підказок глибини та масштабування за посиланням зберігає оцінки порцій у межах практичного діапазону точності для відстеження харчування.
Чи може пайплайн обробляти кілька тарілок або страв на одному фото?
Етап виявлення об'єктів розроблений для обробки довільної кількості продуктів, незалежно від того, чи вони знаходяться на одній тарілці, чи на кількох. Голови виявлення YOLO та DETR сканують все зображення та виводять незалежні виявлення для кожного знайденого продукту, незалежно від того, чи вони на одній обідній тарілці, розкладені по столу з кількома стравами або розташовані на підносі. Кожен виявлений продукт обробляється незалежно через етапи оцінки порцій та розрахунку калорій. Для найкращої точності Nutrola рекомендує фотографувати кожну тарілку або миску окремо, щоб можна було налаштувати масштаб для кожної тарілки, але система впорається з багатоплатними сценами, коли це не є практичним.
Готові трансформувати своє відстеження харчування?
Приєднуйтесь до тисяч, які трансформували свою подорож до здоров'я з Nutrola!