The SmartScan Billing Assistant is a computer vision-based project designed to automate the process of calculating the total bill by detecting products and adding their prices using a camera, similar to a cashier. This project uses the YOLOv8 model for object detection and tracking. This is the MVP of the main project I did for a supermarket where I implemented the SmartScan billing system on more than 1200 products.
The project aims to simplify the billing process in supermarkets and retail stores by automating the detection and pricing of products. This is achieved through the following steps:
- Collecting and annotating a dataset of products.
- Augmenting the dataset to improve model generalization.
- Training a YOLOv8 model on the augmented dataset.
- Testing the model's performance in a real-time environment.
The dataset was collected and annotated using Roboflow. The steps to connect to Roboflow and download the dataset are detailed in the dataset_preparation.ipynb
notebook.
To enhance the dataset and improve the model's robustness, data augmentation was performed using the Albumentations library. The augmentation pipeline included random brightness and contrast adjustments. The detailed augmentation process can be found in the dataset_preparation.ipynb
notebook.
The YOLOv8 model was trained on the augmented dataset using the parameters specified in the training_and_testing/training.ipynb
notebook. The notebook includes the code for initializing the model, setting training parameters, and evaluating the model's performance.
The model was tested in a real-time environment using a webcam. The training_and_testing/testing.ipynb
notebook demonstrates how to use the trained model to detect products and calculate the total price. The notebook includes the code for loading the model, capturing video, detecting objects, and updating the total price based on detected products.
To use the SmartScan Billing Assistant, follow these steps:
- Ensure you have the necessary dependencies installed.
- Run the
dataset_preparation.ipynb
notebook to prepare and augment the dataset. - Train the model by running the
training_and_testing/training.ipynb
notebook. - Test the model in a real-time environment by running the
training_and_testing/testing.ipynb
notebook.
This project is licensed under the MIT License. See the LICENSE file for details.