Inspiration
We've all felt pressured trying to find the perfect outfit every morning. This is why we wanted to create something that everyone can use, moving beyond generic ideas to personalized advice tailored to each user.
What it does
Authentication & Personalization: Firebase Auth manages secure user sessions with JWT tokens. Users upload selfies for facial feature extraction using dlib's 68-point landmark detector.
Color Analysis Pipeline: K-Means clustering (n=3) extracts dominant RGB values from segmented facial regions (eyes, skin, hair). Rule-based classifiers map color spaces to seasonal palettes using brightness thresholds and channel ratios.
Outfit Matching Engine: Dual-feature extraction combines ORB keypoint descriptors (32-dim) for texture matching with ResNet18 embeddings (512-dim) for semantic similarity. KNN models (cosine distance metric) retrieve top-5 matches from gender-specific feature spaces.
Data Architecture: Flask REST APIs serve PyTorch inference endpoints. Firebase Storage handles binary image data while Firestore manages normalized metadata schemas for O(1) query performance.
How we built it
Built web scrapers using Pexels API and icrawler to collect 1000+ outfit images, validated with HOG+SVM person detectors and blur detection (Laplacian variance thresholding). Trained 4 separate KNN models on ResNet18 feature embeddings extracted from pre-processed clothing datasets. Implemented Flask backend with CORS middleware to serve ML inference requests. Frontend built with vanilla HTML/CSS/JS communicating via fetch API. Integrated Firebase SDK for OAuth2 authentication flows and real-time Firestore listeners for profile synchronization.
Challenges we ran into
Dataset curation required building custom validation pipelines—HOG detectors filtered multi-person images, while aspect ratio checks and collage pattern detection ensured single-item clarity. Auth0 integration with Firebase required understanding OAuth2 token exchange and PKCE flow. The recommendation system needed to balance objective visual similarity (handled by ResNet embeddings) with subjective factors like body proportions and personal style preferences, which we partially addressed through facial color analysis, but it remains incomplete without user feedback loops.
Accomplishments that we're proud of
Successfully deployed transfer learning with frozen ResNet18 layers, avoiding costly training while maintaining 85%+ similarity accuracy. Built a hybrid CV+DL pipeline where ORB handles texture-level matching and CNNs capture high-level semantics. Implemented efficient feature storage using joblib serialization, reducing cold-start inference from 30s to <2s. Created scalable Firebase architecture separating hot metadata (Firestore) from cold storage (Storage buckets) with proper indexing strategies.
What we learned
Transfer learning dramatically reduces data requirements—ResNet18 pre-trained on ImageNet generalizes well to fashion domains without fine-tuning. Cosine similarity outperforms L2 distance in high-dimensional embedding spaces due to normalization invariance. Traditional CV methods (ORB, HOG) complement deep learning by capturing texture details CNNs miss. Firebase's NoSQL structure requires denormalization and composite indexes for efficient queries. Model serialization with joblib enables stateless Flask deployments while maintaining sub-second inference latency.
What's next for StyleMaxx
Implement FAISS indexing for sub-linear KNN search scaling to 100K+ items. Fine-tune ResNet on DeepFashion dataset with triplet loss for fashion-specific embeddings. Integrate CLIP models for natural language queries ("summer business casual"). Add collaborative filtering using matrix factorization to learn user-specific style preferences beyond visual similarity. Deploy to AWS Lambda with GPU-accelerated inference endpoints (SageMaker). Implement pose estimation networks to factor body proportions into recommendations.


Log in or sign up for Devpost to join the conversation.