|
import streamlit as st |
|
from PIL import Image |
|
|
|
|
|
st.markdown(""" |
|
<style> |
|
body { |
|
background-color: #f7f9fc; |
|
font-family: 'Arial', sans-serif; |
|
} |
|
.title { |
|
color: #2c3e50; |
|
font-size: 40px; |
|
font-weight: 700; |
|
text-align: center; |
|
margin-bottom: 40px; |
|
} |
|
.upload-area { |
|
background-color: #e8f4f8; |
|
padding: 20px; |
|
border-radius: 10px; |
|
border: 2px dashed #1abc9c; |
|
text-align: center; |
|
margin-bottom: 20px; |
|
} |
|
.upload-area:hover { |
|
background-color: #d1ecf1; |
|
} |
|
.generate-button { |
|
background-color: #1abc9c; |
|
color: white; |
|
border-radius: 5px; |
|
padding: 10px; |
|
font-weight: bold; |
|
cursor: pointer; |
|
text-align: center; |
|
margin-top: 20px; |
|
} |
|
.generate-button:hover { |
|
background-color: #16a085; |
|
} |
|
.result-section { |
|
margin-top: 40px; |
|
} |
|
.result-title { |
|
color: #34495e; |
|
font-size: 24px; |
|
font-weight: 600; |
|
margin-bottom: 20px; |
|
} |
|
.success { |
|
background-color: #dff0d8; |
|
color: #3c763d; |
|
padding: 15px; |
|
border-radius: 5px; |
|
} |
|
</style> |
|
""", unsafe_allow_html=True) |
|
|
|
|
|
if 'has_run' not in st.session_state: |
|
st.session_state.has_run = False |
|
|
|
|
|
st.markdown('<div class="title">Florence-2 Image Captioning Demo</div>', unsafe_allow_html=True) |
|
|
|
|
|
|
|
|
|
st.sidebar.markdown('<div class="upload-area">', unsafe_allow_html=True) |
|
uploaded_image = st.sidebar.file_uploader("Upload your image here", type=["jpg", "jpeg", "png"]) |
|
st.sidebar.markdown('</div>', unsafe_allow_html=True) |
|
|
|
|
|
|
|
if uploaded_image is not None: |
|
image = Image.open(uploaded_image) |
|
st.image(image, caption="Uploaded Image", use_column_width=True) |
|
|
|
task_prompt = st.sidebar.text_input("Task Prompt", value="Describe the image in detail:") |
|
|
|
text_input = st.sidebar.text_area("Input Questions", height=50) |
|
|
|
if st.button("Generate Caption", key="Generate") and not st.session_state.has_run: |
|
|
|
st.session_state.has_run = True |
|
st.write(task_prompt,"\n",text_input) |
|
|
|
|
|
if st.session_state.has_run: |
|
if st.button("Clear and Upload New Image"): |
|
st.session_state.has_run = False |
|
|
|
|
|
st.markdown('</div>', unsafe_allow_html=True) |
|
|