Sketch2Diagram / sketch2diagram.py
DaddyDaniel's picture
Initial Commit
2b884ca
raw
history blame
1.89 kB
import streamlit as st
from PIL import Image
from main import get_model
# Sidebar Setup
st.sidebar.title("Model Configuration")
inference_strat = st.sidebar.selectbox("Inference Strategy", ["Iterative", "Multi-candidate"],
help="Choose the inference strategy for the model. Iterative generates one candidate at a time until an output compiles, while Multi-candidate generates multiple candidates in parallel.")
# Introduction Section
st.title("Sketch2Diagram")
st.write("This is a runnable demo of ImgTikZ model introduced in the Sketch2Diagram paper.")
st.write("Please refer to the [original paper](https://openreview.net/pdf?id=KvaDHPhhir) for more details.")
st.write("The model is trained to convert sketches into TikZ code, which can be used to generate vectorized diagrams.")
st.write(f"Inference Strategy: {inference_strat}")
# User Input Section
st.subheader("Upload your sketch")
input_method = st.selectbox("Input Method", ["Upload", "Camera"],
help="Choose how you want to input your sketch. You can either upload an image or take a picture using your webcam.")
input_file = None
if input_method == "Camera":
input_file = st.camera_input("Take a picture of your sketch")
# Implement camera input functionality here
else:
input_file = st.file_uploader("Upload an image of your sketch", type=["png", "jpg", "jpeg"])
generate_command = None
# Display the uploaded image
if input_file is not None:
st.image(input_file, caption="Uploaded Sketch")
generate_command = st.button("Generate TikZ Code")
if generate_command:
model = get_model()
image = Image.open(input_file)
with st.spinner("Generating TikZ code..."):
output = model(image)
tikz_code = output[0]['generated_text']
st.subheader("Generated TikZ Code")
st.code(tikz_code, language='latex')