|
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.") |