Spaces:
Running
Running
| import streamlit as st | |
| from transformers import pipeline | |
| from PIL import Image | |
| import requests | |
| from io import BytesIO | |
| classifier = pipeline("zero-shot-image-classification", model="google/siglip-base-patch16-224") | |
| st.title("Image classifier model demo") | |
| file_name = st.file_uploader("Upload an image") | |
| def scan_image(image, label, tolerance = 0.01): | |
| predictions = classifier(image, candidate_labels = [label, "other"]) | |
| dict = {} | |
| for prediction in predictions: | |
| dict[prediction['label']] = prediction['score'] | |
| # print(json.dumps(dict, indent = 3)) | |
| return (dict[label] > (dict['other'] + tolerance), dict) | |
| if file_name is not None: | |
| col1, col2 = st.columns(2) | |
| image = Image.open(file_name) | |
| col1.image(image, use_column_width=True) | |
| label = st.text_input("What to look for in the image?") | |
| if label == '': | |
| st.warning('Please enter a object label', icon="⚠️") | |
| else: | |
| if st.button("Scan Image"): | |
| predictions = scan_image(image, label) | |
| col2.header("Probabilities") | |
| for key in predictions[1].keys(): | |
| col2.subheader(f"{ key }: { round(predictions[1][key] * 100, 1)}%") | |
| if predictions[0]: | |
| st.header("The object is present in the given image") | |
| else: st.header("The object is not found in the given image") |