{"id":14275,"url":"\/distributions\/14275\/click?bit=1&hash=bccbaeb320d3784aa2d1badbee38ca8d11406e8938daaca7e74be177682eb28b","title":"\u041d\u0430 \u0447\u0451\u043c \u0437\u0430\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e\u0442 \u043f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u043e\u0434\u0430\u0432\u0446\u044b \u0430\u0432\u0442\u043e?","buttonText":"\u0423\u0437\u043d\u0430\u0442\u044c","imageUuid":"f72066c6-8459-501b-aea6-770cd3ac60a6"}

Кто не моет посуду? Ответили на этот вопрос с помощью машинного обучения

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

Идешь мыть посуду после обеда, а раковина завалена. Но мы же компания инженеров! Давайте создадим систему, которая будет определять, кто моет посуду, а кто нет.

Интерфейс веб-приложения

Для осуществления задуманного нам понадобились пара видеокамер и немного свободного времени.

Начнем!

Почему машинное обучение?

Во-первых, нейронные сети отлично справляются с задачами распознавания в режиме реального времени и с высокой точностью. Также в 2015 году в рамках соревнования ImageNet Large Scale Visual Recognition Challenge (ILSVRC) исследователи констатировали превосходство программ в определенных задачах проекта над человеческими способностями.

Но первым задокументированным случаем стала программа по распознаванию дорожных знаков, созданная специалистами компании Swiss AI Lab в 2011 году. В базе 50 тысяч изображений немецких дорожных указателей — она распознала 99,46% из них, что в два раза эффективнее человека. Сейчас подобные технологии активно развиваются и совершенствуются.

Во-вторых, мы с этим работаем. Мы перепробовали множество различных методов, и именно нейронные сети решали подобные задачи наиболее эффективно.

Что нужно для решения проблемы

Изначально нам нужно было понять, что потребуется для решения поставленной задачи.

  • Камера.

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

  • Алгоритм.

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

  • Датасет.

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

  • Время.

По порядку

Одну из камер мы подвесили над раковиной, чтобы видеть процесс мытья посуды, а вторую поставили возле неё, чтобы распознавать лица.

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

После настройки оборудования пришло время собирать датасет для обучения сети. По десять фотографий каждого сотрудника мы вытащили из социальной сети Instagram, еще по 190 — считали с кадров, сделанных IP-камерой, с помощью библиотеки алгоритмов компьютерного зрения OpenCV.

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

Для обнаружения лиц применили решение, которое с помощью открытой библиотеки TensorFlow реализует архитектуру MTCNN для обнаружения лиц.

Как работает MTCNN

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

Но обнаруживать и распознавать человека, который подошёл к раковине, — недостаточно. Он же мог просто руки помыть. Так что мы реализовали идентификатор «нагрузки» раковины, то есть как много в ней посуды — с помощью различных функций OpenCV.

Для определения процесса «мытье посуды» мы добавили к системе нейросеть Temporal Relation Network (TRN). Эта сеть, обрабатывая видеозапись, выделяет кадры с манипуляциями и создает из них несколько кластеров, которые позже сравнивает с известным ей видам манипуляций.

Как работает TRN

Чтобы все это завернуть в удобную и симпатичную обертку, сделали веб-приложение с помощью Flask, HTML, CSS, Javascript. Оно показывает, кто подходит и моет посуду. Вся информация об этом записывается в базу данных SQLite, поддерживаемую в нашем приложении с помощью библиотеки Peewee.

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

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

0
62 комментария
Написать комментарий...
Wilgelm Volman

Можно ссылку на Ваш проект?

Ответить
Развернуть ветку
Marina Glayboroda
Автор

Мы нигде его не выкладывали, так как проект экспериментальный)

Ответить
Развернуть ветку
59 комментариев
Раскрывать всегда