File size: 1,586 Bytes
7e4a89e
e8ee9c0
 
7e4a89e
ea99a27
 
 
 
 
 
e8ee9c0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
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.")