iPhone 13 Pro уже в продаже
Пространство возможностей
ООО «Портативная техника», юр.адрес: 190031, Санкт-Петербург, наб. реки Фонтанки, д.109, литер А, пом. 13Н, ОГРН № 1057811930296
Machine learning
Marina Glayboroda

Нейробармен из Raspberry Pi с использованием нейронных сетей

Мы компания Hey Machine Learning. И мы продолжаем всячески автоматизировать наш офис. У нас уже и вода заказывается, и известно, кем моется посуда. Но наступило лето, вместе с ним и корпоративы. Что бы кто ни говорил, но отдых — важная часть рабочего процесса. И если «делу время, а потехе час», то давайте автоматизируем этот час.

Раньше мы использовали только камеры и алгоритмы, но в этом проекте решили пойти дальше и добавили микрокомпьютер Raspberry Pi 3 Model B.

Мы сконструировали автономное устройство, которое с помощью компьютерного зрения умеет распознавать лица и жесты «палец вверх» и «палец вниз», а также запоминать пользователей.

Используя рекомендательную систему на основе лайка и дизлайка, мы наделили устройство способностью составлять персонализированную карту коктейлей, а с помощью микрокомпьютера и дополнительных деталей — наливать эти коктейли.

В итоге у нас получился офисный робот-бармен, которого мы назвали Бендер.

Бендер

А теперь подробно о том, как мы это сделали.

Железо Бендера

Чтобы собрать нашего мини-робота, мы купили несколько необходимых деталей:

Необходимые детали

Из всего этого следует выделить микрокомпьютер Raspberry Pi 3 Model B. Он был представлен в феврале 2016 года, это самая ранняя модель Raspberry Pi третьего поколения.

Одноплатный компьютер версии Pi 3 B оснащен ARM-процессором Broadcom BCM2837. Устройство имеет 1 ГБ оперативной памяти, разъемы HDMI и Ethernet, четыре USB-порта, а также встроенный модуль беспроводной связи Wi-Fi и Bluetooth.

Четырехъядерного процессора достаточно для создания различных электронных устройств: от радиоприемников и медиаплееров до роботов и «умных» домов.

Основные элементы платы Raspberry Pi 3 Model B

Raspberry Pi 3 — мощное устройство, но его ресурсов недостаточно для всех нейросетевых вычислений. Поэтому мы ускорили его с помощью Intel Movidius Neural Compute Stick.

Movidius NCS очень похож на USB-флешку и предназначен для ускорения и облегчения разработки решений, связанных с искусственным интеллектом, нейронными сетями и глубоким обучением.

Устройство оборудовано процессором Vision Processing Unit (VPU) Myriad 2, который обладает производительностью 100 гигафлопс и энергопотреблением 1 Вт. Такие характеристики позволяют Movidius работать полностью автономно, без доступа к интернету и облачным сервисам.

Для распознавания лиц и жестов мы использовали оригинальную камеру Raspberry Pi Camera Module V2, оснащенную 8-мегапиксельной матрицей Sony IMX219. Устройство имеет фиксированный фокус и позволяет записывать видео в трёх режимах: 1080p30, 720p60 и VGA90.

Raspberry Pi Camera Module V2

Чтобы определять наличие стакана в устройстве и активировать систему, встроили ультразвуковой дальномер HC-SR04. Он определяет расстояние до объектов, генерируя звуковые импульсы на частоте 40 кГц и слушая эхо.

Ultrasonic sensor HC-SR04

Программная часть Бендера

Что касается возможностей робобармена — тоже по порядку.

Компьютерное зрение

Мы сфокусировали проект на создании персонализированной карты коктейлей для каждого сотрудника, а также на приготовлении этих напитков. Чтобы так было, необходимо знать, кто в данный момент заказывает коктейль и делал ли он заказ ранее.

Это значит, что нам не обойтись без компьютерного зрения. Технологию распознавания лиц мы уже использовали в проекте с мытьем посуды, и эти наработки нам пригодились в создании Бендера.

