Обнаруживайте добычу вашей кошки с Raspberry Pi и TPU Google Coral Edge

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

В течение нескольких месяцев две наши кошки на природе носили по ночам мертвых, живых и частично живых мышей. Мертвая добыча, найденная на ковре утром, быстро прокатилась по керамическому метро в нашей ванной, это было не так уж важно. Что меня больше всего поразило, так это ловкость живых существ. Некоторые пытались устроиться под нашей кушеткой. Мне и моей жене Лизе потребовалось в среднем 45 минут, чтобы найти и выгнать этих маленьких грызунов из дома. Наши кошки начали набирать очки в четыре мыши за ночь, и наши кошки совершенно не осознавали нашу тревогу по поводу увеличения количества грызунов, обнаруживаемых в нашей гостиной. Похоже, они считали это необходимым упражнением для тренировки наших бедных навыков охоты на мышей и с удовольствием доставляли нам все больше и больше «подарков» каждую ночь. Непрошеные соседи по комнате оставили пятна мочи на нашем паркетном полу и съели части нашей скатерти, готовясь к новому долгому пребыванию внутри нашей гостиной. Солома, которая сломала спину верблюда, возникла, когда грызун начал грызть дыры в мешках с кошачьим кормом.

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

Хотя я не считаю себя ботаником, Лиза заметила, что я посвятил (по ее словам) «непропорционально много времени техническим поискам, чтобы разработать решение». План по созданию более умной откидной створки для кошек, которая предотвращает нежелательные подарки кошек, превратился в «idée fixe», который вызвал приглушенную улыбку от моей жены.

Мой второй подход включал Raspberry Pi 4 Model B, датчик движения и инфракрасную камеру. В течение четырех месяцев я отобрал 1532 изображения наших кошек, входящих в окно нашего подвала, в ночном видении и загрузил эти изображения в корзину AWS S3. 415 из 1532 изображений были изображениями с добычей. Я создал мобильное приложение, которое отображало уведомления, когда кошка входила в дом, и позволяло мне маркировать изображения «с добычей» и «без добычи».

Я использовал YOLO для обучения модели обнаружения объектов и запустил API кошачьих откидных створок, который был реконструирован rcastberg. Обнаружение объекта заняло ок. 2–3 секунды, кроме того, мне нужно было учесть продолжительность вызова API откидной створки кошки, который занял c. 2–12 секунд. Кошка спустится в окно подвала занимает ок. пять секунд. Перенос обнаружения объектов на пограничный TPU на основе Google Coral с TFLite MobileNet V1 SSD сократил время вывода до 7 мс и помог собрать достаточно данных для расчета оценки обнаружения жертвы с очень хорошей точностью прогнозирования. Однако 8 из 10 обнаружений привели к блокировке дверцы кошки после того, как кошка уже прошла через нее. По крайней мере, теперь я знал, когда начинать охоту на мышей.

Я попытался сократить задержку с помощью обхода службы API откидной створки для кошек. Затем я попытался подключить свою Raspberry к лючку для кошек через ZigBee. Это был проприетарный зашифрованный протокол. Я видел на Github, что куча экспертов (определенно не ботаников) продолжают ломать голову над этим вопросом. Если кто-то из Sure Petcare прочитает это: ваш продукт потрясающий, мне нравится мобильное приложение, мне бы хотелось иметь способ локально общаться с Connect Hub с помощью документации API.

Я решил пойти по легкому пути и припаял реле к кнопке блокировки кошачьей квартиры. Это сократило время блокировки до менее 1 секунды. Тада!

Все это преследование было непрерывным процессом, который занял более семи месяцев. Исходный код для создания и запуска модели на вашем Raspberry доступен на Github.