{"id":14278,"url":"\/distributions\/14278\/click?bit=1&hash=7bc8e2136891e57274bce79f3bfab82773b2810563794a524a98ce6dacee7a9c","title":"\u041f\u044f\u0442\u044c \u043a\u0435\u0439\u0441\u043e\u0432 \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u0433\u043e \u0432\u043d\u0435\u0434\u0440\u0435\u043d\u0438\u044f \u0418\u0418 ","buttonText":"","imageUuid":""}

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

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

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

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

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

Начнем!

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

Во-первых, нейронные сети отлично справляются с задачами распознавания в режиме реального времени и с высокой точностью. Также в 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 комментария
Написать комментарий...
Marat R Safi

Давно думаю над подобной системой «Кто не моет руки после туалета». Эта проблема более глобальна и опасна — надо знать, с кем здороваться, а чьих рукопожатий лучше избегать. Доработайте, пожалуйста.

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

Можно)

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