Чтобы работать с Movidius, мы взяли открытую библиотеку компьютерного зрения OpenCV и фреймворк OpenVINO с модулями dnn и dldt, предназначенных для работы с нейросетями.

Для рекомендательной системы также необходимо распознавать жесты лайка и дизлайка. С этой целью мы создали систему на основе компактной нейронной сети для обнаружения объектов Tiny-YOLO 3, которая умеет распознавать жесты «палец вверх» и «палец вниз». Проект получил название Rate Me и доступен для скачивания с GitHub.

Сеть для Rate Me тренировали с помощью фреймворка Darknet на 3000 размеченных в LabelImg изображениях. Также, чтобы запустить алгоритм на языке программирования Python, мы использовали DNN-модуль библиотеки OpenCV.

В итоге решение имеет mAP = 85,19%, среднее IoU = 73,89% и работает со скоростью 6–7 FPS на процессоре Intel Core TM i5-4300M при частоте 2.60 ГГц.

Именно на основе оценок пользователя «лайк» и «дизлайк» система составляет персональную карту коктейлей.

Следует также отметить, что мини-бармен постоянно считывает кадры с камеры. Каждое изображение прогоняется через модифицированную нейросеть SqueezeNet, которую мы решили использовать из-за заявленной высокой точности распознавания.

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

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

Когда мини-бармен видит человека, не показывающего никаких жестов, и распознает этого человека, он должен ему приготовить коктейль. Но прежде чем наливать что-то, нужно проверить наличие стакана на необходимой позиции. Это мы делаем с помощью ультразвукового дальномера HC-SR04.

Если стакан на месте, тогда система передает данные рекомендательной системе, которая и выбирает релевантный коктейль. Потом устройство его готовит и ждет оценку.

Рекомендательная система

Рекомендательная система (РС) — это алгоритм, который на основе данных о пользователе подбирает наиболее релевантные для него товары и услуги, а в нашем случае — алкогольные коктейли. Обычно в РС используют один из двух подходов: коллаборативную фильтрацию или рекомендации на основе контента.

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

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

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

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

Данные пользователя

Рекомендации для пользователя

Еще важный момент. Количество бутылок в устройстве ограничено. Чтобы создать карту, необходимо знать, какие конкретно коктейли делать. Распарсив сайт TheCocktailDB, мы получили датасет из 578 различных напитков. Теперь его необходимо почистить и привести в требуемый вид.

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

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

Полностью проработав данные, мы выбрали те коктейли, в которых совпадение алкогольных напитков максимальное. В нашем боте восемь позиций для бутылок: их заняли биттер, ром, джин, бурбон, вермут, Coca-Cola, апельсиновый сок и тоник. Из такого сета, с добавлением различных нельющихся компонентов, можно создать 57 коктейлей. Для начала достаточно.

Также в полученном мини-датасете мы привели все пропорции к миллилитрам, так как в изначальном наборе присутствовали такие меры, как галлон, унция, американская столовая ложка и прочее.

Часть итогового датасета

Результат

С тем, как работает Бендер, можно ознакомится в видеоролике ниже.

{ "author_name": "Marina Glayboroda", "author_type": "self", "tags": ["python","ml","machinelearning","cv","camera","ai"], "comments": 22, "likes": 37, "favorites": 50, "is_advertisement": false, "subsite_label": "ml", "id": 75910, "is_wide": true, "is_ugc": true, "date": "Thu, 18 Jul 2019 19:47:58 +0300", "is_special": false }
0
22 комментария
Популярные
По порядку
Написать комментарий...

Кайф. Люблю, когда в ML и CV врывается синяя изолента и нужно спаять MVP на макетной плате. Не останавливайтесь!

4

Только вперёд 🙃

0

И да, раздел «Разработка» по дефолту у всех выключен, поэтому тут просмотров будет мало. Чтобы люди увидели, лучше писать в популярные разделы, тем более тут не столько про программирование.

0

А в какие конкретно, вы считаете, лучше публиковать? Заранее спасибо!) ред.

0

Технически отлично заморочились, ещё бы внешний вид причесать :)

2

Спасибо!)
Но главное же то, что внутри!)))) А снаружи улучшить всегда можно)

