Inspiart is a machine learning–powered tool that recommends paintings similar to a given artwork. It can also detect its artistic style. The project is available through an interactive Streamlit app.
- 🔎 Image-based recommendation of similar artworks
- 🖼️ Automatic detection and classification of artistic styles
- 📊 Interactive web interface to explore the tool
This project is split into two repositories:
- inspiart: core code (data preprocessing, model training, recommendation engine, API)
- inspiart-front: Streamlit app
└── inspiart
├── Dockerfile
├── setup.py
├── requirements.txt
├── Makefile
├── api
│ └─ fast.py
├── models
│ └─ model_Xception_alldata_finetuned.keras
│ └─ model_clip
└── inspiart
└── dataset_prep.py└── inspiart-front
├── app.py
└── sources
- Used the WikiArt dataset from Kaggle
- Contains more than 170K artworks across different artistic styles
- Cleaning to only keep paintings after 1800. 114K images in the end.
-
CLIP (OpenAI)
- Extracted embeddings for all paintings in the dataset
- Used these embeddings to perform image similarity search
- Qualitatively good results, often retrieves artworks that are obviously related and with same content
-
Custom Model (Xception-based)
- Fine-tuned Xception with additional dense layers for artistic style classification
- Final accuracy achieved: 47% on the test set (30% of the database)
- Stored all embeddings in a ChromaDB vector database
- Enables fast similarity search across the artwork collection
- Built an API with FastAPI to serve both:
- Similarity search results (CLIP)
- Style predictions (custom Xception model)
- Packaged into a Docker image for easier deployment
- Deployed the backend on Google Cloud Platform (GCP)
- Frontend built with Streamlit for an interactive user interface
📹 Demo Video Watch full demo on YouTube
Final presentation : 📄 View the final presentation (PDF)
Team project realized during the Data Science & AI Bootcamp at Le Wagon. 2 weeks with a team of 5 to develop a solution using data and AI.




