Jewelry Recommendation System
Background
This project was built as part of my Machine Learning course at Rice University. I developed a Jewelry Recommendation System that personalizes jewelry design suggestions based on a userโs face shape and skin undertone using computer vision and a Streamlit app.
๐ง Problem Statement
How can we use machine learning and color theory to suggest jewelry that complements an individualโs unique facial features?
๐ Dataset
We used a publicly available dataset from Kaggle with over 5,000 labeled celebrity images across 5 face shapes: Oval, Round, Square, Heart, and Oblong.
Kaggle Dataset โ
Here are two example images from the dataset:
๐ป Tech Stack
- Face Detection: MTCNN for facial landmarks
- Face Shape Classification: Custom CNN using TensorFlow/Keras
- Skin Tone Extraction: Dominant color detection with OpenCV
- App Interface: Streamlit
๐งฌ Model Pipeline
- Upload image
- Detect facial landmarks and extract dominant colors
- Classify face shape (CNN)
- Perform color clustering to infer undertone
- Generate jewelry, gemstone, and metal color recommendations
Hereโs a snapshot of the app in action:
๐ผ๏ธ Application Demo
Below are screenshots of the application UI and results:
๐ง Recommendation Logic
We hardcoded the jewelry logic based on domain knowledge:
def recommend_jewelry_face_shape(face_shape):
recommendations = {
"oval": ["Drop earrings, hoops...", "Layered necklaces..."],
...
}
return recommendations.get(face_shape.lower(), "No recommendation")
๐ก Future Improvements
-
Learning from user feedback:
Incorporate aesthetic ratings to fine-tune recommendations using reinforcement learning or similarity metrics. -
Multimodal modeling:
Explore neural networks that take both face shape and undertone embeddings for holistic recommendations. -
Jewelry embeddings:
Fine-tune CLIP-style models to learn representations of jewelry pieces and generate recommendations based on visual similarity.
๐ Additional Resources
- ๐ Final Poster Presentation (PDF)
- ๐ Streamlit App (Demo)
- ๐ GitHub Repository
Built with ๐ and Python.