We now live in a time with a variety of powerful and easy-to-use computer vision tools available to the public. Combined with the ubiquity of low-cost single-board computers, there are plenty of new opportunities to contribute to the Internet of Things at scale. Coming into this competition, we wanted to showcase this with a practical application.

One area that computer-vision excels at is in facial recognition. And so we decided to use facial recognition software to analyze crowds and to visualize the overall "foot traffic" over the course of a day. This is a problem that would be crude to solve using traditional motion sensors, but can be achieved with precision using common facial recognition libraries.

What it does

Using a Raspberry Pi and a webcam, our software employs OpenCV's facial recognition software to timestamp each new face in the camera's field of view. Using a server hosted on the Raspberry Pi, we then post this data to a client computer. There, we are able compile all of the timestamps and build a histogram of the traffic throughout the day.

How we built it

  • OpenCV
  • React
  • Raspberry Pi
  • R
  • ngrok

Challenges we ran into

Our team of three was effectively working on four different OSs (Windows 10, Ubuntu, MacOS, and the Raspberry Pi OS). This meant that each OS had separate issues to solve when we set up our development environments. We spent a significant amount of time debugging OpenCV during our Raspberry Pi integration.

Accomplishments that we're proud of

We had never worked with the Raspberry Pi for a project of this scalebefore, so we're proud that we were able to integrate everything onto the Raspberry Pi and get usable data from it!

What we learned

Ryan - The main thing I learned was how to develop for and deploy onto a Raspberry Pi.

Ben - I learned facial recognition with OpenCV and react.

Mitch - I learned how to use react for the frontend.

What's next for Wisdom of the Crowds

The main next step would be to implement a more sophisticated server on the Raspberry Pi. We currently operate on an internal network, but we would want to be able to access the Raspberry Pi's data from an external network in order to truly be part of the Internet of Things.

Share this project: