| import streamlit as st | |
| from PIL import Image | |
| import model | |
| 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.") |