
Искусственный интеллект
Как мы уже упоминали ранее, мы давно взаимодействуем с London Restaurant Group, одним из флагманов ресторанной индустрии на юге России. За этот период мы разработали для них ИТ - решение, состоящее из мобильного приложения, комплекса автоматизации бухгалтерии и новаторский Фотобокс - аппаратно-программное обеспечение для отслеживания остатков продуктов при обслуживании клиентов в режиме "шведский стол".
Для детального ознакомления с каждым проектом мы вставили интерактивные гиперссылки. В этом кейсе мы остановимся на усовершенствовании Фотобокса - создании системы, базирующейся на методах искусственного интеллекта.
При первом показе Фотобокса сообществу рестораторов, крупные сетевые заведения и службы доставки заинтересовались возможностью внедрения ИИ для определения блюд, что позволило бы избавиться от ручного поиска в веб-интерфейсе.
Сейчас мы с удовольствием пишем, что момент настал. О том, как мы это сделали, читайте ниже.
Почему мы решили заняться разработкой ИИ?
Если вам не знаком проект Фотобокса, позвольте кратко рассказать о его функционале.
Что такое Фотобокс?
Фотобокс — это конструкция из нержавеющей пищевой стали, оснащенная датчиками, которые собирают полную информацию о подаваемых блюдах.

Как проходил процесс работы с Фотобоксом до внедрения ИИ?
1. Стадия подготовки:
Отдел питания создает запрос на организацию приема пищи — утренний, дневной или вечерний. Сотрудники определяют число посетителей и выбирают меню.
Исходя из запроса, рецептур и имеющегося бюджета, главный повар вместе с технологом и финансистом одобряет план рациона в программе "1С:Общепит" или схожей системе.
Затем сведения о меню (дата, час, блюда/продукты/питье, объем/масса/количество) загружаются в комплекс Фотобокс, который создает группы готовых к раздаче блюд с параметрами:
- наименование; - вес; - снимок; - температура..
Так как блюда выдаются партиями по весу или количеству, заранее вводятся данные о таре/гастротаре (названия, габариты, вес, фото и пр.), что позволяет учитывать реальную массу блюд без учета веса емкостей. Когда работник ставит еду на весы, он выбирает, в какой именно посуде она подается.
2. Стадия регистрации реальных данных:
Официант берет блюдо и помещает его на весы. Над весами расположены сенсоры: видеокамера, датчик движения и термометр. Сотрудник выбирает название еды на дисплее и указывает тип тары. Система автоматически взвешивает еду, делает ее снимок и измеряет температуру. Все эти сведения сохраняются в Фотобоксе.
Добавить ингредиенты в блюдо можно через функцию возврата. Помимо прочего, система следит за перемещениями продуктов и готовых блюд за пределами зоны раздачи с помощью дополнительных датчиков и камер.
3. Стадия передачи сведений в хранилище данных:
После окончания приема пищи Фотобокс отправляет собранную информацию в основную систему учета. Туда поступают изображения блюд, их масса, температура и количество.
Учетное программное обеспечение получает эту информацию и автоматически списывает продукты, использованные для приготовления рационов.
Задача, которую необходимо решить с помощью искусственного интеллекта.
После запуска Фотобокс мы столкнулись с затруднением: сотрудники долго выбирали блюда в веб-программе, даже при использовании функции поиска. Дело в том, что наименования обычно придумываются Шефами и могут быть весьма замысловатыми. Официанты не всегда в курсе точных названий, что затягивает процесс поиска нужного блюда аж до 20 секунд. В периоды наибольшей загруженности это становилось критичным.
В связи с этим мы создали умную систему, которая самостоятельно распознает блюдо и показывает его наименование в веб-приложении.
Как работает Фотобокс с использованием ИИ
Сотрудник располагает еду на платформе Фотобокса. Обученная ИИ идентифицирует ее и выводит на дисплей одно или несколько возможных наименований.
Несколько названий может быть, если сотрудник помещает блюдо со схожим составом. К примеру, если это морковь, система может предложить выбор между свежетертой морковью и пикантной морковью по-корейски.
В результате, разработанная нейронная сеть существенно облегчает процесс поиска требуемых блюд в Фотобоксе, что, в свою очередь, ускоряет обслуживание клиентов.

ЭтапыразработкиИИ
Позвольте поделиться основными этапами разработки искусственного интеллекта. Начнем с аналитического.
Как правило, прежде чем приступить к любому проекту, мы проводим тщательное исследование. Если есть возможность решить задачу с минимальными издержками, мы обязательно информируем об этом клиента. Так и здесь мы изучили задачу заказчика и доступные на рынке решения. И что мы выяснили? К сожалению, ничего подходящего! Безусловно, существуют разнообразные сервисы для распознавания, такие как, например, система идентификации лиц от «ВКонтакте», которая помогает контролировать сотрудников. Однако подходящего решения для распознавания блюд, что требовалось клиенту, не нашлось. Поэтому мы решили разработать его самостоятельно.
Процесс разработки ИИ
Процесс создания искусственного интеллекта схож с разработкой любого иного программного продукта. Мы дробим задачи на более мелкие, определяем ответственных, формируем команду и устанавливаем временные рамки.
Теперь давайте обратимся к технической стороне вопроса. Я последовательно опишу ключевые задачи, которые нам предстояло разрешить в ходе разработки ИИ:
Этап 1. Сбор данных и формирование датасета. Нам требовалось собрать достаточно изображений в облачном хранилище и подготовить их для передачи в нейронную сеть.
Этап 2. Тренировка нейронной сети на собранных изображениях (наборах данных) для получения модели, способной распознавать блюда.
Этап 3. Внедрение обученной модели в каждый фотобокс на объекте.
Похожиепроекты


