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

Вещи, использованные в этом проекте:

Аппаратные компоненты

Ардуино Мега 2560×1

Программные приложения и онлайн-сервисы

Нейтон Тайни МЛ

История

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

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

Метод, основанный на видении

Компьютерное зрение использует различные методы и подходы для идентификации объектов на цифровых изображениях, такие как R-CNN, Fast R-CNN, Faster R-CNN и YOLO, среди прочих. Процесс распознавания объектов довольно сложен и состоит из ряда связанных задач, включая классификацию изображений, локализацию объектов и обнаружение объектов.

Для лучшего понимания я прикрепляю пример распознавания изображений с использованием сверточной нейронной сети на основе регионов (R-CNN):

Однако такие технологии достаточно требовательны в использовании из-за следующих факторов:

  • Высокое потребление времени и энергии
  • Комплексное масштабирование систем компьютерного зрения
  • Использование сложных алгоритмов глубокого обучения, требующих участия специалистов по данным
  • Необходимость в большом количестве оборудования, такого как камеры видеонаблюдения
  • Высокие затраты на оборудование и человеческие ресурсы

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

Данные датчиков + алгоритмы TinyML

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

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

  • Полученная модель несравненно компактнее любой модели компьютерного зрения. А следовательно, технологии и аппаратное обеспечение для работы модели будут дешевле и потреблять меньше энергии и памяти.
  • Это экономично, так как я использую бесплатную платформу, а датчики стоят меньше, чем камеры.
  • Это требует минимальных затрат времени и энергии.

Обучение модели

Теперь позвольте мне перейти к пошаговой процедуре создания модели TinyML.

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

Для своего эксперимента я использовал набор данных Определение занятости с открытым исходным кодом, доступный в репозитории машинного обучения UCI: https://archive.ics.uci.edu/ml/datasets/Occupancy+Detection+

Для обучения модели я использовал бесплатную платформу без кода Neuton TinyML. Вот этапы процесса:

  • Я создал новое решение и загрузил набор данных для обучения, который я скачал из репозитория машинного обучения UCI.
  • Затем я выбрал целевую переменную «Цель» и целевую метрику «Точность».
  • Чтобы сделать действительно компактную модель, которая поместилась бы в самый маленький датчик, я включил режим TinyML и выбрал 8-битную глубину.

Это все, что мне нужно было для начала обучения моделей :)

Обученная модель получилась супер маленькой и точной по всем канонам TinyML. Забегая вперед, я также привожу в таблице общий размер и использование ОЗУ :)

Сразу отметим небольшое количество коэффициентов (всего 60!). И самое главное, на точность модели (а она составляет 98%) не влияет маленький размер, что просто фантастика!

Для чистоты эксперимента я хотел сравнить показатели модели Нейтона с моделью, построенной на одной из наиболее часто используемых платформ — TensorFlow Lite для микроконтроллеров. Но в отличие от Neuton, для TF Lite for Microcontrollers требуется 32-битная платформа, поэтому его невозможно развернуть на Arduino Mega 2560 с 8-битным микроконтроллером (ATmega2560).

Развертывание модели

Для развертывания модели сгенерируйте библиотеку C на платформе Neuton, нажав кнопку «Загрузить». Содержимое библиотеки включает в себя модель, набор функций, используемых для выполнения операций предварительной обработки, и набор функций, используемых логикой приложения для выполнения модели и чтения результатов прогнозирования.

Код доступен здесь: https://github.com/Neuton-tinyML/arduino-room-occupancy

Чтобы интегрировать библиотеку, выполните следующие действия:

  • Включить библиотеку
  • Объявить входную переменную и установить входные значения
  • Выполнить прогнозы

Поскольку я использую данные CSV в качестве входных данных, я отправлю 4 различных состояния (которые описываются значениями признаков) комнаты, чтобы определить ее занятость.

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

Звуковой сигнал на видео оповещает о том, что в помещении находится человек.

Я надеюсь, что мой учебник доказал, что вам не нужно быть гением компьютерного зрения, чтобы реализовать реальные проекты. Теперь вы знаете альтернативный способ определить занятость комнаты, используя возможности TinyML, который не требует больших затрат или усилий, просто бесплатная платформа без кода!