Inspiration

Our inspiration for the project came largely through the hardware we had access to. We had a camera, and the idea came up to do some Computer Vision with it. We were leaning toward the idea of image recognition from the beginning, but then with the theme of "reinvent the wheel", we landed on using human detection to detect events similar to a Ring doorbell, we call this Ring++ inspired from our group name i++.

What it does

Our software is able to count people in the frame and display number of people in view in near real time, based on this information to alert an admin user of arriving and departing visitors. We provide timestamps with each event stored.

How we built it

A Pi device on boot up will stream continuously to unlisted YouTube stream over RMTP. The flask application, which contains the model and interfaces with a sqlite database containing the event data and login credentials. As for the hardware, it is a Raspberry Pi Zero 2W with a Pi Cam 3 NoIR module. The housing for the Ring++ internals and externals (the Raspberry Pi Zero 2W and Pi cam 3 NoIR) was 3d-printed. The video feed was transmitted by a private YouTube stream and fed into a YOLO model that can detect people entering and exiting the stream feed.

Challenges we ran into

The first challenge was trying to get the stream to work in the first place. Getting the WSU enterprise Wi-Fi to work with the Pi proved extremely time-consuming if not impossible, so the next best option was to route the Pi's internet over Ethernet to one of our laptops which was configured to act as a router to the network. We also faced a few internet-related challenges due to the variable Wi-Fi reliability in the first place. When the connection drops, the stream must be restarted. A significant amount of time was also spent managing the various version requirements and version incompatibilities of our Python libraries.

Accomplishments that we're proud of

The web-stream, notification system, and model interpreter all work nearly perfectly. A decent amount of time was spent optimizing the interpretation of the model to recognize people on a more consistent basis. The Kamiak cluster was also utilized to train a more advanced facial recognition model, however this was not fully implemented due to time constraints and dependency issues in the actual flask application.

What we learned

Much of the details of implementation of all these ideas were learned as the day went on, including diagnosing network problems, working with Kamiak, addressing python incompatibilities efficiently, and maintaining consistent baseline functionality through a rapidly evolving feature-set.

What's next for Ring++

The obvious next-step, given more time, is to implement the already trained facial-recognition model. A more robust connection system for the live stream would also be a natural next step. Finally, developing a more robust casing and mount for the Ring++ hardware.

Share this project:

Updates

Submission history