Inspiration
Finding a seat in crowded places like hawker centers, libraries, and food courts can be frustrating. We wanted to create a seamless way for people to locate available seats in real-time without wandering around. Inspired by smart city initiatives and computer vision advancements, we set out to build OccupAI—a solution that enhances efficiency and convenience in public spaces.
What it does
OccupAI is a real-time seating availability dashboard that helps users find open seats effortlessly. Using computer vision, it detects and analyzes seat occupancy in busy locations, displaying the data on a user-friendly interface. This allows individuals to make informed decisions and navigate crowded spaces more efficiently.
Beyond just detecting occupied and available seats, OccupAI can even identify reserved seats when people "chop" them with tissue paper, a common practice in some places. This feature helps users avoid mistakenly assuming a seat is free when it has actually been reserved.
How we built it
To simulate a hawker center environment, we used logo sets to recreate realistic seating conditions. We then trained our YOLOv8 model on a custom dataset to accurately detect seat occupancy, including reserved seats marked with tissue paper.
For the backend, we used MySQL to store real-time seat availability data and integrated it with Flask to create a dynamic web dashboard. The dashboard updates live as seating conditions change.
For capturing real-time footage, we used an iPhone camera and established connectivity with a Mac to process the video feed and run the detection model efficiently.
Challenges we ran into
Accurate Seat Detection: Ensuring reliable occupancy detection in various lighting conditions and seating layouts was a challenge. Variations in lighting, occlusions, and different seat designs required fine-tuning the model.
Real-Time Processing: Optimizing image recognition to provide instant updates without lag was tricky. We had to balance speed and accuracy while ensuring seamless integration with the dashboard.
Dataset Training Complexity: Training a custom dataset was time-consuming. One of the biggest challenges was maintaining annotation accuracy—when the table or tripod shook, the bounding boxes became misaligned, affecting detection performance.
Workflow Integration: Making the entire workflow function smoothly—from the model detecting seats to instantly updating the dashboard—was difficult. The backend development took significant effort, as we had to troubleshoot multiple issues and experiment with different approaches to find a solution that worked effectively with our setup.
Accomplishments that we're proud of
Successfully Training a Custom YOLOv8 Model: We built and trained a custom dataset for seat detection, overcoming challenges like bounding box misalignment and environmental variations.
Detecting "Choped" Seats: Implementing the ability to identify reserved seats (e.g., with tissue paper) was a unique and practical feature that enhances real-world usability.
Real-Time Dashboard Integration: We successfully linked the AI model with a live dashboard, ensuring that seat availability updates in real-time without significant lag.
Overcoming Technical Challenges: From troubleshooting backend issues to optimizing real-time processing, we tackled multiple hurdles to create a smooth and efficient system.
Building a Scalable Solution: The project is not limited to hawker centers—it can be expanded to libraries, co-working spaces, and other crowded venues in the future.
What we learned
The Complexity of Computer Vision: Training a custom YOLOv8 model for seat detection taught us how to handle challenges like bounding box misalignment, environmental changes, and dataset annotation.
Optimizing Real-Time Processing: We learned how to improve inference speed while maintaining accuracy, ensuring that seat availability updates occur instantly on the dashboard.
Full-Stack Integration: Combining Flask, MySQL, and a real-time AI model helped us understand the challenges of backend development, database management, and frontend synchronization.
Troubleshooting and Debugging: Many unexpected issues arose, from camera connectivity problems to server-side processing delays, teaching us resilience and problem-solving skills.
Balancing Accuracy and Performance: We had to experiment with different model settings and optimizations to get a system that is both fast and reliable.
The Importance of User Experience: A good AI model alone isn’t enough—we had to ensure a smooth and intuitive dashboard so users could easily access seat availability data.
What's next for OccupAI
Detecting Seat Hoarders & Displaying Alerts: We plan to implement a system that identifies individuals occupying seats for excessive periods without eating. The AI model will track how long a person stays at a seat and detect signs of non-dining behavior (e.g., using a laptop, chatting without food). If a seat remains occupied beyond a reasonable time, the system will crop the individual's image and display it on the dashboard as a gentle reminder to free up space for others.
Built With
- camera
- cardboard
- css
- flask
- html5
- javascript
- lego
- python
- yolov8
Log in or sign up for Devpost to join the conversation.