Spaces:
Running
Running
import streamlit as st | |
from transformers import pipeline | |
from PIL import Image | |
# Page config | |
st.set_page_config(page_title="TinyLLaVA Snapshot", layout="centered") | |
st.title("πΈ TinyLLaVA β Snapshot Q&A (Hugging Face Spaces Safe)") | |
# Load TinyLLaVA pipeline | |
st.info("Loading TinyLLaVA... Please wait β³") | |
pipe = pipeline( | |
task="image-to-text", | |
model="bczhou/tiny-llava-v1-hf", | |
trust_remote_code=True, | |
device_map="cpu" | |
) | |
st.success("β Model loaded!") | |
# Widgets | |
st.markdown("**1οΈβ£ Take a snapshot OR upload an image**") | |
image = st.camera_input("π· Click 'Take Photo' below:") | |
if not image: | |
image = st.file_uploader("π Or upload an image file", type=["jpg", "png", "jpeg"]) | |
st.markdown("**2οΈβ£ Enter your question:**") | |
prompt = st.text_input("π¬", value="Describe this scene.") | |
# Debug info | |
st.write(f"πΈ Image uploaded: {'Yes' if image else 'No'}") | |
st.write(f"π¬ Prompt: {prompt}") | |
# If both present | |
if image and prompt: | |
img = Image.open(image).convert("RGB") | |
st.image(img, caption="Your Image", use_column_width=True) | |
query = f"USER: <image>\n{prompt}\nASSISTANT:" | |
with st.spinner("TinyLLaVA is generating..."): | |
result = pipe(query, img) | |
answer = result[0]["generated_text"] | |
st.subheader("π Answer") | |
st.write(answer) | |