GitHub - Yiming-MiaoCalorie-Predictor

Члени команди: Імін Мяо, Сяоюй Ан, Тінгі Чжан

github

Речі, які ми встановили

Алгоритм розпізнавання їжі

  • Ми використовували модель глибокого навчання - Mask R-CNN.
  • Наша робота базується на репозитарії GitHub Matterport, натисніть на це посилання, щоб побачити їх чудову роботу: https://github.com/matterport/Mask_RCNN.

Наш власний набір даних

Ми створили відносно невеликий набір даних, позначений вручну VIA (VGG Image Anotator) і містить 10 видів продуктів.

Використовуйте машинне навчання, щоб розпізнавати зображення їжі, оцінювати вагу та прогнозувати її калорійність. Калорії передбачення не потрібно, щоб користувачі знали вагу продуктів або вводили назви продуктів, все, що йому потрібно - це картинка.

Всі, хто намагається підрахувати, скільки вони їдять

  • Я, студент коледжу, який намагаюся дотримуватися дієти, щоб схуднути, але я не знаю назви продуктів та ваги продуктів, які я їжу в їдальні, тому мені потрібен інструмент, який допоможе мені проаналізувати свою їжу.
  • Я, професійний бодібілдер, який намагається дотримуватися дуже суворої дієти перед моїм шоу, і я хочу точно знати, які калорії я вживаю щодня.
  • Мені, пацієнту, який має проблеми зі здоров’ям, щоб уникнути вживання висококалорійної їжі, потрібно знати енергію продуктів перед тим, як їх приймати.
  • Користувацький інтерфейс, який дозволяє користувачам вводити зображення продуктів і вводити вагу продуктів
  • Можливість розпізнавання продуктів
  • Обчисліть калорії, виходячи з таблиці калорій

Дизайн системи (оригінальна ідея)

Алгоритм глибокого навчання

Наша веб-сторінка розроблена на основі Tornado (веб-фреймворк python), HTML (Materialize framework) та JavaScript.

Аналіз подібних продуктів

Ми знайшли в Apple Store кілька додатків, пов’язаних із прогнозуванням калорій.

  • У цьому додатку користувачі могли ввести свою вагу та зріст. Тоді користувачі могли встановити мету, скільки ваги вони збираються втратити. Однак користувачі не можуть завантажувати свої зображення їжі, щоб автоматично отримати прогнозовану калорійність їжі.

  • Ця програма дозволяє лише завантажувати свої зображення їжі, вибирати типи їжі та додавати грами їжі. Тому основною метою цього додатка є просто реєстрація щоденного споживання калорій користувачами вручну.

Плюси: - Він може класифікувати тип їжі автоматично.

  • Потрібно ввести вагу їжі вручну.

  • Перевага цього додатка полягає в тому, що він може надати користувачам більш конкретний харчовий склад їжі, такий як вміст протеїну, вміст вуглеводів, жиру тощо. Більше того, він може давати пропозиції щодо кількості споживаних калорій користувачам з огляду на їх фізичні дані та зменшення ваги.

  • Ця програма не може ідентифікувати фотографії їжі. Користувачі повинні ввести назву та вагу їжі. Перевага цього додатка полягає в тому, що він може надати користувачам більш конкретний харчовий склад їжі, такий як вміст протеїну, вміст вуглеводів, жиру тощо. Більше того, він може давати пропозиції щодо кількості споживаних калорій користувачам з огляду на їх фізичні дані та зменшення ваги.

Обгрунтування технології класифікації

Випадкові ліси

