Главное о кейсе
Компания ItFox разработала комплексную систему учета продукции при организации питания - от момента получения сырья на производство (куска говядины, например) до выдачи его в виде стейка конечному потребителю.
Мы знаем все этапы передвижения продукции, каждый грамм учитывается в системе - мы понимаем сколько ушло на котлеты, сколько на стейки, сколько в суп и так далее. У нас есть информация о любых изменениях веса или размера.
Иными словами, мы имеем 100% аналитику для отдела закупок, а также уверены, что никто из персонала не присвоил себе дорогостоящие продукты.
Более того, на каждом из этапов производства мы контролируем качество продукции. У нас есть фотокассы - оборудование, которое оснащено камерой, несколькими датчиками и весами, что позволяет нам во-первых, проверять блюда на соответствие весу и температуре, а во-вторых, на соответствие эталонному изображению, то есть мы проверяем не только качество продуктов, но и качество подачи, предоставляя гостям наивысший сервис.
В данном кейсе мы расскажем, как разработали искусственный интеллект для распознавания блюд в фотокассах, который сократил время работы официантов в 6,5 раз при выдаче блюд.
Как проект изменил жизнь пользователей
Чтобы понять, насколько ИИ упростил жизнь официантам, необходимо посмотреть, как работали до его внедрения.
Рассмотрим, кейс с организацией питания на шведской линии отеля. Тут как никогда важна скорость работы.
Процесс работы с фотокассами без ИИ
1. Планирование:
Вначале служба питания делает заявку на еду — завтрак, обед или ужин. Они рассчитывают, сколько людей придет и какие блюда нужно приготовить.
После этого шеф-повар, технолог и бухгалтер обсуждают меню, опираясь на заявку, технологические карты и бюджет. Эти данные вводятся в систему «1С:Общепит» или другую учетную программу.
Затем информация о блюдах (дата, время, наименования, объемы) передается в систему Фотобокс (фотокассы+ ПО). Она создает блоки готовых блюд с следующими характеристиками:
- Название
- Вес
- Фотография
- Температура
Блюда отдаются не поштучно, а партиями. Поэтому в систему заранее загружают информацию о таре (название, размеры, вес, фото). Это позволяет учитывать настоящий вес блюд без посуды. Когда сотрудник ставит блюдо на весы, он просто выбирает нужную тару из списка.
2. Фиксация данных:
Официант берет готовое блюдо и ставит его на весы. Над весами есть камера, датчик движения и термодатчик. Официант выбирает название блюда на экране и указывает, в какой посуде оно подается. Система автоматически взвешивает, фотографирует и измеряет температуру блюда. Все эти данные сохраняются в Фотобоксе.
Если нужно добавить что-то в блюдо, это можно сделать через функцию возврата. Дополнительные датчики и камеры помогают отслеживать перемещение продуктов и блюд за пределами зоны выдачи.
3. Передача информации в базу:
Когда питание завершается, фотокассы отправляет собранные данные в основную учетную систему. Сюда попадают фотографии блюд, их вес и температура.
Учетная программа получает эту информацию и автоматически списывает продукты, которые были использованы для приготовления блюд.
***
И все бы хорошо... Однако возникла серьезная проблема...
Когда официанты начали использовать систему, они тратили слишком много времени на поиск нужных блюд. Даже с возможностью поиска, это занимало до 20 секунд! Представьте, как это замедляло работу.
Почему так происходило? Дело в том, что шеф-повара и технологи сами придумывают названия блюд. Новое питание - новые названия. Естественно, официантам не всегда удавалось быстро найти нужное. А в "час пик" это очень важно.
Бизнес-задача и ее решение
Естественно, мы не стали мириться с вышеобозначенной проблемой. Вместо этого мы и разработали систему искусственного интеллекта, которая автоматически распознает блюда и показывает их официантам в веб-приложении. Теперь они тратят считанные секунды на выбор, и это значительно ускоряет обслуживание.
Давайте поговорим о том, как работает Фотобокс с искусственным интеллектом.
Когда официант ставит блюдо на весы фотокассы, наша обученная нейросеть распознает, что это за блюдо, и выводит на экран название одного или нескольких вариантов.
Почему несколько вариантов? Порой блюда могут содержать похожие ингредиенты. Например, если официант ставит морковь, система может предложить выбрать между свежей натертой морковью и морковью по-корейски.
Таким образом, искусственный интеллект помогает официантам быстро находить нужные блюда в Фотобоксе. Это значительно ускоряет процесс выдачи и делает обслуживание более эффективным.
В доказательство приведем несколько цифр:
До внедрения искусственного интеллекта официант искал блюдо 10-15 секунд
после внедрения - 1-2 секунды.
Иными словами мы сэкономили время в 6,5 раз.
Крафт (мастерство), реализация, технические детали
Теперь же погрузимся в технические аспекты и поговорим о разработке системы ИИ.
Процесс создания ИИ похож на разработку любого другого программного обеспечения. Мы разбиваем задачу на подзадачи, назначаем ответственных, формируем команду и устанавливаем сроки.
Поэтому лучше сразу перейдем к техническим аспектам. Вот основные шаги, которые мы прошли при разработке ИИ:
**Шаг 1. Сбор данных.** Наша задача — собрать достаточное количество фотографий и подготовить их для нейросети.
**Шаг 2. Обучение нейросети.** Мы обучаем нейросеть на собранных фотографиях, чтобы она могла определять блюда.
**Шаг 3. Доставка модели.** Обученная модель должна быть установлена на каждом Фотобоксе.
Теперь заглянем внутрь системы!
Вот что мы сделали, чтобы распознавание блюд работало правильно:
- Сервис формирования данных.
Данные с каждого Фотобокса отправляются на облачный сервер, а фотографии хранятся на отдельном S3-сервере для экономии пространства. Более того, в каждом объекте, созданном официантом в приложении, есть основная и дополнительная информация. Нам же нужно передавать только фото и название блюда в нейросеть. Для автоматизации этого процесса мы создали специальный сервис.
- Сервис определения блюд.
Мы столкнулись с такими проблемами как медленная скорость распознавания (4 секунды) и плохое качество распознавания из-за разного количества фотографий. Мешал и лишний фон на изображениях.
Чтобы решить эти проблемы, мы:
- Подобрали самую быструю сверточную сеть RESNET151, подходящую для нашей задачи.
- Создали систему динамической балансировки количества фотографий, поступающих в нейросеть.
- Разработали функционал для подготовки фотографий: обрезка изображений и маскировка блюда.
Результаты:
После всех улучшений распознавание блюд занимает всего 1,5-2 секунды на микрокомпьютере Raspberry Pi. На компьютере с GPU распознавание происходит еще быстрее. Качество распознавания повысилось до 90-95%.
Для удобства мы разработали веб-интерфейс для настройки обучения нейросети. Изначально это было возможно только через командную строку, что занимало больше времени. Теперь мы быстрее обучаем модели и тестируем гипотезы.
Вот основные настройки, используемые для обучения:
- BatchSize. Влияет на объем видеопамяти. Увеличение ускоряет обучение.
- TRAIN PROPORTION. Процент данных, используемых для обучения, остальные — для тестирования.
- NUM EPOCHS. Количество итераций обучения, что влияет на качество.
- VALIDATION_RATIO. Позволяет проверять качество обучения и составлять отчеты.
Разработчик Кирилл Фисюкович утверждает, что главной сложностью была интеграция ИИ на архитектуре ARM Raspberry Pi 4 и балансировка фотографий. Это необходимо, чтобы нейросеть могла обучаться даже на блюдах с небольшим количеством изображений.
- возможность запускать все наши сервисы и инструменты для обучения модели всего одним нажатием кнопки в веб-приложении на облачном сервере.
Раньше, чтобы начать обучение, нужно было выполнять множество последовательных действий, что отнимало много времени. Теперь, благодаря нашим разработкам, данный процесс полностью автоматизирован. Мы провели множество тестов, чтобы убедиться, что всё работает правильно.
- система доставки обученной модели с S3-сервера на Фотобокс.
Поскольку моделей может быть много, нам нужно было обеспечить доставку только самой «свежей». Мы сделали так, что каждой модели присваивается дата и время создания. Когда Фотобокс получает модели, он проверяет эти данные и загружает актуальную.
- оптимизация процесса обучения.
Оптимизация процесса обучения стала одной из самых сложных задач. Мы начали с определения оптимального числа фотографий для каждого блюда, чтобы качественно обучить нейросеть. Затем настроили процесс распознавания, чтобы он был максимально быстрым. Первые тесты показывали время распознавания около 3–4 секунд, но после доработок нам удалось сократить его до 1,5–2 секунд. Теперь блюда определяются почти мгновенно, и персонал тратит минимальное время.
Инсайты, гипотезы, процесс создания и взаимодействия с заказчиком
В завершении поговорим о самом интересном этапе - о внедрении. Потому что именно здесь происходит максимальное взаимодействие с заказчиком.
Скажем сразу, это оказался один из самых сложных этапов в разработке системы ИИ, и мы хотим поделиться трудностями, с которыми столкнулись.
Прежде всего, мы провели серию тренингов для сотрудников, чтобы научить их правильно пользоваться Фотобоксом — как делать фотографии и работать с оборудованием. Это основа всего, ведь без качественных фотографий модели не смогут распознавать блюда. На тестовых стендах мы выяснили, что для надежного распознавания нужно около 300 фотографий. Главной задачей было замотивировать и научить персонал делать эти замеры регулярно и правильно.
Вторая проблема — сложности на операционном уровне. Сфера общественного питания имеет свои особенности, и одна из них — высокая текучка кадров. Новые сотрудники должны быстро разобраться в процессах и запомнить, где что лежит. Когда мы начали внедрять новую систему, требующую больше времени на замеры, мы сталкивались с недовольством: «Вы задерживаете выдачу!» Но с поддержкой руководства мы смогли преодолеть эти трудности.
И, наконец, важность организации рабочего пространства. Мы поняли, что фотокассы должны находиться рядом со шкафами, где хранятся готовые блюда. Когда повар готовит блюдо, оно не сразу идет в зал, а помещается в горячий шкаф. Если фотокасса будет далеко, сотрудникам придется много бегать, что крайне неудобно. Поэтому оборудование должно быть максимально близко. Мы пришли к выводу, что у горячего цеха должна быть своя фотокасса, рядом с теплошкафами. У холодного цеха — своя, рядом с холодильным оборудованием, а третью фотокассу можно разместить в кондитерском цеху, близко к их холодильникам.
В заключение хотим сказать, что задача была нелегкой. Нам нужно было подготовить не только систему, но и людей, которые будут работать с ней каждый день. Это потребовало времени, терпения и хорошей организации. Но когда всё начинает работать как часы, это приносит огромное преимущество, которое все замечают и понимают, зачем это нужно.
Скриншоты