https://github.com/geo-y20/fashion-recommendation-system
This project is a fashion recommendation system designed to suggest similar fashion products based on a user's uploaded image.
https://github.com/geo-y20/fashion-recommendation-system
fashion fashion-dataset fashion-recommendation fashion-website machine-learning recommendation-system recommender-system streamlit
Last synced: 3 months ago
JSON representation
This project is a fashion recommendation system designed to suggest similar fashion products based on a user's uploaded image.
- Host: GitHub
- URL: https://github.com/geo-y20/fashion-recommendation-system
- Owner: Geo-y20
- Created: 2024-05-18T10:33:41.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-06-15T00:09:44.000Z (over 1 year ago)
- Last Synced: 2025-07-18T20:10:48.782Z (3 months ago)
- Topics: fashion, fashion-dataset, fashion-recommendation, fashion-website, machine-learning, recommendation-system, recommender-system, streamlit
- Language: Jupyter Notebook
- Homepage:
- Size: 1.53 MB
- Stars: 3
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Fashion Recommendation System
## Project Description
This project is a fashion recommendation system designed to suggest similar fashion products based on a user's uploaded image. The system leverages a pre-trained VGG16 model to extract features from the uploaded image and compare it to a dataset of fashion products to find the most similar items.
## Dataset
The dataset used in this project is the "Fashion Product Images (Small)" dataset from Kaggle. It contains information about various fashion products, including their images and style details.
### Downloading the Dataset
You can download the dataset from Kaggle using the following link: [Fashion Product Images (Small)](https://www.kaggle.com/datasets/paramaggarwal/fashion-product-images-small)
To download the dataset, follow these steps:
1. Go to the [Kaggle dataset page](https://www.kaggle.com/datasets/paramaggarwal/fashion-product-images-small).
2. Click on the "Download" button to download the dataset files.
The dataset contains a CSV file (`styles.csv`) with the following columns:
- `id`: Unique identifier for each product
- `gender`: Gender category of the product (e.g., Men, Women)
- `masterCategory`: Main category of the product (e.g., Apparel)
- `subCategory`: Sub-category of the product (e.g., Topwear)
- `articleType`: Specific type of article (e.g., T-Shirts)
- `baseColour`: Primary color of the product
- `season`: Season associated with the product
- `year`: Year the product was released
- `usage`: Usage category (e.g., Casual)
- `productDisplayName`: Display name of the product
The images corresponding to these products are named with their `id` followed by `.jpg`.
## File Structure
- `app.py`: Main application script that implements the recommendation system.
- `styles.csv`: Dataset file containing details about fashion products.
- `fashion-products-recommendation-system.ipynb`: Jupyter notebook containing additional analysis and code for the recommendation system.
## Requirements
To run this project, you need the following packages installed:
- numpy
- pandas
- tensorflow
- keras
- matplotlib
- cv2
- streamlit
- PIL
- joblib
You can install these packages using pip:
```bash
pip install numpy pandas tensorflow keras matplotlib opencv-python-headless streamlit pillow joblib
```
## Running the Project
1. **Prepare the Dataset:**
Ensure that `styles.csv` is located in the root directory of the project. Also, ensure that the images are stored in a directory named `fashion_small/images/`.
2. **Run the Streamlit Application:**
Execute the following command to start the Streamlit application:
```bash
streamlit run app.py
```
3. **Upload an Image:**
Open the Streamlit application in your web browser. You will be prompted to upload an image. Choose a fashion product image (in jpg, jpeg, or png format).
4. **View Recommendations:**
Once the image is uploaded, the system will process the image and display the top 5 recommended images that are similar to the uploaded image.
## Code Overview
### app.py
This script contains the main logic for the recommendation system. It defines a `fashion_recommendations` class that includes methods for loading the model, processing the image, calculating similarity, and generating recommendations. The `main` function sets up the Streamlit interface for uploading an image and displaying the recommendations.
### Helper Functions
- `get_styles_df`: Loads the dataset and prepares it by adding an `image` column.
- `load_model`: Loads a pre-trained VGG16 model with ImageNet weights and prepares it for feature extraction.
- `predict`: Preprocesses the input image and uses the model to extract features.
- `get_similarity`: Calculates similarity between the input image features and the dataset features.
- `normalize_sim`: Normalizes the similarity scores.
- `get_recommendations`: Retrieves the top 5 most similar products based on similarity scores.
- `print_recommendations`: Saves and displays the recommended images.
### Preprocess Image
- `preprocess_image`: Preprocesses the uploaded image to the required format for the model.
### Main Function
- `main`: Sets up the Streamlit interface, handles file upload, and displays recommendations.
## Conclusion
This fashion recommendation system provides a simple yet effective way to find similar fashion products based on an uploaded image. By leveraging a pre-trained VGG16 model and a dataset of fashion products, the system can help users discover new fashion items that match their preferences.
## Sample of webpage