Spaces:
Runtime error
Runtime error
| import streamlit as st | |
| from datasets import load_dataset | |
| from PIL import Image | |
| import torch | |
| import numpy as np | |
| from transformers import CLIPProcessor, CLIPModel | |
| from sklearn.metrics.pairwise import cosine_similarity | |
| # ========================= | |
| # π Load Model (CLIP) | |
| # ========================= | |
| model = CLIPModel.from_pretrained("openai/clip-vit-base-patch32") | |
| processor = CLIPProcessor.from_pretrained("openai/clip-vit-base-patch32") | |
| # ========================= | |
| # π Load Dataset (Hugging Face) | |
| # ========================= | |
| dataset = load_dataset("fatma812/egypt-artifacts-images") | |
| images = [item["image"] for item in dataset["train"]] | |
| # ========================= | |
| # π§ Encode Dataset Images | |
| # ========================= | |
| def get_image_embeddings(): | |
| embeddings = [] | |
| for img in images: | |
| inputs = processor(images=img, return_tensors="pt") | |
| with torch.no_grad(): | |
| emb = model.get_image_features(**inputs) | |
| embeddings.append(emb[0].numpy()) | |
| return np.array(embeddings) | |
| image_embeddings = get_image_embeddings() | |
| # ========================= | |
| # π― UI | |
| # ========================= | |
| st.title("πΊ Egyptian Artifacts CLIP Recommender") | |
| st.write("Upload an artifact image and find similar artifacts") | |
| uploaded_file = st.file_uploader("Upload Image", type=["jpg", "png", "jpeg"]) | |
| # ========================= | |
| # π Recommendation | |
| # ========================= | |
| if uploaded_file: | |
| query_image = Image.open(uploaded_file).convert("RGB") | |
| st.image(query_image, caption="Uploaded Image") | |
| # encode query image | |
| inputs = processor(images=query_image, return_tensors="pt") | |
| with torch.no_grad(): | |
| query_emb = model.get_image_features(**inputs).numpy() | |
| # similarity | |
| scores = cosine_similarity(query_emb, image_embeddings)[0] | |
| top_idx = scores.argsort()[::-1][:5] | |
| st.subheader("π Similar Artifacts") | |
| for i in top_idx: | |
| st.image(images[i]) | |
| st.write(f"Artifact #{i}") | |
| st.write("---") |