CampusLots is a cutting-edge solution designed to streamline parking at the University of the West Indies. By harnessing real-time updates and smart parking suggestions, CampusLots aims to simplify the search for parking spaces, turning a daily challenge into a seamless experience. Utilizing advanced technologies such as AI, machine learning, and live data analysis, this project promises a more efficient campus navigation for students, staff, and visitors alike.
This technical overview delves into the core components and methodologies that make CampusLots a pioneering project. From leveraging powerful frameworks and languages to implementing sophisticated algorithms for real-time decision-making, we showcase the depth of our technical expertise and our commitment to innovation. Join us as we explore the technical prowess behind CampusLots, reflecting our team's capability to solve complex problems and improve campus life.
Technology Stack
These were chosen for their efficiency and the comprehensive ecosystem they provide, enabling dynamic, responsive user interfaces with smooth animations and a strong, flexible styling system.
Node.js paired with Express offers a fast, scalable server framework for the Node-server, while Flask provides a lightweight, flexible option for the Flask-server, ideal for handling image processing tasks.
WebSockets are used for enabling real-time, bi-directional communication between the client and server, which is crucial for updating parking lot capacities instantly.
YOLO and OpenCV are integral for analyzing video footage to detect and count vehicles efficiently, thanks to their powerful image processing and object detection capabilities.
The Google Maps API is utilized for integrating maps and geolocation features into the app, enabling users to find optimal routes and view real-time parking lot locations and statuses.
PostgreSQL was chosen for its robustness, reliability, and support for complex queries and data types, making it an ideal database solution for storing user data and parking lot capacities.
System Architecture Overview
The CampusLots system is engineered to optimize parking space discovery at the University of the West Indies, employing a sophisticated architecture that integrates various technologies and frameworks. The core components of this architecture include a Flask-server for image processing, a Node.js/Express server for backend logic, and a Next.js frontend for user interaction.
Flask-Server: AI-Powered Image Analysis
At the heart of the CampusLots system, the Flask-server plays a pivotal role in real-time image analysis.
Real-Time Data Synchronization with WebSockets
To ensure that users and the Node-server receive up-to-date parking information.
Frontend: Interactive User Interface with Next.js
The Next.js frontend is the user-facing component of CampusLots, designed for interactivity.
Node-Server: Intelligent Decision-Making
The Node-server acts as the central processing unit for determining the optimal parking lot.
Frontend Design
Landing Page
About Page
Get-Started Page
Dashboard
Settings Page
Map Route Page
Backend Logic and Data Processing
The Node-server in the CampusLots project serves as a crucial intermediary that aggregates and processes diverse data streams to facilitate intelligent parking lot recommendations. This server not only handles communication between the frontend and the Flask-server but also synthesizes user preferences, geolocation data, and real-time parking lot statuses to make informed suggestions.
Aggregating Data
User Preferences: Detailed inputs on parking needs and preferences, including user type and importance of various parking criteria.
Geolocation: Real-time location data obtained using the geolocation API.
Parking Lot Statuses: Updates on capacities received via WebSocket connections with the Flask-server.
Multi-Criteria Decision Making Algorithm
Normalization of Data: Ensuring comparability of varied data types by normalizing each criterion to a common scale.
Weight Assignment: Weights are assigned to each criterion based on user preferences.
Aggregation and Scoring: Calculation of composite scores for each parking lot by aggregating the weighted criteria.
Ranking: Parking lots are ranked based on their composite scores, with the highest-scoring lot recommended to the user.
Model Training and Integration
Data Preparation
The dataset utilized for training the vehicle detection model was sourced from the COCO (Common Objects in Context). This dataset contains a wide range of images capturing various objects, including vehicles, in different contexts. Prior to training, the dataset underwent preprocessing steps including:
Data augmentation techniques such as random flips, rotations, and color adjustments to enhance model generalization.
Data splitting into training and validation sets to facilitate model evaluation and prevent overfitting.
Labeling vehicles within images using bounding boxes to provide ground truth annotations for model training.
Training Process
The training process involved utilizing YOLOv8, a state-of-the-art object detection architecture, implemented using the Ultralytics library. The training script was configured with parameters specified in the 'yolov8n.yaml' configuration file. The key steps involved in the training process include:
Initialization: The YOLOv8 model was initialized with pre-trained weights to expedite convergence and improve performance.
Training: The model was trained using the prepared dataset for a total of 64 epochs. During training, the model iteratively adjusted its parameters to minimize the detection error and accurately localize vehicles within images.
Evaluation: Throughout the training process, the model's performance was periodically evaluated on a separate validation set to monitor its progress and prevent overfitting.