Метод випадкового генерування лісу описаний у чотири етапи

  1. N вибірки генеруються з вибірки, встановленої шляхом передискретизації.
  2. Якщо ми встановимо, що кількість ознак вибірки дорівнює A, а K об’єктів в A вибираються з N вибірки, і оптимальна точка сегментації отримується шляхом встановлення дерева рішень.
  3. Повторіть M разів, щоб сформувати M дерев рішень.
  4. Більшість механізмів голосування роблять прогнози.

  • Випадкові ліси можуть обробляти дуже великі розміри даних (тобто дані для багатьох об’єктів) без необхідності вибору об’єкта.
  • Після тренінгу, які характеристики важливіші, може дати випадковий ліс.
  • Швидкість тренувань є швидкою, і легко зробити метод розпаралелювання (коли тренування дерево і дерево не залежать один від одного).
  • Під час тренувального процесу можна виявити ефекти між функціями.
  • Якщо більша частина функцій втрачена, точність все одно може підтримуватися за допомогою РЧ-алгоритму.
  • Алгоритм випадкового лісу має сильну здатність проти перешкод. Отже, коли в даних відсутня велика кількість даних, добре використовувати RF.

  • Подібних дерев рішень, які маскують реальні результати, може бути багато.
  • Для малих даних або даних з низьким розміром (дані з меншими характеристиками) це може не дати хорошої класифікації.

Підтримка векторних машин (версія SMO)

  • Точно виконувати в просторих просторах;
  • Ефективно працюйте з невеликими даними
  • SMO використовують підмножину навчальних точок у функції прийняття рішень (так звані вектори підтримки), тому це також ефективно для пам'яті.

  • Алгоритм схильний до надмірного пристосування, якщо кількість функцій набагато більше, ніж кількість зразків.
  • SVM не надають безпосередньо оцінки ймовірності, що є бажаним у більшості проблем класифікації.
  • SVM не надто ефективні обчислювально, якщо ваш набір даних дуже великий, наприклад, коли у вас є більше тисячі рядків.

Наївні Баєси

  • Маючи справу з великими наборами даних або низькобюджетним обладнанням, алгоритм Naive Bayes є можливим вибором для короткого часу навчання.
  • Час прогнозування цього алгоритму дуже ефективний.
  • Прозорість. Легко зрозуміти, які особливості впливають на прогнозування.

  • Він має суттєві припущення щодо незалежності.
  • Попередня ймовірність повинна бути відома, і попередня ймовірність часто залежить від гіпотези. Можна припустити багато моделей, тому в деяких випадках ефект прогнозування буде слабким через гіпотетичну попередню модель.
  • Оскільки ми визначаємо класифікацію апріорі та за даними, щоб визначити ймовірність задньої, у прийнятті рішення про класифікацію існує певна частота помилок.
  • Дуже чутливий до форми вхідних даних.

У нашій системі після сегментації та класифікації найважливішим є опис або оцінка ваги різних продуктів харчування. MVP цієї частини просто дозволяє користувачеві ввести вагу їжі, тоді ми можемо розрахувати калорії їжі. Якщо ми хочемо, щоб наша система була більш розумною, ми повинні дозволити нашій системі навчитися оцінювати вагу їжі на зображенні.

Існує два способи оцінити вагу їжі на основі різних видів їжі. Ми припускаємо, що продукти харчування можна класифікувати на дві категорії. Один із видів їжі - це той вид, що ми можемо використовувати деякі комбінації математичної геометрії твердої речовини, щоб зобразити форму їжі, щоб отримати їх обсяги. Оскільки ми класифікували їжу, ми можемо знати інформацію про щільність для обчислення ваги їжі. Цей вид технології називається оцінкою 3D-реконструкції шаблону фігури.

Інший тип їжі - це той вид, який не може використовувати звичайну математичну тверду геометрію для представлення. Вони можуть просто зайняти якусь територію, наприклад яєчню. Оскільки зображення їжі зазвичай геометрично спотворені, нам потрібно перетворити зображення їжі в якісь зображення спереду, щоб оцінити площу їжі. Після ідентифікації їжі на зображенні та оцінки площі, ми оцінюємо вагу їжі, використовуючи співвідношення площа-вага у навчальних даних відповідного продукту харчування.