Компьютерное зрение для удобной работы в магазине.
Застряли за платным доступом? Нажмите здесь, чтобы прочитать всю историю с помощью моего Friend Link!
Розничная торговля никогда не была застойной отраслью. Розничные торговцы просто не могут позволить себе стоять на месте, если хотят добиться успеха. Они должны адаптироваться и вводить новшества, иначе они рискуют остаться позади.
Применение компьютерного зрения в розничной торговле должно коренным образом изменить покупательский опыт покупателей и розничных продавцов. В этом блоге я буду создавать модель классификации многоклассовых объектов на основе компьютерного зрения для розничных продуктов. Этот проект был вдохновлен знаменитым магазином Amazon Go. Надеюсь, вам понравится эта статья и вы найдете в ней полезные сведения.
Amazon описывает Amazon Go как новый вид магазина, в котором не требуется оформление заказа. Это означает, что когда вы делаете покупки в Amazon Go, вам никогда не придется ждать в очереди. Магазин работает с приложением Amazon Go - вы заходите в Amazon Go, берете нужные продукты и, благодаря приложению, снова уходите. Он работает с использованием тех же технологий, что и в беспилотных автомобилях, таких как компьютерное зрение, объединение датчиков и глубокое обучение. Эта технология может определять, когда продукты принимаются или возвращаются на полки, и отслеживает их в вашей виртуальной тележке. Когда вы покидаете магазин со своими товарами, с вашего счета Amazon снимается плата, и вам отправляется квитанция.
Вот видео на случай, если вы захотите это проверить.
Применение компьютерного зрения в розничной торговле
- Настройка опыта с помощью распознавания лиц.
- Делать покупки более человечными и менее транзакционными.
- Управление запасами на основе компьютерного зрения.
- Стираем грань между магазином и онлайн.
- Магазин без трения.
Данные
Я использовал набор данных Freiburg Groceries для этого проекта. Он состоит из 5000 изображений 256x256 RGB 25 классов еды. Документ можно найти здесь, а набор данных - здесь.
Окружающая среда и инструменты
- Numpy
- Панды
- Scikit-изображение
- Матплотлиб
- Scikit-Learn
- Керас
Классификация изображений
Полный конвейер классификации изображений можно формализовать следующим образом:
- Наш вход - это обучающий набор данных, состоящий из N изображений, каждое из которых помечено одним из 25 различных классов.
- Затем мы используем этот обучающий набор для обучения классификатора, чтобы узнать, как выглядит каждый из классов.
- В конце концов, мы оцениваем качество классификатора, прося его предсказать метки для нового набора изображений, которые он никогда раньше не видел. Затем мы сравним истинные метки этих изображений с предсказанными классификатором.
Где код?
Без лишних слов, давайте начнем с кода. Полный проект на github можно найти здесь.
Я начал с загрузки всех библиотек и зависимостей.
Затем я создал функцию для построения графика потерь и точности, которые мы получим после обучения модели.
Также я сделал несколько функций для возврата метки конкретного изображения и загрузки набора данных.
Я продолжил создание отдельных классов для каждого продукта и вызвал функцию для загрузки всех изображений для каждого класса.
Затем я преобразовал изображения в категориальный формат, прежде чем окончательно нормализовать изображения. Также я разделил набор данных на 2 части - обучающий набор с 80% данных и тестовый набор с 20%.
Поскольку размер набора данных был довольно маленьким, я использовал стратегии увеличения данных, такие как вращение, масштабирование и отражение. Это почти удвоило размер набора данных.
Давайте покажем несколько примеров из каждой категории.
Все идет нормально. А теперь самое интересное. Давайте создадим модель глубокого обучения.
Я использовал трансферное обучение с использованием предварительно натренированных весов VGG. Вдобавок к этому я использовал средний слой объединения, чтобы уменьшить отклонение изученных весов от предыдущих слоев. Также я использовал 30% отсева, чтобы уменьшить переобучение. Наконец, я использовал плотный слой с 25 нейронами для представления 25 классов продуктовых продуктов в нашем наборе данных. Я использовал softmax в качестве функции активации, поскольку это проблема классификации нескольких классов.
Давайте визуализируем модель.
Я продолжил определение некоторых обратных вызовов с помощью keras. Я использовал контрольную точку модели, чтобы сохранить веса, если точность проверки возрастет. Также я использовал критерий ранней остановки, если потеря валидации начинает выходить на плато. Два других обратных вызова предназначены для визуализации результатов в тензорной таблице и для сохранения журналов в файлах csv.
Затем я определил 2 оптимизатора. Первый - это стохастический градиентный спуск со скоростью обучения 0,0001 и значением импульса 0,99. Вторым был Адам с немного большей скоростью обучения - 0,001.
Сравнив их, я обнаружил, что Адам показал гораздо лучшие результаты. Также я использовал категориальную кросс-энтропию в качестве функции потерь для нашей модели. Я обучил модель для 50 итераций с размером пакета 128, который, как я понял, является оптимальным для этой проблемы.
Наконец, я нанес на график результаты.
Полученные результаты
Потери / точность против эпохи
Модель может достичь точности проверки 60%, что довольно хорошо, учитывая количество классов (25) со 100–200 изображениями в каждой категории. Не стесняйтесь использовать разные архитектуры или экспериментировать с гиперпараметрами для получения лучших результатов.
Правильные и неправильные образцы
Как можно заметить, существует довольно много ошибочно классифицированных выборок, предсказанных нашей моделью. Но все же я считаю, что это должно стать хорошей отправной точкой для дальнейшей работы в этой области.
Выводы
Хотя этот проект далек от завершения, но примечательно видеть успех глубокого обучения в таких разнообразных реальных проблемах. Автоматическая классификация объектов может оказаться большим подспорьем для розничной торговли продуктами питания и бакалейными товарами, поскольку она снижает человеческие усилия в процессе управления запасами на складе и в торговых точках. Кроме того, магазин без трения рассматривается как будущее шоппинга.
Ссылки / Дополнительная литература
Руководство по компьютерному зрению в розничной торговле для новичков
Любой, у кого есть влажный палец в воздухе, уже слышал о« апокалипсисе розничной торговли , охватившем развитые… hackernoon.com »
Прежде чем ты уйдешь
Соответствующий исходный код можно найти здесь.
Контакты
Если вы хотите быть в курсе моих последних статей и проектов, подписывайтесь на меня на Medium. Вот некоторые из моих контактных данных:
- "Персональный сайт"
- Средний профиль
- GitHub
- Kaggle
Приятного чтения, удачного обучения и удачного кодирования!