Jeremy B. Merrill использовал Raspberry Pi и силу машинного обучения для создания автоматической системы Squirrel Soaker 9000, которая предназначена для отпугивания белок от кормушки для птиц.
Автора очень злило, что весь корм из его кормушки для птиц съедали белки. Поэтому, он построил автоматическую систему («робота»), которая использует систему компьютерного зрения, чтобы распознать — есть ли белка у кормушки, и если белка детектируется, то система брызгает на неё водой из садового шланга.
Как это работает?
Сама система построена на одноплатном компьютере Raspberry Pi, к которому подключён модуль камеры.
Каждые тридцать секунд программа на Python делает снимок.
Это изображение отправляется на сервис AWS Lambda, на котором выполняется классификация фотографии в соответствии с моделью fast.ai, которая обучена определять — есть ли белка на картинке или нет.
Если модель определяет, что белка есть, то: включается запись видео (для будущего веселья) и
отправляется сигнал на MOSFET, который на несколько секунд включает питание 12В электромагнитного клапана, управляющего садовым опрыскивателем, направленным на кормушку.
Для обучения классификатора — автор создал собственные тренировочные данные, делая снимки из окна каждую минуту в течение нескольких дней. Полученные фотографии он отсортировал по папкам «белка» и «не белка». А затем обучил модель машинного обучения используя Fastai (это потребовало всего 13 строк кода) и примерно 45 минут в Google Colab.
Сама программа на Python — это простой скрипт с циклом while, который в светлое время суток каждые тридцать секунд делает снимок, отправляет его модели и, если уверенность модели в том, что на фотографии есть белка, превышает 70%, то снимок сохраняется для будущего анализа, время записывается в базу данных, включается запись видео, а затем открывается соленоид.
Так же на Raspberry есть приложение на Flask, которое показывает самую последнюю фотографию и кнопку для ручного управления соленоидом.
Точность распознавания составила около 86.6%. Это означает, что если Squirrel Soaker 9000 включает опрыскиватель, то в 86.6% % случаев на кормушке присутствует белка, а в 13.4% случаев -что-то другое (обычно — птицы, но может быть и сам автор).
Автор рассчитал точность работы на основе 15-дневной выборки из 321 случаях срабатывания, из которых 43 были ошибочными.
Автор отмечает, что Squirrel Soaker 9000 действительно работает и количество белок у кормушки уменьшилось с тех пор, он активировал данного робота, хотя и не так значительно, как он надеялся.
На зимнее время — систему пришлось отключить, чтобы избежать замерзания воды в шлангах.
Ссылки
Squirrel Soaker 9000: Protecting the Birdfeeder with Artificial Intelligence
[P] I built a robot to protect my birdfeeder from squirrels using computer vision
fast.ai
Руководства по разворачиванию обученной модели на AWS Lambda:
Using container images to run PyTorch models in AWS Lambda
Handling binary data using Amazon API Gateway HTTP APIs
По теме
Система компьютерного зрения отслеживает собачьи фекалии
Использование свёрточной сети на Raspberry Pi для подсчёта пчёл
Сортировщик огурцов на Arduino, Raspberry Pi 3 и TensorFlow
Проблемы применения машинного обучения для решения реальных задач