Дайте собачке погулять: автоматическое открытие двери при помощи Raspberry Pi

Автор оригинала: Ryder Damen
  • Перевод

Работа дома — хороший вариант для многих из нас. Можно больше времени проводить с семьей (хотя бы теоретически), включая питомцев. Мой офис находится на втором этаже, так что я не всегда замечаю, когда собака хочет погулять. Конечно, можно поставить звонок и научить ее звонить, чтобы понимать, когда выпускать животное наружу. Но зачем, если можно придумать over-engineered решение? Технологий никогда не бывает много.

В этом проекте используется машинное обучение, а именно обнаружение объектов. К счастью, даже если вы не слишком хорошо в нем разбираетесь, это ОЧЕНЬ простой проект для старта. Его основа — уже обученная нейросеть, так что не придется тратить часы на то, чтобы получить сотни изображений, а потом обучать на их основе нейросеть.

Что нужно для старта


  • Raspberry Pi 4 или Raspberry Pi 3 с источником питания.
  • Карта памяти объемом в 8 ГБ или больше с Raspberry Pi OS.
  • Raspberry Pi камера и кабель для обнаружения объектов.
  • Модуль широкоугольного объектива для «малинки». Ну или любой другой модуль камеры, который может вам понадобиться — все зависит от того, на каком расстоянии от двери будет установлена эта камера.
  • Динамики с 3,5 мм штекером. Можно использовать и мегафон — было бы желание.
  • Монитор и клавиатура (по желанию) с HDMI и набором кабелей.

Как определить, когда питомец хочет на улицу при помощи «малинки»


1. Настройте Raspberry Pi. Если не знаете как это сделать, вот туториал.

2. Подключите камеру к «малинке».

3. Активируйте камеру при помощи raspi-config. Для этого необходимо зайти под администратором и перейти к Interface Options > P1 Camera.

4. Перезагрузка.


5. Тестируем фокус камеры при помощи команд, указанных ниже. Понятно, что картинка видна только если монитор подключен к ПК. Если используется headless версия rasbian, то нужно использовать scp для отправки изображения на компьютер.

raspistill -o /home/pi/focus.jpg

6. Ставим git. Для загрузки кода и скриптов из удаленного репозитория нужен git (мануал ну очень подробно разжеван, чтобы его могли использовать даже зеленые новички — прим. Переводчика).

sudo apt-get update && sudo apt-get -y install git

7. Клонируем репозиторй с нужным кодом в собственную директорию.

cd ~/
git clone github.com/rydercalmdown/pet_detector


8. Устанавливаем зависимости, виртуальное окружение и python зависимости.

cd ~/pet_detector
make install


9. Загружаем заранее обученные модели. В проекте используется модель YOLOv3, обученная на дата-сете COCO. Модель умеет распознавать практически любые объекты в доме и квартире — включая котов и собак.

10. Подключаем динамики. Они нужны для проигрывания звука, который укажет на то, что питомец находится в зоне действия камеры. Для тестирования динамиков используем команду

say “this is a test”


11. Редактируем файл /etc/rc.local для запуска скрипта. Сначала нужно открыть файл при помощи команды sudo nano /etc/rc.local, а затем добавить вот эту строку.

source /home/pi/pet_detector/env/bin/activate && cd /home/pi/pet_detector/src && python app.py &

12. Направляем камеру на дверь. Конечно, если собака или кошка мечутся по квартире, такая настройка не очень помогает. Но если питомец садится и терпеливо ждет — то все работает идеально.


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

Selectel
IT-инфраструктура для бизнеса

Комментарии 15

    0
    Ryder Damen молодец!
    Надо будет сделать с ребятами из КЮТа.
    Сейчас используется RFID (из магазина обуви) + считыватель + электромагнит. Плюс, что ходить не надо. Калитка в двери сама открывается для кота.
      0
      Рекомендую распознавание лиц. Как по мне гораздо веселее натренировать raspberry pi распознавать свое лицо, чем просто объект на видео. Интересней еще и тем, что raspberry pi нужно сначала обучить это делать. К счастью делается это не сложно с помощью всего одной фотографии и не требует большой вычислительной мощности. Ребятам из КЮТа точно понравится.
        0
        Уже в процессе. Приделаем к коктейль автомату.
      0

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

        0
        Вот тут читается фрейм с камеры. Но VideoStream imutils также умеет читать фрейм и из rtsp. Примерно так:
        rtsp = "rtsp://login:pass@ip:port/query"
        vs = VideoStream(src=rtsp).start()
        0
        интересно можно ли СОСО датасет на кошек загрузить отдельно? или все равно надо тащить все изображения с кошками…
          0
          А где вы видите изображения с кошками?) Там только обученные модели, изображения тащить не надо, их там вообще нет. Еще одна хорошая новость, сеть умеет распознавать не только кошек и собак
            0
            я имел ввиду images and annotations c cocodataset.org/#download
            мне нужно детектить кота через COCO API, images большие
          0

          А где автоматическое открытие двери?

            –1
            Согласен. Натренировать камеру на обнаружение животного — этого добра навалом, а вот нормальный механизма открытия двери — еще поискать надо.
              0
              Это был вопрос по поводу названия статьи, а не ее содержания. А раз это перевод, как вы, наверное, заметили, то название оригинальной статьи «Let the Dogs Out! How to Make a Raspberry Pi Pet Detector» нужно перевести правильно. Но если вы настаиваете, то в статье про обучения тоже ни слова, просто ссылка на гитхаб. И да, про object detection на данный момент добра навалом. По крайней мере я не столкнулся с трудностями, когда делал нечто похожее.
                0
                Кстати, про настоящее обучение подобной нейросети я бы с удовольствием прочитал, если есть ссылка — буду только благодарен
            0
            Ну допустим нейросеть отличит пса от бомжа, но отличит ли он конкретного хозяйского пса от бездомного пса?
              0

              Говорят что да, отличает. Но, как по мне, идея с метками и считывателями, как писали выше, надежнее будет. Опять же, с моей точки зрения, подобный "детектор" нужен, скорее, для запуска животного домой, те определять возвращение питомца надо на улице.

            Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

            Самое читаемое