2

Спасибо. Это прекрасно :)

2

Спасибо))

0

Можно такой же заказать для Лонг Айленда?

2

Да, конечно)))

0

Добрый день. А можете поподробнее рассказать как берете разный алкоголь из разных бутылок и отправляете его в насос?

1
Местный Орзэмэс

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

1

Не заметил. Спасибо.

0

Если немного подробнее, то внутри коробки стоит восемь насосов — по штуке на бутылку. Насосы подключены к реле, которым управляет Raspberry Pi. Микрокомпьютер через реле включает насосы, каждый из которых соответствует необходимой по рецепту бутылке, на определённое время, за которое успевает прокачаться нужное количество миллилитров с бутылки.

1

Комментарий удален по просьбе пользователя

1

Спасибо!

1

Это круто! Вдохновили на изучение Raspberry, тоже хочу такого бармена но без распознавания, я в семье один пьяница. Да и круто было бы управлять им с мобилы, еще бы как-то решить проблему с добавлением льда.

1

Спасибо за отзыв! Приконектить систему к смартфону легко, а вот со льдом - чуть сложнее, но тоже возможно)

0

Спасибо за интереснейший кейс.
Опубликовал на форуме https://armpc.ru/f про одноплатные компьютеры.

1
Читать все 22 комментария
Aviasales запустил «Короче» — карты с обзорами городов и контактами местных гидов и фотографов Статьи редакции

В сервисе уже есть 49 российских и зарубежных городов.

«Короче» добавили в приложениях и на сайте Aviasales. Если в городе есть сервис, он появится рядом с выдачей билетов Aviasales
Разворотная фигура Бриллиант в техническом анализе

Фигуру «Бриллиант» (с англ. – «Diamond») называют также «Кристалл», «Алмаз», «Ромб». Формация состоит из двух конфигураций — расходящегося и симметричного (сходящегося) треугольников. Этот паттерн в теории служит сигналом для смены тренда или как минимум коррекцией в средне- или долгосрочном движении актива.

Батарея, камера, но не экран: обзор iPhone 13 и iPhone 13 mini Статьи редакции
Как охватить 98% сотрудников кадровым электронным документооборотом

Кейс Альфа-Лизинга и EasyDocs

Сделай сам: котик манеки-неко, который сделает бэкап в облако

Сопровождаем сохранение резервных копий протяжным «мяу».

Электричество из солёной воды, «напечатанные» дома и беговые приборы для незрячих — лидеры премии Innovation by Design Статьи редакции

А также светодиодные системы для роста сельскохозяйственных культур и браслеты с «тревожной» кнопкой для женщин. Эти и другие инновационные проекты наградило издание Fast Company.

Двойная польза: Премия HR-бренд и Рейтинг работодателей — в чем разница и зачем участвовать в обоих проектах

Какой компании не хочется, чтобы ее считали работодателем мечты? Пусть лучшие кандидаты делают выбор в вашу пользу, а конкуренты ломают голову — что с ними не так. Продемонстрировать силу своего HR-бренда компаниям уже более 10 лет помогает hh.ru: ежегодно мы проводим Рейтинг работодателей России и Премию HR-бренд. И как показывает анализ…

Whoosh, Urent и «Яндекс Go» нашли злоумышленников, которые повредили 800 электросамокатов в Москве Статьи редакции

Они отделались выплатой компенсации.

Облажались с аудиторией и производством в Китае, но вышли на 55 млн рублей за 2020 год: история ошибок компании Atmeex

Мы начали производить и продавать приборы по очищению воздуха в конце 2019 года. Первое время всё шло наперекосяк, но мы переосмыслили все процессы и за год увеличили выручку в 2 раза.

В отдельном помещении мы тестируем устройства на брак
«Дочка» Volvo по производству электромобилей выйдет на биржу через слияние со SPAC-компанией при оценке в $21 млрд — WSJ Статьи редакции

Действующие акционеры смогут получить $250 млн после сделки.

Polestar 2 Polestar
«Ситимобил» снял 5547 рублей за поездку в 36 км по городу

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

null