CrowdDetection Background
This is an Internet of Things project meant for trains. It analyses the conditions of each train car and provide useful insights for the passengers. Using computer vision, it determines the crowd level of each train car so passengers can utillise less crowded cars for a more comfortable experience.
Features
Temperature / Humidity status
Raspberry Pi has temperature & humidity sensor to monitor the conditions of the train carriage
Telegram Chatbot
Allows passengers to check status of train car using Telegram Chatbot
LED Indicators & Displays
Passengers can look at the LED indicators to determine crowd levels of each train carriage. Additionally, administrators can send out messages via the display
Facial Recognition
Uses Computer Vision to determine crowd and general emotions of passengers
Under the Hood
The Raspberry Pi is setup with hardwares like cameras, sensors and LEDs. The hardwares are controlled using
Python. The data collected are passed to
AWS using IoT and S3 to be processed by Lambda and Rekognition. Eventually, the processed data are accessible to the Dashboard and Telegram Bot via AWS IoT and DynamoDB. As this was an IoT focused project, we incorporated the user interface using Python’s Flask and Telepot.
Project Insights
This was an assignment where we had to come up with an Internet of Things project. When I first concepted this idea, I used OpenCV for the facial recognition. In hindsight, it was unwise to attempt Computer Vision with a Raspberry Pi 3. Fortunately, I had managed to get it to work by processing intervals of photos instead of live video.
In the following phase, I was joined my two other classmate who decided to proceed with CrowdDetection. Now having access to AWS Suite, I decided to offload the recognition which I thought was the bottleneck in the previous iteration.