getitem / src /streamlit_app.py
dheena
SYS-0000
ea99a27
import streamlit as st
from PIL import Image
import model
import asyncio
try:
asyncio.get_running_loop()
except RuntimeError:
asyncio.set_event_loop(asyncio.new_event_loop())
image_url_input = st.text_input("Enter the image URL:")
k_value_input = st.number_input("Enter k_value:", min_value=1, value=5)
if st.button("Get Results"):
results = model.get_top_k_results(image_url_input, int(k_value_input))
st.json({"results": [{"metadata": r["metadata"], "score": r["score"]} for r in results]})
if 'metadata_inputs' not in st.session_state:
st.session_state['metadata_inputs'] = {}
uploaded_files = st.file_uploader("Choose images...", type=["jpg", "jpeg", "png"], accept_multiple_files=True)
if uploaded_files:
for uploaded_file in uploaded_files:
file_key = uploaded_file.name
image = Image.open(uploaded_file)
st.session_state['metadata_inputs'][file_key] = st.text_input(
f"Metadata for {uploaded_file.name}",
value=st.session_state['metadata_inputs'].get(file_key, ""),
key=f"metadata_{file_key}"
)
if st.button("Upload Images"):
for uploaded_file in uploaded_files:
metadata = st.session_state['metadata_inputs'][uploaded_file.name]
if metadata:
image = Image.open(uploaded_file)
cropped_image = model.process_image_embedding(image)
feature = model.get_image_features(cropped_image)
model.save_image_in_index(feature, metadata)
st.success("Images uploaded successfully.")