How to build a cat detector with a Raspberry Pi and a Pi Noir camera using Deep Learning - Part I

in raspberrypi •  6 years ago  (edited)

Having a garden in a neighbourhood with tons of cats has the disadvantage that these cats will leave too much fertilizer between my vegetables. Being a garden and Raspberry Pi enthusiast, I have already built an automated irrigation system for my pumpkins, the spices, tomatoes and potatoes. Fortunately, I still had one valve unconnected, which I use now to deter cats.

Summary

In short, the cats are recorded with a Raspberry Pi Pi Noir (night vision) camera, using the software motion. Motion will record every movement it detects in its field of view. In a first step, I sorted these images in two groups:

  • images containing cats
    07-20180422181348-03_cropped.jpg
  • images without cats
    494-20180428142032-03_cropped.jpg

I then copy these images to a Windows computer with a decent graphics card, where I train a deep learning network to distinguish images of cats from images without cats.
The neural network tree is copied to the raspberry pi. When then motion records a movement, it calls a python script that checks with the neural network tree if the image contains a cat or not. In case a cat is present, it opens the valve and the cat is wet. And will hopefully never again enter my garden...

Detailed guide, part I: Setting up the cat camera

First you need a raspberry pi, best a raspberry pi 3. Install the latest raspbian stretch image: https://www.raspberrypi.org/downloads/raspbian/
Start up the raspberry pi and set up the wlan to be able to connect to your wireless lan. With:

sudo raspi-config

open up the configuration, and enable the camera. I run the raspberry pi directly outside in my garden, so it is completely headless. So also enable ssh. If you prefer a graphical desktop, enable the vnc, see for example here:
https://www.raspberrypi.org/magpi/vnc-raspberry-pi/
Check with:

ifconfig wlan0

what the IP of your raspberry pi is, and connect then from your laptop / windows machine with vnc or ssh to the raspberry pi.
Then connect your pi noir camera with a infrared LED (e.g. from here: https://www.play-zone.ch/de/hdtv-pi-noir-ir-camera-inkl-led-module.html). I also added a infrared LED so that it also finds cats during the night.
Check with:

raspistill -o image.jpg

if everything is connected correctly. If there is no error, it will write a file called image.jpg
We will need to install some libraries, but first start with updating and upgrading the raspberry pi from a terminal:

sudo apt update
sudo apt upgrade
sudo apt-get install libmariadbclient18 libpq5 libavcodec57  libavformat57 libavutil55 libswscale4

Then download and install the motion software:

wget https://github.com/Motion-Project/motion/releases/download/release-4.0.1/pi_stretch_motion_4.0.1-1_armhf.deb
sudo dpkg -i pi_stretch_motion_4.0.1-1_armhf.deb

Then configure motion:

sudo nano /etc/motion/motion.conf

Change:

daemon on

then:

stream_localhost off

Set the framerate, width and height of the image

stream_maxrate 20 
framerate 20
width 640
height 480

First we will do a quick sanity check if everything is setup correctly. In order to start motion, you will have to edit:

sudo nano /etc/default/motion

and change:

start_motion_daemon=yes

If you use the raspberry pi camera (pi noir), you will have to edit:

sudo nano /etc/modules

and add:

bcm2835-v4l2

This will load a driver which is needed that the raspberry pi camera appears as a video device (under /dev/video0)

Let's now do a sanity check, and start the motion service:

sudo service motion start

Connect with a webbrowser to

<rpi-ipAddress>:8081

and check if you see the stream!
In my case, this is:

http://192.168.178.48:8081/

And I see a liveview of my garden:
2018-05-23 20_29_05-Window.png

If nothing appears, you can check the status of the motion service:

sudo service motion status

if it does not say active ( running) in green, then something went wrong. Maybe restarting the raspberry pi helps?

Here is part II:
https://steemit.com/raspberrypi/@mragic/how-to-build-a-cat-detector-with-a-raspberry-pi-and-a-pi-noir-camera-using-deep-learning-part-ii

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

I think the command should be sudo raspi-config as shown in https://www.raspberrypi.org/documentation/configuration/raspi-config.md

Thanks a lot, I changed it!

Congratulations @mragic! You have completed some achievement on Steemit and have been rewarded with new badge(s) :

You made your First Comment
You got a First Vote

Click on any badge to view your own Board of Honor on SteemitBoard.
For more information about SteemitBoard, click here

If you no longer want to receive notifications, reply to this comment with the word STOP

Do you like SteemitBoard's project? Vote for its witness and get one more award!