Як легко класифікувати їжу за допомогою глибокого навчання та Tensorflow

На даний момент ви вже чули про згорткові нейронні мережі (CNN) та їх ефективність при класифікації зображень. Точність CNN в класифікації зображень є надзвичайно чудовою, а її реальні програми за допомогою API досить глибокі.

навчання

Але іноді ця методика може бути недостатньою. Зображення може представляти кілька атрибутів. Наприклад, усі наведені нижче теги дійсні для зображення нижче. Простий класифікатор заплутається, яку етикетку надати в такому випадку.

Ця проблема відома як Класифікація з декількома мітками.

Чому класифікація з багатьма марками ?

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

1. Розуміння сцени

Класифікація з декількома мітками дозволяє легко розрахувати попередні для складних алгоритмів розуміння сцени. Визначення різних можливих тегів для зображення може допомогти алгоритму Scene Understanding створити кілька яскравих описів для зображення.

2. Пошук на основі вмісту

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

Більше того, ми можемо використовувати теги, щоб рекомендувати супутні товари на основі активності або уподобань користувача. Наприклад, ви можете рекомендувати подібні пісні чи фільми на основі активності користувача. Для автоматичного індексування таких пісень та фільмів можна використовувати класифікатор із декількома мітками.

Як працює класифікація етикеток?

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

Класифікація за однією міткою

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

Однією з перешкод, яку ви могли помітити, є проблема кодування зображень у вектор функції. Для цього використовуються згорткові нейронні мережі (CNN). Звитки витягують із зображень важливі особливості та перетворюють їх у векторне представлення для подальшої обробки. Решта процесів обробки в CNN схожа на обробку багатошарового перцептрону. Таким чином, у двох словах, виконується класифікація на одній етикетці.

Класифікація з декількома мітками

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

Метод 1 - Трансформація проблеми

У цьому випадку ми перетворимо проблему Multi Label на проблему Multi Class. Одним із способів цього є підготовка окремого класифікатора для кожної етикетки. Цей метод має очевидний мінус у навчанні занадто багатьох класифікаторів. Це також ігнорує можливу кореляцію між кожною етикеткою.

Інший метод полягає в кодуванні кожної можливої ​​комбінації міток як окремого класу, створюючи тим самим потужність набору міток. Цей метод добре працює для невеликої кількості комбінацій етикеток, але їх важко масштабувати для великої кількості комбінацій етикеток. Лише для 10 міток ми отримали б набір потужності розміром 1024 (2 підняли до рівня 10)!

Спосіб 2 - Адаптація алгоритму

Іноді внесення якихось незначних змін в алгоритм було б достатньо для вирішення проблеми класифікації декількох міток. Наприклад, у випадку з нейронною мережею, ми можемо замінити остаточний шар softmax шаром Sigmoid, а потім використовувати Binary Cross Entropy для оптимізації моделі.

Очевидно, що існує багато стратегій, які можна дослідити. Часто одна стратегія може не працювати найкращим чином для всіх видів даних, а отже, вимагає великих експериментів.

Класифікація продуктів харчування з декількома марками

Теорія звучить добре, але як ми її реалізуємо? У цьому розділі ми створимо власний алгоритм багатозначної класифікації харчових продуктів за допомогою Keras (із серверною базою TensorFlow). Ми модифікуємо просту модель CNN, щоб увімкнути класифікацію з багатьма мітками. Потім ми проведемо порівняння з API класифікації Nanonets Multi Label Classification.

Весь код доступний на GitHub тут. Ви можете стежити за сховищем GitHub, щоб отримати поглиблений посібник для відтворення експериментів.

опис проблеми

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

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