File size: 1,976 Bytes
f527373
 
 
 
 
 
 
05d4c3b
f527373
8a55d9d
 
e2a98c2
f527373
 
 
1c31448
f527373
 
d3d8066
3ed339a
a79b50e
d3d8066
8a55d9d
b5bd9ee
d3d8066
 
5da6813
d3d8066
 
 
c313dd0
5da6813
 
 
 
 
d3d8066
 
 
5da6813
f527373
c0996a6
 
05eb182
 
 
 
c313dd0
05eb182
2869667
f094fcd
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
46
47
48
49
50
51
import ast
import os
import requests
from PIL import Image
import streamlit as st
import io

api = "https://56dd-188-130-155-168.ngrok-free.app"


st.set_page_config(layout="wide")
st.title("Stamp2vec πŸ“„")

input_image = st.file_uploader("insert image")
if(input_image):
    image = Image.open(input_image)
    st.header("Original")
    st.image(input_image, use_column_width=True)

    detection_model = st.selectbox("Select detection model", ("YOLO-stamp", ))
    embedding_model = st.selectbox("Select embedding model", ("vits8", ))

    if st.button("Get prediction"):
        with st.spinner("Loading..."):
            response = requests.post(os.path.join(api, f"bounding-boxes-{detection_model}/"),
                                    files = {"file": input_image.getvalue(), "model_id": detection_model})
            prediction = ast.literal_eval(response.text)
            response = requests.post(os.path.join(api, f"image-w-boxes-{detection_model}/"),
                                    files = {"file": input_image.getvalue(), "model_id": detection_model})
            
            image_with_boxes = response.content
            arr = []
            for b in prediction["bboxes"]:
                stamp = image.crop((b["xmin"], b["ymin"], b["xmin"] + b["width"], b["ymin"] + b["height"]))
                output = io.BytesIO()
                stamp.save(output, format="BMP")
                response = ast.literal_eval(requests.post(os.path.join(api, f"embeddings-from-cropped-{embedding_model}/"),
                                                        files = {"file": output.getvalue(), "model_id": embedding_model}).text)
                
                arr.extend(response["embedding"])

        col1, col2, col3 = st.columns(3)

        col1.subheader("Prediction")
        col1.write(prediction)

        col2.subheader("Image")
        col2.image(image_with_boxes, use_column_width=True)

        col3.subheader("Embeddings")
        col3.write(arr)