Процессвнедрения
Наконец, мы подошли к наиболее интересной и сложной части - внедрению системы. Этот этап оказался не таким простым, как казалось на первый взгляд.
- Прежде всего, мы организовали серию обучающих сессий для сотрудников, чтобы помочь правильно использовать фотобокс - научить, как делать качественные снимки и работать с оборудованием. Это фундаментальный аспект, поскольку без достаточного количества фотографий модель распознавания не может функционировать эффективно. Наши тесты показали, что для надежного распознавания необходимо около 300 фотографий каждого блюда. Таким образом, первой задачей было обучить и мотивировать персонал регулярно и корректно проводить эти измерения.
- Вторая существенная проблема касалась операционного внедрения. Специфика сферы общественного питания, в частности, высокая текучесть кадров, создавала дополнительные сложности. Новым сотрудникам требовалось время на адаптацию, изучение процессов и расположения инвентаря. Внедрение новой системы, требующей дополнительного времени на замеры, вызывало сопротивление, так как казалось, что это замедляет работу. Однако благодаря поддержке руководства нам удалось преодолеть эти трудности.
- Наконец, мы столкнулись с вопросами организации производственного процесса. Мы поняли важность стратегического размещения фотобоксов - они должны находиться в непосредственной близости от мест хранения готовых блюд. Это связано с тем, что после приготовления блюда не сразу подаются в зал, а некоторое время хранятся в специальных шкафах. Размещение фотобоксов вдали от этих мест создало бы неудобства для персонала. В итоге мы пришли к выводу о необходимости отдельных фотобоксов для горячего и холодного цехов, а также для кондитерского отдела, каждый из которых должен располагаться рядом с соответствующим оборудованием.
В заключение хочу отметить, что этот проект был действительно сложным. Нам пришлось не только разработать саму систему, но и подготовить персонал к ее ежедневному использованию. Это потребовало времени, терпения и эффективной организации работы. Однако, когда система начинает работать слаженно, она предоставляет огромные преимущества, которые становятся очевидны всем участникам процесса.
Заключительные рекомендации
В завершение кейса хотим поделиться тремя ключевыми советами от нашего ведущего специалиста по разработке систем искусственного интеллекта. Эти рекомендации будут полезны всем, кто планирует внедрить ИИ в свой бизнес.
Чтоскрытоподкапотом?Давайтезаглянемвнутрь!
В этом разделе расскажем о том, что именно мы сделали для обеспечения корректного распознавания блюд.
Создание сервиса для подготовки данных для нейронной сети
Информация с каждого Фотобокса передается на облачный сервер и хранится в его базе, в то время как изображения сохраняются на отдельном S3-сервере (это сделано для экономии дискового пространства основного сервера).
Вышеупомянутая информация содержит в себе много дополнительных данных, в то время, как в нейронку должны быть отправлены только фотографии и названия блюд.
Для автоматизации процесса обработки данных и отправки только нужной информации, мы и разработали вышеупомянутый сервис.
Создание сервиса для определения блюд с использованием высокоточной нейронной сети.
Во время разработки ИИ мы столкнулись с рядом проблем:
- Низкая скорость определения блюд для некоторых устройств (до 4 секунд).
- Неудовлетворительное качество распознавания, так как в нейросеть поступало разное количество изображений.
- Помехи на фотографиях, так как на них могли попасть лишние предметы, лежащие рядом, что очень мешало распознаванию.
Для решения этих вопросов мы: - Экспериментально выбрали оптимальную сверточную сеть RESNET151. - Разработали функционал для динамической балансировки количества фотографий (датасетов), поступающих в нейронную сеть. - Создали инструменты для точной подготовки изображений: обрезка фото и наложение маски для определения границ блюда.
Результаты: - После оптимизации сверточной сети, балансировки датасетов и подготовки фотографий, время определения блюда сократилось до 1,5-2 секунд на микрокомпьютере Raspberry Pi. Для справки: на компьютере с GPU распознавание происходит практически мгновенно. - Качество распознавания улучшилось до 90-95%.
Для удобства настройки процесса обучения сверточной нейронной сети мы разработали веб-интерфейс. Изначально инструмент был доступен только через командную строку. Однако позже мы создали веб-версию, что значительно упростило и ускорило обучение модели, тестирование гипотез и изменения параметров.
Основные параметры, которые мы используем для обучения модели:

Создание функционала, который позволяет запускать все наши сервисы и утилиты для обучения модели одним нажатием кнопки в веб-приложении облачного сервера.
Ранее для запуска обучения модели требовалось выполнить множество последовательных действий, что было долго. Поэтому мы автоматизировали запуск с помощью специальных скриптов. Конечно, мы все тщательно протестировали, чтобы убедиться, что все запускается корректно.
Разработка системы доставки обновленных моделей
Мы создали механизм, позволяющий обновлять модели на фотобоксах. Учитывая, что моделей может быть множество, важно было обеспечить доставку только самой актуальной версии. Для этого мы разработали систему маркировки моделей, присваивая каждой временную метку создания. При получении обновлений фотобокс анализирует эти метки и загружает только самую свежую версию модели.
Оптимизация процесса машинного обучения
Оптимизация оказалось весьма сложной. Мы начали с определения нужного числа изображений для каждого блюда, необходимого для эффективного обучения нейронной сети. Затем мы сосредоточились на тонкой настройке параметров для максимального ускорения процесса распознавания. Первоначальные тесты показывали время обработки около 3-4 секунд, но после серии улучшений нам удалось сократить распознавание до 1,5-2 секунд. Теперь система молниеносно идентифицирует блюда, что значительно экономит время персонала.
Технологии
Кейсы,которымимыгордимся


