Автоматический заказ воды с помощью технологий ИИ

МЕНЮ


Искусственный интеллект
Поиск
Регистрация на сайте
Помощь проекту

ТЕМЫ


Новости ИИРазработка ИИВнедрение ИИРабота разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика

Авторизация



RSS


RSS новости


Занимаясь разработкой различных приложений с использованием технологий ИИ хочется поэкспериментировать с автоматизацией собственного офиса. Мы попробовали определить, кто чаще моет посуду, и нам это удалось. Теперь, может, автоматизировать процесс заказа воды в офис?

Сейчас у нас нет офис-менеджера, и бывают дни, когда «ответственный» за доставку может забыть её заказать ввиду более важных на этот период рабочих дел. Впоследствии мы страдаем, так как даже чаю попить невозможно.

А вода из-под крана с фильтром абсолютно непригодна для употребления. Ну и конечно, хочется в очередной раз посмотреть на технологии в деле.

Подумали об осуществлении, прикинули затраченное время и приступили.

Какие технологии пригодятся

Для автоматизации доставки нам необходимо решить две задачи: определить, когда заканчивается вода, и, собственно, сделать заказ на доставку.

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

Вторую задачу мы решим с помощью бота. Чтобы в офис привезли воду, нужно позвонить в службу и пообщаться с оператором. Он или она задаст перечень стандартных вопросов несмотря на уже имеющуюся у них информацию о нас, которая подтягивается по номеру телефона.

Схематично весь процесс заказа выглядит так:

На практике все немного сложнее. Разберем.

Computer Vision, чтобы определить пустые бутылки

Для определения пустых бутылок мы взяли YOLO 3: Real-Time Object Detection. You only look once (YOLO) — это нейронная сеть для обнаружения объектов в режиме реального времени, написанная на языке C. Работает она достаточно точно и быстро: на видеокарте Pascal Titan X обработка изображений происходит при кадровой частоте 30 FPS и имеет mAP 57,9% на COCO test-dev. Также сеть не требует огромного датасета для обучения.

Рабочая поверхность для сетки выглядит следующим образом.

Где и как крепить камеру придумали быстро. Сбоку, на полке, чтобы захватить все стоящие бутылки, и незамысловатый крепеж с помощью изоленты (к сожалению, синей не было, а так бы прикрепили на века).

Сперва мы сделали обучающий набор из 14 размеченных картинок, где на каждом изображении меняли положение пустых и полных бутылок. Но что-то пошло не так, и сеть научилась определять полными только те бутылки, на которых был пакет, вместо того, чтобы анализировать по крышке.

Вот так выглядит разница между крышками пустой и полной бутылок
Результат работы сети на датасете из 14 картинок. Указанные на изображении дата и время являются некорректными

Мы расширили датасет до 42 изображений, меняя положение бутылей, освещение и наличие пакетов. Один час обучения сети — и она показала хороший результат:

Результат работы сети на датасете из 42 картинок. Указанные на изображении дата и время являются некорректными

Когда нейросеть определяет, что количество пустых бутылок равно пяти, а полных ноль, то автоматически запускается вторая часть проекта — бот.

Natural Language Processing, чтобы поговорить с оператором

Что пригодится, если звонить и вести диалог с оператором будет не человек? Технология NLP, она же «обработка естественной речи». Здесь нам пригодился наш прошлый проект — Pizza Bot.

Для обработки речи мы попробовали три сервиса: Google Cloud Speech-to-Text, Amazon Transcribe и Yandex SpeechKit. С каждым из них можно реализовать два варианта обработки аудио и перевода его в текст.

Первый заключается в настройке потоковой передачи данных: отправить сервису аудиозапись по частям, обратно получить текст также по частям.

Второй вариант — отправить аудиофайл целиком, обратно получить целый распознанный текст. Но при таком подходе необходимо самостоятельно отслеживать тишину, чтобы понимать, когда оператор закончил фразу и бот уже может ответить.

Для этого можно сравнивать абсолютные величины амплитуд звука. Если оператор что-то говорит, а затем идет тишина и продолжается 0,5 секунд, то считать фразу законченной и отправлять её на обработку.

Мы выбрали первый вариант и использовали облачное решение Google Cloud Speech-to-Text, которое распознает человеческую речь в режиме реального времени, и переводит её в текст. Также API умеет извлекать из слов смысл и анализировать контекст.

Когда бот получил фразу, системе необходимо её обработать и принять решение, что ответить. За обработку у нас отвечает сервис Dialogflow, а за озвучивание принятого решения — технология Text-to-Speech, которая преобразовывает текст в речь. Мы использовали сервис Google Cloud Text-to-Speech, включающий в себя множество естественно звучащих голосов для различных языков.

Диалог бота и оператора службы доставки воды

В заключение

Такое решение легко масштабируется. Его можно настроить под любую необходимую задачу, так как CV и NLP на сегодняшний день многое уже умеют. Мы вот с их помощью автоматизировали процесс заказа воды в офис.


Источник: vc.ru

Комментарии: