Кто не моет посуду? Ответили на этот вопрос с помощью машинного обучения
Мы компания, которая занимается разработкой приложений в сфере искусственного интеллекта и машинного обучения. Наши инженеры ежедневно пишут сотни строчек кода, создают различные решения и приложения, решая чужие проблемы. Вот только тарелку за собой помыть не могут.
Идешь мыть посуду после обеда, а раковина завалена. Но мы же компания инженеров! Давайте создадим систему, которая будет определять, кто моет посуду, а кто нет.
Для осуществления задуманного нам понадобились пара видеокамер и немного свободного времени.
Начнем!
Почему машинное обучение?
Во-первых, нейронные сети отлично справляются с задачами распознавания в режиме реального времени и с высокой точностью. Также в 2015 году в рамках соревнования ImageNet Large Scale Visual Recognition Challenge (ILSVRC) исследователи констатировали превосходство программ в определенных задачах проекта над человеческими способностями.
Но первым задокументированным случаем стала программа по распознаванию дорожных знаков, созданная специалистами компании Swiss AI Lab в 2011 году. В базе 50 тысяч изображений немецких дорожных указателей — она распознала 99,46% из них, что в два раза эффективнее человека. Сейчас подобные технологии активно развиваются и совершенствуются.
Во-вторых, мы с этим работаем. Мы перепробовали множество различных методов, и именно нейронные сети решали подобные задачи наиболее эффективно.
Что нужно для решения проблемы
Изначально нам нужно было понять, что потребуется для решения поставленной задачи.
- Камера.
Мы купили две китайские камеры: первую, чтобы распознавать лица, и вторую, чтобы следить за тем, что происходит в раковине.
- Алгоритм.
Как понять, кто моет посуду, а кто нет? Создать систему, которая распознает человека, взаимодействующего в определённое время с посудой возле раковины. То, что решение будет базироваться на нейронных сетях, — было очевидно.
- Датасет.
Чтобы обучить алгоритм, необходимо собрать множество портретных фотографий каждого сотрудника с разных ракурсов. Набор данных мы взяли из социальных сетей, а также посредством считывания снятых кадров с помощью OpenCV.
- Время.
По порядку
Одну из камер мы подвесили над раковиной, чтобы видеть процесс мытья посуды, а вторую поставили возле неё, чтобы распознавать лица.
Кстати, был забавный случай. Однажды мы обнаружили пластиковый стаканчик на камере. Оказалось, наша уборщица подумала, что за ней следят — и прикрыла её.
После настройки оборудования пришло время собирать датасет для обучения сети. По десять фотографий каждого сотрудника мы вытащили из социальной сети Instagram, еще по 190 — считали с кадров, сделанных IP-камерой, с помощью библиотеки алгоритмов компьютерного зрения OpenCV.
Использовали эту библиотеку потому, что она открыта, её можно бесплатно использовать как в учебных, так и коммерческих целях. Итого для распознавания каждого сотрудника у нас было по 200 их фотографий для обучения.
Для обнаружения лиц применили решение, которое с помощью открытой библиотеки TensorFlow реализует архитектуру MTCNN для обнаружения лиц.
На основе собранного датасета мы с помощью ResNet извлекли уникальные наборы характерных признаков лиц. Полученные данные использовались для обучения SVMs, который впоследствии классифицировал людей, моющих посуду.
Но обнаруживать и распознавать человека, который подошёл к раковине, — недостаточно. Он же мог просто руки помыть. Так что мы реализовали идентификатор «нагрузки» раковины, то есть как много в ней посуды — с помощью различных функций OpenCV.
Для определения процесса «мытье посуды» мы добавили к системе нейросеть Temporal Relation Network (TRN). Эта сеть, обрабатывая видеозапись, выделяет кадры с манипуляциями и создает из них несколько кластеров, которые позже сравнивает с известным ей видам манипуляций.
Чтобы все это завернуть в удобную и симпатичную обертку, сделали веб-приложение с помощью Flask, HTML, CSS, Javascript. Оно показывает, кто подходит и моет посуду. Вся информация об этом записывается в базу данных SQLite, поддерживаемую в нашем приложении с помощью библиотеки Peewee.
В результате мы получили систему, которая в режиме реального времени распознает человека, моющего посуду, и записывает данные в базу. Изменив идентификаторы объектов, можно изменить и предназначение программы.
Теперь мы задумываемся над тем, чтобы смотреть за количеством воды в кулере и — в случае её полного использования — автоматически заказывать воду в офис посредством голосового бота.
Ну Вы мастера гвозди микроскопами забивать!
Не ищем легких путей 😏
Добрый день, подскажите для "нешарищего", где в России обучают нейросети, кроме Яндекса и geekbran'a, имеются ли факультеты
Я свою нейросеть обучаю дома
Может проще было посудомойку купить, а не мучать сотрудников? Но нет, мы лучше эксперименты будем ставить как в зоопарке.
У нас на кухне есть 2 посудомоечные машины, но эти ленивые задницы не могут посуду туда убрать (запускает специально обученный профессионал). В результате раковина битком.
ну конечно - эксперименты же нужно сразу ставить на платящих клиентах!
У нас была посудомоечная машина. Только стояла, судя по всему, для красоты и заполненности кухонного пространства)
Развиваем идею дальше и определяем, кто сколько пьет воды и кулера.
Я знаю одного владельца жёлтого банка, который мог бы такую систему купить))
Это хорошая идея, смотреть кто сколько пьет воды. Если смотреть со стороны ЗОЖ, например. Поддерживает ли человек свой водный баланс)
можете попробовать кто не поднимает сиденье унитаза тоже!
Чтобы распознават этого человека, необходимо установить камеры в WC. Этого делать нельзя)
Творческий подход!
У нас до этого не дошло-частично перешли на одноразовую посуду и немного повысили зарплату уборшице за наведение порядка на кухне...)
Одноразовую посуду?
Что же вы об экологии не заботитесь, сволочи?
Спасибо)
Уборщица убирает на кухне, вот только два раза в неделю. А что делать в остальные три дня?) Количество посуды лимитировано, а одноразовая - не то)
Вот кто у меня дома посуду не моет.
Тот, кому лень)
Давно думаю над подобной системой «Кто не моет руки после туалета». Эта проблема более глобальна и опасна — надо знать, с кем здороваться, а чьих рукопожатий лучше избегать. Доработайте, пожалуйста.
Можно)
Марина, нам нужно объединить наши технологии!
https://vc.ru/flood/21878-lunch-traffic-jams
Мы можем это обсудить)
Но вы же действительно следите! Сотрудники-то хоть в курсе?
Уборщица приходит только когда офис пуст. В это время камера отключена. Сотрудники конечно все в курсе
Можно ссылку на Ваш проект?
Мы нигде его не выкладывали, так как проект экспериментальный)
Класс!
Спасибо)
Круто придумали!
Умные тут собрались, критики херовы))) Ребята набираются практического опыта.
Да, мы выбрали именно практику в качестве двигателя прогресса)
хаха, крутая тема) было бы интересно такое применить в общагах например или каких-то коммунах
блин молодцы.
надо тоже какую-нибудь херню такую сделать для тренинга
Если прикинуть (это все не точно, а imho, и вообще чужие деньги считать не хорошо ...):
1) время и зп 2х сотрудников: при средней зп 80К, 5 дней: 80/4*2 = 40К руб
2) стоимость камер: 7К + 1.5К = 8.5К
3) стоимостью софта, эл-ва, серверов и налогами наверное можно пренебречь
4) опыт бесценен ))
Итого: 48.5К руб.
А могли бы хорошую посодомойку купить. :)
Это не точно)
А что за компания ?
Hey Machine Learning )
Комментарий удален модератором
Не очень понял как работает веб приложение и что показывает. После кластеризации полученной информации делается база данных, которую использует веб приложение и показывает статистику?
И в режиме реального времени с помощью каких технологий?
Да, результаты работы алогритмов пишутся в JSON. Web App тянет инфу из этого JSON и раз в секунду дает информацию о том, что происходит возле раковины)
Так, а кто посуду не моет? Самое главное то забыли
Один из нас)
Ваша система поможет разрушить нерациональные отношения. Так держать!
Так покажете кто её не моет?)
Так, а готовое решение где можно взять? Так, чтобы пару кнопок нажать, подключить камеры и все заработало?
Могли бы тогда уж собрать робота для автоматического мытья посуды. С обучением на плотность загрязнение и выбор оптимального способа, учитывать расход воды и моющего средства. Это в итоге привело бы к экономии времени сотрудника на мытье посуды, уменьшило неоптимальный расход воды.
А не искать виноватых, кто оставил посуду.
P.S. ну в крайнем случае, организовать автоматическую доставку грязной посуды в посудомоечную машину. Тут еще алгоритм расстановки тарелок и кастрюль.